Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. MQTT Json -> einzelner Datenpunkt - SonoffPOW 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

    MQTT Json -> einzelner Datenpunkt - SonoffPOW Script

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

      Hi,

      Werde ich machen sobald ich es in Erfahrung gebracht habe. Morgen erstmal die JavaScript Doku drucken und durcharbeiten

      Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        @smoker2604x:

        OK hat sich erledigt. Ich hatte ein Brett vorm Kopf.

        Bei mir heist der Wert mqtt.0.POWDrucker.ENERGY und nicht mqtt.0.tele.POWDrucker.ENERGY

        Danke das Script ist klassse werde das direkt erweitern für die anderen 3 Parameter.

        Ach ja eine Frage habe ich noch!

        Damit er das jede Minute ausführt, muss ich doch am anfang folgendes einfügen oder?

        schedule("* * * * * *",

        code

        )

        Sonst wird es doch nur einmal ausgeführt, wenn ich das Script starte oder?

        Danke für eure Hilfe. `

        Genau

        In javascript hast du oben rechts eine Knopf cron Schau da Mal.

        Kannst du deine Zeiten zusammen klicken in einer GUI und der cron kommt Dan mit de richtigen Werten 😉

        Und gut so, Fragen ist gut aber nicht warten sondern probieren klappt doch gut bei dir chapeau !

        (So hab ich auch angefangen ;))

        –-----------------------

        Send from mobile device

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

          Hallo zusammen,

          ich habe das Script um die weiteren 3 parameter ergänzt und noch einen Scheduel hinzugefügt der alle 2 Minuten lauft.

          Mla sehen ob es jetzt so klappt wie ich mir das vorstelle.

          Quellcode:

          ! ````
          /*
          Json Converter Sonoff POW
          ! Setup: Pfad + Channel + SName setzen / immer ein . am ende
          ! /
          ! var pfad = "javascript.0.jsonconverter.";
          var channel = "SonoffPOW.";
          var sname = "POWDrucker.";
          ! // do not change
          ! var idwatt = pfad + channel + sname + 'Watt';
          var idvolt = pfad + channel + sname + 'Volt';
          var idampere = pfad + channel + sname + 'Ampere';
          var idtotal = pfad + channel + sname + 'Total';
          var idyesterday = pfad + channel + sname + 'Gestern';
          var idtoday = pfad + channel + sname + 'Heute';
          ! // Create States
          ! createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'});
          createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'});
          createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'});
          createState(idtotal, 0,{type: 'number',name: 'Total KWh', read: true,write: true,role: 'value'});
          createState(idyesterday, 0,{type: 'number',name: 'Gestern KWh', read: true,write: true,role: 'value'});
          createState(idtoday, 0,{type: 'number',name: 'Heute KWh', read: true,write: true,role: 'value'});
          ! schedule("
          /2 * * * *", function () {
          ! // script beginning
          on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj) {

             //variabele erstellen fuer meine 3 beispiel objecte
                  var volt;
                  var watt;  
                  var ampere; 
                  var total;
                  var today;
                  var yesterday;
          
             try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
             } catch (e) {
                     console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                     return;
              }
          
             volt = obj.Voltage;
             watt = obj.Power;
             ampere = obj.Current;
             total = obj.Total;
             today = obj.Today;
             yesterday = obj.Yesterday;
          
              setState(idwatt, watt);
              setState(idvolt, volt);
              setState(idampere, ampere);
              setState(idtotal, total);
              setState(idtoday, today);
              setState(idyesterday, yesterday);
          
             log(volt);
             log(watt);
             log(ampere);
             log(total);
             log(today);
             log(yesterday);
          });
          

          });

          ! ````

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @smoker2604x:

            Hallo zusammen,

            ich habe das Script um die weiteren 3 parameter ergänzt und noch einen Scheduel hinzugefügt der alle 2 Minuten lauft.

            Mla sehen ob es jetzt so klappt wie ich mir das vorstelle.

            Quellcode:

            ! ````
            /*
            Json Converter Sonoff POW
            ! Setup: Pfad + Channel + SName setzen / immer ein . am ende
            ! /
            ! var pfad = "javascript.0.jsonconverter.";
            var channel = "SonoffPOW.";
            var sname = "POWDrucker.";
            ! // do not change
            ! var idwatt = pfad + channel + sname + 'Watt';
            var idvolt = pfad + channel + sname + 'Volt';
            var idampere = pfad + channel + sname + 'Ampere';
            var idtotal = pfad + channel + sname + 'Total';
            var idyesterday = pfad + channel + sname + 'Gestern';
            var idtoday = pfad + channel + sname + 'Heute';
            ! // Create States
            ! createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'});
            createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'});
            createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'});
            createState(idtotal, 0,{type: 'number',name: 'Total KWh', read: true,write: true,role: 'value'});
            createState(idyesterday, 0,{type: 'number',name: 'Gestern KWh', read: true,write: true,role: 'value'});
            createState(idtoday, 0,{type: 'number',name: 'Heute KWh', read: true,write: true,role: 'value'});
            ! schedule("
            /2 * * * *", function () {
            ! // script beginning
            on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj) {

               //variabele erstellen fuer meine 3 beispiel objecte
                    var volt;
                    var watt;  
                    var ampere; 
                    var total;
                    var today;
                    var yesterday;
            
               try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
               } catch (e) {
                       console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                       return;
                }
            
            
               volt = obj.Voltage;
               watt = obj.Power;
               ampere = obj.Current;
               total = obj.Total;
               today = obj.Today;
               yesterday = obj.Yesterday;
            
                setState(idwatt, watt);
                setState(idvolt, volt);
                setState(idampere, ampere);
                setState(idtotal, total);
                setState(idtoday, today);
                setState(idyesterday, yesterday);
              
               log(volt);
               log(watt);
               log(ampere);
               log(total);
               log(today);
               log(yesterday);
            });
            

            });

            ! ```` `

            Hi,

            Ich verstehe nicht danz die logik dahinter was du machst 🙂

            Einerseitzt hast du eien cron der alle 2 minuten das script triggert, das hast du am anfang vom script gesetzt:

            schedule("*/2 * * * *", function () {
            

            Innerhalb deines sccript ist noch ein trigger verbaut der die variabelen fuellt wen sich der status von de MQTT werten aendert:

                // script beginning
                on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj)
            
                   //variabele erstellen fuer meine 3 beispiel objecte
                        var volt;
                        var watt;  
                        var ampere; 
                        var total;
                        var today;
                        var yesterday;
            
                   try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
                   } catch (e) {
                           console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                           return;
                    }
            
            1. Was moechtest du genau erreichen ? Die werte alle 2 minuten aktualisieren ? Lass dan das on weg und integrieren auslesen der MQTT werte in deinem schedule.

            (ich frag mich aber ab wozu das gut sein soll, macht doch nur sinn die daten zu erneuern wen diese sich geaendert haben ?)

            ! ` > schedule("*/2 * * * *", function () {

            //variabele erstellen fuer meine 3 beispiel objecte

            var volt;

            var watt;

            var ampere;

            var total;

            var today;

            var yesterday;

            try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);

            } catch (e) {

            console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);

            return;

            }

            volt = obj.Voltage;

            watt = obj.Power;

            ampere = obj.Current;

            total = obj.Total;

            today = obj.Today;

            yesterday = obj.Yesterday;

            setState(idwatt, watt);

            setState(idvolt, volt);

            setState(idampere, ampere);

            setState(idtotal, total);

            setState(idtoday, today);

            setState(idyesterday, yesterday);

            log(volt);

            log(watt);

            log(ampere);

            log(total);

            log(today);

            log(yesterday);

            }); `

            1. Die werte aktualisieren wen diese sich von MQTT aus geaendert haben ? Lass dan den shedule weg (faende ich logischer.

            ! ````
            // script beginning
            on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj) {

               //variabele erstellen fuer meine 3 beispiel objecte
                    var volt;
                    var watt;  
                    var ampere; 
                    var total;
                    var today;
                    var yesterday;
            
               try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
               } catch (e) {
                       console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                       return;
                }
            
               volt = obj.Voltage;
               watt = obj.Power;
               ampere = obj.Current;
               total = obj.Total;
               today = obj.Today;
               yesterday = obj.Yesterday;
            
                setState(idwatt, watt);
                setState(idvolt, volt);
                setState(idampere, ampere);
                setState(idtotal, total);
                setState(idtoday, today);
                setState(idyesterday, yesterday);
            
               log(volt);
               log(watt);
               log(ampere);
               log(total);
               log(today);
               log(yesterday);
            });
            

            ! ````

            hoffe das hilft dir ein bischen, man sollte vermeiden das unnoetig date geschrieben werden en es auch sinn man diese zu lesen 🙂

            Den cron welcher jetzt bei dir eingebaut ist macht naemlich garnix :), alles hinter dem on( wird nur ausgefuert wen sich der MQTT wert geaendert/updated hat das macht er bei jeden update (durch change : "any"), kannst du noch aendern in nur wen wert geaendert wurde (change : "ne")

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

              Super ich danke dir. Deine Erklärung und das hinterfragen hat mir sehr geholfen. Mir war nicht klar das das Script mit in immer auf eine Änderung reagiert. Ich dachte das reagiert nur darauf wenn es abgefragt wird. Vielen Dank dann kann ich den cron wieder entfernen.

              Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • D
                djonny88 last edited by

                Hi,

                jetzt muss ich den Thread nochmals vorholen.

                Wie hast du es geschafft, dass du die Werte vom Sonoff POW an iobroker sendest?

                Bei mir wird zwar das Objekt angelegt, jedoch sehe ich keine Werter im Ereignis oder sonst wo… Ich sehe nur Online/Offline sowie On/Off

                wäre für jede Hilfe Dankbar.

                LG Jonny

                1 Reply Last reply Reply Quote 0
                • kmxak
                  kmxak Most Active last edited by

                  Die Werte vom POW kommen per MQTT im ioBroker an.

                  Von da aus geht es mit diesem Script weiter.

                  1 Reply Last reply Reply Quote 0
                  • A
                    abuzze last edited by

                    Hallo zusammen

                    Ich hab jetzt auch versucht die Temperatur meines Sonoff TH einzeln zu stellen aber ich habe es noch nicht geschafft. Ist das letzte Script das was bei Dir/Euch funktioniert ? Oder ist das nur ein Code Schnipsel ?

                    Vielleicht könnte einer nochmal das komplette Script veröffentlichen. Anpassen mache ich selber will auch lernen.

                    Danke

                    @Dutchman:

                    @smoker2604x:

                    Hallo zusammen,

                    ich habe das Script um die weiteren 3 parameter ergänzt und noch einen Scheduel hinzugefügt der alle 2 Minuten lauft.

                    Mla sehen ob es jetzt so klappt wie ich mir das vorstelle.

                    Quellcode:

                    ! ````
                    /*
                    Json Converter Sonoff POW
                    ! Setup: Pfad + Channel + SName setzen / immer ein . am ende
                    ! /
                    ! var pfad = "javascript.0.jsonconverter.";
                    var channel = "SonoffPOW.";
                    var sname = "POWDrucker.";
                    ! // do not change
                    ! var idwatt = pfad + channel + sname + 'Watt';
                    var idvolt = pfad + channel + sname + 'Volt';
                    var idampere = pfad + channel + sname + 'Ampere';
                    var idtotal = pfad + channel + sname + 'Total';
                    var idyesterday = pfad + channel + sname + 'Gestern';
                    var idtoday = pfad + channel + sname + 'Heute';
                    ! // Create States
                    ! createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'});
                    createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'});
                    createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'});
                    createState(idtotal, 0,{type: 'number',name: 'Total KWh', read: true,write: true,role: 'value'});
                    createState(idyesterday, 0,{type: 'number',name: 'Gestern KWh', read: true,write: true,role: 'value'});
                    createState(idtoday, 0,{type: 'number',name: 'Heute KWh', read: true,write: true,role: 'value'});
                    ! schedule("
                    /2 * * * *", function () {
                    ! // script beginning
                    on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj) {

                       //variabele erstellen fuer meine 3 beispiel objecte
                            var volt;
                            var watt;  
                            var ampere; 
                            var total;
                            var today;
                            var yesterday;
                    
                       try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
                       } catch (e) {
                               console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                               return;
                        }
                    
                    
                       volt = obj.Voltage;
                       watt = obj.Power;
                       ampere = obj.Current;
                       total = obj.Total;
                       today = obj.Today;
                       yesterday = obj.Yesterday;
                    
                        setState(idwatt, watt);
                        setState(idvolt, volt);
                        setState(idampere, ampere);
                        setState(idtotal, total);
                        setState(idtoday, today);
                        setState(idyesterday, yesterday);
                      
                       log(volt);
                       log(watt);
                       log(ampere);
                       log(total);
                       log(today);
                       log(yesterday);
                    });
                    

                    });

                    ! ```` `

                    Hi,

                    Ich verstehe nicht danz die logik dahinter was du machst 🙂

                    Einerseitzt hast du eien cron der alle 2 minuten das script triggert, das hast du am anfang vom script gesetzt:

                    schedule("*/2 * * * *", function () {
                    

                    Innerhalb deines sccript ist noch ein trigger verbaut der die variabelen fuellt wen sich der status von de MQTT werten aendert:

                        // script beginning
                        on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj)
                        
                           //variabele erstellen fuer meine 3 beispiel objecte
                                var volt;
                                var watt;  
                                var ampere; 
                                var total;
                                var today;
                                var yesterday;
                        
                           try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
                           } catch (e) {
                                   console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                                   return;
                            }
                    
                    1. Was moechtest du genau erreichen ? Die werte alle 2 minuten aktualisieren ? Lass dan das on weg und integrieren auslesen der MQTT werte in deinem schedule.

                    (ich frag mich aber ab wozu das gut sein soll, macht doch nur sinn die daten zu erneuern wen diese sich geaendert haben ?)

                    ! ` > schedule("*/2 * * * *", function () {

                    //variabele erstellen fuer meine 3 beispiel objecte

                    var volt;

                    var watt;

                    var ampere;

                    var total;

                    var today;

                    var yesterday;

                    try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);

                    } catch (e) {

                    console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);

                    return;

                    }

                    volt = obj.Voltage;

                    watt = obj.Power;

                    ampere = obj.Current;

                    total = obj.Total;

                    today = obj.Today;

                    yesterday = obj.Yesterday;

                    setState(idwatt, watt);

                    setState(idvolt, volt);

                    setState(idampere, ampere);

                    setState(idtotal, total);

                    setState(idtoday, today);

                    setState(idyesterday, yesterday);

                    log(volt);

                    log(watt);

                    log(ampere);

                    log(total);

                    log(today);

                    log(yesterday);

                    }); `

                    1. Die werte aktualisieren wen diese sich von MQTT aus geaendert haben ? Lass dan den shedule weg (faende ich logischer.

                    ! ````
                    // script beginning
                    on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj) {

                       //variabele erstellen fuer meine 3 beispiel objecte
                            var volt;
                            var watt;  
                            var ampere; 
                            var total;
                            var today;
                            var yesterday;
                    
                       try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
                       } catch (e) {
                               console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                               return;
                        }
                    
                    
                       volt = obj.Voltage;
                       watt = obj.Power;
                       ampere = obj.Current;
                       total = obj.Total;
                       today = obj.Today;
                       yesterday = obj.Yesterday;
                    
                        setState(idwatt, watt);
                        setState(idvolt, volt);
                        setState(idampere, ampere);
                        setState(idtotal, total);
                        setState(idtoday, today);
                        setState(idyesterday, yesterday);
                      
                       log(volt);
                       log(watt);
                       log(ampere);
                       log(total);
                       log(today);
                       log(yesterday);
                    });
                    

                    ! ````

                    hoffe das hilft dir ein bischen, man sollte vermeiden das unnoetig date geschrieben werden en es auch sinn man diese zu lesen 🙂

                    Den cron welcher jetzt bei dir eingebaut ist macht naemlich garnix :), alles hinter dem on( wird nur ausgefuert wen sich der MQTT wert geaendert/updated hat das macht er bei jeden update (durch change : "any"), kannst du noch aendern in nur wen wert geaendert wurde (change : "ne") `

                    1 Reply Last reply Reply Quote 0
                    • A
                      abuzze last edited by

                      oh doppelt :roll:

                      1 Reply Last reply Reply Quote 0
                      • kmxak
                        kmxak Most Active last edited by

                        Das Script wird bei dir nicht so einfach funktionieren.

                        Du musst es erst umbauen.

                        Deine Objekt wird anders heißen sowie ist der Json anders aufgebaut und benannt.

                        Wie sieh das bei dir aus? Poste mal ein Screenshot sowie den Inhalt des Json.

                        Möglichkeit 2 wäre der Sonoff Adapter. Wenn der nicht direkt geht musst du den Adapter debuggen und Bluefox die Ausgabe schicken dann würde er das dort einbauen.

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

                          Hallo

                          Der Sonoff Adapter kann das !

                          Danke Bluefox

                          Gesendet von iPad mit Tapatalk Pro

                          1 Reply Last reply Reply Quote 0
                          • L
                            looneyspeedy last edited by

                            So will hier mal ran. Ich glaube ich stehe noch so etwas auf dem Schlauch. Liegt aber wohl da dran das ich neu in dieser Sache bin.

                            Habe alle meine sonoff per ESPurana MQTT Verbunden mit dem Broker und der schreibt auch schon fleißig die aktuellen Werte hier rein.

                            Was macht jetzt genau dieses Script kann ich damit dann eine Tabelle in meine Vis Einbauen mit Werten ? und vielleicht Berechnung des Preises ( TAG / Monat / Jaht )

                            Hier mal wie es in meinen Objekten Aussieht. Danke für die Hilfe.
                            3693_pow-adapter.jpg

                            1 Reply Last reply Reply Quote 0
                            • A
                              abuzze last edited by

                              Hallo

                              Das mit dem Sonoff Adapter hatte ich vor ein paar Tagen getestet und da musste ich den mqttt Adapter ausschalten.

                              Jetzt wenn man etwas überlegt warum die beiden Adapter nicht gleichzeitig laufen ,kommt man zu dem Entschluss das man doch den Port ändern sollte vom neuen Adapter. Naja gesagt getan.Funktioniert soweit , die Datenpunkte werden abgefragt nur der Sensor Datenpunkt wird ignoriert.

                              Muss jetzt noch was eingestellt werden ?

                              Im Anhaang mal ein paar Screenshots- empfangen einmal über mqtt und über den Sonoff Adapter

                              @kmxak:

                              Das Script wird bei dir nicht so einfach funktionieren.

                              Du musst es erst umbauen.

                              Deine Objekt wird anders heißen sowie ist der Json anders aufgebaut und benannt.

                              Wie sieh das bei dir aus? Poste mal ein Screenshot sowie den Inhalt des Json.

                              Möglichkeit 2 wäre der Sonoff Adapter. Wenn der nicht direkt geht musst du den Adapter debuggen und Bluefox die Ausgabe schicken dann würde er das dort einbauen. `
                              1811_bildschirmfoto_2017-11-05_um_10.42.29.png
                              1811_bildschirmfoto_2017-11-05_um_11.06.10.png
                              1811_bildschirmfoto_2017-11-05_um_11.07.30.png
                              1811_bildschirmfoto_2017-11-05_um_11.08.19.png

                              1 Reply Last reply Reply Quote 0
                              • kmxak
                                kmxak Most Active last edited by

                                den Sonoff Adapter auf debug stellen und im Log schauen ob dort die Temperaturwerte vom Sensor ankommen wenn ja die Zeile kopieren und bei github eine issue erstellen im sonoff adapter

                                https://github.com/ioBroker/ioBroker.sonoff/issues

                                Dann bau es Bluefox mit der nächsten Version ein.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  abuzze last edited by

                                  Ich muss nochmal kurz nachfragen. Hab den Adapter auf debug gestellt und hab jetzt das im log. Aber das sieht nicht so aus als wenn man damit was anfangen kann.
                                  @kmxak:

                                  den Sonoff Adapter auf debug stellen und im Log schauen ob dort die Temperaturwerte vom Sensor ankommen wenn ja die Zeile kopieren und bei github eine issue erstellen im sonoff adapter

                                  https://github.com/ioBroker/ioBroker.sonoff/issues

                                  Dann bau es Bluefox mit der nächsten Version ein. `
                                  1811_bildschirmfoto_2017-11-05_um_13.36.54.png

                                  1 Reply Last reply Reply Quote 0
                                  • kmxak
                                    kmxak Most Active last edited by

                                    du musst unter instanzen den sonoff noch auf debug stellen. ggf experten ansicht an machen.

                                    Unter log kannst nur anzeigen was dir angezeigt werden soll

                                    1 Reply Last reply Reply Quote 0
                                    • A
                                      abuzze last edited by

                                      Danke hab es gefunden.

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        abuzze last edited by

                                        Ich habe es geschafft. Bluefox gab den Tip Version 0.3.3 zu installieren und nach Neustart des Sonoff TH wurde mir der Wert angezeigt.

                                        Danke

                                        @abuzze:

                                        Ich muss nochmal kurz nachfragen. Hab den Adapter auf debug gestellt und hab jetzt das im log. Aber das sieht nicht so aus als wenn man damit was anfangen kann.
                                        @kmxak:

                                        den Sonoff Adapter auf debug stellen und im Log schauen ob dort die Temperaturwerte vom Sensor ankommen wenn ja die Zeile kopieren und bei github eine issue erstellen im sonoff adapter

                                        https://github.com/ioBroker/ioBroker.sonoff/issues

                                        Dann bau es Bluefox mit der nächsten Version ein.
                                        1811_bildschirmfoto_2017-11-05_um_15.30.49.png

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          speedy78 last edited by

                                          @looneyspeedy:

                                          So will hier mal ran. Ich glaube ich stehe noch so etwas auf dem Schlauch. Liegt aber wohl da dran das ich neu in dieser Sache bin.

                                          Habe alle meine sonoff per ESPurana MQTT Verbunden mit dem Broker und der schreibt auch schon fleißig die aktuellen Werte hier rein.

                                          Was macht jetzt genau dieses Script kann ich damit dann eine Tabelle in meine Vis Einbauen mit Werten ? und vielleicht Berechnung des Preises ( TAG / Monat / Jaht )

                                          Hier mal wie es in meinen Objekten Aussieht. Danke für die Hilfe. `

                                          Habe das Script etwas geändert auf meine ID, er hat auch die Datenpunkte angelegt mit 0 ist ja klar nur bekomme ich jetzt einen Fehler und es ändert sich auch nichts an den Werten.

                                          ( Fehler: javascript.0 script.js.common.Sonoff-POW-Werte: Cannot parse: 00 )

                                          /*
                                          Json Converter Sonoff POW
                                          
                                          Setup: Pfad + Channel + SName setzen / immer ein . am ende
                                          
                                          */
                                          
                                          var pfad = "javascript.0.jsonconverter.";
                                          var channel = "SonoffPOW.";
                                          var sname = "Computer.";
                                          
                                          // do not change
                                          
                                          var idwatt = pfad + channel + sname + 'Watt';
                                          var idvolt = pfad + channel + sname + 'Volt';
                                          var idampere = pfad + channel + sname + 'Ampere';
                                          var idtotal = pfad + channel + sname + 'Total';
                                          var idyesterday = pfad + channel + sname + 'Gestern';
                                          var idtoday = pfad + channel + sname + 'Heute';
                                          
                                          // Create States
                                          
                                          createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'});
                                          createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'});
                                          createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'});
                                          createState(idtotal, 0,{type: 'number',name: 'Total KWh', read: true,write: true,role: 'value'});
                                          createState(idyesterday, 0,{type: 'number',name: 'Gestern KWh', read: true,write: true,role: 'value'});
                                          createState(idtoday, 0,{type: 'number',name: 'Heute KWh', read: true,write: true,role: 'value'});
                                          
                                           // script beginning
                                              on({id: 'mqtt.0.POWDrucker.ENERGY', change: "any"}, function (obj) {
                                          
                                                 //variabele erstellen fuer meine 3 beispiel objecte
                                                      var volt;
                                                      var watt;  
                                                      var ampere; 
                                                      var total;
                                                      var today;
                                                      var yesterday;
                                          
                                                 try {obj = JSON.parse(getState('mqtt.0.POWDrucker.ENERGY').val);
                                                 } catch (e) {
                                                         console.error('Cannot parse: ' + getState('mqtt.0.POWDrucker.ENERGY').val);
                                                         return;
                                                  }
                                          
                                                 volt = obj.Voltage;
                                                 watt = obj.Power;
                                                 ampere = obj.Current;
                                                 total = obj.Total;
                                                 today = obj.Today;
                                                 yesterday = obj.Yesterday;
                                          
                                                  setState(idwatt, watt);
                                                  setState(idvolt, volt);
                                                  setState(idampere, ampere);
                                                  setState(idtotal, total);
                                                  setState(idtoday, today);
                                                  setState(idyesterday, yesterday);
                                          
                                                 log(volt);
                                                 log(watt);
                                                 log(ampere);
                                                 log(total);
                                                 log(today);
                                                 log(yesterday);
                                              });
                                          

                                          Über jede Hilfe bin ich dankbar.

                                          Kann es sein das ich die variablen noch anpassen muss. ( welche nutze ich aus meiner Liste 😞 )
                                          3717_pow-adapter.jpg

                                          1 Reply Last reply Reply Quote 0
                                          • L
                                            looneyspeedy last edited by

                                            So nun bin ich etwas weiter. Man kommt ja so langsam da rein.

                                            Kann mir bitte jemand dies erklären.

                                            1. Kann es sein das es in dem Script Hauptsächlich darum geht die (JSON)Werte einer Variablen zu zuweisen.

                                            Was ja bei meiner Firmware nicht nötig ist da ja alles schon geordnet ist.

                                            2. Könnte man dieses Script etwas abändern damit z.B.

                                            Ampere

                                            Watt

                                            Heute

                                            Gestern

                                            Monat

                                            Total

                                            von allen sonoffpow( bzw. Energiemessgeräten ) in je einem Datenpunkt gesammelt werden ?

                                            Und wie berechnet das Script überhaupt den Verbrauch, ich kann nirgend wo eine Berechnung sehen. Normal müsste doch einfach Total / und Heute hochzählen und so weiter…..und ab 0Uhr wieder von vorne.

                                            Ich kann mir nicht vorstellen das es so komplex ist das umzusetzen oder sehe ich das falsch, leider verstehe ich von diesen Programmier teilen nicht so viel.


                                            Fehler die ich Aktuell habe:

                                            javascript.0 2017-11-10 19:16:50.130 warn at Object. (script.js.common.Sonoff-POW2-Werte:63:9)

                                            javascript.0 2017-11-10 19:16:50.130 warn Wrong type of javascript.0.jsonconverter.SonoffPOW.POW2.Gestern: "undefined". Please fix, while deprecated and will not work in next versions.

                                            javascript.0 2017-11-10 19:16:50.130 warn at Object. (script.js.common.Sonoff-POW2-Werte:62:9)

                                            javascript.0 2017-11-10 19:16:50.130 warn Wrong type of javascript.0.jsonconverter.SonoffPOW.POW2.Heute: "undefined". Please fix, while deprecated and will not work in next versions.

                                            javascript.0 2017-11-10 19:16:50.129 warn at Object. (script.js.common.Sonoff-POW2-Werte:61:9)

                                            javascript.0 2017-11-10 19:16:50.129 warn Wrong type of javascript.0.jsonconverter.SonoffPOW.POW2.Total: "string". Please fix, while deprecated and will not work in next versions.

                                            javascript.0 2017-11-10 19:16:50.129 warn at Object. (script.js.common.Sonoff-POW2-Werte:60:9)

                                            javascript.0 2017-11-10 19:16:50.129 warn Wrong type of javascript.0.jsonconverter.SonoffPOW.POW2.Ampere: "string". Please fix, while deprecated and will not work in next versions.

                                            javascript.0 2017-11-10 19:16:50.129 warn at Object. (script.js.common.Sonoff-POW2-Werte:59:9)

                                            javascript.0 2017-11-10 19:16:50.129 warn Wrong type of javascript.0.jsonconverter.SonoffPOW.POW2.Volt: "string". Please fix, while deprecated and will not work in next versions.

                                            javascript.0 2017-11-10 19:16:50.129 warn at Object. (script.js.common.Sonoff-POW2-Werte:58:9)

                                            javascript.0 2017-11-10 19:16:50.128 warn Wrong type of javascript.0.jsonconverter.SonoffPOW.POW2.Watt: "string". Please fix, while deprecated and will not work in next versions.

                                            /*
                                            Json Converter Sonoff POW
                                            
                                            Setup: Pfad + Channel + SName setzen / immer ein . am ende
                                            
                                            */
                                            
                                            var pfad = "javascript.0.jsonconverter.";
                                            var channel = "SonoffPOW.";
                                            var sname = "POW2.";
                                            
                                            // do not change
                                            
                                            var idwatt = pfad + channel + sname + 'Watt';
                                            var idvolt = pfad + channel + sname + 'Volt';
                                            var idampere = pfad + channel + sname + 'Ampere';
                                            var idtotal = pfad + channel + sname + 'Total';
                                            var idyesterday = pfad + channel + sname + 'Gestern';
                                            var idtoday = pfad + channel + sname + 'Heute';
                                            
                                            // Create States
                                            
                                            createState(idwatt, 0,{type: 'number',name: 'Aktuelle Leistung', read: true,write: true,role: 'value'});
                                            createState(idvolt, 0,{type: 'number',name: 'Aktuelle Spannung', read: true,write: true,role: 'value'});
                                            createState(idampere, 0,{type: 'number',name: 'Aktueller Strom', read: true,write: true,role: 'value'});
                                            createState(idtotal, 0,{type: 'number',name: 'Total KWh', read: true,write: true,role: 'value'});
                                            createState(idyesterday, 0,{type: 'number',name: 'Gestern KWh', read: true,write: true,role: 'value'});
                                            createState(idtoday, 0,{type: 'number',name: 'Heute KWh', read: true,write: true,role: 'value'});
                                            
                                             // script beginning
                                                on({id: 'mqtt.0.POW.switch.POW2.data', change: "any"}, function (obj) {
                                            
                                                   //variabele erstellen fuer meine 3 beispiel objecte
                                                        var volt;
                                                        var power;  
                                                        var ampere; 
                                                        var total;
                                                        var today;
                                                        var yesterday;
                                            
                                                   try {obj = JSON.parse(getState('mqtt.0.POW.switch.POW2.data').val);
                                                   } catch (e) {
                                                           console.error('Cannot parse: ' + getState('mqtt.0.POW.switch.POW2.data').val);
                                                           return;
                                                    }
                                            
                                                   volt = obj.voltage;
                                                   watt = obj.power;
                                                   ampere = obj.current;
                                                   total = obj.energy_total;
                                                   today = obj.today;
                                                   yesterday = obj.yesterday;
                                            
                                                    setState(idwatt, watt);
                                                    setState(idvolt, volt);
                                                    setState(idampere, ampere);
                                                    setState(idtotal, total);
                                                    setState(idtoday, today);
                                                    setState(idyesterday, yesterday);
                                            
                                                   log(volt);
                                                   log(watt);
                                                   log(ampere);
                                                   log(total);
                                                   log(today);
                                                   log(yesterday);
                                                });
                                            

                                            ( JSON )

                                            {"current":"0.08","apparent":"18","energy_delta":"160.000","energy_total":"54789.000","power":"13","reactive":"12","voltage":"221","factor":"72.22","time":"2017/11/10 19:25:58","host":"POW2","ip":"192.168.178.56"}

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            890
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            11
                                            40
                                            10674
                                            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