Ich kenn das nur von MQTT. Man hat ein Topic und wenn das ein Json String ist, werden die Variablen automatisch angelegt.
Ähnlich ist es hier, aber halt mit URL’s. Ich glaube nicht, dass ich das ganze auf MQTT umbauen kann. Andererseits funktioniert das mit der URL und Webhook ja theoretisch.
Die URL’s sehen in etwa so aus
DataURLEncoded += "&0_userdata.0.topolino.charge.dauer=" + String((thisCharge.endTime - thisCharge.startTime) / 1000 / 60);
DataURLEncoded += "&0_userdata.0.topolino.charge.ladung=" + String((thisCharge.endSoC - thisCharge.startSoC) * 0.06, 1);
DataURLEncoded += "&0_userdata.0.topolino.charge.startSoC=" + String(thisCharge.startSoC);
DataURLEncoded += "&0_userdata.0.topolino.charge.endSoC=" + String(thisCharge.endSoC);
oder
DataURLEncoded += "&0_userdata.0.topolino.trip.consumption=" + String((float)((tripToSend.endSoC - tripToSend.startSoC) * 0.06) * -1, 1);
DataURLEncoded += "&0_userdata.0.topolino.trip.dauer=" + String((tripToSend.endTime - tripToSend.startTime) / 1000 / 60);
DataURLEncoded += "&0_userdata.0.topolino.trip.km=" + String((tripToSend.endKM - tripToSend.startKM) / 10, 1);
DataURLEncoded += "&0_userdata.0.topolino.trip.maxSpeed=" + String(tripToSend.maxSpeed);
DataURLEncoded += "&0_userdata.0.topolino.trip.SpeedAvg=" + String((drivenKM / drivenMin) * 60, 1);
DataURLEncoded += "&0_userdata.0.topolino.trip.consumptionAvg=" + String((drivenSoC * 0.06) / drivenKM * 100,1);
noch ein Beispiel
if (canValues.SoCUp) {DataURLEncoded += "&0_userdata.0.topolino.SoC=" + String(canValues.SoC); }
if (canValues.BatteryUp) {DataURLEncoded += "&0_userdata.0.topolino.12VBatt=" + String(canValues.Battery); }
if (canValues.CurrentUp) { DataURLEncoded += "&0_userdata.0.topolino.BattA=" + String(canValues.Current); }
if (canValues.Temp1Up) { DataURLEncoded += "&0_userdata.0.topolino.BattTemp1=" + String(canValues.Temp1); }
if (canValues.Temp2Up) { DataURLEncoded += "&0_userdata.0.topolino.BattTemp2=" + String(canValues.Temp2); }
if (canValues.VoltUp) { DataURLEncoded += "&0_userdata.0.topolino.BattV=" + String(canValues.Volt); }
if (canValues.HandbrakeUp) { DataURLEncoded += "&0_userdata.0.topolino.Handbreake=" + String(canValues.Handbrake); }
if (canValues.ODOUp) { DataURLEncoded += "&0_userdata.0.topolino.ODO=" + String(canValues.ODO / 10); }
if (canValues.OBCRemainingMinutesUp) { DataURLEncoded += "&0_userdata.0.topolino.OnBoardChargerRemaining=" + String(canValues.OBCRemainingMinutes); }
if (canValues.ReadyUp) { DataURLEncoded += "&0_userdata.0.topolino.Ready=" + String(canValues.Ready); }
if (canValues.RemainingDistanceUp) { DataURLEncoded += "&0_userdata.0.topolino.RemainingKM=" + String(canValues.SoC * 0.75); }
if (canValues.GearUp) { DataURLEncoded += "&0_userdata.0.topolino.gear=" + String(canValues.Gear); }
if (canValues.SpeedUp) { DataURLEncoded += "&0_userdata.0.topolino.speed=" + String(canValues.Speed); }
Mein Wunsch wäre jetzt, wenn über diesen einen Hook was reinkommt, dass eine Instant mit “0.userdata…” angelegt wird und darunter dann die Variablen wenn es mehrere wie in meinem Beispiel gibt oder eben eine Variable mit dem Wert und Namen “0.userdata…” (siehe letzes Beispiel).
So wie ich das sehe, ist das was in ioBroker passiert dem MQTT sehr ähnlich, zumindest vom Aufbau her.
Ich glaube ich kann das erst wirklich sagen, wie das alles genau aussieht, wenn ich das ganze am Laufen hab.
Oder es geht gar nicht.
Ich denke da kommen auch Daten im HTTP-Header. Mal schauen. Wenn ich wieder Credits bei ChatGPT hab, lass ich das eventuell auf MQTT umbauen.