Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. SetStateDelayed funktioniert nicht

    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

    SetStateDelayed funktioniert nicht

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

      Hallo, habe problem mit einem Script

      In dem Script sind 3 setStateDelayed Befehle. Die mit kurzer Zeit (Sekunden) funktionieren, der mit längerer Zeit (Minuten) nicht.

      Das ist die nicht funktionierende Zeile

       setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
      
      /* Programm Abwesend Kurz
         Ablösen des CCU2 Programms
         Mit Hilfe von Jey Cee, Pix und Paul53 
      */
      // Abfrage der Abwesenheit Kurz:
      var idAbwesendKurzVariable = 'hm-rega.0.2330'; // System Variable CCU2 Abwesend Kurz
      var idAnwesenheit = getState('hm-rega.0.950').val; // zur besseren Übersicht Anwesenheit in eine lokale Variable geschrieben
      var idBalkonTuer = getState("hm-rpc.0.MEQ0816190.1.STATE").val; //Türkontakt Balkontür.STATE
      
      // lange, ausführliche Schreibweise
      on({
          id: idAbwesendKurzVariable, // Datenpunkt der Überwachung
          change: 'ne' // auf Änderung
      }, function (obj1) {
          // den neuen Wert der Änderung checken
          if (obj1.state.val === true) { // wenn neuer Wert true
              // aktuelle Abfrage der zweiten Variable - also nur prüfen
      
              if (idAnwesenheit === true) { // wenn Anwesenheit auch wahr ist
                  if (idBalkonTuer === false) { // wenn Balkontür ist zu
                      starteAktion(); // Funktion aufrufen
                  }
                  else {
                      starteAktion1();
              }}
          }
      });
      
      // Ausführung
      function starteAktion () {
      // Definiere Variablen
          var url ='http://192.168.33.212:8081/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Stop%22,%22params%22:{%22playerid%22:%200},%22id%22:1}}}'; // Aspire Musik Aus
      
      // Aktionen
          setState("hm-rpc.0.MEQ0484756.1.STATE", false); // Taster Deckenlicht Arbeitszimmer
          setState("hm-rpc.0.NEQ0018993.2.SUBMIT","0.7,1,108000,20"); // MP3 Funkgong
          setState("hm-rpc.0.KEQ0025668.1.STATE", false);  // Red Bull Kühlschrank Licht.STATE
          setState("hm-rpc.0.KEQ0196838.1.STATE", false);  // Schlafzimmer Deckenlampe.STATE
          setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); // (Gruppe) Deko Licht An/Aus.PRESS_LONG
          setState("hm-rpc.1.CUX4000002.10.PRESS_SHORT", true); // (Gruppe) Dimmer (Diele, Essbereich, Küche, Esstisc.PRESS_SHORT
          setState("hm-rpc.1.CUX4000002.1.PRESS_LONG", true); // (Gruppe) Steckdosenleiste 1+2 An/Aus.PRESS_LONG
          setState("hm-rpc.0.KEQ0964652.1.STATE", false); // Stehlampe Wohnzimmer Tür.STATE
          setState("hm-rpc.0.KEQ0196897.1.STATE", false); // Nachttischlampe1 Schlafzimmer.STATE
          setState("hm-rpc.0.JEQ0740381.1.LEVEL", 0); // Dimmer Bad Einbaustrahler.LEVEL
          setState("hm-rpc.0.LEQ0187095.1.LEVEL", 0); // Dimmer Bad LED-Stripe Spiegel.LEVEL
          setState("hm-rpc.0.KEQ0926570.2.STATE", false); // Springbrunnen.STATE
          setState("hm-rpc.0.KEQ0926589.1.STATE", false); // Lichtschlauch Balkon.STATE
          setState("hm-rpc.0.KEQ0926589.2.STATE", false); // Teichlicht.STATE
          setState("hm-rpc.0.MEQ1739011.1.STATE", false); // LED-Unterschrank weiß (16A).STATE
          setState("hm-rpc.1.CUX4000001.6.PRESS_SHORT", true); // Lenovo-Q180 Standby.PRESS_SHORT
          setState("hm-rpc.0.LEQ0236668.1.STATE", false); // Duftnebler Bad.STATE
      
          setState("hm-rega.0.18930", false); // Bewegungsmelder aktiv ist falsch
          setState("hm-rega.0.42725", true); // Automatik Lichthelligkeit An/Aus
      
      // verzögerte Aktionen einfügen
          setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
          setStateDelayed("hm-rega.0.56542", false, 2000); // Lichthelligkeit Anzeige Aus Trigger nach 2 Sekunden
          setStateDelayed("hm-rpc.1.CUX4000001.11.PRESS_SHORT", true, 5000); // PCs Aus/WoL:11.PRESS_SHORT Aspire Standbye nach 5 Sekunden
      
          request = require('request'),
          request(url);
      }
      function starteAktion1 () {
      // Definiere Variablen
          var url ='http://192.168.33.212:8081/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Stop%22,%22params%22:{%22playerid%22:%200},%22id%22:1}}}'; // Aspire Musik Aus
      
      // Aktionen
          setState("hm-rpc.0.MEQ0484756.1.STATE", false); // Taster Deckenlicht Arbeitszimmer
          setState("hm-rpc.0.NEQ0018993.2.SUBMIT","0.7,1,108000,16, 20"); // MP3 Funkgong
          setState("hm-rpc.0.KEQ0025668.1.STATE", false);  // Red Bull Kühlschrank Licht.STATE
          setState("hm-rpc.0.KEQ0196838.1.STATE", false);  // Schlafzimmer Deckenlampe.STATE
          setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); // (Gruppe) Deko Licht An/Aus.PRESS_LONG
          setState("hm-rpc.1.CUX4000002.10.PRESS_SHORT", true); // (Gruppe) Dimmer (Diele, Essbereich, Küche, Esstisc.PRESS_SHORT
          setState("hm-rpc.1.CUX4000002.1.PRESS_LONG", true); // (Gruppe) Steckdosenleiste 1+2 An/Aus.PRESS_LONG
          setState("hm-rpc.0.KEQ0964652.1.STATE", false); // Stehlampe Wohnzimmer Tür.STATE
          setState("hm-rpc.0.KEQ0196897.1.STATE", false); // Nachttischlampe1 Schlafzimmer.STATE
          setState("hm-rpc.0.JEQ0740381.1.LEVEL", 0); // Dimmer Bad Einbaustrahler.LEVEL
          setState("hm-rpc.0.LEQ0187095.1.LEVEL", 0); // Dimmer Bad LED-Stripe Spiegel.LEVEL
          setState("hm-rpc.0.KEQ0926570.2.STATE", false); // Springbrunnen.STATE
          setState("hm-rpc.0.KEQ0926589.1.STATE", false); // Lichtschlauch Balkon.STATE
          setState("hm-rpc.0.KEQ0926589.2.STATE", false); // Teichlicht.STATE
          setState("hm-rpc.0.MEQ1739011.1.STATE", false); // LED-Unterschrank weiß (16A).STATE
          setState("hm-rpc.1.CUX4000001.6.PRESS_SHORT", true); // Lenovo-Q180 Standby.PRESS_SHORT
          setState("hm-rpc.0.LEQ0236668.1.STATE", false); // Duftnebler Bad.STATE
      
          setState("hm-rega.0.18930", false); // Bewegungsmelder aktiv ist falsch
          setState("hm-rega.0.42725", true); // Automatik Lichthelligkeit An/Aus
      
      // verzögerte Aktionen einfügen
          setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
          setStateDelayed("hm-rega.0.56542", false, 2000); // Lichthelligkeit Anzeige Aus Trigger nach 2 Sekunden
          setStateDelayed("hm-rpc.1.CUX4000001.11.PRESS_SHORT", true, 5000); // PCs Aus/WoL:11.PRESS_SHORT Aspire Standbye nach 5 Sekunden
      
          request = require('request'),
          request(url);
      }
      

      Irgend jemand eine Idee was das sein könnte oder wie ich das herausbekommen kann??

      Danke Gruß Zippolighter

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo Zippolighter,

        die anderen Aufrufe von SetStateDelayed laufen aber, oder? Deshalb liegt es nicht am Befehl, sondern wohl am Objekt. Vielleicht lässt sich das nicht mit false/true setzen. Ist das Vielleicht ein CCU-Werteliste oder was anderes?

        Übrigens: Das Skript ist an sich gut aufgebaut. Ich kann dir aber wärmstens den Scenes Adapter empfehlen. Dort legst du eine Szene "Abwesenheit" an und packst die ganzen Geräte da hinein. Auch Verzögerungen sind kein Problem.

        Im Javascrpt startets du die Szenen dann leicht zB mit setState("scene.0.Abwesenheit", true) und schon werden alle Befehle abgearbeitet.

        Gruß

        Pix

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

          Die "Anwesenheit" und die "Balkontür" wird nur einmal bei Scriptstart abgefragt. Richtig:

          var idAbwesendKurzVariable = 'hm-rega.0.2330'; // System Variable CCU2 Abwesend Kurz
          var idAnwesenheit = 'hm-rega.0.950'; // zur besseren Übersicht Anwesenheit in eine lokale Variable geschrieben
          var idBalkonTuer = "hm-rpc.0.MEQ0816190.1.STATE"; //Türkontakt Balkontür.STATE
          
          // lange, ausführliche Schreibweise
          on({
              id: idAbwesendKurzVariable, // Datenpunkt der Überwachung
              change: 'ne' // auf Änderung
          }, function (obj1) {
              // den neuen Wert der Änderung checken
              if (obj1.state.val === true) { // wenn neuer Wert true
                  // aktuelle Abfrage der zweiten Variable - also nur prüfen
          
                  if (getState(idAnwesenheit).val === true) { // wenn Anwesenheit auch wahr ist
                      if (getState(idBalkonTuer).val === false) { // wenn Balkontür ist zu
                          starteAktion(); // Funktion aufrufen
                      }
                      else {
                          starteAktion1();
                      }
                  }
              }
          });
          
          

          Die Funktionen "starteAktion()" und "starteAktion1()" unterscheiden sich nur geringfüg, so dass es übersichtlicher wäre, die Gemeinsamkeiten in einer Funktion zu haben und die Unterschiede im if- bzw. else-Zweig unterzubringen.

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

            Ergänzung:

            // kurze, übersichtliche Schreibweise
            on('idAbwesendKurzVariable', function(dp) {  // Auslösung bei Änderung 
                if (dp.state.val && getState(idAnwesenheit).val) { // wenn kurz abwesend und Anwesenheit wahr
                    if (!getState(idBalkonTuer).val) { // wenn Balkontür ist zu
                        spezielle Funktionen bei Balkontür geschlossen ...;
                        starteAktion(); // Funktion aufrufen
                    }
                    else {
                        spezielle Funktionen bei Balkontür offen ...;
                        starteAktion();
                    }  // Balkontür
                }      // kurz abwesend UND Anwesenheit
            });
            
            
            1 Reply Last reply Reply Quote 0
            • Z
              Zippolighter last edited by

              Habe jetzt nochmal hin und her getestet.

              Es funktioniert überhaupt kein setStateDelayed in dem Script obwohl ich denke das die Schreibweise ok ist.

              Irgend jemand noch eine Idee

              Danke Gruß Zippolighter

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

                @Zippolighter:

                request = require('request'), ` ohne var innerhalb von Funktionen mit Komma :?:

                var request = require('request');
                

                außerhalb von Funktionen, am Besten am Scriptanfang verwenden :!:

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

                  @Zippolighter:

                  Hallo, habe problem mit einem Script

                  In dem Script sind 3 setStateDelayed Befehle. Die mit kurzer Zeit (Sekunden) funktionieren, der mit längerer Zeit (Minuten) nicht.

                  Das ist die nicht funktionierende Zeile

                   setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
                  
                  /* Programm Abwesend Kurz
                     Ablösen des CCU2 Programms
                     Mit Hilfe von Jey Cee, Pix und Paul53 
                  */
                  // Abfrage der Abwesenheit Kurz:
                  var idAbwesendKurzVariable = 'hm-rega.0.2330'; // System Variable CCU2 Abwesend Kurz
                  var idAnwesenheit = getState('hm-rega.0.950').val; // zur besseren Übersicht Anwesenheit in eine lokale Variable geschrieben
                  var idBalkonTuer = getState("hm-rpc.0.MEQ0816190.1.STATE").val; //Türkontakt Balkontür.STATE
                     
                  // lange, ausführliche Schreibweise
                  on({
                      id: idAbwesendKurzVariable, // Datenpunkt der Überwachung
                      change: 'ne' // auf Änderung
                  }, function (obj1) {
                      // den neuen Wert der Änderung checken
                      if (obj1.state.val === true) { // wenn neuer Wert true
                          // aktuelle Abfrage der zweiten Variable - also nur prüfen
                  
                          if (idAnwesenheit === true) { // wenn Anwesenheit auch wahr ist
                              if (idBalkonTuer === false) { // wenn Balkontür ist zu
                                  starteAktion(); // Funktion aufrufen
                              }
                              else {
                                  starteAktion1();
                          }}
                      }
                  });
                  
                  // Ausführung
                  function starteAktion () {
                  // Definiere Variablen
                      var url ='http://192.168.33.212:8081/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Stop%22,%22params%22:{%22playerid%22:%200},%22id%22:1}}}'; // Aspire Musik Aus
                  
                  // Aktionen
                      setState("hm-rpc.0.MEQ0484756.1.STATE", false); // Taster Deckenlicht Arbeitszimmer
                      setState("hm-rpc.0.NEQ0018993.2.SUBMIT","0.7,1,108000,20"); // MP3 Funkgong
                      setState("hm-rpc.0.KEQ0025668.1.STATE", false);  // Red Bull Kühlschrank Licht.STATE
                      setState("hm-rpc.0.KEQ0196838.1.STATE", false);  // Schlafzimmer Deckenlampe.STATE
                      setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); // (Gruppe) Deko Licht An/Aus.PRESS_LONG
                      setState("hm-rpc.1.CUX4000002.10.PRESS_SHORT", true); // (Gruppe) Dimmer (Diele, Essbereich, Küche, Esstisc.PRESS_SHORT
                      setState("hm-rpc.1.CUX4000002.1.PRESS_LONG", true); // (Gruppe) Steckdosenleiste 1+2 An/Aus.PRESS_LONG
                      setState("hm-rpc.0.KEQ0964652.1.STATE", false); // Stehlampe Wohnzimmer Tür.STATE
                      setState("hm-rpc.0.KEQ0196897.1.STATE", false); // Nachttischlampe1 Schlafzimmer.STATE
                      setState("hm-rpc.0.JEQ0740381.1.LEVEL", 0); // Dimmer Bad Einbaustrahler.LEVEL
                      setState("hm-rpc.0.LEQ0187095.1.LEVEL", 0); // Dimmer Bad LED-Stripe Spiegel.LEVEL
                      setState("hm-rpc.0.KEQ0926570.2.STATE", false); // Springbrunnen.STATE
                      setState("hm-rpc.0.KEQ0926589.1.STATE", false); // Lichtschlauch Balkon.STATE
                      setState("hm-rpc.0.KEQ0926589.2.STATE", false); // Teichlicht.STATE
                      setState("hm-rpc.0.MEQ1739011.1.STATE", false); // LED-Unterschrank weiß (16A).STATE
                      setState("hm-rpc.1.CUX4000001.6.PRESS_SHORT", true); // Lenovo-Q180 Standby.PRESS_SHORT
                      setState("hm-rpc.0.LEQ0236668.1.STATE", false); // Duftnebler Bad.STATE
                      
                      
                  
                      setState("hm-rega.0.18930", false); // Bewegungsmelder aktiv ist falsch
                      setState("hm-rega.0.42725", true); // Automatik Lichthelligkeit An/Aus
                      
                  // verzögerte Aktionen einfügen
                      setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
                      setStateDelayed("hm-rega.0.56542", false, 2000); // Lichthelligkeit Anzeige Aus Trigger nach 2 Sekunden
                      setStateDelayed("hm-rpc.1.CUX4000001.11.PRESS_SHORT", true, 5000); // PCs Aus/WoL:11.PRESS_SHORT Aspire Standbye nach 5 Sekunden
                      
                      request = require('request'),
                      request(url);
                  }
                  function starteAktion1 () {
                  // Definiere Variablen
                      var url ='http://192.168.33.212:8081/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Stop%22,%22params%22:{%22playerid%22:%200},%22id%22:1}}}'; // Aspire Musik Aus
                  
                  // Aktionen
                      setState("hm-rpc.0.MEQ0484756.1.STATE", false); // Taster Deckenlicht Arbeitszimmer
                      setState("hm-rpc.0.NEQ0018993.2.SUBMIT","0.7,1,108000,16, 20"); // MP3 Funkgong
                      setState("hm-rpc.0.KEQ0025668.1.STATE", false);  // Red Bull Kühlschrank Licht.STATE
                      setState("hm-rpc.0.KEQ0196838.1.STATE", false);  // Schlafzimmer Deckenlampe.STATE
                      setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); // (Gruppe) Deko Licht An/Aus.PRESS_LONG
                      setState("hm-rpc.1.CUX4000002.10.PRESS_SHORT", true); // (Gruppe) Dimmer (Diele, Essbereich, Küche, Esstisc.PRESS_SHORT
                      setState("hm-rpc.1.CUX4000002.1.PRESS_LONG", true); // (Gruppe) Steckdosenleiste 1+2 An/Aus.PRESS_LONG
                      setState("hm-rpc.0.KEQ0964652.1.STATE", false); // Stehlampe Wohnzimmer Tür.STATE
                      setState("hm-rpc.0.KEQ0196897.1.STATE", false); // Nachttischlampe1 Schlafzimmer.STATE
                      setState("hm-rpc.0.JEQ0740381.1.LEVEL", 0); // Dimmer Bad Einbaustrahler.LEVEL
                      setState("hm-rpc.0.LEQ0187095.1.LEVEL", 0); // Dimmer Bad LED-Stripe Spiegel.LEVEL
                      setState("hm-rpc.0.KEQ0926570.2.STATE", false); // Springbrunnen.STATE
                      setState("hm-rpc.0.KEQ0926589.1.STATE", false); // Lichtschlauch Balkon.STATE
                      setState("hm-rpc.0.KEQ0926589.2.STATE", false); // Teichlicht.STATE
                      setState("hm-rpc.0.MEQ1739011.1.STATE", false); // LED-Unterschrank weiß (16A).STATE
                      setState("hm-rpc.1.CUX4000001.6.PRESS_SHORT", true); // Lenovo-Q180 Standby.PRESS_SHORT
                      setState("hm-rpc.0.LEQ0236668.1.STATE", false); // Duftnebler Bad.STATE
                      
                      
                  
                      setState("hm-rega.0.18930", false); // Bewegungsmelder aktiv ist falsch
                      setState("hm-rega.0.42725", true); // Automatik Lichthelligkeit An/Aus
                      
                  // verzögerte Aktionen einfügen
                      setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
                      setStateDelayed("hm-rega.0.56542", false, 2000); // Lichthelligkeit Anzeige Aus Trigger nach 2 Sekunden
                      setStateDelayed("hm-rpc.1.CUX4000001.11.PRESS_SHORT", true, 5000); // PCs Aus/WoL:11.PRESS_SHORT Aspire Standbye nach 5 Sekunden
                      
                      request = require('request'),
                      request(url);
                  }
                  

                  Irgend jemand eine Idee was das sein könnte oder wie ich das herausbekommen kann??

                  Danke Gruß Zippolighter `
                  Und die normale setState gehen?

                  Wenn du die setStateDelayed direkt am Skriptstart schreibst, geht es?

                  1 Reply Last reply Reply Quote 0
                  • P
                    pix last edited by

                    Hallo,

                    habe mir den ganzen Thread nochmal durchgesehen. Kannst du bitte mal den jetzigen, korrigierten Stand des Skriptes posten?

                    Das Problem ist ja: @Zippolighter:

                    In dem Script sind 3 setStateDelayed Befehle. Die mit kurzer Zeit (Sekunden) funktionieren, der mit längerer Zeit (Minuten) nicht. `
                    Der Befehl mit der längeren Zeit ist dieser:

                    setStateDelayed("hm-rega.0.18930", true, 300000); // Bewegungsmelder nach 5 Min aktiv setzen
                    

                    An der Schreibweise kann es nicht liegen. Allerdings: Ich steuere meine Bewegungsmelder nicht mit dem Rega-Adapter an, sondern mit dem RPC-Adapter. Aber vielleicht sollte man mal````
                    setStateDelayed("hm-rega.0.18930", "true", 300000);

                    
                    Es war nur ein kurzer Gedanke, vermutlich ganz falsch, aber vielleicht gibt es noch eine andere Fehlerquelle ;)
                    
                    Wie sendet setStateDelayed einen Befehl an den Bewegungsmelder? *   Der Befehl wird im Javascript-Adapter erkannt und der Delay abgewartet und dann der Einschaltbefehl (in diesem Fall) über den HM-Adapter gesetzt.
                    
                    *   Der Befehl wird vom JS-Adapter über den HM-Adapter sofort an das Gerät geschickt und die Verzögerung mitgegeben, damit das Gerät selbst die Verzögerung abwartet und dann einschaltet Letzteres halte ich für unwahrscheinlich, aber könnte natürlich den Fehler bringen, wenn zwischenzeitlich andere Befehle auf das Gerät einprasseln.
                    
                    Gruß
                    
                    Pix
                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by

                      @pix:

                      Wie sendet setStateDelayed einen Befehl an den Bewegungsmelder?

                      Der Befehl wird im Javascript-Adapter erkannt und der Delay abgewartet und dann der Einschaltbefehl (in diesem Fall) über den HM-Adapter gesetzt.

                      Der Befehl wird vom JS-Adapter über den HM-Adapter sofort an das Gerät geschickt und die Verzögerung mitgegeben, damit das Gerät selbst die Verzögerung abwartet und dann einschaltet `
                      Die zweite Variante ist ausgeschlossen, denn setStateDelayed() kann auf jeden Datenpunkt angewendet werden.

                      1 Reply Last reply Reply Quote 0
                      • P
                        pix last edited by

                        War ja nur so eine Idee. Vermutlich aus alten Homematic WebUI Zeiten, als ich die Verzögerung zum Einschalten gleich mitgegeben habe. Denn falls innerhalb der Verzögerung die CCU ausfällt (kam schon mal vor), dann hatte der Aktor den Befehl schon erhalten und konnte selbst die Verzögerung abwarten. Aber das ging natürlich nur bei Aktoren, nicht bei anderen Datenpunkten.

                        1 Reply Last reply Reply Quote 0
                        • Z
                          Zippolighter last edited by

                          Sorry für die späte Antwort, aber war in Urlaub und habe irgendwie versucht das Problem zu analysieren.

                          War etwas schwierig da es manchmal geht und manchmal nicht.

                          Letzendlich habe ich jetzt herausgefunden das die Ursache für mein Problem in einem request(url) Kommando liegt. Hier sollte ein JSON Befehl an einen PC gesendet werden auf dem XBMC läuft und die Musik stoppen. Wenn der PC an ist. Funktioniert das setStateDelayed. Wenn er aus ist, geht es nicht. Keine Ahnung warum das so ist. Aber seit dem ich die dementsprechenden Zeilen auskommentiert habe, geht es immer.

                          Hier das jetzt momentan gültige Script

                          /* Programm Abwesend Kurz
                             Ablösen des CCU2 Programms
                             Mit Hilfe von Jey Cee, Pix und Paul53 
                          */
                          // Abfrage der Abwesenheit Kurz:
                          var idAbwesendKurzVariable = 'hm-rega.0.2330'; // System Variable CCU2 Abwesend Kurz
                          var idAnwesenheit = getState('hm-rega.0.950').val; // zur besseren Übersicht Anwesenheit in eine lokale Variable geschrieben
                          var idBalkonTuer = getState("hm-rpc.0.MEQ0816190.1.STATE").val; //Türkontakt Balkontür.STATE
                          var idBewegungsmelder = 'hm-rega.0.18930';
                          
                          // lange, ausführliche Schreibweise
                          on({
                              id: idAbwesendKurzVariable, // Datenpunkt der Überwachung
                              change: 'ne' // auf Änderung
                          }, function (obj1) {
                              // den neuen Wert der Änderung checken
                              if (obj1.state.val === true) { // wenn neuer Wert true
                                  // aktuelle Abfrage der zweiten Variable - also nur prüfen
                          
                                  if (idAnwesenheit === true) { // wenn Anwesenheit auch wahr ist
                                      if (idBalkonTuer === false) { // wenn Balkontür ist zu
                                          starteAktion(); // Funktion aufrufen
                                      }
                                      else {
                                          starteAktion1();
                                  }}
                              }
                          });
                          
                          // Ausführung
                          function starteAktion() {
                          // Definiere Variablen
                          //    var url ='http://192.168.33.212:8081/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Stop%22,%22params%22:{%22playerid%22:%200},%22id%22:1}}}'; // Aspire Musik Aus
                          
                          // Aktionen
                              setState("hm-rpc.0.MEQ0484756.1.STATE", false); // Taster Deckenlicht Arbeitszimmer
                          
                              setState("hm-rpc.0.KEQ0025668.1.STATE", false);  // Red Bull Kühlschrank Licht.STATE
                              setState("hm-rpc.0.KEQ0196838.1.STATE", false);  // Schlafzimmer Deckenlampe.STATE
                              setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); // (Gruppe) Deko Licht An/Aus.PRESS_LONG
                              setState("hm-rpc.1.CUX4000002.10.PRESS_SHORT", true); // (Gruppe) Dimmer (Diele, Essbereich, Küche, Esstisc.PRESS_SHORT
                              setState("hm-rpc.1.CUX4000002.1.PRESS_LONG", true); // (Gruppe) Steckdosenleiste 1+2 An/Aus.PRESS_LONG
                              setState("hm-rpc.0.KEQ0964652.1.STATE", false); // Stehlampe Wohnzimmer Tür.STATE
                              setState("hm-rpc.0.KEQ0196897.1.STATE", false); // Nachttischlampe1 Schlafzimmer.STATE
                              setState("hm-rpc.0.JEQ0740381.1.LEVEL", 0); // Dimmer Bad Einbaustrahler.LEVEL
                              setState("hm-rpc.0.LEQ0187095.1.LEVEL", 0); // Dimmer Bad LED-Stripe Spiegel.LEVEL
                              setState("hm-rpc.0.KEQ0926570.2.STATE", false); // Springbrunnen.STATE
                              setState("hm-rpc.0.KEQ0926589.1.STATE", false); // Lichtschlauch Balkon.STATE
                              setState("hm-rpc.0.KEQ0926589.2.STATE", false); // Teichlicht.STATE
                              setState("hm-rpc.0.MEQ1739011.1.STATE", false); // LED-Unterschrank weiß (16A).STATE
                              setState("hm-rpc.1.CUX4000001.6.PRESS_SHORT", true); // Lenovo-Q180 Standby.PRESS_SHORT
                              setState("hm-rpc.0.LEQ0236668.1.STATE", false); // Duftnebler Bad.STATE
                              setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
                              setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe):1.STATE
                              setState("hm-rpc.0.NEQ0132493.1.STATE", false); //Taster Balkonlicht.STATE
                              setState("hm-rpc.0.MEQ1711639.2.STATE", false); //Balkon (LED-Stripe):2.STATE*/)
                          
                              setState("hm-rega.0.18930", false); // Bewegungsmelder aktiv ist falsch
                              setState("hm-rega.0.42725", true); // Automatik Lichthelligkeit An/Aus
                              setState("hm-rpc.0.NEQ0018993.2.SUBMIT","0.7,1,108000,20"); // MP3 Funkgong
                          
                          // verzögerte Aktionen einfügen
                              setStateDelayed(idBewegungsmelder, true, 300000, true, function() {log('Bewegungsmelder Aktiv'); // Bewegungsmelder nach 5 Min aktiv setzen 
                              });
                              setStateDelayed("hm-rega.0.56542", false, 2000); // Lichthelligkeit Anzeige Aus Trigger nach 2 Sekunden
                              setStateDelayed("hm-rpc.1.CUX4000001.11.PRESS_SHORT", true, 5000); // PCs Aus/WoL:11.PRESS_SHORT Aspire Standbye nach 5 Sekunden
                          
                          //    request = require('request'),
                          //    request(url);
                          }
                          function starteAktion1() {
                          // Definiere Variablen
                          //    var url ='http://192.168.33.212:8081/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22method%22:%22Player.Stop%22,%22params%22:{%22playerid%22:%200},%22id%22:1}}}'; // Aspire Musik Aus
                          
                          // Aktionen
                              setState("hm-rpc.0.MEQ0484756.1.STATE", false); // Taster Deckenlicht Arbeitszimmer
                          
                              setState("hm-rpc.0.KEQ0025668.1.STATE", false);  // Red Bull Kühlschrank Licht.STATE
                              setState("hm-rpc.0.KEQ0196838.1.STATE", false);  // Schlafzimmer Deckenlampe.STATE
                              setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); // (Gruppe) Deko Licht An/Aus.PRESS_LONG
                              setState("hm-rpc.1.CUX4000002.10.PRESS_SHORT", true); // (Gruppe) Dimmer (Diele, Essbereich, Küche, Esstisc.PRESS_SHORT
                              setState("hm-rpc.1.CUX4000002.1.PRESS_LONG", true); // (Gruppe) Steckdosenleiste 1+2 An/Aus.PRESS_LONG
                              setState("hm-rpc.0.KEQ0964652.1.STATE", false); // Stehlampe Wohnzimmer Tür.STATE
                              setState("hm-rpc.0.KEQ0196897.1.STATE", false); // Nachttischlampe1 Schlafzimmer.STATE
                              setState("hm-rpc.0.JEQ0740381.1.LEVEL", 0); // Dimmer Bad Einbaustrahler.LEVEL
                              setState("hm-rpc.0.LEQ0187095.1.LEVEL", 0); // Dimmer Bad LED-Stripe Spiegel.LEVEL
                              setState("hm-rpc.0.KEQ0926570.2.STATE", false); // Springbrunnen.STATE
                              setState("hm-rpc.0.KEQ0926589.1.STATE", false); // Lichtschlauch Balkon.STATE
                              setState("hm-rpc.0.KEQ0926589.2.STATE", false); // Teichlicht.STATE
                              setState("hm-rpc.0.MEQ1739011.1.STATE", false); // LED-Unterschrank weiß (16A).STATE
                              setState("hm-rpc.1.CUX4000001.6.PRESS_SHORT", true); // Lenovo-Q180 Standby.PRESS_SHORT
                              setState("hm-rpc.0.LEQ0236668.1.STATE", false); // Duftnebler Bad.STATE
                              setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
                              setState("hm-rpc.0.NEQ0132493.1.STATE", false); //Taster Balkonlicht.STATE
                              setState("hm-rpc.0.MEQ1711639.2.STATE", false); //Balkon (LED-Stripe):2.STATE*/)
                          
                              setState("hm-rega.0.18930", false); // Bewegungsmelder aktiv ist falsch
                              setState("hm-rega.0.42725", true); // Automatik Lichthelligkeit An/Aus
                              setState("hm-rpc.0.NEQ0018993.2.SUBMIT","0.7,1,108000, 16, 20"); // MP3 Funkgong
                          
                          // verzögerte Aktionen einfügen
                              setStateDelayed(idBewegungsmelder, true, 300000, true, function() {log('Bewegungsmelder Aktiv'); // Bewegungsmelder nach 5 Min aktiv setzen 
                              });
                              setStateDelayed("hm-rega.0.56542", false, 2000); // Lichthelligkeit Anzeige Aus Trigger nach 2 Sekunden
                              setStateDelayed("hm-rpc.1.CUX4000001.11.PRESS_SHORT", true, 5000); // PCs Aus/WoL:11.PRESS_SHORT Aspire Standbye nach 5 Sekunden
                          
                          //    request = require('request'),
                          //    request(url);
                          }
                          

                          Vielleicht hat ja jemand eine Idee warum sich das so verhält. Dann weiß ich zumindest beim nächsten mal wie ich das umgehen kann.

                          Danke Gruß Zippolighter

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          738
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          1634
                          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