Ökofen Pelletronic Touch V2.09 mit JSON

Ökofen Pelletronic Touch V2.09 mit JSON
Unsere Energie-Übersicht

Die neueste Version 2.09 der Pelletronic Touch erlaubt ein Auslesen der Parameter durch eine JSON-Schnittstelle. Dies ist wesentlich schneller und eleganter als der alte „Requests-Trick“ bei dem der Web-Oberfläche Bedienung vorgegaukelt wird.
Die Handhabung im Browser ist einfach:

usage:
http://touch_ip:JSON_port/password/command
read example:
http://192.168.22.189:4321/********/all?

Ihr gebt die IP und den Port 4321 an, dann kommt eine Übersicht.
Alle verfügbaren Parameter bekommt ihr durch die zusätzliche Angabe des Passworts und des Parameters /all
Das Passwort könnt ihr unter den Einstellungen am Touch der Heizung selbst ablesen.

Über ein Python-Script hole ich mir alle Parameter und verteile die Werte auf meine Displays, ThingSpeak-Channels und an meinen Twitter-Bot.

JSON statt requests

Die ThingSpeak-Channel (alt, nicht mehr benutzt)

habe ich schon auf JSON-Datenschnittstelle umgestellt.

Inzwischen nutze ich Raspberries mit 2.8″ TFT Bildschirmen und Influx-Grafana Installation. Das ganze heisst jetzt ÖKofen-Spy und gefällt mir ganz gut. Hier könnt ihr nachschauen: Ökofen-Spy

17 Kommentare zu „Ökofen Pelletronic Touch V2.09 mit JSON

  1. Ich habe eine condens mit touch 2.09, bekomme aber keine verbindung (connection refused)
    Wie schaltet man das JSON API frei?

    • Das geht an der Anlage selbst, unter ‚Allgemein‘ zu ‚IP-Config‘. Dort runterscrollen und die Parameter JSON-Modus, JSON-Passwort und JSON-Port eingeben oder akzeptieren.

  2. Ich wollte mal fragen, ob jemand eine Möglichkeit gefunden hat, die Daten in einer korrekten Zeichensatz-Codierung zu erhalten. Wie auch in den hier geposteten JSON-Daten zu sehen, werden bei mir die Sonderzeichen und Umlaute als ‚?‘ geliefert. Ich hab mir momentan dadurch geholfen, dass ich ganze Sätze bzw. Wörter ersetze. Ich habe die Version V3.00 30082018. Vermutlich kann man das aber nur auf der Serverseite beheben, oder?
    Danke & schöne Grüße
    Hannes

    • Salu Hannes,
      ich habe es auch so gemacht. Es hatte mich gestört.
      $hk_state = str_replace ("u?e","uße",$hk_state,$count);
      $hk_state = str_replace ("?ber","über",$hk_state,$count);


      Gruss
      Peter

  3. Hallo Peter!
    Vielen Dank für die Info und den Denkanstoß. Habe ebenfalls eine kleine Webseite draus gebastelt, die ich auf mehreren ePaper-Endgeräten im Haus anzeigen kann.
    Ich würde aber gerne noch den Füllstand des Pelletlagers mitplotten.
    In meinem JSON-Dump kommt ‚L_fuellstand‘ nicht vor; auch nicht ‚L_storage‘ wie bei Dir. Welche Option hast Du aktiviert oder gibt’s gar irgendwelche DIL-Schalter im Gerät?

    • Michael,
      das freut mich, zeig doch mal einen screenshot.
      Fühler für den Füllstand des Sacksilos habe ich nicht. Das wären diese Wägezellen, die unter die Holzpfosten kommen. Im Datensatz habe ich nichts zusätzliches aktiviert.
      Inzwischen habe ich die Version Touch V3.00 30082018 installiert.
      Dieser Datensatz ist:
      {
      "system":{
      "L_ambient":"166",
      "L_errors":"0",
      "L_usb_stick":"true"
      },
      "weather":{
      "L_temp":"150",
      "L_clouds":"75",
      "L_forecast_temp":"90",
      "L_forecast_clouds":"100",
      "L_forecast_today":"false",
      "L_starttime":"850",
      "L_endtime":"1650",
      "L_source":"http://www.openweathermap.org",
      "L_location":"Dachsberg|DE|7580311",
      "cloud_limit":"55",
      "hysteresys":"-40",
      "offtemp":"-100",
      "lead":"120",
      "refresh":"false",
      "oekomode":"0"
      },
      "forecast":{
      "L_w_0":"Di, 8 Okt 22:36|15|75|11 km/h|04n|803|C|07:35|18:54",
      "L_w_1":"Di, 8 Okt 20:00|16|82|10 km/h|10n|500|C",
      "L_w_2":"Di, 8 Okt 23:00|15|96|15 km/h|10n|500|C",
      "L_w_3":"Mi, 9 Okt 02:00|14|98|12 km/h|10n|501|C",
      "L_w_4":"Mi, 9 Okt 05:00|10|100|5 km/h|10n|500|C",
      "L_w_5":"Mi, 9 Okt 08:00|9|99|5 km/h|10d|500|C",
      "L_w_6":"Mi, 9 Okt 11:00|9|100|8 km/h|10d|500|C",
      "L_w_7":"Mi, 9 Okt 14:00|9|100|22 km/h|10d|500|C",
      "L_w_8":"Mi, 9 Okt 17:00|9|100|16 km/h|10d|500|C",
      "L_w_9":"Mi, 9 Okt 20:00|8|99|15 km/h|10n|500|C",
      "L_w_10":"Mi, 9 Okt 23:00|8|100|18 km/h|10n|500|C",
      "L_w_11":"Do, 10 Okt 02:00|7|99|14 km/h|10n|500|C",
      "L_w_12":"Do, 10 Okt 05:00|7|100|20 km/h|10n|500|C",
      "L_w_13":"Do, 10 Okt 08:00|7|100|18 km/h|10d|500|C",
      "L_w_14":"Do, 10 Okt 11:00|8|86|16 km/h|10d|500|C",
      "L_w_15":"Do, 10 Okt 14:00|8|75|12 km/h|10d|500|C",
      "L_w_16":"Do, 10 Okt 17:00|10|63|13 km/h|10d|500|C",
      "L_w_17":"Do, 10 Okt 20:00|7|50|8 km/h|10n|500|C",
      "L_w_18":"Do, 10 Okt 23:00|7|96|8 km/h|04n|804|C",
      "L_w_19":"Fr, 11 Okt 02:00|7|69|8 km/h|04n|803|C",
      "L_w_20":"Fr, 11 Okt 05:00|7|58|9 km/h|04n|803|C",
      "L_w_21":"Fr, 11 Okt 08:00|7|70|8 km/h|04d|803|C",
      "L_w_22":"Fr, 11 Okt 11:00|12|94|7 km/h|04d|804|C",
      "L_w_23":"Fr, 11 Okt 14:00|15|63|10 km/h|04d|803|C",
      "L_w_24":"Fr, 11 Okt 17:00|15|0|7 km/h|01d|800|C"
      },
      "hk1":{
      "L_roomtemp_act":"0",
      "L_roomtemp_set":"240",
      "L_flowtemp_act":"295",
      "L_flowtemp_set":"292",
      "L_state":"32",
      "L_statetext":"Heizbetrieb aktiv",
      "L_pump":"true",
      "mode_auto":"1",
      "time_prg":"0",
      "temp_setback":"180",
      "temp_heat":"240",
      "temp_vacation":"150",
      "name":"Fussboden",
      "oekomode":"0"
      },
      "hk2":{
      "L_roomtemp_act":"0",
      "L_roomtemp_set":"80",
      "L_flowtemp_act":"311",
      "L_flowtemp_set":"80",
      "L_state":"65552",
      "L_statetext":"Absenkbetrieb aktiv|Au?entemp ?ber Heizgrenze absenken",
      "L_pump":"false",
      "mode_auto":"1",
      "time_prg":"0",
      "temp_setback":"180",
      "temp_heat":"220",
      "temp_vacation":"150",
      "name":"Heizkoerper",
      "oekomode":"0"
      },
      "pu1":{
      "L_tpo_act":"437",
      "L_tpo_set":"292",
      "L_tpm_act":"435",
      "L_tpm_set":"292",
      "L_pump_release":"80",
      "L_pump":"0",
      "L_state":"512",
      "L_statetext":"Anforderung Aus",
      "mintemp_off":"80",
      "mintemp_on":"80",
      "ext_mintemp_off":"80",
      "ext_mintemp_on":"80"
      },
      "ww1":{
      "L_temp_set":"390",
      "L_ontemp_act":"443",
      "L_offtemp_act":"443",
      "L_pump":"false",
      "L_state":"8200",
      "L_statetext":"Zeit au?erhalb Zeitprogramm|Anforderung Aus",
      "time_prg":"0",
      "sensor_on":"0",
      "sensor_off":"0",
      "mode_auto":"1",
      "mode_dhw":"1",
      "heat_once":"false",
      "temp_min_set":"440",
      "temp_max_set":"500",
      "name":"",
      "smartstart":"0",
      "use_boiler_heat":"0",
      "oekomode":"0"
      },
      "sk1":{
      "L_koll_temp":"168",
      "L_spu":"429",
      "L_pump":"0",
      "L_state":"32",
      "L_statetext":"Differenz Kollektor-Speicher zu niedrig",
      "mode":"1",
      "cooling":"0",
      "spu_max":"600",
      "name":""
      },
      "se1":{
      "L_flow_temp":"227",
      "L_ret_temp":"218",
      "L_flow":"0",
      "L_pwr":"0",
      "L_counter":"47651",
      "L_total":"42637",
      "L_day":"22",
      "L_yesterday":"7"
      },
      "circ1":{
      "L_pummp":"false",
      "L_ret_temp":"416",
      "L_release_temp":"443",
      "time_prg":"0",
      "mode":"1",
      "pump_release":"300",
      "return_set":"400",
      "name":""
      },
      "pe1":{
      "L_temp_act":"434",
      "L_temp_set":"80",
      "L_ext_temp":"-32768",
      "L_frt_temp_act":"463",
      "L_frt_temp_set":"80",
      "L_br":"false",
      "L_ak":"false",
      "L_not":"true",
      "L_stb":"true",
      "L_modulation":"0",
      "L_uw_speed":"0",
      "L_state":"99",
      "L_statetext":"Aus",
      "L_type":"4",
      "L_starts":"14664",
      "L_runtime":"4507",
      "L_avg_runtime":"18",
      "L_uw_release":"437",
      "L_uw":"0",
      "L_storage_fill":"0",
      "L_storage_min":"400",
      "L_storage_max":"6000",
      "L_storage_popper":"0",
      "storage_fill_yesterday":"0",
      "mode":"1"
      },
      "error":{
      }
      }

  4. Tolle Sache, würde auch gern einige werte Abrufen. Kurze Frage dazu, geht das auch mit einem Tool ohne große Programmierung ?

    Gruß
    Matthias

    • Hallo Matthias,
      klar, du kannst die URL einfach im Browser eingeben, dann bekommst du die Werte auch zurück.
      Ansonsten nutze einfach die Suchmaschine und gib „JSON“ in Kombination mit „Homeautomatisierung“ ein. Da sollten einige Treffer kommen. Diese Anwendungen haben Schnittstellen und du kannst dir die Daten dann grafisch aufbereiten lassen.
      Hier ein aktuelles Beispiel, kein Solarertrag heute, es hat nochmal geschneit.

      {
      "system":{
      "L_ambient":"40",
      "L_errors":"0",
      "L_usb_stick":"true"
      },
      "weather":{
      "L_temp":"50",
      "L_clouds":"75",
      "L_forecast_temp":"60",
      "L_forecast_clouds":"81",
      "L_forecast_today":"true",
      "L_starttime":"820",
      "L_endtime":"1800",
      "L_source":"http://www.openweathermap.org",
      "L_location":"Dachsberg|DE|7580311",
      "cloud_limit":"55",
      "hysteresys":"-40",
      "offtemp":"-100",
      "lead":"120",
      "refresh":"false",
      "oekomode":"0"
      },
      "forecast":{
      "L_w_0":"So, 28 Apr 09:47|5|75|8 km/h|09d|520|C|06:15|20:34",
      "L_w_1":"So, 28 Apr 11:00|7|90|12 km/h|10d|500|C",
      "L_w_2":"So, 28 Apr 14:00|9|93|12 km/h|10d|500|C",
      "L_w_3":"So, 28 Apr 17:00|9|86|11 km/h|10d|500|C",
      "L_w_4":"So, 28 Apr 20:00|5|76|5 km/h|10d|500|C",
      "L_w_5":"So, 28 Apr 23:00|1|36|3 km/h|03n|802|C",
      "L_w_6":"Mo, 29 Apr 02:00|1|40|4 km/h|03n|802|C",
      "L_w_7":"Mo, 29 Apr 05:00|1|94|3 km/h|04n|804|C",
      "L_w_8":"Mo, 29 Apr 08:00|3|80|3 km/h|04d|803|C",
      "L_w_9":"Mo, 29 Apr 11:00|8|48|7 km/h|03d|802|C",
      "L_w_10":"Mo, 29 Apr 14:00|8|72|8 km/h|10d|500|C",
      "L_w_11":"Mo, 29 Apr 17:00|10|98|10 km/h|10d|500|C",
      "L_w_12":"Mo, 29 Apr 20:00|7|95|6 km/h|10d|500|C",
      "L_w_13":"Mo, 29 Apr 23:00|4|91|1 km/h|04n|804|C",
      "L_w_14":"Di, 30 Apr 02:00|4|90|1 km/h|04n|804|C",
      "L_w_15":"Di, 30 Apr 05:00|3|85|4 km/h|04n|804|C",
      "L_w_16":"Di, 30 Apr 08:00|5|88|3 km/h|10d|500|C",
      "L_w_17":"Di, 30 Apr 11:00|6|99|4 km/h|10d|500|C",
      "L_w_18":"Di, 30 Apr 14:00|8|96|6 km/h|10d|500|C",
      "L_w_19":"Di, 30 Apr 17:00|10|89|6 km/h|10d|500|C",
      "L_w_20":"Di, 30 Apr 20:00|9|68|2 km/h|10d|500|C",
      "L_w_21":"Di, 30 Apr 23:00|6|9|5 km/h|01n|800|C",
      "L_w_22":"Mi, 1 Mai 02:00|5|16|5 km/h|02n|801|C",
      "L_w_23":"Mi, 1 Mai 05:00|4|19|4 km/h|02n|801|C",
      "L_w_24":"Mi, 1 Mai 08:00|7|13|2 km/h|02d|801|C"
      },
      "hk1":{
      "L_roomtemp_act":"0",
      "L_roomtemp_set":"240",
      "L_flowtemp_act":"349",
      "L_flowtemp_set":"355",
      "L_state":"32",
      "L_statetext":"Heizbetrieb aktiv",
      "L_pump":"true",
      "mode_auto":"1",
      "time_prg":"0",
      "temp_setback":"180",
      "temp_heat":"240",
      "temp_vacation":"150",
      "name":"Fussboden",
      "oekomode":"0"
      },
      "hk2":{
      "L_roomtemp_act":"0",
      "L_roomtemp_set":"180",
      "L_flowtemp_act":"362",
      "L_flowtemp_set":"370",
      "L_state":"16",
      "L_statetext":"Absenkbetrieb aktiv",
      "L_pump":"true",
      "mode_auto":"1",
      "time_prg":"0",
      "temp_setback":"180",
      "temp_heat":"220",
      "temp_vacation":"150",
      "name":"Heizkoerper",
      "oekomode":"0"
      },
      "pu1":{
      "L_tpo_act":"430",
      "L_tpo_set":"370",
      "L_tpm_act":"417",
      "L_tpm_set":"370",
      "L_pump_release":"80",
      "L_pump":"0",
      "L_state":"512",
      "L_statetext":"Anforderung Aus",
      "mintemp_off":"80",
      "mintemp_on":"80",
      "ext_mintemp_off":"80",
      "ext_mintemp_on":"80"
      },
      "ww1":{
      "L_temp_set":"370",
      "L_ontemp_act":"444",
      "L_offtemp_act":"444",
      "L_pump":"false",
      "L_state":"8200",
      "L_statetext":"Zeit au?erhalb Zeitprogramm|Anforderung Aus",
      "time_prg":"0",
      "sensor_on":"0",
      "sensor_off":"0",
      "mode_auto":"1",
      "mode_dhw":"1",
      "heat_once":"false",
      "temp_min_set":"420",
      "temp_max_set":"480",
      "name":"",
      "smartstart":"0",
      "use_boiler_heat":"0",
      "oekomode":"0"
      },
      "sk1":{
      "L_koll_temp":"467",
      "L_spu":"406",
      "L_pump":"29",
      "L_state":"0",
      "mode":"1",
      "cooling":"0",
      "spu_max":"600",
      "name":""
      },
      "se1":{
      "L_flow_temp":"183",
      "L_ret_temp":"368",
      "L_flow":"0",
      "L_pwr":"0",
      "L_counter":"28315",
      "L_total":"27266",
      "L_day":"0",
      "L_yesterday":"0"
      },
      "circ1":{
      "L_pummp":"false",
      "L_ret_temp":"420",
      "L_release_temp":"444",
      "time_prg":"0",
      "mode":"1",
      "pump_release":"300",
      "return_set":"400",
      "name":""
      },
      "pe1":{
      "L_temp_act":"435",
      "L_temp_set":"80",
      "L_ext_temp":"-32768",
      "L_frt_temp_act":"609",
      "L_frt_temp_set":"80",
      "L_br":"false",
      "L_ak":"false",
      "L_not":"true",
      "L_stb":"true",
      "L_modulation":"0",
      "L_uw_speed":"0",
      "L_state":"99",
      "L_statetext":"Aus",
      "L_type":"4",
      "L_starts":"14062",
      "L_runtime":"4003",
      "L_avg_runtime":"17",
      "L_uw_release":"430",
      "L_uw":"0",
      "L_storage_fill":"0",
      "L_storage_min":"400",
      "L_storage_max":"6000",
      "L_storage_popper":"0",
      "storage_fill_yesterday":"0",
      "mode":"1"
      },
      "error":{
      }
      }

    • Hallo Flo,
      die kleine Platine unter dem Touch hat 2 USB-Anschlüsse. Einen für Updates und einen für das Logging. Ich denke nicht, dass du da einfach einen WLAN-Stick anschliessen kannst. Ich habe die Software Version 3.0 am Laufen und auch keine Einstellungen für ein WLAN gefunden.
      Du hast ja einen Ethernet-Anschluss am Touch-Controller.
      Ich nehme in solchen Fällen einen WLAN-Repeater, der sich auf verschiedene Arten betreiben lässt. Du brauchst dazu den WLAN-Client-Modus. Der Repeater loggt sich ins WLAN ein und erlaubt 1 oder 2 Ethernet-Verbindungen, meist auf der Unterseite. Dann kannst du den Ofen über den CLient ins WLAN bringen.

    • Hast Du bereits eine Antwort erhalten? Ich möchte das bald auch umsetzen. Der Monteur hat mir gesagt das sollte mit einem einfachen Hama wifi usb Stick gehen. Ich habe es nicht geschafft.

  5. Hallo Peter,

    die Informationen sind für mich als zukünftigen Ökofen-Betreiber äusserst wertvoll.
    Ich habe jedoch ein Problem: für meine Ost/West-Solaranlage brauche ich eine zweite IO-Box nur um den zweiten Kollektorfühler auszulesen. Ökofen mauert da, es gibt offenbar keine Alternative. Meine Idee ist, das intere RS485-Protokoll anzuzapfen und damit eine kleine noch zu bauende uC-Hardware anzusteuern, die den Wert des zweiten Sensors zu Verfügung stellt. Hast Du Dich schon mit dem RS485-Protokoll von Ökofen beschäftigt? Wird da evtl. auch JSON genutzt?
    Viele Grüße
    Christof

    • Christof,
      bei mir im Handbuch heisst es:
      Kollektorregelung: Gibt es ausschließlich für den Solarkreis 1.
      Hier aktivieren Sie die Kollektorregelung. Sie dient zur effizienten Wärmeentnahme
      von Sonnenkollektoren.
      Die Wärmemenge wird entsprechend der Kollektortemperatur entnommen.

      Da ich nur je eine Anlage mit Süd-Ausrichtung habe, sehe ich im JSON nur den SK1 Datensatz.
      Der Steuerung ist doch egal, ob das Signal von Ost oder West kommt. Du willst halt, dass die Pumpe läuft und die Wärme im Pufferspeicher landet.
      Kannst du nicht mit einem Arduino oder Raspberry die Sensoren selbst auslesen und über ein Relais das Signal weiterleiten, das den höheren Temperaturwert gibt ?
      Ich hätte keine 2 Anlagen gemacht, nur einen Kreis und wenn Ost oder West Temperatur über Pufferspeicher unten liefert, dann eben pumpen lassen.
      Gruss
      Peter

      • Hallo Peter,
        danke für Deine Antwort. Zwei Solarkreise ergibt schon Sinn, denn wenn eine Seite 30°C und die andere Seite 90°C hat, will man halt nur durch die heisse Seite pumpen. Ich habe relativ viel Leistung auf dem Dach installiert in der Hoffnung, in der Übergangszeit viel zur Heizungsunterstützung beizutragen.
        Prinzipiell könnte ich das natürlich so machen, wie Du vorschlägst, allerdings würde ich damit einige Nachteile in Kauf nehmen, was ich nicht will:
        Die Ökofen-Steuerung muss ja die richtige Pumpe ansteuern, um optimal Sonnenwärme zu ernten. Dazu muss sie natürlich wissen, welche Seite liefert end welche nicht. Ich könnte natürlich auch die Pumpensteuerung übernehmen, allerdings habe ich im Moment keine Zeit und Lust die Regelung zu programmieren. Soweit ich das verstehe, regelt die Ökofen die Solarpumpen ja je nach Temperaturdifferenzen etc., d.h. die Solaranlage läuft immer im optimalen Arbeitspunkt (High-Flow/Low-Flow).
        Ich habe auch Kontakt mit Ökofen aufgenommen, die weigern sich aber, einen der beiden nicht benutzten Reserve-Fühlereingänge als zweiten Kollektrofühler zu verwenden. Lt- Aussage Entwicklung in Österreich wird es das erst mit einem Redesign der IO-Box geben, was mir nicht in den Kopf will. Die Software kann es, die Hardware gibt es m.E. auch her. es fehlen vermutlich ein paar Zeilen Code, that’s it.

        Wie bist Du sonst mit der Ökofen-Anlage zufrieden? Ich habe jetzt ein paar Tage Urlaub, da werde ich mal über die Problematik nachdenken.

        Viele Grüße
        Christof

      • Hallo Peter,
        danke für Deine Antowrt, leider ist mein erneuter Kommentar von gestern leider verschütt gegangen. Ich bin jetzt erstmal im Urlaub, ich denke über die Sache nochmal nach.
        Viele Grüße
        Christof

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.