Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Verständnis parser Adapter und Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Verständnis parser Adapter und Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      f0rd42 last edited by

      Hi

      Ich habe hier glaube ich ein Verständnis Problem in Bezug auf den Parser Adapter und ein dazu passenden Script.

      Ich kann hier eine Pumpensteuerung per json auslesen. Ergebnis:

      {"modultyp":"wiffi-pump","vars":[{"name":"0","homematic_name":"wiffi_pump_ip","desc":"ip des wiffi-pump","type":"string","unit":"","value":"192.168.119.28"},{"name":"4","homematic_name":"wiffi_ntc","desc":"Temperatur_NTC","type":"number","unit":"%","value":22.54},{"name":"2","homematic_name":"wiffi_ww_temp","desc":"Temperatur_A","type":"number","unit":"gradC","value":21.3},{"name":"3","homematic_name":"wiffi_vorlauftemp","desc":"Temperatur_B","type":"number","unit":"gradC","value":21.6},{"name":"1","homematic_name":"wiffi_pump","desc":"Zirkulationspumpe","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"91:b:47:e3:50:cc","Homematic_CCU_ip":"192.168.119.27","WLAN_ssid":"LAN-Solo","WLAN_Signal_dBm":-37,"sec_seit_reset":1610,"zeitpunkt":"2019-01-23 15:22:55","firmware":"wiffi_pump2_90"}}
      

      Dazu habe ich viewtopic.php?f=21&t=13812&hilit=wiffipump auch ein passendes Script gefunden, welches bei mir nun so aussieht:

      var idJson = "parser.0.WiffiPump";
      var state1 = "javascript.0.WiffiPump.T1";
      var state2 = "javascript.0.WiffiPump.T2"; 
      var state3 = "javascript.0.WiffiPump.T3"; 
      var state4 = "javascript.0.WiffiPump.On"; 
      
      createState(state1, {name: "T1", unit: "°C"});
      createState(state2, {name: "T2", unit: "°C"});
      createState(state3, {name: "T3", unit: "°C"});
      createState(state4, {name: "On",});
      
      function werteAuslesen(jsonStr) {
          var myJson = JSON.parse(jsonStr);
          var T1 = myJson.vars[1].value;
          var T2 = myJson.vars[2].value;
          var T3 = myJson.vars[3].value;
          var On = myJson.vars[4].value;
          log("wiffiPumpT1: " + T1 + "°C");
          log("wiffiPumpT2: " + T2 + "°C");
          log("wiffiPumpT3: " + T3 + "°C");
          log("wiffiPumpOn: " + On);
          setState(state1, T1); 
          setState(state2, T2); 
          setState(state3, T3);
          setState(state4, On);
      }
      
      on({id:idJson,change:'ne'}, function (obj) {
          werteAuslesen(obj.state.val);
      });
      
      

      Soweit, so gut. Jedoch bin ich mir ziemlich sicher, dass ich dazu im Parser auch noch etwas konfigurieren muss 😉 , einfach nur den Adapter installieren reicht ja nicht …..

      Kann mir da jemand von Euch auf die Sprünge helfen? Ich habe die Frage auch im o.g. Thread schon gepostet, aber man weiss ja, wie das ist mit den alten Threads .....

      PS: Die Variablen werden in den Objekten unter javascript.0.WiffiPump auch angelegt (macht ja das script), aber nicht mit "Leben" gefüllt.

      1 Reply Last reply Reply Quote 0
      • Lenny.CB
        Lenny.CB Most Active last edited by

        @f0rd42:

        {"modultyp":"wiffi-pump","vars":[{"name":"0","homematic_name":"wiffi_pump_ip","desc":"ip des wiffi-pump","type":"string","unit":"","value":"192.168.119.28"},{"name":"4","homematic_name":"wiffi_ntc","desc":"Temperatur_NTC","type":"number","unit":"%","value":22.54},{"name":"2","homematic_name":"wiffi_ww_temp","desc":"Temperatur_A","type":"number","unit":"gradC","value":21.3},{"name":"3","homematic_name":"wiffi_vorlauftemp","desc":"Temperatur_B","type":"number","unit":"gradC","value":21.6},{"name":"1","homematic_name":"wiffi_pump","desc":"Zirkulationspumpe","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"91:b:47:e3:50:cc","Homematic_CCU_ip":"192.168.119.27","WLAN_ssid":"LAN-Solo","WLAN_Signal_dBm":-37,"sec_seit_reset":1610,"zeitpunkt":"2019-01-23 15:22:55","firmware":"wiffi_pump2_90"}}
        ```` `  
        

        wo liegt dein JSON?

        sollte hier sein:

        "parser.0.WiffiPump"
        

        probier mal:

        `var idJson = getState("parser.0.WiffiPump").val;
        
        function werteAuslesen() {
            var myJson = JSON.parse(idJson);
        
            for (i=0; i<(myJson.vars.length); i++){
                log(myJson.vars[i].homematic_name + ": " + myJson.vars[i].value);
            }
        }
        
        on({id: 'javascript.0.WiffiPump.json', change: "ne"}, function (obj) {
            werteAuslesen();
        });`[/i][/i]
        
        1 Reply Last reply Reply Quote 0
        • F
          f0rd42 last edited by

          Hi Lenny

          ja, liegt da, aber was genau konfiguriere ich im Parser.0.WiffiPump?

          ~~![](</s><URL url=)https://cdn.pbrd.co/images/HXNgDYW.png" />

          bin mir ziemlich sicher, dass meine Konfiguration falsch ist und dort einiges fehlt …...~~

          1 Reply Last reply Reply Quote 0
          • Lenny.CB
            Lenny.CB Most Active last edited by

            Ich arbeite nicht mit dem parse-Adapter. Aber müsste da nicht nen Intervall angegeben werden? Der Typ müsste auch "string" sein, denke ich.

            1 Reply Last reply Reply Quote 0
            • F
              f0rd42 last edited by

              @Lenny.CB:

              Ich arbeite nicht mit dem parse-Adapter. Aber müsste da nicht nen Intervall angegeben werden? Der Typ müsste auch "string" sein, denke ich. `

              Das war es … Typ String ..... mal wieder zu kompliziert gedacht, ich dachte ich müsste für jeden Wert eine RegEx anlegen ....

              Danke

              1 Reply Last reply Reply Quote 0
              • Lenny.CB
                Lenny.CB Most Active last edited by

                @f0rd42:

                @Lenny.CB:

                Ich arbeite nicht mit dem parse-Adapter. Aber müsste da nicht nen Intervall angegeben werden? Der Typ müsste auch "string" sein, denke ich. `

                Das war es … Typ String ..... mal wieder zu kompliziert gedacht, ich dachte ich müsste für jeden Wert eine RegEx anlegen ....

                Danke `
                super, du kannst die Daten auch im Script holen. Den Parser brauchst dann nicht. Sind 2 Zeilen mehr im Script.

                Im Grunde fragt der Parser-Adapter im eingestellten Intervall die eingestellte IP ab und speichert das json. Mit dem Script triggertst du auf Änderung des Datenpunkt.

                Das hier sollte das Gleiche tun, ohne Parse-Adapter (kanns leider nicht testen):```
                `var request = require('request');
                var url = 'http://192.168.119.28/json';

                function abfrage() {
                request(url, function (error, response, body) {
                myJson = JSON.parse(body);
                });
                for (i=0; i<(myJson.vars.length); i++){
                log(myJson.vars[i].homematic_name + ": " + myJson.vars[i].value);
                // hier noch die setState Sachen rein...
                // setState('javascript.0.WiffiPump.' + myJson.vars[i].homematic_name, myJson.vars[i].value, true);
                }
                }
                schedule("*/1 * * * *", abfrage);
                abfrage();` Im Grunde fragt der Parser-Adapter im eingestellten Intervall die eingestellte IP ab und speichert das json. Mit dem Script triggertst du auf Änderung des Datenpunkt.

                Das kannst auch in dem Script zusammen machen.[/i][/i][/i][/i]

                1 Reply Last reply Reply Quote 0
                • F
                  f0rd42 last edited by

                  cool, danke!

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  642
                  Online

                  31.8k
                  Users

                  79.9k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  375
                  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