Irgendwie ist das bei mir anders. Ich hab nun mal nested getestet. Schaut auf den ersten Blick aus wie Homeassistant. Kann keinen Unterschied auf die Schnelle erkennen.
Umgeschaltet auf Single fehlen mir aber die Heizkreise (hier: hc1)
Hatte aber noch nicht wirklich Zeit, mich intensiver damit zu beschäftigen. Das Thema JSON ist von mir auch immer nach hinten geschoben worden. Schon die Verschachtelung auseinanderzudröseln muß ich mir mal zusammensuchen.
Mit einem JSON Viewer kann man das auch zumindest schön anschauen.
Sehr merkwürdig.
Ich habe das eben noch einmal ausprobiert (FW 2.1.1.6b). Bei mir unterscheidet sich „single“ und „Nested“ nicht großartig. Einzig Thermostat_data_hc1 ist im Telegramm von Thermostat_data mit drin und das gleiche Prinzip dann bei boiler_data_ww und boiler_data.
Einzig wenn ich auf Homeassistant gehe, wird so gut wie jeder Wert einzeln übermittelt.
Das kann auch an meiner Umsetzung liegen.
Ich hab mir die Instanzen nicht über den MQTT Configurator angelegt, sondern manuell.
Jetzt hab ich mal testweise im Configurator ein paar der dort angebotenen homeassistant Instanzen angelegt. In den Nutzdaten im Fenster sehe ich auch alles aber bei meiner angelegten Instanz kommt da nix an. Auch nichts im Debug des Servers.
Aber das ist nun nicht besonders wichtig. Aktuell nutze ich nur die Anzeige der Daten und meine Werte bekomme ich.
Ja, anlegen hat funktioniert, aber Daten kommen in den Variablen bei mir auch nicht an. Liegt wohl am Format.
War letztendlich auch nur ein Test der Einstellung, in der Hoffnung nicht alles selber zerlegen zu müssen
Ich bleibe aber auch beim Zerlegen der JSON Strings der Devices.
Wie ist das denn bei den Buderus Kisten generell? Im Kessel ist ja der Basiscontroller (z.B. BC-35) und dann gibt es das kleine Kästchen, also RC200 oder RC 310 (rc ist wohl Raum controller).
Welches von beiden steuert nun alle Funktionen des Kessels?
Wenn ich dann den Raumcontroller abnehme, was passiert dann? Läuft dann der Kessel nur noch im Start Stop Betrieb und kann nicht mehr modulieren? Aber selbst dafür müsste ja die Heizkurve die man im Raum Controller eingibt im basiscontroller liegen, denn ohne Heizkurve weiß der Kessel ja gar nicht die vorlaufsolltemperatur?
Da ich keinen Brenner habe, der moduliert arbeitet, habe ich mir noch keine Gedanken gemacht.
Man könnte das RC entfernen und über den Servicekey (wenn vorhanden) auslesen, was das BC nun noch für Daten bereithält.
Da mich diese Frage aber nicht wirklich brennend interessiert (obwohl ich einen Servicekey habe) , muss ich die Aufgabe leider weiterreichen.
Das ist relativ trivial bei mir gelöst.
Ich habe das Watchdog-Modul aus dem Module Store installiert und einen Watchdog für die Variable boiler_data erstellt, welcher auslöst, wenn diese Variable länger als 2 Minuten nicht geupdatet wurde.
irgendwie geht dieses JSON nicht an mich.
jbr27 hat ja in seinem Code schön erläutert, wie der value String zerlegt wird.
Das funktioniert auch wunderbar.
Aber hier scheitere ich:
Wie bekomme ich den Teil, der unter HC1 (erneute geschweifte Klammer in der letzten Zeile) läuft, separiert, so dass ich die Werte (seltemp, currtemp, mode, modetype…) auf Variablen verteilen kann?
Eigentlich ist JSON ja überschaubar aber mein PHP 7 Buch gibt da nicht wirklich etwas her und im Netz finde ich auch keine Beispiele.
Den JSON kannst du mit der php Funktion json_decode($string, true); in ein PHP Array wandeln. Dieses mit print_r ausgeben und dann die passende Variable abgreifen?
Wenn du den JSON vollständig schickst, kann man das auch mal für dich ausprobieren, aber so ist es schwierig. Und dieses doofe Forum macht aus den hochstehenden auch noch tiefstehende Anführungszeichen.
Du hast also aus dem JSON String ein Array gemacht (2. Parameter von json_decode true)? Dann müsste folgendes Funktionieren $summertemp = $myarray[‚hc‘][‚summertemp‘];