Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Mehrere Befehle an Alexa und Hue - wie am besten?

    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

    Mehrere Befehle an Alexa und Hue - wie am besten?

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

      Hi, ich habe immer mal wieder Probleme, wenn ich in meinen Skripten mehrere Befehle an Alexa oder Hue schicke und würde gerne mal wissen, was ich da besser machen kann.

      Beispiel 1:
      Ich habe mehrere Echos und möchte beispielsweise auf allen im 1. Stock ein Announcement machen. In meinem Skript habe ich dann:

      setState("alexa2.0.Echo-Devices.xxxxxxxx.Commands.announcement", "irgendein Text");
      setState("alexa2.0.Echo-Devices.yyyyyyyy.Commands.announcement", "irgendein Text");
      setState("alexa2.0.Echo-Devices.zzzzzzzz.Commands.announcement", "irgendein Text");
      

      Manchmal kommt es dann vor, dass nur ein oder zwei der Befehle ausgeführt werden und nicht alle drei Echos das Announcement sprechen. (klar, ich könnte hier die drei Echos zu einer Gruppe zusammenfassen, aber mir geht es ums Prinzip.)

      Beispiel 2:
      Ich habe in drei verschiedenen Zimmern Hue-Strips und sie sollen bei einem bestimmten Ereignis 5 Sekunden lang in einer bestimmten Farbe blinken. Wenn sie vorher eingeschaltet werden, will ich mir das jeweilige Setting merken und nach dem Blinken wiederherstellen. Ich habe dazu eine Funktion geschrieben, die ich für die drei Zimmer aufrufe:

      function blinkHueStrip(room) {
          if (room == "wzVorne") {
              var stripID = "hue.0.Fernsehlicht";
          } else if (room == "wzHinten") {
              var stripID = "hue.0.Wandlicht";
          } else if (room == "büro") {
              var stripID = "hue.0.Schreibtisch";
          } 
      
          var stripOn = getState(stripID+".on").val;
          var stripColormode = getState(stripID+".colormode").val;
          var stripLevel = getState(stripID+".level").val;
        
          if (stripColormode == "ct") {
              var stripCT = getState(stripID+".ct").val;
          } else {
              var stripR = getState(stripID+".r").val;
              var stripB = getState(stripID+".b").val;
              var stripG = getState(stripID+".g").val;
          }
      
          setState(stripID+".command", '{"transitiontime": 0, "ct": 3200, "level":90}');    
          setStateDelayed(stripID+".alert", "lselect", 700, false);
          setStateDelayed(stripID+".alert", "none", 5700, false);
      
          if (stripOn == false) {
              setStateDelayed(stripID+".command", '{"transitiontime": 5, "on":false}', 5750, false); 
          } else {
              if (stripColormode == "ct") {
                  setStateDelayed(stripID+".command", '{"transitiontime": 25, "level":' + stripLevel + ', "ct":' + stripCT + '}', 5750, false);    
              } else {
                  setStateDelayed(stripID+".command", '{"transitiontime": 25, "level":' + stripLevel + ', "r":' + stripR +', "b":' + stripB +', "g":' + stripG + '}', 5750, false);
              }
          }
      }
      

      In den meisten Fällen funktioniert das, aber immer wieder scheint es so, als werden manche Befehle verschluckt und nicht ausgeführt.

      Ich habe auch schon mit setStateDelayed gearbeitet und die Funktion etwas zeitversetzt für die drei verschiedenen Zimmer aufgerufen, aber das hat nicht wirklich etwas gebracht.

      Wie kann ich das denn besser machen? Wie geht ihr damit um, wenn ihr mehrere Befehle an Alexa oder Hue senden wollt? Hab schon von den asynchronen Befehlen gelesen - kann das vielleicht helfen?

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

        @markusmac
        Ich habe das bei mir oft gelöst das ich eher viele kleine Skripte statt einem großen einsetze.

        Also hängt an einem Datenpunkt nicht ein Skript das bei einer Änderung 3 andere Geräte ansteuert sondern 3 Skripte, für jedes Gerät eines (on - Befehl)

        Ja, das widerspricht auch meinem inneren Monk, dafür arbeiten die Skripte parallel. Die Pflege macht das natürlich nicht einfacher.

        Unabhängig davon: Du setzt die Werte in deinen Beispielen nur, versuch es doch mal mit steuern (Acknowledge), eventuell bekommt die andere Seite es sonst nicht richtig mit.

        setState("alexa2.0.Echo-Devices.xxxxxxxx.Commands.announcement", "irgendein Text", true);
        

        So wie ich die Hilfe verstanden habe wird damit ein Adapter aktiv zur Ausführung/Beachtung aufgefordert.

        M 1 Reply Last reply Reply Quote 0
        • M
          MarkusMac @BananaJoe last edited by

          @bananajoe Danke für den Hinweis, das probiere ich mal aus! 🙂

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

          Support us

          ioBroker
          Community Adapters
          Donate

          512
          Online

          31.9k
          Users

          80.2k
          Topics

          1.3m
          Posts

          2
          3
          229
          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