Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. .VIS Sonoff/MQTT Wechselschaltung

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    .VIS Sonoff/MQTT Wechselschaltung

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

      Du musst dir natürlich deine richtigen datenpunkte raussuchen. Beobachte mal die admin Oberfläche, da musst das natürlich auch funktionieren. Also wenn du in der Oberfläche den Wert änderst, geht die Lampe dann an? Verändert sich der richtige wert dann auch in der Oberfläche?

      Das Script (Ist übrigens JavaScript und nicht java) wacht halt über einen Wert und immer, wenn der sich ändert, wird der innere Block aufgerufen. Dort wird dann entsprechend der andere wert gesetzt. In obj.stste.val ist halt true/fade oder 0/1. Es müssen natürlich beide die selben Werte haben. Wenn nicht musst du dann ggg abfragen:

      If (obi.state.val === true )

      setState(… , 1);

      else

      setState(... , 0);

      Das kannst du alles in der Oberfläche ablesen, wenn du den Wert editieren willst, da steht dann 0 oder fade oder Off drin.

      Schreibe hier mit Handy, ist nen bisschen mühsam

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

        Okay, verstehe (ein bisschen mehr als vorher) :lol:

        Alles klar, aber der Einfachheitshalber ich habe mir das mal in MQTT.FX geloggt. Dort ist mir aufgefallen, das die "cmnd" mit 1 und 0 kommen, und "stat" mit ON und OFF angegeben werden.

        on({id:"mqtt.0.Garten.Laube.Schalter.stat.POWER1", change:"ne"}, function(obj){ 
        //  setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", obj.state.val);
        
        If (obj.state.val == ON );
        setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", 1);
        "else";
        setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", 0);
        
        });
        
        on({id:"mqtt.0.Garten.Schuppen.Pumpe.stat.POWER", change:"ne"}, function(obj){ 
         //   setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", obj.state.val);
        
            If (obj.state.val == ON );
        setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", 1);
        "else";
        setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", 0);
        });
        

        Ich habe es jetzt so probiert, das war für mich am logistischsten, aber geht nicht.

        Ich habe aber mit MQTT.FX mal bisschen probiert, wenn ich "true", "false", "0", "1", "ON", "OFF", "on", "off" an cmnd sende, geht's. Also ist es eigentlich egal, was da kommt. die Dinger schalten.

        1 Reply Last reply Reply Quote 0
        • D
          dirkhe Developer last edited by

          Interessant, wie du Anführungszeichen setzt..

          on({id:"mqtt.0.Garten.Laube.Schalter.stat.POWER1", change:"ne"}, function(obj){ 
          //  setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", obj.state.val);
          
          If (obj.state.val == "ON" );
          setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", 1);
          else
          setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", 0);
          
          });
          
          on({id:"mqtt.0.Garten.Schuppen.Pumpe.stat.POWER", change:"ne"}, function(obj){ 
           //   setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", obj.state.val);
          
              If (obj.state.val == "ON" );
          setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", 1);
          else
          setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", 0);
          });
          

          Du kannst Mal die hilfsausgaben aktivieren und dann Mall das Log beobachten, ob da überhaupt was passiert. Hast du das Script such aktiviert?

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

            Das mit den "" wusste ich nicht.

            bei den else muss ich auch welche setzten, sonnst meckert das Script. also "else";

            Im Log passiert nicht. Hier mal ein Script neustart mit anschließenden Befehlsabgaben:

            javascript.0	2018-12-22 21:57:06.124	info	received all objects
            javascript.0	2018-12-22 21:57:04.651	info	received all states
            javascript.0	2018-12-22 21:57:04.110	info	requesting all objects
            javascript.0	2018-12-22 21:57:04.110	info	requesting all states
            javascript.0	2018-12-22 21:57:04.110	info	starting. Version 3.6.4 in /opt/iobroker/node_modules/iobroker.javascript, node: v8.14.0
            host.ioBroker-RasPi	2018-12-22 21:57:00.691	info	instance system.adapter.javascript.0 started with pid 10167
            host.ioBroker-RasPi	2018-12-22 21:56:58.210	info	instance system.adapter.javascript.0 terminated with code 0 (OK)
            host.ioBroker-RasPi	2018-12-22 21:56:58.162	info	stopInstance system.adapter.javascript.0 killing pid 10052
            host.ioBroker-RasPi	2018-12-22 21:56:58.161	info	stopInstance system.adapter.javascript.0
            host.ioBroker-RasPi	2018-12-22 21:56:58.160	info	object change system.adapter.javascript.0
            

            Sieht glaube ich soweit gut aus, aber halt keine Aktionen von den Geräten.

            Und ja, das Script ist aktiv.
            13280_script-aktiv.png

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

              Da ist das Problem, bei "global" gehören die nicht rein.

              Leg bitte einen neuen Ordner an, oder verschiebe es einfach raus aus "global"!

              Enrico

              1 Reply Last reply Reply Quote 0
              • D
                dirkhe Developer last edited by

                Und ich sehr gerade noch, dass du die ; hinter if wegmachen musst

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

                  Danke für den Tip, jetzt passiert auch was. Zwar nicht was es soll, aber immerhin Fehler :)…..

                  EDIT: die If waren mit großem I, habs auf if geändert, jetzt passiert auch was.

                  Zwar nicht das gewünschte Ergebnis, aber immerhin.

                  Wenn ich jetzt schalte, gehen der POW und die Taster LED kurz an und gleich wieder aus.

                  22:30:35.487	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:5:1)
                  22:30:35.488	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:7:1)
                  22:30:35.555	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:15:1)
                  22:30:35.556	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:17:1)
                  22:30:35.595	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:17:1)
                  22:30:35.636	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:7:1)
                  22:30:37.509	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:5:1)
                  22:30:37.509	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:7:1)
                  22:30:37.535	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:15:1)
                  22:30:37.536	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:17:1)
                  22:30:37.569	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:7:1)
                  22:30:37.584	[warn]	javascript.0 at Object. (script.js.Garten.Scripte.Skript1:17:1)
                  

                  Was sagt mir das?

                  Skript 1, Zeile 7 , 1 Fehler?

                  1 Reply Last reply Reply Quote 0
                  • D
                    dirkhe Developer last edited by

                    In Script1 in Zeile 7, Spalte 1 ist ein warnung, zeigt er dir die im Editor auch an?

                    Ich bin mir nicht sicher, ob das mit cmnd und stat so richtig ist. Also wahrscheinlich musst du immer nur auf cmnd gehen

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

                      Nein ein Fehler wird mir im Editor nicht angezeigt.

                      Ich werde es mal probieren.

                      Jetzt habe ich meinen ESP8266 gegrillt oder so. Hatte durch probieren eine Schleife gebaut….

                      An, Aus, An, Aus....... jetzt macht er nichts mehr. Werde morgen noch mal neu Flashen, oder einen neuen nehmen.

                      Jetzt kann es ja aber nur noch ein Schönheitsfehler sein, oder so ... Ich probiere mal, und werde dann berichten. Grundlegend war der Ordner "global" ja schuld, das überhaupt nichts passiert ist.

                      1 Reply Last reply Reply Quote 0
                      • D
                        dirkhe Developer last edited by

                        Also ich kenne mich mit dem mqtt Adapter nicht so aus, da ich in den sonoff Adapter (müsste eigentlich tasmota adapter heissen) nutzte.

                        Da habe ich nur Power. Ich vermute mal, dass da zear auch stat Meldungen kommen, die werden dann aber in Power verarbeitet. Also in Power wird immer angezeigt, ob das Ding gerade an ist oder nicht. Und wenn du über setState() den Status von Power veränderst, wird das zum Gerät geschickt und wenn das Gerät dann per state zurücksendet, das power on ist, wird das auch in Power in ioBroker gespeichert. So habe ich zumindest das Attribut "ack" verstanden.

                        Wenn das so ist, dann müsstest du immer nur über cmnd gehen:

                        on({id:"mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", change:"ne"}, function(obj){ 
                            setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", obj.state.val);
                        })
                        
                        on({id:"mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", change:"ne"}, function(obj){ 
                            setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", obj.state.val);
                        })
                        

                        Aber wie gesagt, ich weiss nicht wie der Adapter da gestrickt ist…

                        gruss

                        Dirk

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

                          Super vielen dank.

                          Es haben noch Semikolons am ende des Script gefehlt.

                          Und es muss "stat" abgefragt werden um um "cmnd" zu setzten, aber so gehts jetzt.

                          Mein ESP8266 läuft jetzt wieder nach dem neuem Flashen. Also nicht kaputt. Was auch immer damit los war gestern.

                          on({id:"mqtt.0.Garten.Laube.Schalter.stat.POWER1", change:"ne"}, function(obj){ 
                              setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", obj.state.val);
                          });
                          
                          on({id:"mqtt.0.Garten.Schuppen.Pumpe.stat.POWER", change:"ne"}, function(obj){ 
                              setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", obj.state.val);
                          });
                          

                          Aber jetzt läuft es.

                          Den Sonoff Adapter werde ich mir mal angucken ( der ESP8266 kann ja auch als Sonoff 4CH laufen) , wobei ich mit dem MQTT Adapter soweit zufrieden bin.

                          Jedenfalls danke für deine Hilfe und ich habe wieder, einiges dazu gelernt.

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

                            Jetzt habe ich eben noch gesehen, das bei jeden Tastendruck , Logeinträge erstellt werden.

                            javascript.0	2018-12-23 22:26:08.184	error	at Object. <anonymous>(null.Skript2:15:5)
                            javascript.0	2018-12-23 22:26:08.183	error	Error in callback: ReferenceError: If is not defined
                            javascript.0	2018-12-23 22:26:08.183	error	at Object. <anonymous>(null.Skript1:15:5)
                            javascript.0	2018-12-23 22:26:08.182	error	Error in callback: ReferenceError: If is not defined
                            javascript.0	2018-12-23 22:26:08.053	error	at Object. <anonymous>(null.Skript2:5:1)
                            javascript.0	2018-12-23 22:26:08.052	error	Error in callback: ReferenceError: If is not defined
                            javascript.0	2018-12-23 22:26:08.052	error	at Object. <anonymous>(null.Skript1:5:1)
                            javascript.0	2018-12-23 22:26:08.051	error	Error in callback: ReferenceError: If is not defined</anonymous></anonymous></anonymous></anonymous>
                            

                            Ich habe aber nur ein Skript am laufen, das nennt sich "Sync-Pumpe" . Laut Log, wie ich es verstehe, wird aber von Skript 1 und Skript 2 gesprochen.

                            Hast du davon Ahnung?

                            1 Reply Last reply Reply Quote 0
                            • D
                              dirkhe Developer last edited by

                              Hast du dort ggg. Noch If anstelle von if stehen?

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

                                Ich habe gar keine "if" mehr.

                                on({id:"mqtt.0.Garten.Laube.Schalter.stat.POWER1", change:"ne"}, function(obj){ 
                                    setState("mqtt.0.Garten.Schuppen.Pumpe.cmnd.POWER", obj.state.val);
                                });
                                
                                on({id:"mqtt.0.Garten.Schuppen.Pumpe.stat.POWER", change:"ne"}, function(obj){ 
                                    setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", obj.state.val);
                                });
                                

                                Das ist der Code und der läuft auch ohne Probleme, mal abgesehen, von der Fehlern im Log.

                                1 Reply Last reply Reply Quote 0
                                • D
                                  dirkhe Developer last edited by

                                  Da scheint noch irgendein Ghost script2 zu laufen. Ggg. Mal ioBroker neu starten?

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

                                    Ja habe ich schon. Auch "alle" Skripte exportiert, aber da war auch nur das eine, aktive drinn. 😞 Wobei ich den Broker eh neu aufsetzen werde, jetzt wo ich weiß, wie das funktioniert. So habe ich wenigstens ein sauberes System für den Dauereinsatz.

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

                                      Huhu, darf ich noch mal stören?

                                      Ich habe noch ein kleines Problem, aufbauend auf der erste Projekt.

                                      Wenn ich Taster 1 drücke, bzw der Staus 0 wird, sollen andere Objekte abgeschaltet werden.

                                      Also eine zentrale Licht AUS Schaltung bzw eine "Irgendwo ist noch Licht an" Schaltung.

                                      on({id:"mqtt.0.Garten.Laube.Schalter1-4.stat.POWER1", change:"ne"}, function(obj){ 
                                      
                                      (obj.state.val === 0 );
                                      setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER3", "OFF");
                                      setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER4", "OFF");
                                      
                                      });
                                      

                                      Und wenn irgendeine Lampe an ist, soll die LED 1 Leuchten

                                      if (getState("mqtt.0.Garten.Laube.Schalter1-4.stat.POWER3").val ===1 || getState("mqtt.0.Garten.Laube.Schalter1-4.stat.POWER4").val ===1) {
                                        setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER1", "ON");
                                      }
                                      

                                      Aber das will nicht. Ich verstehe das Javascript noch nicht. Habe es mir aber für nächstes Jahr zur Aufgabe gesetzt, zu lernen.

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        dirkhe Developer last edited by

                                        Probiere mal so

                                        on({id:"mqtt.0.Garten.Laube.Schalter1-4.stat.POWER1", change:"ne", val:0}, function(obj){ 
                                        
                                           setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER3", "OFF");
                                            setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER4", "OFF");
                                        
                                        });
                                        
                                        on({id:"mqtt.0.Garten.Laube.Schalter1-4.stat.POWER3", change:"ne", val:1}, function(obj){ 
                                           setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER1",  
                                        });
                                        

                                        Schau mal hier https://github.com/ioBroker/ioBroker.ja … rsubscribe

                                        Vlt wäre auch blocky was für dich, aber da kann ich nicht weiterhelfen, aber wahrscheinlich viele andere

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

                                          Danke, ja Blockly werde ich mir mal anschauen, klingt jedenfalls erst mal einfacher als Javascript.

                                          Die beiden Scripte gehen nicht richtig. Also immer nur ein mal, dann nicht mehr. Als wenn dort war blockiert oder so.

                                          Beim 2ten hat noch der Befehlt gefehlt, aber auch jetzt gehts nur beim ersten mal, dann nicht mehr.

                                          on({id:"mqtt.0.Garten.Laube.Schalter1-4.stat.POWER3", change:"ne", val:"ON"}, function(obj){ 
                                             setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER1", "ON");  
                                          });
                                          

                                          Ich will dich dann auch nicht weiter belästigen und probiere mich die Tage mal an Blockly, irgendwie muss ich ja mal vorankommen und nicht immer fragen müssen.

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            dirkhe Developer last edited by

                                            Hi AtomicIX,

                                            Kein Thema, wenn ich helfen kann, mache ich das gerne. Ich hatte das mit dem Blocky geschrieben, da es für viele einfacher ist, die vorher noch nichts mit programmieren am Hut hatten. Genau dafür ist es ja auch da. Und dann kommt ja vlt. auch schneller der Erfolg.

                                            Das beim 2. das "on" fehlte, war ein copy and apste fehler. Ich sitzte meistens am Tablet und da ist das mit dem Schreiben nicht immer so einfach, sorry dafür.

                                            Ich kann dir leider nichts getestet geben, da ich diesen Adapter nicht habe.

                                            Was du probieren könntest ist

                                            on({id:"mqtt.0.Garten.Laube.Schalter1-4.stat.POWER1", change:"ne", val:"OFF"}, function(obj){ 
                                                setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER3", "OFF");
                                                setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER4", "OFF");
                                            
                                            });
                                            

                                            oder

                                            on({id:"mqtt.0.Garten.Laube.Schalter1-4.stat.POWER1", change:"ne"}, function(obj){ 
                                             if  (obj.state.val === 0 ){
                                                setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER3", "OFF");
                                                setState("mqtt.0.Garten.Laube.Schalter1-4.cmnd.POWER4", "OFF");
                                            }
                                            });
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            875
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            32
                                            1645
                                            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