Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. .VIS Sonoff/MQTT Wechselschaltung

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    992

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

.VIS Sonoff/MQTT Wechselschaltung

Geplant Angeheftet Gesperrt Verschoben Visualisierung
32 Beiträge 3 Kommentatoren 1.7k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    dirkhe
    Developer
    schrieb am zuletzt editiert von
    #4

    Also im Prinzip hast du 2 Parts.

    1. Du musst deine Hardware synchron halten, das kannst du mit den Script machen:

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

    Im vis hast du ja alles schon gemacht, so wie ich dich verstanden habe.

    1 Antwort Letzte Antwort
    0
    • AtomicIXA Offline
      AtomicIXA Offline
      AtomicIX
      schrieb am zuletzt editiert von
      #5

      Okay, prinzipiell sollte das passen, soweit ich das verstehe.

      Und den Status für die LED frage ich nicht vom POW ab, sondern das ergibt sich, weil die 2 Geräte, POW und Esp8266 synchronisiert sind. Werde ich heute abend mal testen. Danke

      1 Antwort Letzte Antwort
      0
      • AtomicIXA Offline
        AtomicIXA Offline
        AtomicIX
        schrieb am zuletzt editiert von
        #6

        Der Code geht so schon mal nicht, bzw es passiert nichts. Die einzelne Geräte laufen zwar unabhängig von einander, aber werden nicht Synchronisiert.

        Ich habe den Code , meinen Geräten in MQTT angepasst.

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

        Ich habe mal die Geräteliste aus MQTT mit angehängt.

        Muss der Code in VIS oder ioBroker Skripte? Geht jedenfalls beides nicht. Es wird mir auch ein Fehler angezeigt, aber damit kann ich nichts anfangen.
        13280_script.png
        13280_mqtt.png

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          dirkhe
          Developer
          schrieb am zuletzt editiert von
          #7

          War mein Fehler, hatte beim kopieren die id: mit weggemacht

          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.cmnd.POWER", change:"ne"}, function(obj){ 
              setState("mqtt.0.Garten.Laube.Schalter.cmnd.POWER1", obj.state.val);
          })
          
          

          Als Script ist das schon richtig

          1 Antwort Letzte Antwort
          0
          • AtomicIXA Offline
            AtomicIXA Offline
            AtomicIX
            schrieb am zuletzt editiert von
            #8

            Ok der Fehler ist weg, geht aber trotzdem nicht :?

            Ist es denn korrekt, das im oberen Block xxx-stat abgefragt wird und dann cmnd geschrieben und im unteren Block cmnd gelesen und cmnd geschrieben wird?

            Wenn Laube sich ändert, soll Schuppen mit dem Staus geschrieben werden

            Wenn Schuppen sich ändert, soll Laube mit dem Staus geschrieben werden

            Oder ist das so nicht richtig?

            Java ist neu für mich :roll:

            Ich habe es auch schon geändert, passiert aber nicht weiter :(

            Oder muss ich irgendwo noch grundlegend was ändern?

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              dirkhe
              Developer
              schrieb am zuletzt editiert von
              #9

              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 Antwort Letzte Antwort
              0
              • AtomicIXA Offline
                AtomicIXA Offline
                AtomicIX
                schrieb am zuletzt editiert von
                #10

                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 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  dirkhe
                  Developer
                  schrieb am zuletzt editiert von
                  #11

                  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 Antwort Letzte Antwort
                  0
                  • AtomicIXA Offline
                    AtomicIXA Offline
                    AtomicIX
                    schrieb am zuletzt editiert von
                    #12

                    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 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      RappiRN
                      Most Active
                      schrieb am zuletzt editiert von
                      #13

                      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 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        dirkhe
                        Developer
                        schrieb am zuletzt editiert von
                        #14

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

                        1 Antwort Letzte Antwort
                        0
                        • AtomicIXA Offline
                          AtomicIXA Offline
                          AtomicIX
                          schrieb am zuletzt editiert von
                          #15

                          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 Antwort Letzte Antwort
                          0
                          • D Offline
                            D Offline
                            dirkhe
                            Developer
                            schrieb am zuletzt editiert von
                            #16

                            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 Antwort Letzte Antwort
                            0
                            • AtomicIXA Offline
                              AtomicIXA Offline
                              AtomicIX
                              schrieb am zuletzt editiert von
                              #17

                              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 Antwort Letzte Antwort
                              0
                              • D Offline
                                D Offline
                                dirkhe
                                Developer
                                schrieb am zuletzt editiert von
                                #18

                                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 Antwort Letzte Antwort
                                0
                                • AtomicIXA Offline
                                  AtomicIXA Offline
                                  AtomicIX
                                  schrieb am zuletzt editiert von
                                  #19

                                  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 Antwort Letzte Antwort
                                  0
                                  • AtomicIXA Offline
                                    AtomicIXA Offline
                                    AtomicIX
                                    schrieb am zuletzt editiert von
                                    #20

                                    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 Antwort Letzte Antwort
                                    0
                                    • D Offline
                                      D Offline
                                      dirkhe
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #21

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

                                      1 Antwort Letzte Antwort
                                      0
                                      • AtomicIXA Offline
                                        AtomicIXA Offline
                                        AtomicIX
                                        schrieb am zuletzt editiert von
                                        #22

                                        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 Antwort Letzte Antwort
                                        0
                                        • D Offline
                                          D Offline
                                          dirkhe
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #23

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

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          756

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe