Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • U
      ufelet @Homoran last edited by

      @homoran

      Die RM gibt es nicht mehr.
      Mein Sensor hängt nur im wiffi-wz Adapter des ioBroker.
      Andere wiffi Geräte von Dr. Stall werden fehlerfrei im ioBroker bei mir erkannt.
      Mein Sensor übermittelt offensichtlich die JSON Daten nicht wiffi-wz gerecht.
      Wie muss das Protokoll richtig aussehen, damit es der wiffi-wz Adapter richtig erkennt.
      Ist vor der JSON Datei ein Kopf erforderlich oder werden die Daten durch einen Extender erst erkannt?
      Vielen Dank.
      Bernd

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @ufelet last edited by

        @ufelet du kannst doch per IP-Aufruf das JSON abrufen

        @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

        Wie muss das Protokoll richtig aussehen,

        dann siehst du das

        U 1 Reply Last reply Reply Quote 0
        • U
          ufelet @Homoran last edited by

          @homoran

          Oh, das ist mir was neues. Wenn ich jetzt noch erfahren dürfte, wie ich das von einem wiffi Gerät abfragen kann ist doch meine Frage schon beantwortet.
          Ich hoffe aber, dass ich dann nicht nur die JSON angezeigt bekomme, denn die kenne ich.
          Selbst wenn ich die, die ich vom wiffi Gerät selbst angezeigt bekomme in meinem Program implementiere und an den ioBroker abschicke, bekomme ich diese Fehlermeldung. Da muss also noch ein Kopf oder Rahmen existieren, der die Erkennung im wiffi Adapter einleitet.
          Aber vielleicht bringt mich die Abfrage zu neuen Erkenntnissen.
          Bitte, wie kann ich das machen???
          Bernd

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @ufelet last edited by

            @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

            Da muss also noch ein Kopf oder Rahmen existieren, der die Erkennung im wiffi Adapter einleitet.

            Der Adapter macht nichts anderes, als das JSON abzurufen und in Datenpunkte aufzudröseln.

            Das Ganze geht auch per Skript.

            @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

            wie ich das von einem wiffi Gerät abfragen kann

            <IP>/?JSON

            @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

            Ich hoffe aber, dass ich dann nicht nur die JSON angezeigt bekomme,

            warum?
            s.o.

            U 1 Reply Last reply Reply Quote 0
            • U
              ufelet @Homoran last edited by

              @homoran

              Warum? Ja weil ich wie ich geschrieben habe das komplette JSON Protokoll eine funktionierenden Gerätes von Dr. Stall an den ioBroker geschickt habe und die gleiche Fehlermeldung mit der fehlenden IP bekommen habe. Deshalb habe ich vermutet, dass es einen Kopf oder Extender zur JSON geben muss.
              Der aufgeführte Befehl schickt mich bei einem funktionierenden wiffi Gerät und bei meinem auf die Startseite. Bei meinem war mir das klar, weil diese Seite bei mir nicht existiert und die Fehlererkennung auf die Hauptseite umgeleitet hat.
              Es ist doch eher anders. Nicht der Adapter ruft auf, sondern die Sensoren senden an den Adapter.
              Aber was, damit er das versteht?

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @ufelet last edited by Homoran

                @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                das komplette JSON Protokoll eine funktionierenden Gerätes von Dr. Stall an den ioBroker geschickt habe

                redest du vom push?
                nicht vom pull?
                push geht vom wiffi zur CCU
                der iobroker adapter pullt

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  So!
                  habe mich nach Jahren nochmal eingearbeitet.
                  Anscheinend kann der Adapter auch an iobroker pushen.
                  Das hatte ich nie genutzt, weil mein wiffi an die CCU gepusht hat, und ich von iob gepullt habe.
                  pushen an 2 clients geht nicht!
                  Die Pull option hat Eugen damals für ioBroker "nachgerüstet"

                  bevor es den Adapter gab, gab es das folgende Skript

                  //var request = require("request");
                  
                  var pfad    = "WIFFI" + ".";
                  var url     = 'http://192.168.123.45/?json:';
                  
                  
                  
                  // TODO:
                  //
                  
                  
                  function timeLastData() {
                     return formatDate(new Date(), "DD.MM, hh:mm:ss");
                  }
                  
                  function parseJson(text) {
                     if (text === "") return {};
                     try {
                         json = JSON.parse(text);
                     } catch (ex) {
                         json = {};
                     }
                     if(!json) json = {};
                     return json;
                  }
                  
                  function readJson(url, callback) {
                     httpGet(url, function (err, response, state){
                         if (response.data) {
                             var json = parseJson(response.data);
                             callback(null, json);
                         } else {
                             var error = "(" + err + ") ERROR bei Abfrage 33 von: " + url;
                             log(error, "warn");  
                             callback(error, null);
                         }
                     });
                  }
                  
                  
                  
                  function readVars() {
                     readJson(url, function(err,json) {
                         if(!err) {
                             var myJson = json;
                             var dPname, init;
                             var anzahlVars = myJson.vars.length;
                             for (var i = 1; i < anzahlVars; i++) {
                                 if(myJson.vars[i].homematic_name) {
                                dPname = pfad + myJson.vars[i].homematic_name;
                                init = myJson.vars[i].value;
                                setState(dPname, init,true);
                             }
                             }
                             for (var systeminfo in myJson.Systeminfo) {
                                 dPname = pfad + "Systeminfo." + systeminfo;
                                 init = myJson.Systeminfo[systeminfo];
                                 setState(dPname, init ,true);
                             }
                             setState(pfad + "LetzteAbfrage",timeLastData(),true);
                             var statusNe = getState(pfad + "Last_State_Count").val;
                             if (statusNe < 0) {
                                 setState(pfad + "Last_State_Count",0,true);
                             } else {
                                 setState(pfad + "Last_State_Count",statusNe + 1,true);
                             }
                             log("WIFFI Daten aktualisiert: " + url,"debug");
                         } else {
                             log("Fehler beim Auslesen des JSON 69. Keine Daten erhalten.","warn");
                             if (statusNe > 0) {
                                 setState(pfad + "Last_State_Count",0,true);
                             } else {
                                 setState(pfad + "Last_State_Count",statusNe - 1,true);
                             }
                         }
                     });
                  }
                  
                  
                  function createDpFromJson(myJson) {
                     var dPname = "";
                     var name = "";
                     var forceCreation = false;
                     var common;
                     var init;
                     var type, desc, unit;
                     var anzahlVars = myJson.vars.length;
                     for (var i = 1; i < anzahlVars; i++) {
                         dPname = pfad + myJson.vars[i].homematic_name;
                         init = myJson.vars[i].value;
                         type = myJson.vars[i].type;
                         desc = myJson.vars[i].desc;
                         name = desc;
                         unit = myJson.vars[i].unit.replace('grad','°');
                         common = '{"desc":"' + desc + '","type":"' + type + '","unit":"' + unit + '","role":"value"' +',"name":"' + name + '"}'; 
                         common = JSON.parse(common);
                         //createState(dPname, init , forceCreation, common);
                         if(myJson.vars[i].homematic_name) createState(dPname, init , forceCreation, common);
                         //createState(dPname, init);
                         log("neuer Datenpunkt: " + dPname + ": " + init +", common: " + common,"info");
                     }
                     for (var systeminfo in myJson.Systeminfo) {
                         dPname = pfad + "Systeminfo." + systeminfo;
                         init = myJson.Systeminfo[systeminfo];
                         common = '{"name":"'+systeminfo+'","desc":"'+systeminfo+'","role":"value"}';
                         common = JSON.parse(common);
                         log("neuer Datenpunkt: " + dPname + ": " + init +", common: " + common,"info");
                         createState(dPname, init , forceCreation, common);
                     }
                     createState(pfad + "System.Modultyp",myJson.modultyp);
                     createState(pfad + "System.url",url.replace("json:","xpert:0:"));
                     createState(pfad + "Last_State_Count",0,true);
                     createState(pfad + "LetzteAbfrage"  ,timeLastData());
                     createState(pfad + "Skriptstart"    ,timeLastData()),true;
                     createState(pfad + "Control_GetData",false,true,        {"name":"Daten mit true manuell abrufen","type":"boolean","role":"value"});
                  }
                  
                  
                  
                  function createDp() {
                     readJson(url, function (err,json) {
                         if(!err) {
                             var myJson = json;
                             createDpFromJson(myJson);
                             log("WIFFI Datenpunkte angelegt/aktualisiert");
                         } else {
                             log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","error");
                             log("Keine Datenpunkte angelegt. Skript beendet","error");
                             return;
                         }
                     });
                  }
                  
                  function createOn() {
                     var dpId = "javascript." + instance + "." + pfad + "Control_GetData"; 
                     on({id: dpId ,change:'any'}, function (obj) {
                         log(obj.state.val,"warn");
                         if(obj.state.val) {
                             readVars();
                         }
                     });
                  
                     schedule("*/4 * * * *", function () { // alle 4 Minute die Werte abfragen
                         readVars();
                     });
                  
                  }
                  
                  
                  function main() {
                     readVars();
                  }
                  
                  
                  // Skriptstart
                  
                  createDp();
                  setTimeout(createOn,    3000);
                  setTimeout(main,        3000);
                  
                  

                  Was Eugen in seinen Wiffis zum pushen programmiert hat weiß ich nicht.
                  Der Header war anscheinend nur für die CCU notwendig. Zu ioBroker wird IMHO nur das JSON geschickt

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by Homoran

                    wenn ich mir deine Meldung ansehe

                    @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                    Datagram error, could not find an ip!

                    und die Struktur

                    @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                    {"modultyp":"DHT_Sensor","vars":
                    {"name":"0"
                    ,"homematic_name":"DHT-Sensor-IP",
                    "desc":"ip des DHT-Sensor",
                    "type":"string",
                    "unit":"","
                    value":"192.168.200.40"},"
                    Systeminfo":{"MAC-Adresse":"18:FE:34:CF:82:FA","Homematic_CCU_ip":"192.168.200.122","WLAN_ssid":"Platin","WLAN_Signal_dBm":"-57","sec_seit_reset":"2367","firmware":"WeMos_DHT_Sensor_20251024"}}                                                                    
                    

                    passt das irgendwie nicht zu dem Format vom Wiffi

                    {"modultyp":"wiffi-wz","vars":[{"name":"0","homematic_name":"wz_ip","desc":"ip des wiffi-wz","type":"string","unit":"","value":"192.168.123.45"},{"name":"1","homematic_name":"wz_co2","desc":"Luftqualitaet","type":"number","unit":"%","value":76},{"name":"2","homematic_name":"wz_temp","desc":"Temperatur","type":"number","unit":"gradC","value":20.0},{"name":"3","homematic_name":"wz_feuchte","desc":"Luftfeuchte","type":"number","unit":"%","value":67.2},{"name":"19","homematic_name":"wz_taupunkt","desc":"Taupunkt","type":"number","unit":"gradC","value":13.7},{"name":"18","homematic_name":"wz_feuchte_abs","desc":"Absolutfeuchte","type":"number","unit":"g/m3","value":11.6},{"name":"9","homematic_name":"wz_baro","desc":"Luftdruck","type":"number","unit":"mB","value":1002.23},{"name":"5","homematic_name":"wz_luftdrucktrend","desc":"Luftdrucktrend","type":"string","unit":"","value":"fallend"},{"name":"8","homematic_name":"wz_lux","desc":"Helligkeit","type":"number","unit":"lux","value":0.00},{"name":"6","homematic_name":"wz_motion_left","desc":"Bewegung links","type":"boolean","unit":"","value":true},{"name":"7","homematic_name":"wz_motion_right","desc":"Bewegung rechts","type":"boolean","unit":"","value":false},{"name":"20","homematic_name":"","desc":"Bewegung","type":"boolean","unit":"","value":false},{"name":"4","homematic_name":"wz_noise","desc":"Geraeusch","type":"boolean","unit":"","value":true},{"name":"10","homematic_name":"wz_elevation","desc":"Sonne-Elevation","type":"number","unit":"grad","value":-20.5},{"name":"11","homematic_name":"wz_azimut","desc":"Sonne-Azimut","type":"number","unit":"grad","value":273.9},{"name":"12","homematic_name":"wz_buzzer","desc":"Buzzer","type":"boolean","unit":"","value":false},{"name":"21","homematic_name":"","desc":"Relais","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"aa.bb.cc.dd.ee.ff","ip_Homematic_CCU":"192.168.123.56","WLAN_ssid":"WLAN","WLAN_Signal_dBm":-57,"millis_seit_reset":46252671,"wiffizeit":" 1 19:21","firmware":"wiffi_wz_106"}}
                    

                    Da fehlen bei dir die Eckigen Klammern

                    Möglich, dass deine Struktur dem Adapter nicht die IP des Sensors mitteilt, damit der Adapter die Konfiguration des Sensirs übernehmen kann
                    https://github.com/t4qjXH8N/ioBroker.wiffi-wz?tab=readme-ov-file#setup

                    U 1 Reply Last reply Reply Quote 0
                    • U
                      ufelet @Homoran last edited by

                      @homoran

                      Vielen Dank.
                      Diese Möglichkeit hatte ich noch gar nicht auf dem Schirm. Das werde ich erst mal verfolgen, genauso wie die fehlenden eckigen Klammern.
                      Viele Grüße Bernd

                      1 Reply Last reply Reply Quote 0
                      • mcm1957
                        mcm1957 last edited by

                        An alle hier Beteiligten:

                        Der Adapter https://github.com/t4qjXH8N/ioBroker.wiffi-wz ist wie schon geschrieben steinalt und nicht mehr gewartet. Auf eine entsprechende Nachfrage Ende 2024 hat der bisherige Maintainer keinerlei Reaktion gezeigt:

                        https://github.com/t4qjXH8N/ioBroker.wiffi-wz/issues/186

                        Der Adapter wird daher entweder (zumindest) aus dem STABLE Repository fliegen oder ich versuche ihn in den iobroker-community-organisation Bereich zu verschieben.

                        Bevor och da aber Arbeit reinstecke hätte ich gerne Rückmeldungen:

                        • gibts dafür Interesse (Bei dir @ufelet geh ich mal davon aus 🙂 ) ?
                        • gibts User die bereit wären einen migrierte Version kurz auf ihre Funktion zu testen ? Mangels entsprechender Hardware kann ich da absolut nichts tun...
                        • kann jemand bestätigen dass es die zum Adapetr gehörige Hatrdware nwirklich noch gibt (wenshop sieht alive aus)?
                        mcm1957 created this issue in t4qjXH8N/ioBroker.wiffi-wz

                        open Is this adapter still maintained? - PLEASE RESPOND UNTIL 15.11.2024 LATEST #186

                        Homoran U 2 Replies Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @mcm1957 last edited by Homoran

                          @mcm1957 sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                          gibts User die bereit wären einen migrierte Version kurz auf ihre Funktion zu testen

                          ✋

                          @mcm1957 sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                          kann jemand bestätigen dass es die zum Adapetr gehörige Hatrdware nwirklich noch gibt

                          hab zwar keider seit Corona den Kontakt zu Eugen verloren/vernachlässigt 😢 aber wie du schreibst ist der Shop noch aktiv
                          https://www.stall.biz/shop/

                          Abgesehen davon sind etliche Geräte im Feld, der Adapter ist 280x installiert, was zwar absolut nicht viel ist, aber...

                          1 Reply Last reply Reply Quote 0
                          • U
                            ufelet @mcm1957 last edited by

                            @mcm1957

                            Also ich habe im Moment Wiffi-Pump, Wiffi-Counter und RainyMan von stall.biz in Betrieb. Alle Geräte werden problemlos erkannt und ihre Daten erscheinen auch im ioBroker. Und ja, ich bin nach wie vor noch am Adapter aus obigen Gründen interessiert.
                            Die Sensoren vertreibt Eugen auch noch in immer neueren Versionen.
                            Ich glaube einfach nicht, dass ich der Einzige bin, der die Sensoren von Eugen im ioBroker nutzt. Mit meiner Anfrage wollte ich User finden, die schon Sensoren geschrieben haben, die diesen Adapter nutzen. Eugen kann doch nicht der Einzige sein.

                            Eine derartige Welle wollte ich mit meiner Anfrage überhaupt nicht auslösen.
                            Ich wollte nur meine selbst geschriebenen Sensoren in den ioBroker bringen. Der Adapter schien mir am geeignetsten, weil er ein einfaches JSON Protokoll nutzt. (woran ich immer noch scheitere)

                            Ich habe gestern auch Dr. Stall (Eugen - vy73) geschrieben, habe aber noch niemals von ihm eine Antwort erhalten.

                            Bitte noch mindestens eine Woche vor irgendwelchen Aktivitäten warten. Danke

                            ufelet Bernd

                            Homoran 1 Reply Last reply Reply Quote 0
                            • L
                              Linedancer last edited by

                              Hallo Gemeinde,
                              Ich habe den Adapter seit ewigen Zeiten mit dem Weatherman am laufen. Der macht völlig problemlos und unauffällig seinen Dienst.
                              Natürlich sollte der Adapter weiter im Stable bleiben. Wenn es eine Community Edition geben sollte, bin ich gerne zum Testen bereit, auch wenn ich z.Zt. Keine wirkliche Testumgebung habe.

                              mcm1957 1 Reply Last reply Reply Quote 1
                              • mcm1957
                                mcm1957 @Linedancer last edited by

                                @linedancer

                                Danke f.d. Info.
                                Der Adapter benötigt nur einige Anpassungen da er z.B. noch deprecated Funktionen verwendet die mit dem nächsten major Release entfernt werden. Wenn Interesse existiert (und so sieht es aus) werde ich eine Migration einplanen. Das wird KEIN neuer Adapter und es wird auch auch keine Änderungen an den States geben. Es würde / wird nur das Repository verlegt damit ein Wartungszugriff möglich wird.

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @ufelet last edited by

                                  @ufelet erst einmal zur Klarstellung:
                                  Was du da machst geht an der Aufgabe des Adapters vorbei!
                                  Wenn's klappt ist gut, wenn nicht würde ich sagen: ist so!

                                  Da wir aber alle kleine Bastler sind, finde ich das Projekt interessant.
                                  Deswegen habe ich dir gestern den Link zum Adapter Readme auf github geschickt.

                                  Deine Sensoren erfüllen demnach nicht die Voraussetzungen um mit dem Adapter funktionieren zu können.

                                  @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                  Eugen kann doch nicht der Einzige sein.

                                  doch! Der Adapter ist ja für seine Geräte geschrieben worden!


                                  Ansonsten:

                                  @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                  Ich habe gestern auch Dr. Stall (Eugen - vy73) geschrieben

                                  wer, wo ist das denn?
                                  Eugen läuft unter @funkleuchtturm, war hier allerdings zuletzt 2018 unterwegs.

                                  im Homematic Forum dürftest du eher Glück haben

                                  F U 2 Replies Last reply Reply Quote 0
                                  • F
                                    funkleuchtturm @Homoran last edited by

                                    @homoran
                                    Hallo, der wiffi wz adapter kann nicht nur für den alten wiffi wz sondern auch für die aktuellen Module verwendet werden.
                                    Ich bekomme oft Anfragen, wie eine Integration insbesondere meiner Wetterstation (Weatherman 2) unter IObroker gemacht werden kann und dann verweise ich gerne auf dieses Forum.
                                    Der aktuelle Weatherman kann auch Mqtt insbesondere für Homeassistant und wäre damit sicher auch über diesen alternativen Weg in Iobroker einzubinden.
                                    Würde mich freuen, wenn ihr den wiffi wz Adapter nicht herausnehmt.

                                    Homoran 1 Reply Last reply Reply Quote 1
                                    • U
                                      ufelet @Homoran last edited by

                                      @homoran

                                      Ich wusste nicht, dass Dr. Stall auch hier unter funkleuchtturm angemeldet ist. Ihn mit Vornamen anzusprechen ist zwar unter Funkamateuren so üblich, deshalb eine gebräuchliche Abkürzung unter Funkamateuren für viel Grüße, im Forum steht mir allerdings das Recht nicht zu ihn zu duzen.
                                      Die Readme hat nur noch meine Annahme bestätigt, dass die Sensoren ihre Daten an den Adapter senden und nicht vom Adapter abgefragt werden. Zum Protokoll ist nichts gesagt.
                                      Inzwischen bin ich der Überzeugung, dass ich hier ganz bestimmt keine Antwort auf meine Frage erhalten werde.

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @funkleuchtturm last edited by

                                        @funkleuchtturm Hallo Eugen!
                                        schön von dir hier zu hören.
                                        Hoffentlich geht's dir gut.

                                        @funkleuchtturm sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                        Würde mich freuen, wenn ihr den wiffi wz Adapter nicht herausnehmt.

                                        ich hoffe, der bleibt!
                                        ich nutze ihn ja auch.

                                        Aber hier ist gerade die umgekehrte Herausforderung!
                                        @ufelet hat selbstgebastelte Sensoren, die er dem Adapter als WIFFIs verkaufen will.

                                        Da bräuchte er Infos wie die notwendige Datenstruktur auf Sensorseite se7n muss.

                                        crunchip 1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @ufelet last edited by Homoran

                                          @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                          Die Readme hat nur noch meine Annahme bestätigt, dass die Sensoren ihre Daten an den Adapter senden und nicht vom Adapter abgefragt werden.

                                          ja, deswegen hab ich es dir ja verlinkt!
                                          mit ausführlicher Erklärung

                                          @homoran sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                          So!
                                          habe mich nach Jahren nochmal eingearbeitet.
                                          Anscheinend kann der Adapter auch an iobroker pushen.
                                          Das hatte ich nie genutzt, weil mein wiffi an die CCU gepusht hat, und ich von iob gepullt habe.
                                          pushen an 2 clients geht nicht!
                                          Die Pull option hat Eugen damals für ioBroker "nachgerüstet"

                                          bevor es den Adapter gab, gab es das folgende Skript

                                          //var request = require("request");
                                          
                                          var pfad    = "WIFFI" + ".";
                                          var url     = 'http://192.168.123.45/?json:';
                                          
                                          
                                          
                                          // TODO:
                                          //
                                          
                                          
                                          function timeLastData() {
                                             return formatDate(new Date(), "DD.MM, hh:mm:ss");
                                          }
                                          
                                          function parseJson(text) {
                                             if (text === "") return {};
                                             try {
                                                 json = JSON.parse(text);
                                             } catch (ex) {
                                                 json = {};
                                             }
                                             if(!json) json = {};
                                             return json;
                                          }
                                          
                                          function readJson(url, callback) {
                                             httpGet(url, function (err, response, state){
                                                 if (response.data) {
                                                     var json = parseJson(response.data);
                                                     callback(null, json);
                                                 } else {
                                                     var error = "(" + err + ") ERROR bei Abfrage 33 von: " + url;
                                                     log(error, "warn");  
                                                     callback(error, null);
                                                 }
                                             });
                                          }
                                          
                                          
                                          
                                          function readVars() {
                                             readJson(url, function(err,json) {
                                                 if(!err) {
                                                     var myJson = json;
                                                     var dPname, init;
                                                     var anzahlVars = myJson.vars.length;
                                                     for (var i = 1; i < anzahlVars; i++) {
                                                         if(myJson.vars[i].homematic_name) {
                                                        dPname = pfad + myJson.vars[i].homematic_name;
                                                        init = myJson.vars[i].value;
                                                        setState(dPname, init,true);
                                                     }
                                                     }
                                                     for (var systeminfo in myJson.Systeminfo) {
                                                         dPname = pfad + "Systeminfo." + systeminfo;
                                                         init = myJson.Systeminfo[systeminfo];
                                                         setState(dPname, init ,true);
                                                     }
                                                     setState(pfad + "LetzteAbfrage",timeLastData(),true);
                                                     var statusNe = getState(pfad + "Last_State_Count").val;
                                                     if (statusNe < 0) {
                                                         setState(pfad + "Last_State_Count",0,true);
                                                     } else {
                                                         setState(pfad + "Last_State_Count",statusNe + 1,true);
                                                     }
                                                     log("WIFFI Daten aktualisiert: " + url,"debug");
                                                 } else {
                                                     log("Fehler beim Auslesen des JSON 69. Keine Daten erhalten.","warn");
                                                     if (statusNe > 0) {
                                                         setState(pfad + "Last_State_Count",0,true);
                                                     } else {
                                                         setState(pfad + "Last_State_Count",statusNe - 1,true);
                                                     }
                                                 }
                                             });
                                          }
                                          
                                          
                                          function createDpFromJson(myJson) {
                                             var dPname = "";
                                             var name = "";
                                             var forceCreation = false;
                                             var common;
                                             var init;
                                             var type, desc, unit;
                                             var anzahlVars = myJson.vars.length;
                                             for (var i = 1; i < anzahlVars; i++) {
                                                 dPname = pfad + myJson.vars[i].homematic_name;
                                                 init = myJson.vars[i].value;
                                                 type = myJson.vars[i].type;
                                                 desc = myJson.vars[i].desc;
                                                 name = desc;
                                                 unit = myJson.vars[i].unit.replace('grad','°');
                                                 common = '{"desc":"' + desc + '","type":"' + type + '","unit":"' + unit + '","role":"value"' +',"name":"' + name + '"}'; 
                                                 common = JSON.parse(common);
                                                 //createState(dPname, init , forceCreation, common);
                                                 if(myJson.vars[i].homematic_name) createState(dPname, init , forceCreation, common);
                                                 //createState(dPname, init);
                                                 log("neuer Datenpunkt: " + dPname + ": " + init +", common: " + common,"info");
                                             }
                                             for (var systeminfo in myJson.Systeminfo) {
                                                 dPname = pfad + "Systeminfo." + systeminfo;
                                                 init = myJson.Systeminfo[systeminfo];
                                                 common = '{"name":"'+systeminfo+'","desc":"'+systeminfo+'","role":"value"}';
                                                 common = JSON.parse(common);
                                                 log("neuer Datenpunkt: " + dPname + ": " + init +", common: " + common,"info");
                                                 createState(dPname, init , forceCreation, common);
                                             }
                                             createState(pfad + "System.Modultyp",myJson.modultyp);
                                             createState(pfad + "System.url",url.replace("json:","xpert:0:"));
                                             createState(pfad + "Last_State_Count",0,true);
                                             createState(pfad + "LetzteAbfrage"  ,timeLastData());
                                             createState(pfad + "Skriptstart"    ,timeLastData()),true;
                                             createState(pfad + "Control_GetData",false,true,        {"name":"Daten mit true manuell abrufen","type":"boolean","role":"value"});
                                          }
                                          
                                          
                                          
                                          function createDp() {
                                             readJson(url, function (err,json) {
                                                 if(!err) {
                                                     var myJson = json;
                                                     createDpFromJson(myJson);
                                                     log("WIFFI Datenpunkte angelegt/aktualisiert");
                                                 } else {
                                                     log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","error");
                                                     log("Keine Datenpunkte angelegt. Skript beendet","error");
                                                     return;
                                                 }
                                             });
                                          }
                                          
                                          function createOn() {
                                             var dpId = "javascript." + instance + "." + pfad + "Control_GetData"; 
                                             on({id: dpId ,change:'any'}, function (obj) {
                                                 log(obj.state.val,"warn");
                                                 if(obj.state.val) {
                                                     readVars();
                                                 }
                                             });
                                          
                                             schedule("*/4 * * * *", function () { // alle 4 Minute die Werte abfragen
                                                 readVars();
                                             });
                                          
                                          }
                                          
                                          
                                          function main() {
                                             readVars();
                                          }
                                          
                                          
                                          // Skriptstart
                                          
                                          createDp();
                                          setTimeout(createOn,    3000);
                                          setTimeout(main,        3000);
                                          
                                          

                                          Was Eugen in seinen Wiffis zum pushen programmiert hat weiß ich nicht.
                                          Der Header war anscheinend nur für die CCU notwendig. Zu ioBroker wird IMHO nur das JSON geschickt

                                          @ufelet sagte in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                          Inzwischen bin ich der Überzeugung, dass ich hier ganz bestimmt keine Antwort auf meine Frage erhalten werde.

                                          wieso nicht?
                                          wende dich doch vertrauensvoll an deinen Vorposter

                                          1 Reply Last reply Reply Quote 0
                                          • mcm1957
                                            mcm1957 last edited by

                                            @funkleuchtturm said in Bereitstellung der JSON-Daten für den Wiffi-WZ Adapter:

                                            @homoran
                                            Hallo, der wiffi wz adapter kann nicht nur für den alten wiffi wz sondern auch für die aktuellen Module verwendet werden.
                                            Ich bekomme oft Anfragen, wie eine Integration insbesondere meiner Wetterstation (Weatherman 2) unter IObroker gemacht werden kann und dann verweise ich gerne auf dieses Forum.
                                            Der aktuelle Weatherman kann auch Mqtt insbesondere für Homeassistant und wäre damit sicher auch über diesen alternativen Weg in Iobroker einzubinden.
                                            Würde mich freuen, wenn ihr den wiffi wz Adapter nicht herausnehmt.

                                            Danke für dein Feedback.

                                            Um im Fehlerfall besser eingreifen zu können bzw. den Code besser zu verstehen eine Frage:
                                            Ist das Format der gesendeten JSON Blöcke irgendwo dokumentiert? Es kann natürlich aus dem Adaptercode rekonstruiert werden - weniger Aufwand wär's allerdings wenn es eine (auch nur minimalistische) Doku dazu gäbe. Auch wäre es mit Doku leichter möglich für Testzwecke simulierte Blöcke zu senden.

                                            Und da der Adapter offensichtlich benutzt wird wird er zu 99% nicht enfernt sondern nur soweit Zeit vorhanden und zwingender Bedarf gegeben ist aktualisisert werden.

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            805
                                            Online

                                            32.3k
                                            Users

                                            81.1k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            34
                                            356
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo