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. Skripten / Logik
  4. [GELÖST] Zwei Geräte in e. Raum zuordnen (Echo - Thermostat)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    981

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[GELÖST] Zwei Geräte in e. Raum zuordnen (Echo - Thermostat)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
13 Beiträge 2 Kommentatoren 634 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.
  • M Offline
    M Offline
    Mitch
    schrieb am zuletzt editiert von Mitch
    #1

    Hi,

    ich suche nach einer Möglichkeit in Javascript enum.rooms auszuwerten. Dafür habe ich Echo's und Heizungsthermostate in jeweils einen Raum geworfen. Das Skript soll jetzt herausfinden, welcher Echo den Befehl angenommen hat und anschliessend das im selben Raum befindliche Heizungsthermostat finden (hm-rpc).

    Danach soll dann der Boost auf die Heizung ausgeführt werden.

    Hat sowas schonmal jemand mit Javascript gemacht?

    LG, Mitch

    paul53P 1 Antwort Letzte Antwort
    0
    • M Mitch

      Hi,

      ich suche nach einer Möglichkeit in Javascript enum.rooms auszuwerten. Dafür habe ich Echo's und Heizungsthermostate in jeweils einen Raum geworfen. Das Skript soll jetzt herausfinden, welcher Echo den Befehl angenommen hat und anschliessend das im selben Raum befindliche Heizungsthermostat finden (hm-rpc).

      Danach soll dann der Boost auf die Heizung ausgeführt werden.

      Hat sowas schonmal jemand mit Javascript gemacht?

      LG, Mitch

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @mitch sagte: das im selben Raum befindliche Heizungsthermostat finden (hm-rpc).

      HomeMatic hat die Besonderheit, dass Räume den Kanälen zugeordnet sind. Versuche mal diesen Ansatz:

      on(idsEcho, function(dp) {
          let idRoom = getObject(dp.id, 'rooms').enumIds[0];
          let members = getObject(idRoom).common.members;
          for(let id of members) {
              if(id.startsWith('hm-rpc.') && id.endsWith('.4')) setState(id + '.BOOST_MODE', true);
          }
      });
      

      idsEcho sollte sich per Selektor ermitteln lassen.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      M 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @mitch sagte: das im selben Raum befindliche Heizungsthermostat finden (hm-rpc).

        HomeMatic hat die Besonderheit, dass Räume den Kanälen zugeordnet sind. Versuche mal diesen Ansatz:

        on(idsEcho, function(dp) {
            let idRoom = getObject(dp.id, 'rooms').enumIds[0];
            let members = getObject(idRoom).common.members;
            for(let id of members) {
                if(id.startsWith('hm-rpc.') && id.endsWith('.4')) setState(id + '.BOOST_MODE', true);
            }
        });
        

        idsEcho sollte sich per Selektor ermitteln lassen.

        M Offline
        M Offline
        Mitch
        schrieb am zuletzt editiert von Mitch
        #3

        @paul53 Das hat mir schon etwas weitergeholfen. Ich habe folgendes Skript aktuell am laufen, was auf deinem basiert:

        on({id: "0_userdata.0.internet.test", change: "any"}, function (obj) 
        { 
          var rooms = getObject("enum.rooms.buero").common.members;
          setState('0_userdata.0.internet.teststring', rooms);
          let members = getObject(rooms).common.members;
          for(let id of members) {
            if(id.startsWith('hm-rpc.') && id.endsWith('.4')) setState(id + '.BOOST_MODE', true);
          }
        });
        

        In teststring steht folgendes drin, was genau enum.rooms.buero entspricht:

          "sonoff.0.Sonoff-02",
          "alexa2.0.Echo-Devices.G090U50784453GL9",
          "hm-rpc.0.000A1D89B0BFAD"
        

        Aber er möchte das Device nicht schalten.
        Screenshot 2022-11-02 205303.png

        EDIT: Ich glaube es liegt an: id.endsWith('.4') Aber sicher bin ich nicht.

        paul53P 1 Antwort Letzte Antwort
        0
        • M Mitch

          @paul53 Das hat mir schon etwas weitergeholfen. Ich habe folgendes Skript aktuell am laufen, was auf deinem basiert:

          on({id: "0_userdata.0.internet.test", change: "any"}, function (obj) 
          { 
            var rooms = getObject("enum.rooms.buero").common.members;
            setState('0_userdata.0.internet.teststring', rooms);
            let members = getObject(rooms).common.members;
            for(let id of members) {
              if(id.startsWith('hm-rpc.') && id.endsWith('.4')) setState(id + '.BOOST_MODE', true);
            }
          });
          

          In teststring steht folgendes drin, was genau enum.rooms.buero entspricht:

            "sonoff.0.Sonoff-02",
            "alexa2.0.Echo-Devices.G090U50784453GL9",
            "hm-rpc.0.000A1D89B0BFAD"
          

          Aber er möchte das Device nicht schalten.
          Screenshot 2022-11-02 205303.png

          EDIT: Ich glaube es liegt an: id.endsWith('.4') Aber sicher bin ich nicht.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @mitch sagte: Ich glaube es liegt an: id.endsWith('.4')

          Ändere es in id.endsWith('.1').
          Oder sind die Räume nicht dem Kanal zugeordnet? "hm-rpc.0.000A1D89B0BFAD" ist das Gerät.
          Falls die Zuordnung zum Gerät erfolgte, ändere Zeile 7 in

              if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          M 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @mitch sagte: Ich glaube es liegt an: id.endsWith('.4')

            Ändere es in id.endsWith('.1').
            Oder sind die Räume nicht dem Kanal zugeordnet? "hm-rpc.0.000A1D89B0BFAD" ist das Gerät.
            Falls die Zuordnung zum Gerät erfolgte, ändere Zeile 7 in

                if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
            
            M Offline
            M Offline
            Mitch
            schrieb am zuletzt editiert von Mitch
            #5

            @paul53 PS: Das Forum sagt heute oft Forbitten...

            Ich gebe zu, das ich das mit den Kanälen nicht verstanden habe. Bisher habe ich nur mit Räumen gearbeiten:

            zzzScreenshot 2022-11-02 212717.png

            Das ist die ID des Datenpunkt:
            hm-rpc.0.000A1D89B0BFAD.1.BOOST_MODE

            Dein letzter Vorschlag klang plausibel und nachvollziehbar. Aber ich kriege folgende Fehlermeldung im Log:

            
            javascript.0
            2022-11-02 21:35:17.065	info	Stop script script.js.common.timer.Boost_Heizung_15_Minuten
            
            admin.0
            2022-11-02 21:35:11.489	info	==> Connected system.user.admin from ::ffff:192.168.15.152
            
            javascript.0
            2022-11-02 21:34:55.337	error	at processImmediate (node:internal/timers:466:21)
            
            javascript.0
            2022-11-02 21:34:55.337	error	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
            
            javascript.0
            2022-11-02 21:34:55.337	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
            
            javascript.0
            2022-11-02 21:34:55.336	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
            
            javascript.0
            2022-11-02 21:34:55.336	error	at Object.<anonymous> (script.js.common.timer.Boost_Heizung_15_Minuten:5:33)
            
            javascript.0
            2022-11-02 21:34:55.335	error	Error in callback: TypeError: Cannot read properties of null (reading 'common')
            
            javascript.0
            2022-11-02 21:34:55.329	warn	script.js.common.timer.Boost_Heizung_15_Minuten: Object "sonoff.0.Sonoff-02,alexa2.0.Echo-Devices.G090U50784453GL9,hm-rpc.0.000A1D89B0BFAD" does not exist
            
            javascript.0
            2022-11-02 21:34:55.328	warn	at processImmediate (node:internal/timers:466:21)
            
            javascript.0
            2022-11-02 21:34:55.328	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
            
            javascript.0
            2022-11-02 21:34:55.327	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
            
            javascript.0
            2022-11-02 21:34:55.327	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
            
            javascript.0
            2022-11-02 21:34:55.327	warn	at Object.<anonymous> (script.js.common.timer.Boost_Heizung_15_Minuten:4:3)
            
            javascript.0
            2022-11-02 21:34:55.326	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1689:20)
            
            javascript.0
            2022-11-02 21:34:55.323	warn	You are assigning a array to the state "0_userdata.0.internet.teststring" which expects a string. Please fix your code to use a string or change the state type to array. This warning might become an error in future versions.
            

            So sieht das Skript jetzt aus:

            on({id: "0_userdata.0.internet.test", change: "any"}, function (obj) 
            { 
              var rooms = getObject("enum.rooms.buero").common.members;
              setState('0_userdata.0.internet.teststring', rooms);
              let members = getObject(rooms).common.members;
              for(let id of members) {
                if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
              }
            });
            
            paul53P 2 Antworten Letzte Antwort
            0
            • M Mitch

              @paul53 PS: Das Forum sagt heute oft Forbitten...

              Ich gebe zu, das ich das mit den Kanälen nicht verstanden habe. Bisher habe ich nur mit Räumen gearbeiten:

              zzzScreenshot 2022-11-02 212717.png

              Das ist die ID des Datenpunkt:
              hm-rpc.0.000A1D89B0BFAD.1.BOOST_MODE

              Dein letzter Vorschlag klang plausibel und nachvollziehbar. Aber ich kriege folgende Fehlermeldung im Log:

              
              javascript.0
              2022-11-02 21:35:17.065	info	Stop script script.js.common.timer.Boost_Heizung_15_Minuten
              
              admin.0
              2022-11-02 21:35:11.489	info	==> Connected system.user.admin from ::ffff:192.168.15.152
              
              javascript.0
              2022-11-02 21:34:55.337	error	at processImmediate (node:internal/timers:466:21)
              
              javascript.0
              2022-11-02 21:34:55.337	error	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
              
              javascript.0
              2022-11-02 21:34:55.337	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
              
              javascript.0
              2022-11-02 21:34:55.336	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
              
              javascript.0
              2022-11-02 21:34:55.336	error	at Object.<anonymous> (script.js.common.timer.Boost_Heizung_15_Minuten:5:33)
              
              javascript.0
              2022-11-02 21:34:55.335	error	Error in callback: TypeError: Cannot read properties of null (reading 'common')
              
              javascript.0
              2022-11-02 21:34:55.329	warn	script.js.common.timer.Boost_Heizung_15_Minuten: Object "sonoff.0.Sonoff-02,alexa2.0.Echo-Devices.G090U50784453GL9,hm-rpc.0.000A1D89B0BFAD" does not exist
              
              javascript.0
              2022-11-02 21:34:55.328	warn	at processImmediate (node:internal/timers:466:21)
              
              javascript.0
              2022-11-02 21:34:55.328	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
              
              javascript.0
              2022-11-02 21:34:55.327	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
              
              javascript.0
              2022-11-02 21:34:55.327	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
              
              javascript.0
              2022-11-02 21:34:55.327	warn	at Object.<anonymous> (script.js.common.timer.Boost_Heizung_15_Minuten:4:3)
              
              javascript.0
              2022-11-02 21:34:55.326	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1689:20)
              
              javascript.0
              2022-11-02 21:34:55.323	warn	You are assigning a array to the state "0_userdata.0.internet.teststring" which expects a string. Please fix your code to use a string or change the state type to array. This warning might become an error in future versions.
              

              So sieht das Skript jetzt aus:

              on({id: "0_userdata.0.internet.test", change: "any"}, function (obj) 
              { 
                var rooms = getObject("enum.rooms.buero").common.members;
                setState('0_userdata.0.internet.teststring', rooms);
                let members = getObject(rooms).common.members;
                for(let id of members) {
                  if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
                }
              });
              
              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @mitch sagte: You are assigning a array to the state "0_userdata.0.internet.teststring" which expects a string. Please fix your code to use a string or change the state type to array. This warning might become an error in future versions.

              Die Warnung resultiert aus Zeile 4: rooms enthält ein Array, der Datenpunkt ist aber vom Typ "string".

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • M Mitch

                @paul53 PS: Das Forum sagt heute oft Forbitten...

                Ich gebe zu, das ich das mit den Kanälen nicht verstanden habe. Bisher habe ich nur mit Räumen gearbeiten:

                zzzScreenshot 2022-11-02 212717.png

                Das ist die ID des Datenpunkt:
                hm-rpc.0.000A1D89B0BFAD.1.BOOST_MODE

                Dein letzter Vorschlag klang plausibel und nachvollziehbar. Aber ich kriege folgende Fehlermeldung im Log:

                
                javascript.0
                2022-11-02 21:35:17.065	info	Stop script script.js.common.timer.Boost_Heizung_15_Minuten
                
                admin.0
                2022-11-02 21:35:11.489	info	==> Connected system.user.admin from ::ffff:192.168.15.152
                
                javascript.0
                2022-11-02 21:34:55.337	error	at processImmediate (node:internal/timers:466:21)
                
                javascript.0
                2022-11-02 21:34:55.337	error	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
                
                javascript.0
                2022-11-02 21:34:55.337	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
                
                javascript.0
                2022-11-02 21:34:55.336	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
                
                javascript.0
                2022-11-02 21:34:55.336	error	at Object.<anonymous> (script.js.common.timer.Boost_Heizung_15_Minuten:5:33)
                
                javascript.0
                2022-11-02 21:34:55.335	error	Error in callback: TypeError: Cannot read properties of null (reading 'common')
                
                javascript.0
                2022-11-02 21:34:55.329	warn	script.js.common.timer.Boost_Heizung_15_Minuten: Object "sonoff.0.Sonoff-02,alexa2.0.Echo-Devices.G090U50784453GL9,hm-rpc.0.000A1D89B0BFAD" does not exist
                
                javascript.0
                2022-11-02 21:34:55.328	warn	at processImmediate (node:internal/timers:466:21)
                
                javascript.0
                2022-11-02 21:34:55.328	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
                
                javascript.0
                2022-11-02 21:34:55.327	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
                
                javascript.0
                2022-11-02 21:34:55.327	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
                
                javascript.0
                2022-11-02 21:34:55.327	warn	at Object.<anonymous> (script.js.common.timer.Boost_Heizung_15_Minuten:4:3)
                
                javascript.0
                2022-11-02 21:34:55.326	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1689:20)
                
                javascript.0
                2022-11-02 21:34:55.323	warn	You are assigning a array to the state "0_userdata.0.internet.teststring" which expects a string. Please fix your code to use a string or change the state type to array. This warning might become an error in future versions.
                

                So sieht das Skript jetzt aus:

                on({id: "0_userdata.0.internet.test", change: "any"}, function (obj) 
                { 
                  var rooms = getObject("enum.rooms.buero").common.members;
                  setState('0_userdata.0.internet.teststring', rooms);
                  let members = getObject(rooms).common.members;
                  for(let id of members) {
                    if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
                  }
                });
                
                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @mitch sagte: So sieht das Skript jetzt aus:

                Das funktioniert so nicht. Zum Test:

                on({id: "0_userdata.0.internet.test", change: "any"}, function () { 
                  let members = getObject("enum.rooms.buero").common.members;
                  setState('0_userdata.0.internet.teststring', JSON.stringify(members));
                  for(let id of members) {
                    if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
                  }
                });
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                M 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @mitch sagte: So sieht das Skript jetzt aus:

                  Das funktioniert so nicht. Zum Test:

                  on({id: "0_userdata.0.internet.test", change: "any"}, function () { 
                    let members = getObject("enum.rooms.buero").common.members;
                    setState('0_userdata.0.internet.teststring', JSON.stringify(members));
                    for(let id of members) {
                      if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true);
                    }
                  });
                  
                  M Offline
                  M Offline
                  Mitch
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 sagte in Zwei Geräte in Räumen zuordnen (Echo-Gerät und Thermosthat):

                  on({id: "0_userdata.0.internet.test", change: "any"}, function () { let members = getObject("enum.rooms.buero").common.members; setState('0_userdata.0.internet.teststring', JSON.stringify(members)); for(let id of members) { if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true); } });

                  Vielen Dank, es funktioniert!

                  M 1 Antwort Letzte Antwort
                  0
                  • M Mitch

                    @paul53 sagte in Zwei Geräte in Räumen zuordnen (Echo-Gerät und Thermosthat):

                    on({id: "0_userdata.0.internet.test", change: "any"}, function () { let members = getObject("enum.rooms.buero").common.members; setState('0_userdata.0.internet.teststring', JSON.stringify(members)); for(let id of members) { if(id.startsWith('hm-rpc.')) setState(id + '.1.BOOST_MODE', true); } });

                    Vielen Dank, es funktioniert!

                    M Offline
                    M Offline
                    Mitch
                    schrieb am zuletzt editiert von Mitch
                    #9

                    Hallo,

                    anbei das Skript was ich mir letztendlich gebaut habe:

                    on({id: "0_userdata.0.heating.actual_boost", val: true}, function () {
                      var getecho = getState("alexa2.0.History.serialNumber").val;
                      setState('0_userdata.0.heating.dp_echo', 'alexa2.0.Echo-Devices.' + getecho);
                      let roomid = getObject('alexa2.0.Echo-Devices.' + getecho, 'rooms').enumIds[0];  
                      setState('0_userdata.0.heating.dp_room', roomid);   
                      let members = getObject(roomid).common.members;
                      for(let id of members) {
                        if(id.startsWith('hm-rpc.')) {
                            setState('0_userdata.0.heating.dp_thermostat', id)
                            setState(id + '.1.BOOST_MODE', true);
                        }
                      setState('0_userdata.0.heating.actual_boost', false);
                      }
                    });
                    

                    Man braucht vielleicht nicht zwingend so viele Datenpunkte. Ich finde es aber Vorteilhaft, wenn etwas quer läuft, kann ich nachträglich den letzten Boost noch analysieren.

                    Was mir jetzt noch fehlt und ich noch anpassen werde:

                    • Meldung per Sprache an betreffendes Echo, dass der Befehl ausgeführt wurde
                    • Positivliste, welche Zimmer überhaupt Heizungsboost erhalten (z.B. Ausschluss Kinderzimmer)
                    • Meldung an mich per Telegram

                    Gruss und Danke nochmal!

                    M 1 Antwort Letzte Antwort
                    0
                    • M Mitch

                      Hallo,

                      anbei das Skript was ich mir letztendlich gebaut habe:

                      on({id: "0_userdata.0.heating.actual_boost", val: true}, function () {
                        var getecho = getState("alexa2.0.History.serialNumber").val;
                        setState('0_userdata.0.heating.dp_echo', 'alexa2.0.Echo-Devices.' + getecho);
                        let roomid = getObject('alexa2.0.Echo-Devices.' + getecho, 'rooms').enumIds[0];  
                        setState('0_userdata.0.heating.dp_room', roomid);   
                        let members = getObject(roomid).common.members;
                        for(let id of members) {
                          if(id.startsWith('hm-rpc.')) {
                              setState('0_userdata.0.heating.dp_thermostat', id)
                              setState(id + '.1.BOOST_MODE', true);
                          }
                        setState('0_userdata.0.heating.actual_boost', false);
                        }
                      });
                      

                      Man braucht vielleicht nicht zwingend so viele Datenpunkte. Ich finde es aber Vorteilhaft, wenn etwas quer läuft, kann ich nachträglich den letzten Boost noch analysieren.

                      Was mir jetzt noch fehlt und ich noch anpassen werde:

                      • Meldung per Sprache an betreffendes Echo, dass der Befehl ausgeführt wurde
                      • Positivliste, welche Zimmer überhaupt Heizungsboost erhalten (z.B. Ausschluss Kinderzimmer)
                      • Meldung an mich per Telegram

                      Gruss und Danke nochmal!

                      M Offline
                      M Offline
                      Mitch
                      schrieb am zuletzt editiert von Mitch
                      #10

                      Neue Version:

                      on({id: "0_userdata.0.heating.actual_boost", val: true}, function () {
                          var getecho = getState("alexa2.0.History.serialNumber").val;
                          setState('0_userdata.0.heating.dp_echo', 'alexa2.0.Echo-Devices.' + getecho);
                          let roomid = getObject('alexa2.0.Echo-Devices.' + getecho, 'rooms').enumIds[0];
                          let roomname = getObject('alexa2.0.Echo-Devices.' + getecho, 'rooms').enumNames[0];    
                              setState('0_userdata.0.heating.dp_room', roomid);   
                          let members = getObject(roomid).common.members;
                          for(let id of members) {
                              if(id.startsWith('hm-rpc.')) {
                                  setState('0_userdata.0.heating.dp_thermostat', id)
                                  setState(id + '.1.BOOST_MODE', true);
                              }
                              setState('0_userdata.0.heating.actual_boost', false);
                          }
                          setState('alexa2.0.Echo-Devices.' + getecho + '.Commands.speak', 'Boost Heizung wurde im Raum ' + roomname + ' für 15 Minuten ausgelöst');
                          var today = new Date();
                          var bh_day = ("00" + today.getDate()).slice(-2);
                          var bh_mon = today.getMonth() + 1;
                          var bh_mon2 = ("00" + bh_mon).slice(-2);
                          var bh_year = ("0000" + today.getFullYear()).slice(-4);
                          var bh_hour = ("00" + today.getHours()).slice(-2);
                          var bh_min = ("00" + today.getMinutes()).slice(-2);
                          var bh_sec = ("00" + today.getSeconds()).slice(-2);
                          InfoMessage = "[" + bh_year + "/" + bh_mon2 + "/" + bh_day + "-" + bh_hour + ":" + bh_min + ":" + bh_sec + "]>" + "\n" +"Boost Heizung wurde im Raum " + roomname + " für 15 Minuten ausgelöst";
                          sendTo("telegram", "send", { text: InfoMessage });
                      });
                      

                      Jetzt enthalten:

                      • Meldung per Sprache an betreffendes Echo, dass der Befehl ausgeführt wurde
                      • Meldung an mich per Telegram
                      M 1 Antwort Letzte Antwort
                      0
                      • M Mitch

                        Neue Version:

                        on({id: "0_userdata.0.heating.actual_boost", val: true}, function () {
                            var getecho = getState("alexa2.0.History.serialNumber").val;
                            setState('0_userdata.0.heating.dp_echo', 'alexa2.0.Echo-Devices.' + getecho);
                            let roomid = getObject('alexa2.0.Echo-Devices.' + getecho, 'rooms').enumIds[0];
                            let roomname = getObject('alexa2.0.Echo-Devices.' + getecho, 'rooms').enumNames[0];    
                                setState('0_userdata.0.heating.dp_room', roomid);   
                            let members = getObject(roomid).common.members;
                            for(let id of members) {
                                if(id.startsWith('hm-rpc.')) {
                                    setState('0_userdata.0.heating.dp_thermostat', id)
                                    setState(id + '.1.BOOST_MODE', true);
                                }
                                setState('0_userdata.0.heating.actual_boost', false);
                            }
                            setState('alexa2.0.Echo-Devices.' + getecho + '.Commands.speak', 'Boost Heizung wurde im Raum ' + roomname + ' für 15 Minuten ausgelöst');
                            var today = new Date();
                            var bh_day = ("00" + today.getDate()).slice(-2);
                            var bh_mon = today.getMonth() + 1;
                            var bh_mon2 = ("00" + bh_mon).slice(-2);
                            var bh_year = ("0000" + today.getFullYear()).slice(-4);
                            var bh_hour = ("00" + today.getHours()).slice(-2);
                            var bh_min = ("00" + today.getMinutes()).slice(-2);
                            var bh_sec = ("00" + today.getSeconds()).slice(-2);
                            InfoMessage = "[" + bh_year + "/" + bh_mon2 + "/" + bh_day + "-" + bh_hour + ":" + bh_min + ":" + bh_sec + "]>" + "\n" +"Boost Heizung wurde im Raum " + roomname + " für 15 Minuten ausgelöst";
                            sendTo("telegram", "send", { text: InfoMessage });
                        });
                        

                        Jetzt enthalten:

                        • Meldung per Sprache an betreffendes Echo, dass der Befehl ausgeführt wurde
                        • Meldung an mich per Telegram
                        M Offline
                        M Offline
                        Mitch
                        schrieb am zuletzt editiert von
                        #11

                        @paul53

                        Ich bin etwas irritiert. Heute Nachmittag funktionierten die Meldung per Telegramm und Alexa noch. Jetzt meldet er:

                        [2022/11/04-18:59:42]>
                        Boost Heizung wurde im Raum [object Object] für 15 Minuten ausgelöst

                        Normalerweise sollte er lt. Skript den Namen des Raums sagen.

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • M Mitch

                          @paul53

                          Ich bin etwas irritiert. Heute Nachmittag funktionierten die Meldung per Telegramm und Alexa noch. Jetzt meldet er:

                          [2022/11/04-18:59:42]>
                          Boost Heizung wurde im Raum [object Object] für 15 Minuten ausgelöst

                          Normalerweise sollte er lt. Skript den Namen des Raums sagen.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #12

                          @mitch sagte: Boost Heizung wurde im Raum [object Object] für 15 Minuten ausgelöst

                          Hat dieser Raum vielleicht mehrsprachige Namen? Dann ergänze unter Zeile 5:

                          if(typeof roomname == 'object') roomname = roomname.de;
                          

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          M 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @mitch sagte: Boost Heizung wurde im Raum [object Object] für 15 Minuten ausgelöst

                            Hat dieser Raum vielleicht mehrsprachige Namen? Dann ergänze unter Zeile 5:

                            if(typeof roomname == 'object') roomname = roomname.de;
                            
                            M Offline
                            M Offline
                            Mitch
                            schrieb am zuletzt editiert von
                            #13

                            @paul53 sagte in [GELÖST] Zwei Geräte in e. Raum zuordnen (Echo - Thermostat):

                            if(typeof roomname == 'object') roomname = roomname.de;

                            Das wars... es ging vorher, aber ich hatte zwischenzeitlich auch den Javascript Adapter geupdated. Vielen Dank!

                            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

                            732

                            Online

                            32.6k

                            Benutzer

                            82.2k

                            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