Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Vorlage] Bewegungsmelder-Script (Xiaomi Aqara und andere)

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

[Vorlage] Bewegungsmelder-Script (Xiaomi Aqara und andere)

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
50 Beiträge 19 Kommentatoren 12.5k Aufrufe 40 Watching
  • Ä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.
  • MicM Offline
    MicM Offline
    Mic
    Developer
    schrieb am zuletzt editiert von Mic
    #1

    (Update: 15.03.2020)

    Hi,

    Auszug aus den Features:

    1. Beliebig viele Bewegungsmelder einbinden. Pro Bewegungsmelder/Bereich können Geräte/Lichter bei Bewegung eingeschaltet und wieder ausgeschaltet werden, sobald x Sekunden keine Bewegung mehr.
    2. Mehrere Bewegungsmelder pro Raum/Bereich (z.B. Flur) möglich.
    3. Beliebig viele Zeiträume zum Schalten einstellbar (z.B. nur bestimmte Wochentage, Uhrzeiten, Astro, etc.).
    4. Helligkeit (Lux) als Trigger - es wird optional nur eingeschaltet, wenn Helligkeit unter einem vorgegeben Wert ist, damit z.B. bei genügend Helligkeit nicht eingeschaltet wird.
    5. Optionale Verzögerung zum wieder einschalten: In manchen Fällen will man ggf. mit dem Bewegungsmelder nur einmalig einschalten. Da kann man für bestimmte Bewegungsmelder einstellen, dass x Sekunden (z.B. 10 Minuten = 600s) nicht mehr neu ausgelöst wird.
    6. Prüfung auf Anwesenheit (oder andere Datenpunkte): Wenn im Script konfigurierte Datenpunkte mit einem bestimmten Wert übereinstimmen, wird nicht geschaltet. Hilfreich, um z.B. nicht zu schalten, wenn keiner anwesend ist, oder etwa ein Fenster offen ist, etc.

    Installation und Einrichtung:

    Link: Github: Bewegungsmelder-Script (für Xiaomi und andere)

    Ich freue mich über Euer Feedback.

    F D4vED 2 Antworten Letzte Antwort
    7
    • NegaleinN Offline
      NegaleinN Offline
      Negalein
      Global Moderator
      schrieb am zuletzt editiert von
      #2

      Hi Mic!

      Das trifft sich ja gut.
      Meine BWM sollten in 1-2 Wochen eintrudeln!

      Werde dein Script dann gleich verwenden! 🙂

      ° Node.js: 20.17.0 NPM: 10.8.2
      ° Proxmox, Ubuntu 22.04.3 LTS
      ° Fixer ---> iob fix

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Superdad
        schrieb am zuletzt editiert von
        #3

        Hallo Mic,

        vielen Dank für dein Script!
        Was muss ich denn einfügen, wenn ich zwei Bewegungsmelder für eine Lampe nutze?
        Oder umgedreht zwei Lampen an einem Bewegungsmelder?

        Gruss

        CCU3

        iOBroker auf IntelNUC Proxmox

        1 Antwort Letzte Antwort
        0
        • C Offline
          C Offline
          crabs
          schrieb am zuletzt editiert von
          #4

          Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

          T MicM 2 Antworten Letzte Antwort
          0
          • C crabs

            Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

            T Offline
            T Offline
            TurBion
            schrieb am zuletzt editiert von
            #5

            @crabs said in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

            Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

            Das würde mich auch interessieren!?

            1 Antwort Letzte Antwort
            0
            • M Online
              M Online
              michihorn
              schrieb am zuletzt editiert von
              #6

              Hallöchen
              gibt es auch eine Chance einen HM BWM einzubinden?
              Gruß
              Michael

              1 Antwort Letzte Antwort
              0
              • C crabs

                Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

                MicM Offline
                MicM Offline
                Mic
                Developer
                schrieb am zuletzt editiert von
                #7

                @crabs sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

                @TurBion sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                Das würde mich auch interessieren!?

                @michihorn sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                gibt es auch eine Chance einen HM BWM einzubinden?

                Scheint wohl ein Bedarf zu bestehen, das Script zu erweitern ☺
                Das aktuelle Script bietet Zeitperioden (Sommerzeit etc.) nicht an.
                HM BWM habe ich keinen, daher kann ich nicht testen und kenne die Datenpunkte auch nicht.

                fischi87F 1 Antwort Letzte Antwort
                0
                • MicM Mic

                  @crabs sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

                  @TurBion sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  Das würde mich auch interessieren!?

                  @michihorn sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  gibt es auch eine Chance einen HM BWM einzubinden?

                  Scheint wohl ein Bedarf zu bestehen, das Script zu erweitern ☺
                  Das aktuelle Script bietet Zeitperioden (Sommerzeit etc.) nicht an.
                  HM BWM habe ich keinen, daher kann ich nicht testen und kenne die Datenpunkte auch nicht.

                  fischi87F Offline
                  fischi87F Offline
                  fischi87
                  schrieb am zuletzt editiert von fischi87
                  #8

                  @Mic sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  @crabs sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

                  @TurBion sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  Das würde mich auch interessieren!?

                  @michihorn sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                  gibt es auch eine Chance einen HM BWM einzubinden?

                  Scheint wohl ein Bedarf zu bestehen, das Script zu erweitern ☺
                  Das aktuelle Script bietet Zeitperioden (Sommerzeit etc.) nicht an.
                  HM BWM habe ich keinen, daher kann ich nicht testen und kenne die Datenpunkte auch nicht.

                  hey, wäre es möglich eine astro funktion einzubauen?

                  grüße axel

                  Hab jetzt selber mal etwas herum probiert mit diesem script und habe eine Astrofunktion hinzugefügt wenn man das so nennen darf. falls es jemand braucht oder evtl. mal testen möchte. bitte gibt mir doch ein feedback. bin totaler Anfänger was javascript angeht.

                  danke an den Entwickler des scripts, sehr gute Sache, hab ich schon länger geruht nach so einer Lösung!!!

                  grüße Axel

                  /*******************************************************************************
                   * Script: Schaltung Lichter/Geräte mittels Xiaomi-Aqara-Bewegungsmelder
                   * ----------------------------------------------------
                   * In das Script lassen sich beliebig viele Xiaomi Aqara Bewegungsmelder einbinden.
                   * Bei Bewegung wird dann ein pro Bewegungsmelder definierter Datenpunkt (Licht, 
                   * Gerät, etc.) auf "true" geschaltet.
                   * Optional wird nur geschaltet, falls Lichtstärke in Lux unter dem eingestellten
                   * Schwellwert liegt.
                   * Ebenso können 2 Zeiträume vorgegeben werden. Nur in diesen Zeiträumen wird dann
                   * geschaltet.
                   * Script wurde nicht getestet mit anderen Bewegungsmeldern!
                   * ----------------------------------------------------
                   * Autor: ioBroker-Forum-Name: Mic / Github-Name: Mic-M
                   * Source: https://github.com/Mic-M/iobroker.xiaomi-aquara-motion-control
                   * Support: https://forum.iobroker.net/topic/22034/
                   * ----------------------------------------------------
                    * Change Log:
                   *  0.2 Mic - Fix: Compare Time
                   *  0.1 Mic - Initial Release
                   ******************************************************************************/
                   
                  
                  /*******************************************************************************
                   * Konfiguration
                   ******************************************************************************/
                  
                  // Hier die einzelnen Bewegungsmelder konfigurieren und beliebig Zeilen hinzufügen.
                  // Zeiten: nur in den angegebenen Zeiten wird geschaltet. Falls immer geschaltet
                  // werden soll, dann jeweils '0:00' und '23:59' eintragen. Falls nur ein Zeitraum
                  // gewünscht ist, im Zeitraum 2 dieselben Zeiten wie in Zeitraum 1 eintragen.
                  const MOTIONDEV = [];
                  //             [0] Name              [1] Zeit 1  [2] Zeit 1 [3] Zeit 2 [4] Zeit 2  [5] Nach wie vielen Minuten ohne   [6] Ab wieviel Lux soll nicht mehr eingeschaltet  [7] Datenpunkt Bewegungsmelder Xiaomi                [8] Datenpunkt schaltendes Gerät/Licht etc.    [9] Helligkeit    [10] Astro-Funktion
                  //                 (beliebig)            von         bis        von         bis        Bewegung wieder aus? Falls 0,      werden? Falls 9999, dann wird unababhängig
                  //                                                                                     dann wird nicht ausgeschaltet.     von den gemessenen Lux immer eingeschaltet.
                  MOTIONDEV[0] = [   'Flur Mitte',           '0:00',     '23:59',    '0:00',   '23:59',               0.1,                                50,                                'mihome.0.devices.sensor_motion_aq2_158d000276d447',  'tuya.0.343176022cf4323d6f20.1'/*led switch*/, 'tuya.0.343176022cf4323d6f20.2', true];
                  //MOTIONDEV[1] = [   'Flur',              '0:00',     '23:59',    '0:00',   '23:59',               0,                                 9999,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch']; // Ausschalten: läuft über Shelly-Script nach 2 Minuten
                  //MOTIONDEV[2] = [   'Küche',             '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                  //MOTIONDEV[3] = [   'Bad',               '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                  
                  const BRIGHTNESS = [];
                  //               [0] Nacht  [1] Morgendämmerung [2] Sonnenaufgang  [3] Morgen   [4] Vormittag  [5] Mittag [6] Nachmittag [7] Abend  [8] Sonnenuntergang [9] Abenddämmerung
                  //
                  BRIGHTNESS[0] = [   10,            80,                  120,               160,         210,         255,           255,        160,        120,                    80];
                  //
                  // Logeinträge: Infos zeigen (wenn eingeschaltet oder ausgeschaltet wurde)
                  const INFO = false;
                  
                  // Logeinträge: Zusätzliche Einträge anzeigen zur Fehlerbehebung. Auf "false" setzen, wenn alles funktioniert.
                  const DEBUG = false;
                  
                  
                  /*******************************************************************************
                   * Ab hier nichts mehr ändern / Stop editing here!
                   ******************************************************************************/
                  
                  main();
                  function main() {
                      for (let i = 0; i < MOTIONDEV.length; i++) {
                          let timer = null;
                          on({id: MOTIONDEV[i][7] + '.state'/*Is motion*/, change: 'any'}, function(obj) {
                              // Falls Timer läuft: auf null setzen.
                              if (timer) {
                                  clearTimeout(timer);
                                  timer = null;
                              }
                              if(obj.state.val) {
                                  if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Bewegungsmelder-State geändert auf Bewegung = ja');
                                  // Es gab Bewegung, also prüfen, ob Licht eingeschaltet werden soll...
                                  // Prüfung 1: Aber zu den definierten Zeiten
                                  if(compareTime(MOTIONDEV[i][1], MOTIONDEV[i][2], 'between') || compareTime(MOTIONDEV[i][3], MOTIONDEV[i][4], 'between') ) {
                                      if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': compareTime() ist true.')
                                      // Prüfung 2: Soll auch Lichtstärke geprüft werden
                                      let LuxIsGiven = true; // Default auf true, wird false gesetzt, falls nicht gegeben.
                                      if(MOTIONDEV[i][6] < 9999 ) {
                                          if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Prüfung auf Lux ist aktiviert.')
                                          // Prüfung 3: gemessene Lux kleiner Schwellwert, bis zu dem geschalten werden soll?
                                          let luxActual = getState(MOTIONDEV[i][7] + '.lux').val;
                                          if (luxActual >= MOTIONDEV[i][6]) {
                                              if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Gemessene Lux = ' + luxActual + ', >= Schwelle von ' + MOTIONDEV[i][6] + ', daher wird nicht geschaltet.')
                                              LuxIsGiven = false;
                                          } else {
                                              if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Gemessene Lux = ' + luxActual + ', < Schwelle von ' + MOTIONDEV[i][6] + ', daher eingeschaltet.')
                                          }
                                      }
                                      if(MOTIONDEV[i][10], true) {
                                          let tageszeitActual = getState('javascript.0.Astro.Tageszeit.current'/*Tageszeit*/).val;
                                          var dimmer;
                                          if(tageszeitActual === "Nacht") dimmer = BRIGHTNESS[i][0];
                                          if(tageszeitActual === "Morgendämmerung") dimmer = BRIGHTNESS[i][1];
                                          if(tageszeitActual === "Sonnenaufgang") dimmer = BRIGHTNESS [i][2];
                                          if(tageszeitActual === "Morgen") dimmer = BRIGHTNESS [i][3];
                                          if(tageszeitActual === "Vormittag") dimmer = BRIGHTNESS [i][4];
                                          if(tageszeitActual === "Mittag") dimmer = BRIGHTNESS [i][5];
                                          if(tageszeitActual === "Nachmittag") dimmer = BRIGHTNESS [i][6];
                                          if(tageszeitActual === "Abend") dimmer = BRIGHTNESS [i][7];
                                          if(tageszeitActual === "Sonnenuntergang") dimmer = BRIGHTNESS [i][8];
                                          if(tageszeitActual === "Abenddämmerung") dimmer = BRIGHTNESS [i][9];
                                      }
                                      // Wir schalten, wenn Gerät/Licht derzeit aus ist und Lux passt
                                      let deviceStatus = getState(MOTIONDEV[i][8]).val;
                                      if ( (deviceStatus === false) && (LuxIsGiven === true) && (MOTIONDEV[i][10] === true) ) {
                                          setState(MOTIONDEV[i][8], true); // Licht/Gerät wird geschaltet.
                                          setState(MOTIONDEV[i][9], dimmer);
                                          if(INFO) log(MOTIONDEV[i][0] + ': Bewegungsmelder ausgelöst, daher eingeschaltet.')
                                      }
                                  }
                              } else {
                                  if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Bewegungsmelder-State geändert auf Bewegung = nein');
                                  // Ausschalten. Aber nur falls gewünscht (falls 0, dann soll nicht per diesem Script ausgeschaltet werden).
                                  if (MOTIONDEV[i][5] > 0 ) {
                                      // wenn erstmals keine Bewegung wird Timer gestartet
                                      timer = setTimeout(function() {
                                          timer = null;
                                          setState(MOTIONDEV[i][8], false); // Licht/Gerät aus nach Ablauf Timer
                                          if(INFO) log(MOTIONDEV[i][0] + ': Seit über ' + MOTIONDEV[i][5] + ' Minuten keine Bewegung mehr, daher ausgeschaltet.');
                                      }, MOTIONDEV[i][5] * 60 * 1000); // Timer setzen auf X Minuten
                                  }
                              }
                          });
                      }
                  }
                  
                  fischi87F 1 Antwort Letzte Antwort
                  0
                  • fischi87F fischi87

                    @Mic sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    @crabs sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

                    @TurBion sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    Das würde mich auch interessieren!?

                    @michihorn sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    gibt es auch eine Chance einen HM BWM einzubinden?

                    Scheint wohl ein Bedarf zu bestehen, das Script zu erweitern ☺
                    Das aktuelle Script bietet Zeitperioden (Sommerzeit etc.) nicht an.
                    HM BWM habe ich keinen, daher kann ich nicht testen und kenne die Datenpunkte auch nicht.

                    hey, wäre es möglich eine astro funktion einzubauen?

                    grüße axel

                    Hab jetzt selber mal etwas herum probiert mit diesem script und habe eine Astrofunktion hinzugefügt wenn man das so nennen darf. falls es jemand braucht oder evtl. mal testen möchte. bitte gibt mir doch ein feedback. bin totaler Anfänger was javascript angeht.

                    danke an den Entwickler des scripts, sehr gute Sache, hab ich schon länger geruht nach so einer Lösung!!!

                    grüße Axel

                    /*******************************************************************************
                     * Script: Schaltung Lichter/Geräte mittels Xiaomi-Aqara-Bewegungsmelder
                     * ----------------------------------------------------
                     * In das Script lassen sich beliebig viele Xiaomi Aqara Bewegungsmelder einbinden.
                     * Bei Bewegung wird dann ein pro Bewegungsmelder definierter Datenpunkt (Licht, 
                     * Gerät, etc.) auf "true" geschaltet.
                     * Optional wird nur geschaltet, falls Lichtstärke in Lux unter dem eingestellten
                     * Schwellwert liegt.
                     * Ebenso können 2 Zeiträume vorgegeben werden. Nur in diesen Zeiträumen wird dann
                     * geschaltet.
                     * Script wurde nicht getestet mit anderen Bewegungsmeldern!
                     * ----------------------------------------------------
                     * Autor: ioBroker-Forum-Name: Mic / Github-Name: Mic-M
                     * Source: https://github.com/Mic-M/iobroker.xiaomi-aquara-motion-control
                     * Support: https://forum.iobroker.net/topic/22034/
                     * ----------------------------------------------------
                      * Change Log:
                     *  0.2 Mic - Fix: Compare Time
                     *  0.1 Mic - Initial Release
                     ******************************************************************************/
                     
                    
                    /*******************************************************************************
                     * Konfiguration
                     ******************************************************************************/
                    
                    // Hier die einzelnen Bewegungsmelder konfigurieren und beliebig Zeilen hinzufügen.
                    // Zeiten: nur in den angegebenen Zeiten wird geschaltet. Falls immer geschaltet
                    // werden soll, dann jeweils '0:00' und '23:59' eintragen. Falls nur ein Zeitraum
                    // gewünscht ist, im Zeitraum 2 dieselben Zeiten wie in Zeitraum 1 eintragen.
                    const MOTIONDEV = [];
                    //             [0] Name              [1] Zeit 1  [2] Zeit 1 [3] Zeit 2 [4] Zeit 2  [5] Nach wie vielen Minuten ohne   [6] Ab wieviel Lux soll nicht mehr eingeschaltet  [7] Datenpunkt Bewegungsmelder Xiaomi                [8] Datenpunkt schaltendes Gerät/Licht etc.    [9] Helligkeit    [10] Astro-Funktion
                    //                 (beliebig)            von         bis        von         bis        Bewegung wieder aus? Falls 0,      werden? Falls 9999, dann wird unababhängig
                    //                                                                                     dann wird nicht ausgeschaltet.     von den gemessenen Lux immer eingeschaltet.
                    MOTIONDEV[0] = [   'Flur Mitte',           '0:00',     '23:59',    '0:00',   '23:59',               0.1,                                50,                                'mihome.0.devices.sensor_motion_aq2_158d000276d447',  'tuya.0.343176022cf4323d6f20.1'/*led switch*/, 'tuya.0.343176022cf4323d6f20.2', true];
                    //MOTIONDEV[1] = [   'Flur',              '0:00',     '23:59',    '0:00',   '23:59',               0,                                 9999,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch']; // Ausschalten: läuft über Shelly-Script nach 2 Minuten
                    //MOTIONDEV[2] = [   'Küche',             '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                    //MOTIONDEV[3] = [   'Bad',               '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                    
                    const BRIGHTNESS = [];
                    //               [0] Nacht  [1] Morgendämmerung [2] Sonnenaufgang  [3] Morgen   [4] Vormittag  [5] Mittag [6] Nachmittag [7] Abend  [8] Sonnenuntergang [9] Abenddämmerung
                    //
                    BRIGHTNESS[0] = [   10,            80,                  120,               160,         210,         255,           255,        160,        120,                    80];
                    //
                    // Logeinträge: Infos zeigen (wenn eingeschaltet oder ausgeschaltet wurde)
                    const INFO = false;
                    
                    // Logeinträge: Zusätzliche Einträge anzeigen zur Fehlerbehebung. Auf "false" setzen, wenn alles funktioniert.
                    const DEBUG = false;
                    
                    
                    /*******************************************************************************
                     * Ab hier nichts mehr ändern / Stop editing here!
                     ******************************************************************************/
                    
                    main();
                    function main() {
                        for (let i = 0; i < MOTIONDEV.length; i++) {
                            let timer = null;
                            on({id: MOTIONDEV[i][7] + '.state'/*Is motion*/, change: 'any'}, function(obj) {
                                // Falls Timer läuft: auf null setzen.
                                if (timer) {
                                    clearTimeout(timer);
                                    timer = null;
                                }
                                if(obj.state.val) {
                                    if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Bewegungsmelder-State geändert auf Bewegung = ja');
                                    // Es gab Bewegung, also prüfen, ob Licht eingeschaltet werden soll...
                                    // Prüfung 1: Aber zu den definierten Zeiten
                                    if(compareTime(MOTIONDEV[i][1], MOTIONDEV[i][2], 'between') || compareTime(MOTIONDEV[i][3], MOTIONDEV[i][4], 'between') ) {
                                        if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': compareTime() ist true.')
                                        // Prüfung 2: Soll auch Lichtstärke geprüft werden
                                        let LuxIsGiven = true; // Default auf true, wird false gesetzt, falls nicht gegeben.
                                        if(MOTIONDEV[i][6] < 9999 ) {
                                            if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Prüfung auf Lux ist aktiviert.')
                                            // Prüfung 3: gemessene Lux kleiner Schwellwert, bis zu dem geschalten werden soll?
                                            let luxActual = getState(MOTIONDEV[i][7] + '.lux').val;
                                            if (luxActual >= MOTIONDEV[i][6]) {
                                                if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Gemessene Lux = ' + luxActual + ', >= Schwelle von ' + MOTIONDEV[i][6] + ', daher wird nicht geschaltet.')
                                                LuxIsGiven = false;
                                            } else {
                                                if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Gemessene Lux = ' + luxActual + ', < Schwelle von ' + MOTIONDEV[i][6] + ', daher eingeschaltet.')
                                            }
                                        }
                                        if(MOTIONDEV[i][10], true) {
                                            let tageszeitActual = getState('javascript.0.Astro.Tageszeit.current'/*Tageszeit*/).val;
                                            var dimmer;
                                            if(tageszeitActual === "Nacht") dimmer = BRIGHTNESS[i][0];
                                            if(tageszeitActual === "Morgendämmerung") dimmer = BRIGHTNESS[i][1];
                                            if(tageszeitActual === "Sonnenaufgang") dimmer = BRIGHTNESS [i][2];
                                            if(tageszeitActual === "Morgen") dimmer = BRIGHTNESS [i][3];
                                            if(tageszeitActual === "Vormittag") dimmer = BRIGHTNESS [i][4];
                                            if(tageszeitActual === "Mittag") dimmer = BRIGHTNESS [i][5];
                                            if(tageszeitActual === "Nachmittag") dimmer = BRIGHTNESS [i][6];
                                            if(tageszeitActual === "Abend") dimmer = BRIGHTNESS [i][7];
                                            if(tageszeitActual === "Sonnenuntergang") dimmer = BRIGHTNESS [i][8];
                                            if(tageszeitActual === "Abenddämmerung") dimmer = BRIGHTNESS [i][9];
                                        }
                                        // Wir schalten, wenn Gerät/Licht derzeit aus ist und Lux passt
                                        let deviceStatus = getState(MOTIONDEV[i][8]).val;
                                        if ( (deviceStatus === false) && (LuxIsGiven === true) && (MOTIONDEV[i][10] === true) ) {
                                            setState(MOTIONDEV[i][8], true); // Licht/Gerät wird geschaltet.
                                            setState(MOTIONDEV[i][9], dimmer);
                                            if(INFO) log(MOTIONDEV[i][0] + ': Bewegungsmelder ausgelöst, daher eingeschaltet.')
                                        }
                                    }
                                } else {
                                    if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Bewegungsmelder-State geändert auf Bewegung = nein');
                                    // Ausschalten. Aber nur falls gewünscht (falls 0, dann soll nicht per diesem Script ausgeschaltet werden).
                                    if (MOTIONDEV[i][5] > 0 ) {
                                        // wenn erstmals keine Bewegung wird Timer gestartet
                                        timer = setTimeout(function() {
                                            timer = null;
                                            setState(MOTIONDEV[i][8], false); // Licht/Gerät aus nach Ablauf Timer
                                            if(INFO) log(MOTIONDEV[i][0] + ': Seit über ' + MOTIONDEV[i][5] + ' Minuten keine Bewegung mehr, daher ausgeschaltet.');
                                        }, MOTIONDEV[i][5] * 60 * 1000); // Timer setzen auf X Minuten
                                    }
                                }
                            });
                        }
                    }
                    
                    fischi87F Offline
                    fischi87F Offline
                    fischi87
                    schrieb am zuletzt editiert von
                    #9

                    @fischi87 sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    @Mic sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    @crabs sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    Kann man wegen den Uhrzeiten auch irgendwie die Sommer und Winterzeit wählen, ohne bestimmte Zeitintervalle festzulegen?

                    @TurBion sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    Das würde mich auch interessieren!?

                    @michihorn sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                    gibt es auch eine Chance einen HM BWM einzubinden?

                    Scheint wohl ein Bedarf zu bestehen, das Script zu erweitern ☺
                    Das aktuelle Script bietet Zeitperioden (Sommerzeit etc.) nicht an.
                    HM BWM habe ich keinen, daher kann ich nicht testen und kenne die Datenpunkte auch nicht.

                    hey, wäre es möglich eine astro funktion einzubauen?

                    grüße axel

                    Hab jetzt selber mal etwas herum probiert mit diesem script und habe eine Astrofunktion hinzugefügt wenn man das so nennen darf. falls es jemand braucht oder evtl. mal testen möchte. bitte gibt mir doch ein feedback. bin totaler Anfänger was javascript angeht.

                    danke an den Entwickler des scripts, sehr gute Sache, hab ich schon länger gesucht nach so einer Lösung!!!

                    grüße Axel

                    /*******************************************************************************
                     * Script: Schaltung Lichter/Geräte mittels Xiaomi-Aqara-Bewegungsmelder
                     * ----------------------------------------------------
                     * In das Script lassen sich beliebig viele Xiaomi Aqara Bewegungsmelder einbinden.
                     * Bei Bewegung wird dann ein pro Bewegungsmelder definierter Datenpunkt (Licht, 
                     * Gerät, etc.) auf "true" geschaltet.
                     * Optional wird nur geschaltet, falls Lichtstärke in Lux unter dem eingestellten
                     * Schwellwert liegt.
                     * Ebenso können 2 Zeiträume vorgegeben werden. Nur in diesen Zeiträumen wird dann
                     * geschaltet.
                     * Script wurde nicht getestet mit anderen Bewegungsmeldern!
                     * ----------------------------------------------------
                     * Autor: ioBroker-Forum-Name: Mic / Github-Name: Mic-M
                     * Source: https://github.com/Mic-M/iobroker.xiaomi-aquara-motion-control
                     * Support: https://forum.iobroker.net/topic/22034/
                     * ----------------------------------------------------
                      * Change Log:
                     *  0.2 Mic - Fix: Compare Time
                     *  0.1 Mic - Initial Release
                     ******************************************************************************/
                     
                    
                    /*******************************************************************************
                     * Konfiguration
                     ******************************************************************************/
                    
                    // Hier die einzelnen Bewegungsmelder konfigurieren und beliebig Zeilen hinzufügen.
                    // Zeiten: nur in den angegebenen Zeiten wird geschaltet. Falls immer geschaltet
                    // werden soll, dann jeweils '0:00' und '23:59' eintragen. Falls nur ein Zeitraum
                    // gewünscht ist, im Zeitraum 2 dieselben Zeiten wie in Zeitraum 1 eintragen.
                    const MOTIONDEV = [];
                    //             [0] Name              [1] Zeit 1  [2] Zeit 1 [3] Zeit 2 [4] Zeit 2  [5] Nach wie vielen Minuten ohne   [6] Ab wieviel Lux soll nicht mehr eingeschaltet  [7] Datenpunkt Bewegungsmelder Xiaomi                [8] Datenpunkt schaltendes Gerät/Licht etc.    [9] Helligkeit    [10] Astro-Funktion
                    //                 (beliebig)            von         bis        von         bis        Bewegung wieder aus? Falls 0,      werden? Falls 9999, dann wird unababhängig
                    //                                                                                     dann wird nicht ausgeschaltet.     von den gemessenen Lux immer eingeschaltet.
                    MOTIONDEV[0] = [   'Flur Mitte',           '0:00',     '23:59',    '0:00',   '23:59',               0.1,                                50,                                'mihome.0.devices.sensor_motion_aq2_158d000276d447',  'tuya.0.343176022cf4323d6f20.1'/*led switch*/, 'tuya.0.343176022cf4323d6f20.2', true];
                    //MOTIONDEV[1] = [   'Flur',              '0:00',     '23:59',    '0:00',   '23:59',               0,                                 9999,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch']; // Ausschalten: läuft über Shelly-Script nach 2 Minuten
                    //MOTIONDEV[2] = [   'Küche',             '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                    //MOTIONDEV[3] = [   'Bad',               '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                    
                    const BRIGHTNESS = [];
                    //               [0] Nacht  [1] Morgendämmerung [2] Sonnenaufgang  [3] Morgen   [4] Vormittag  [5] Mittag [6] Nachmittag [7] Abend  [8] Sonnenuntergang [9] Abenddämmerung
                    //
                    BRIGHTNESS[0] = [   10,            80,                  120,               160,         210,         255,           255,        160,        120,                    80];
                    //
                    // Logeinträge: Infos zeigen (wenn eingeschaltet oder ausgeschaltet wurde)
                    const INFO = false;
                    
                    // Logeinträge: Zusätzliche Einträge anzeigen zur Fehlerbehebung. Auf "false" setzen, wenn alles funktioniert.
                    const DEBUG = false;
                    
                    
                    /*******************************************************************************
                     * Ab hier nichts mehr ändern / Stop editing here!
                     ******************************************************************************/
                    
                    main();
                    function main() {
                        for (let i = 0; i < MOTIONDEV.length; i++) {
                            let timer = null;
                            on({id: MOTIONDEV[i][7] + '.state'/*Is motion*/, change: 'any'}, function(obj) {
                                // Falls Timer läuft: auf null setzen.
                                if (timer) {
                                    clearTimeout(timer);
                                    timer = null;
                                }
                                if(obj.state.val) {
                                    if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Bewegungsmelder-State geändert auf Bewegung = ja');
                                    // Es gab Bewegung, also prüfen, ob Licht eingeschaltet werden soll...
                                    // Prüfung 1: Aber zu den definierten Zeiten
                                    if(compareTime(MOTIONDEV[i][1], MOTIONDEV[i][2], 'between') || compareTime(MOTIONDEV[i][3], MOTIONDEV[i][4], 'between') ) {
                                        if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': compareTime() ist true.')
                                        // Prüfung 2: Soll auch Lichtstärke geprüft werden
                                        let LuxIsGiven = true; // Default auf true, wird false gesetzt, falls nicht gegeben.
                                        if(MOTIONDEV[i][6] < 9999 ) {
                                            if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Prüfung auf Lux ist aktiviert.')
                                            // Prüfung 3: gemessene Lux kleiner Schwellwert, bis zu dem geschalten werden soll?
                                            let luxActual = getState(MOTIONDEV[i][7] + '.lux').val;
                                            if (luxActual >= MOTIONDEV[i][6]) {
                                                if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Gemessene Lux = ' + luxActual + ', >= Schwelle von ' + MOTIONDEV[i][6] + ', daher wird nicht geschaltet.')
                                                LuxIsGiven = false;
                                            } else {
                                                if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Gemessene Lux = ' + luxActual + ', < Schwelle von ' + MOTIONDEV[i][6] + ', daher eingeschaltet.')
                                            }
                                        }
                                        if(MOTIONDEV[i][10], true) {
                                            let tageszeitActual = getState('javascript.0.Astro.Tageszeit.current'/*Tageszeit*/).val;
                                            var dimmer;
                                            if(tageszeitActual === "Nacht") dimmer = BRIGHTNESS[i][0];
                                            if(tageszeitActual === "Morgendämmerung") dimmer = BRIGHTNESS[i][1];
                                            if(tageszeitActual === "Sonnenaufgang") dimmer = BRIGHTNESS [i][2];
                                            if(tageszeitActual === "Morgen") dimmer = BRIGHTNESS [i][3];
                                            if(tageszeitActual === "Vormittag") dimmer = BRIGHTNESS [i][4];
                                            if(tageszeitActual === "Mittag") dimmer = BRIGHTNESS [i][5];
                                            if(tageszeitActual === "Nachmittag") dimmer = BRIGHTNESS [i][6];
                                            if(tageszeitActual === "Abend") dimmer = BRIGHTNESS [i][7];
                                            if(tageszeitActual === "Sonnenuntergang") dimmer = BRIGHTNESS [i][8];
                                            if(tageszeitActual === "Abenddämmerung") dimmer = BRIGHTNESS [i][9];
                                        }
                                        // Wir schalten, wenn Gerät/Licht derzeit aus ist und Lux passt
                                        let deviceStatus = getState(MOTIONDEV[i][8]).val;
                                        if ( (deviceStatus === false) && (LuxIsGiven === true) && (MOTIONDEV[i][10] === true) ) {
                                            setState(MOTIONDEV[i][8], true); // Licht/Gerät wird geschaltet.
                                            setState(MOTIONDEV[i][9], dimmer);
                                            if(INFO) log(MOTIONDEV[i][0] + ': Bewegungsmelder ausgelöst, daher eingeschaltet.')
                                        }
                                    }
                                } else {
                                    if (DEBUG) log('[DEBUG] ' + MOTIONDEV[i][0] + ': Bewegungsmelder-State geändert auf Bewegung = nein');
                                    // Ausschalten. Aber nur falls gewünscht (falls 0, dann soll nicht per diesem Script ausgeschaltet werden).
                                    if (MOTIONDEV[i][5] > 0 ) {
                                        // wenn erstmals keine Bewegung wird Timer gestartet
                                        timer = setTimeout(function() {
                                            timer = null;
                                            setState(MOTIONDEV[i][8], false); // Licht/Gerät aus nach Ablauf Timer
                                            if(INFO) log(MOTIONDEV[i][0] + ': Seit über ' + MOTIONDEV[i][5] + ' Minuten keine Bewegung mehr, daher ausgeschaltet.');
                                        }, MOTIONDEV[i][5] * 60 * 1000); // Timer setzen auf X Minuten
                                    }
                                }
                            });
                        }
                    }
                    
                    1 Antwort Letzte Antwort
                    0
                    • D Offline
                      D Offline
                      deta
                      Most Active
                      schrieb am zuletzt editiert von
                      #10

                      Hallo,
                      ich habe mal versucht das Skript umzusetzen.
                      Verstehe das mit den Datenpunten nicht.

                      Bei mir sieht das so aus
                      d3ebb0bc-7c4a-4a8f-9e3f-f8e71bb1aba9-grafik.png

                      In der Tabelle vom skript hab ich das eingetragen.

                      //             [0] Name              [1] Zeit 1  [2] Zeit 1 [3] Zeit 2 [4] Zeit 2  [5] Nach wie vielen Minuten ohne   [6] Ab wieviel Lux soll nicht mehr eingeschaltet  [7] Datenpunkt Bewegungsmelder Xiaomi                [8] Datenpunkt schaltendes Gerät/Licht etc.
                      //                 (beliebig)            von         bis        von         bis        Bewegung wieder aus? Falls 0,      werden? Falls 9999, dann wird unababhängig
                      //                                                                                     dann wird nicht ausgeschaltet.     von den gemessenen Lux immer eingeschaltet.
                      MOTIONDEV[0] = [   'Schlafzimmer',      '7:30',     '9:00',    '14:00',   '23:30',               2,                                 9999,                                   'zigbee.0.00158d000451c23d.occupancy', 'sonoff.0.Wandlampe.POWER'];
                      // MOTIONDEV[1] = [   'Flur',              '0:00',     '23:59',    '0:00',   '23:59',               0,                                 9999,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch']; // Ausschalten: läuft über Shelly-Script nach 2 Minuten
                      // MOTIONDEV[2] = [   'Küche',             '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                      // MOTIONDEV[3] = [   'Bad',               '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                      
                      

                      Passiert aber nix.. Wo liegt der Fehler?

                      crunchipC 1 Antwort Letzte Antwort
                      0
                      • D deta

                        Hallo,
                        ich habe mal versucht das Skript umzusetzen.
                        Verstehe das mit den Datenpunten nicht.

                        Bei mir sieht das so aus
                        d3ebb0bc-7c4a-4a8f-9e3f-f8e71bb1aba9-grafik.png

                        In der Tabelle vom skript hab ich das eingetragen.

                        //             [0] Name              [1] Zeit 1  [2] Zeit 1 [3] Zeit 2 [4] Zeit 2  [5] Nach wie vielen Minuten ohne   [6] Ab wieviel Lux soll nicht mehr eingeschaltet  [7] Datenpunkt Bewegungsmelder Xiaomi                [8] Datenpunkt schaltendes Gerät/Licht etc.
                        //                 (beliebig)            von         bis        von         bis        Bewegung wieder aus? Falls 0,      werden? Falls 9999, dann wird unababhängig
                        //                                                                                     dann wird nicht ausgeschaltet.     von den gemessenen Lux immer eingeschaltet.
                        MOTIONDEV[0] = [   'Schlafzimmer',      '7:30',     '9:00',    '14:00',   '23:30',               2,                                 9999,                                   'zigbee.0.00158d000451c23d.occupancy', 'sonoff.0.Wandlampe.POWER'];
                        // MOTIONDEV[1] = [   'Flur',              '0:00',     '23:59',    '0:00',   '23:59',               0,                                 9999,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch']; // Ausschalten: läuft über Shelly-Script nach 2 Minuten
                        // MOTIONDEV[2] = [   'Küche',             '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                        // MOTIONDEV[3] = [   'Bad',               '7:30',     '9:00',    '16:00',   '23:30',               2,                                 100,                                 'mihome.0.devices.sensor_motion_aq2_xxxxxxxxxxxxxx', 'shelly.0.SHSW-1#xxxxxx#1.Relay0.Switch'];
                        
                        

                        Passiert aber nix.. Wo liegt der Fehler?

                        crunchipC Abwesend
                        crunchipC Abwesend
                        crunchip
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von crunchip
                        #11

                        @deta du musst als Datenpunkt für den Bewegungsmelder , Gelb Markiert eintragen, in deinem Fall wäre das zigbee.0.00158d000451c23d ,allerdings verwendest du Zigbee und nicht das original Gateway,
                        von daher
                        fehlen/anders benannt, die rot Markierten
                        950d529c-b406-4d2f-9b19-f3d3c5f89e4c-image.png

                        umgestiegen von Proxmox auf Unraid

                        1 Antwort Letzte Antwort
                        1
                        • MicM Offline
                          MicM Offline
                          Mic
                          Developer
                          schrieb am zuletzt editiert von
                          #12

                          @crunchip
                          @deta

                          Ich habe auch einen von mehreren Xiaomi-Bewegungsmeldern im zigbee-Adapter, der Datenpunkt zigbee.0.XXXX.occupancy ist dafür auch der richtige (also statt mihome.0.devices.XXXXXXXXXXX.state) im Xiaomi mihome-Adapter.

                          Aber es scheint, ich hatte das Script angepasst, ohne es zu veröffentlichen. Update folgt bald.

                          1 Antwort Letzte Antwort
                          1
                          • MicM Offline
                            MicM Offline
                            Mic
                            Developer
                            schrieb am zuletzt editiert von
                            #13

                            Hier nun das Update auf Version 0.4, Änderungen waren schon länger her, aber sollte so funktieren.

                            Es gehen übrigens auch Astro-Zeiten, sieht man im Script als Beispiel.
                            https://github.com/Mic-M/iobroker.xiaomi-aquara-motion-control/blob/master/script_xiaomi.js

                            crunchipC 1 Antwort Letzte Antwort
                            1
                            • MicM Mic

                              Hier nun das Update auf Version 0.4, Änderungen waren schon länger her, aber sollte so funktieren.

                              Es gehen übrigens auch Astro-Zeiten, sieht man im Script als Beispiel.
                              https://github.com/Mic-M/iobroker.xiaomi-aquara-motion-control/blob/master/script_xiaomi.js

                              crunchipC Abwesend
                              crunchipC Abwesend
                              crunchip
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von crunchip
                              #14

                              @Mic
                              Hatte V 0.2 bis jetzt laufen, nun wollt ich mal umstellen audf die neue Version, da ich zum einen festgestellt habe, das Lichter zwar geschaltet werden, aber der state der Lampe sich nicht ändert oder nur verzögert.

                              jedenfalls bekomme ich die aktuelle nicht zum laufen,
                              folgender Fehler zeigt es mir im script

                              10:09:09.186	error	javascript.0 (32472) script.js.common.BWM-Lichtsteuerung: script.js.common.BWM-Lichtsteuerung:58
                              10:09:09.187	error	javascript.0 (32472) at main (script.js.common.BWM-Lichtsteuerung:58:29)
                              10:09:09.187	error	javascript.0 (32472) at script.js.common.BWM-Lichtsteuerung:54:1
                              10:10:46.309	error	javascript.0 (32472) script.js.common.BWM-Lichtsteuerung: script.js.common.BWM-Lichtsteuerung:58
                              10:10:46.311	error	javascript.0 (32472) at main (script.js.common.BWM-Lichtsteuerung:58:29)
                              10:10:46.311	error	javascript.0 (32472) at script.js.common.BWM-Lichtsteuerung:54:1
                              

                              Logausgabe

                              javascript.0	2020-03-05 10:10:46.311	error	(32472) at Script.runInContext (vm.js:133:20)
                              javascript.0	2020-03-05 10:10:46.311	error	(32472) at script.js.common.BWM-Lichtsteuerung:54:1
                              javascript.0	2020-03-05 10:10:46.311	error	(32472) at main (script.js.common.BWM-Lichtsteuerung:58:29)
                              javascript.0	2020-03-05 10:10:46.311	error	(32472) TypeError: Cannot read property '9' of undefined
                              javascript.0	2020-03-05 10:10:46.310	error	(32472) ^
                              javascript.0	2020-03-05 10:10:46.310	error	(32472) on({id: MOTIONDEV[i][9], change: 'ne'}, function(obj) {
                              javascript.0	2020-03-05 10:10:46.309	error	(32472) script.js.common.BWM-Lichtsteuerung: script.js.common.BWM-Lichtsteuerung:58
                              

                              Edit: Fehler gefunden...MotionDEV hatte die Nummerierung nicht gestimmt...und nicht darauf geachtet, da in deinem script die Reihenfolge
                              [0]
                              [2]
                              [3].....eingetragen ist

                              was aber auffällt, das die Log-Ausgabe...const INFO = true nicht funktioniert

                              umgestiegen von Proxmox auf Unraid

                              MicM 1 Antwort Letzte Antwort
                              0
                              • crunchipC crunchip

                                @Mic
                                Hatte V 0.2 bis jetzt laufen, nun wollt ich mal umstellen audf die neue Version, da ich zum einen festgestellt habe, das Lichter zwar geschaltet werden, aber der state der Lampe sich nicht ändert oder nur verzögert.

                                jedenfalls bekomme ich die aktuelle nicht zum laufen,
                                folgender Fehler zeigt es mir im script

                                10:09:09.186	error	javascript.0 (32472) script.js.common.BWM-Lichtsteuerung: script.js.common.BWM-Lichtsteuerung:58
                                10:09:09.187	error	javascript.0 (32472) at main (script.js.common.BWM-Lichtsteuerung:58:29)
                                10:09:09.187	error	javascript.0 (32472) at script.js.common.BWM-Lichtsteuerung:54:1
                                10:10:46.309	error	javascript.0 (32472) script.js.common.BWM-Lichtsteuerung: script.js.common.BWM-Lichtsteuerung:58
                                10:10:46.311	error	javascript.0 (32472) at main (script.js.common.BWM-Lichtsteuerung:58:29)
                                10:10:46.311	error	javascript.0 (32472) at script.js.common.BWM-Lichtsteuerung:54:1
                                

                                Logausgabe

                                javascript.0	2020-03-05 10:10:46.311	error	(32472) at Script.runInContext (vm.js:133:20)
                                javascript.0	2020-03-05 10:10:46.311	error	(32472) at script.js.common.BWM-Lichtsteuerung:54:1
                                javascript.0	2020-03-05 10:10:46.311	error	(32472) at main (script.js.common.BWM-Lichtsteuerung:58:29)
                                javascript.0	2020-03-05 10:10:46.311	error	(32472) TypeError: Cannot read property '9' of undefined
                                javascript.0	2020-03-05 10:10:46.310	error	(32472) ^
                                javascript.0	2020-03-05 10:10:46.310	error	(32472) on({id: MOTIONDEV[i][9], change: 'ne'}, function(obj) {
                                javascript.0	2020-03-05 10:10:46.309	error	(32472) script.js.common.BWM-Lichtsteuerung: script.js.common.BWM-Lichtsteuerung:58
                                

                                Edit: Fehler gefunden...MotionDEV hatte die Nummerierung nicht gestimmt...und nicht darauf geachtet, da in deinem script die Reihenfolge
                                [0]
                                [2]
                                [3].....eingetragen ist

                                was aber auffällt, das die Log-Ausgabe...const INFO = true nicht funktioniert

                                MicM Offline
                                MicM Offline
                                Mic
                                Developer
                                schrieb am zuletzt editiert von
                                #15

                                @crunchip sagte in [Vorlage] Bewegungsmelder Xiaomi Aqara: Geräte/Lichter steuern:

                                Edit: Fehler gefunden...MotionDEV hatte die Nummerierung nicht gestimmt...und nicht darauf geachtet, da in deinem script die Reihenfolge
                                [0]
                                [2]
                                [3].....eingetragen ist

                                Danke für dein Feedback.
                                Die Einstellungen sind auch "suboptimal" gelöst, ich werde das wohl bald verbessern. Auch: beliebig viele Zeiten setzbar, etc.

                                was aber auffällt, das die Log-Ausgabe...const INFO = true nicht funktioniert

                                Schaue ich mir ebenso an.

                                1 Antwort Letzte Antwort
                                1
                                • MicM Offline
                                  MicM Offline
                                  Mic
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #16

                                  Neue Script-Version 2.0

                                  Ich habe das Script im Grunde fast neu geschrieben und einige neue Features / Einstellungen hinzugefügt.
                                  Aus der Doku:

                                  Auszug aus den Features:

                                  1. Beliebig viele Bewegungsmelder einbinden. Pro Bewegungsmelder/Bereich können Geräte/Lichter bei Bewegung eingeschaltet und wieder ausgeschaltet werden, sobald x Sekunden keine Bewegung mehr.
                                  2. Mehrere Bewegungsmelder pro Raum/Bereich (z.B. Flur) möglich.
                                  3. Beliebig viele Zeiträume zum Schalten einstellbar (z.B. nur bestimmte Wochentage, Uhrzeiten, Astro, etc.).
                                  4. Helligkeit (Lux) als Trigger - es wird optional nur eingeschaltet, wenn Helligkeit unter einem vorgegeben Wert ist, damit z.B. bei genügend Helligkeit nicht eingeschaltet wird.
                                  5. Optionale Verzögerung zum wieder einschalten: In manchen Fällen will man ggf. mit dem Bewegungsmelder nur einmalig einschalten. Da kann man für bestimmte Bewegungsmelder einstellen, dass x Sekunden (z.B. 10 Minuten = 600s) nicht mehr neu ausgelöst wird.
                                  6. Prüfung auf Anwesenheit (oder andere Datenpunkte): Wenn im Script konfigurierte Datenpunkte mit einem bestimmten Wert übereinstimmen, wird nicht geschaltet. Hilfreich, um z.B. nicht zu schalten, wenn keiner anwesend ist, oder etwa ein Fenster offen ist, etc.

                                  Ein paar Hinweise:

                                  • Zum Umstieg von Vorversionen des Scripts bitte die Script-Konfiguration komplett neu einstellen. Diese 10 Minuten sind es wert ☺
                                  • Es können auch Bewegungsmelder anderer Hersteller hinzugefügt werden, ich konnte das aber mangels Hardware nicht testen. Siehe im Script in den Einstellungen unter ADAPTER_STATES
                                  • Pro Bereich (z.B. "Flur") können auch mehrere Bewegungsmelder eingebunden werden. Bitte testet das aber noch, ob es gut funktioniert.
                                  • Die optionale Überwachung der Anwesenheit (also optional nur bei Anwesenheit schalten) ist jetzt unter "neverState_x" einstellbar, z.B. {state:'0_userdata.0.Anwesenheit.Status.anyonePresent', val:false}. Siehe im Script für Erklärung und Beispiele.

                                  Installation und Einrichtung:

                                  Link: Github: Bewegungsmelder-Script (für Xiaomi und andere)

                                  crunchipC sigi234S 2 Antworten Letzte Antwort
                                  2
                                  • MicM Mic

                                    Neue Script-Version 2.0

                                    Ich habe das Script im Grunde fast neu geschrieben und einige neue Features / Einstellungen hinzugefügt.
                                    Aus der Doku:

                                    Auszug aus den Features:

                                    1. Beliebig viele Bewegungsmelder einbinden. Pro Bewegungsmelder/Bereich können Geräte/Lichter bei Bewegung eingeschaltet und wieder ausgeschaltet werden, sobald x Sekunden keine Bewegung mehr.
                                    2. Mehrere Bewegungsmelder pro Raum/Bereich (z.B. Flur) möglich.
                                    3. Beliebig viele Zeiträume zum Schalten einstellbar (z.B. nur bestimmte Wochentage, Uhrzeiten, Astro, etc.).
                                    4. Helligkeit (Lux) als Trigger - es wird optional nur eingeschaltet, wenn Helligkeit unter einem vorgegeben Wert ist, damit z.B. bei genügend Helligkeit nicht eingeschaltet wird.
                                    5. Optionale Verzögerung zum wieder einschalten: In manchen Fällen will man ggf. mit dem Bewegungsmelder nur einmalig einschalten. Da kann man für bestimmte Bewegungsmelder einstellen, dass x Sekunden (z.B. 10 Minuten = 600s) nicht mehr neu ausgelöst wird.
                                    6. Prüfung auf Anwesenheit (oder andere Datenpunkte): Wenn im Script konfigurierte Datenpunkte mit einem bestimmten Wert übereinstimmen, wird nicht geschaltet. Hilfreich, um z.B. nicht zu schalten, wenn keiner anwesend ist, oder etwa ein Fenster offen ist, etc.

                                    Ein paar Hinweise:

                                    • Zum Umstieg von Vorversionen des Scripts bitte die Script-Konfiguration komplett neu einstellen. Diese 10 Minuten sind es wert ☺
                                    • Es können auch Bewegungsmelder anderer Hersteller hinzugefügt werden, ich konnte das aber mangels Hardware nicht testen. Siehe im Script in den Einstellungen unter ADAPTER_STATES
                                    • Pro Bereich (z.B. "Flur") können auch mehrere Bewegungsmelder eingebunden werden. Bitte testet das aber noch, ob es gut funktioniert.
                                    • Die optionale Überwachung der Anwesenheit (also optional nur bei Anwesenheit schalten) ist jetzt unter "neverState_x" einstellbar, z.B. {state:'0_userdata.0.Anwesenheit.Status.anyonePresent', val:false}. Siehe im Script für Erklärung und Beispiele.

                                    Installation und Einrichtung:

                                    Link: Github: Bewegungsmelder-Script (für Xiaomi und andere)

                                    crunchipC Abwesend
                                    crunchipC Abwesend
                                    crunchip
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Mic das klingt sehr vielversprechend👍
                                    die 10 min nehm ich doch gerne in Kauf, allerdings kann ich nicht alle neuen Funktionen testen.

                                    umgestiegen von Proxmox auf Unraid

                                    1 Antwort Letzte Antwort
                                    0
                                    • MicM Mic

                                      Neue Script-Version 2.0

                                      Ich habe das Script im Grunde fast neu geschrieben und einige neue Features / Einstellungen hinzugefügt.
                                      Aus der Doku:

                                      Auszug aus den Features:

                                      1. Beliebig viele Bewegungsmelder einbinden. Pro Bewegungsmelder/Bereich können Geräte/Lichter bei Bewegung eingeschaltet und wieder ausgeschaltet werden, sobald x Sekunden keine Bewegung mehr.
                                      2. Mehrere Bewegungsmelder pro Raum/Bereich (z.B. Flur) möglich.
                                      3. Beliebig viele Zeiträume zum Schalten einstellbar (z.B. nur bestimmte Wochentage, Uhrzeiten, Astro, etc.).
                                      4. Helligkeit (Lux) als Trigger - es wird optional nur eingeschaltet, wenn Helligkeit unter einem vorgegeben Wert ist, damit z.B. bei genügend Helligkeit nicht eingeschaltet wird.
                                      5. Optionale Verzögerung zum wieder einschalten: In manchen Fällen will man ggf. mit dem Bewegungsmelder nur einmalig einschalten. Da kann man für bestimmte Bewegungsmelder einstellen, dass x Sekunden (z.B. 10 Minuten = 600s) nicht mehr neu ausgelöst wird.
                                      6. Prüfung auf Anwesenheit (oder andere Datenpunkte): Wenn im Script konfigurierte Datenpunkte mit einem bestimmten Wert übereinstimmen, wird nicht geschaltet. Hilfreich, um z.B. nicht zu schalten, wenn keiner anwesend ist, oder etwa ein Fenster offen ist, etc.

                                      Ein paar Hinweise:

                                      • Zum Umstieg von Vorversionen des Scripts bitte die Script-Konfiguration komplett neu einstellen. Diese 10 Minuten sind es wert ☺
                                      • Es können auch Bewegungsmelder anderer Hersteller hinzugefügt werden, ich konnte das aber mangels Hardware nicht testen. Siehe im Script in den Einstellungen unter ADAPTER_STATES
                                      • Pro Bereich (z.B. "Flur") können auch mehrere Bewegungsmelder eingebunden werden. Bitte testet das aber noch, ob es gut funktioniert.
                                      • Die optionale Überwachung der Anwesenheit (also optional nur bei Anwesenheit schalten) ist jetzt unter "neverState_x" einstellbar, z.B. {state:'0_userdata.0.Anwesenheit.Status.anyonePresent', val:false}. Siehe im Script für Erklärung und Beispiele.

                                      Installation und Einrichtung:

                                      Link: Github: Bewegungsmelder-Script (für Xiaomi und andere)

                                      sigi234S Online
                                      sigi234S Online
                                      sigi234
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von sigi234
                                      #18

                                      @Mic

                                      Irgendwo habe ich einen Fehler?

                                      /////////////////////
                                      const MOTION_SENSORS = [
                                        {
                                          // Beliebiger Name (für Log-Ausgabe). Bitte individuell vergeben.
                                          name:                   'Vorraum',
                                      
                                          // Haupt-Datenpunkt des Bewegungsmelders, z.B. "mihome.0.devices.sensor_motion_aq2_1234567abcde" oder "zigbee.0.00123456789415"
                                          // Es werden auch mehrere Sensoren unterstützt, d.h. etwa 3 Bewegungsmelder im Flur.
                                          sensorState:            'hm-rpc.1.00091A49A082FC.1.MOTION',
                                      //    sensorState:            ['mihome.0.devices.sensor_motion_aq2_XXXXXXXXXXX', 'zigbee.0.XXXXXXXXXXXXX', 'zigbee.0.YYYYYYYYYYYYYYYYYYYYY'],
                                      
                                          // Hier beliebig viele Schaltzeitpunkte hinzufügen (period_1, period_2, period_3, usw.)
                                          //  - "start" und "end": Erforderlich. Es wird geprüft, ob start/end innerhalb aktueller Uhrzeit ist, wenn Bewegungsmelder auslöst.
                                          //                       Astro-Zeitangaben sind erlaubt, also etwa 'sunrise' oder mit einem Offset wie {astro: 'sunrise', offset: -30}
                                          //                       Details zu start/end und Astro-Zeitangaben: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#comparetime
                                          // - "days":             OPTIONAL: Wenn weggelassen, wird jeden Tag geschaltet (Montag-Sonntag). 
                                          //                       Montag = 1, Dienstag = 2, ... Sonntag = 7. 
                                          //                       Mehrere Tage mit Komma trennen, z.B. '1, 3, 5' für Montag/Mittwoch/Freitag.
                                          //                       Periodische Angaben wie '2-4' für Dienstag/Mittwoch/Donnerstag sind auch möglich.
                                          //                       Ebenso Kombination einzelner Tage und Periode möglich, z.B. '2-4, 7' für Dienstag/Mittwoch/Donnerstag und Sonntag.
                                          // - "sec":              OPTIONAL: Nach wie vielen Sekunden soll wieder ausgeschalten werden? Falls weggelassen oder 0, dann wird nicht ausgeschaltet.
                                          // - "lux"               OPTIONAL: Ab wieviel Lux soll NICHT eingeschaltet werden? Falls weggelassen oder größer 9999, dann wird unababhängig von den gemessenen Lux immer eingeschaltet.
                                          // - "luxAlways"         OPTIONAL: Wir gehen davon aus, dass Lampen geschaltet werden. Ist eine Lampe an, wird ein größerer Lux-Wert vom Sensor gemessen, daher macht die Prüfung auf Lux bei  
                                          //                                 bereits eingeschalteter Lampe auf erneute Bewegung und Lux-Abfrage keinen Sinn mehr. Daher wird durch dieses Script bei Bewegung
                                          //                                 -- während das Gerät (die Lampe) an ist -- die Lux-Erkennung hier deaktiviert. Zum dauerhaften aktivieren auf "true" setzen, damit wird immer auf Lux geprüft, 
                                          //                                 auch wenn das Gerät an ist.
                                          period_1:               {start:'00:10', end:'23:59',    sec:60,   luxAlways:false},
                                      
                                          // Hier den Datenpunkt des Gerätes angeben, das geschaltet werden soll bei Bewegung an und wieder aus.
                                          // Falls als String gesetzt, z.B. 'javascript.0.Licht.Schlafzimmer.Switch', muss Datenpunkt muss von Typ "Boolean" (true/false) sein.
                                          //
                                          // Es sind noch deutlich mehr Optionen möglich, hierzu muss als Objekt gesetzt werden: {on:{state:'fullybrowser.0.X_X_X_X.Commands.screenOn', cmd:true}, off:{state:'fullybrowser.X_X_X_X.Commands.screenOff', cmd: true}, checkOnOffStatusState:'fullybrowser.X_X_X_X.Info.isScreenOn'}
                                          // Dadurch ist folgendes möglich:
                                          // 1. Individuellen State für An/Aus setzen, Beispiel: {on:{state:'javascript.0.Wohnzimmer.Licht.Szene', cmd:'Entspannen'}, off:{state:'shelly.0.XXXXXXXXXX.Relay0.Switch', cmd: false}, checkOnOffStatusState:'shelly.0.XXXXXXXXXX.Relay0.Switch'}
                                          // 2. Ausschalten deaktivieren (es wird also nur eingeschaltet): Einfach den Teil "off:{state:'fullybrowser.X_X_X_X.Commands.screenOff', cmd: true}," rauslöschen.
                                          // 3. Individuellen State zur Erkennung, ob Gerät an oder aus ist setzen: checkOnOffStatusState:'fullybrowser.X_X_X_X.Info.isScreenOn'. Dies ist notwenig, wenn "on:{state" nicht Boolean (true/false) ist.
                                          //target:                 {on:{state:'hue.0.R_Schlafzimmer.on', cmd:true}, off:{state:'hue.0.R_Schlafzimmer.on', cmd: false}, checkOnOffStatusState:'hue.0.R_Schlafzimmer.on'},
                                          target:                 'hm-rpc.0.OEQ0473764.1.STATE',
                                      
                                          // Optional: In manchen Fällen will man ggf. mit dem Bewegungsmelder nur einmalig einschalten. Dann soll der Bewegungsmelder x Sekunden (z.B. 10 Minuten = 600s) nicht mehr neu auslösen.
                                          //           Dazu hier den Wert in Sekunden entsprechend setzen. Durch weglassen oder wait:0 wird das ignoriert. 
                                          wait:                0,
                                      
                                          // Optional: Nicht schalten: Wenn einer der folgenden Datenpunkte mit dem Wert übereinstimmt, wird nicht geschaltet.
                                          //           Hilfreich, um z.B. nicht zu schalten, wenn keiner anwesend ist, oder etwa ein Fenster offen ist, etc.
                                          //           Es können beliebig viele States hinzugefügt werden (neverState_1, neverState_2, neverState_3 usw.)
                                          //neverState_1:           {state:'0_userdata.0.Anwesenheit.Status.anyonePresent', val:false},
                                        }, 
                                      
                                      ];
                                      
                                      
                                      /*******************************************************************************
                                       * Optionale weitere Einstellungen
                                       ******************************************************************************/
                                      
                                      // Die Datenpunkte der einzelnen Adapter (mihome, zigbee, etc.) unterscheiden sich, daher definieren wir diese hier.
                                      // Es können weitere Adapter hinzugefügt werden.
                                      // - Erster Teil (z.B. "mihome"): Hauptdatenpunkt ohne Instanz. Also bei mihome.0 ist das einfach nur "mihome".
                                      // - stateMotion: Der Datenpunkt, der eine neue Bewegung erfasst und dann auf true setzt. z.B. [mihome.0.devices.sensor_motion_aq2_123456789abc.state]
                                      //                Hier dann nur den Teil nach dem letzten Punkt nehmen, also hier "state"
                                      // - stateLux:    Der Datenpunkt, der die Lux (Helligkeit) anzeigt. Kann man weglassen, dann wird Lux nicht berücksichtigt.
                                      //                Z.B. [mihome.0.devices.sensor_motion_aq2_123456789abc.lux]. -> Nur den Teil nach dem letzten Punkt nehmen, also hier "lux"
                                      const ADAPTER_STATES = {
                                              //mihome: {stateMotion: 'state',     stateLux: 'lux'},
                                              hm-rpc: {stateMotion: 'MOTION',     
                                              //zigbee: {stateMotion: 'occupancy', stateLux: 'illuminance'},
                                      };
                                      
                                      
                                      // Logeinträge: Infos zeigen (wenn eingeschaltet oder ausgeschaltet wurde)
                                      const INFO = true;
                                      
                                      // Logeinträge: Zusätzliche Einträge anzeigen zur Fehlerbehebung. Auf "false" setzen, wenn alles funktioniert.
                                      const DEBUG = false;
                                      

                                      21:09:43.387 error javascript.0 (14980) script.js.Sigi.Mic_Bewegungsmelder compile failed: at script.js.Sigi.Mic_Bewegungsmelder:94 (66 Log gekürzt)

                                      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                      Immer Daten sichern!

                                      MicM 1 Antwort Letzte Antwort
                                      0
                                      • sigi234S sigi234

                                        @Mic

                                        Irgendwo habe ich einen Fehler?

                                        /////////////////////
                                        const MOTION_SENSORS = [
                                          {
                                            // Beliebiger Name (für Log-Ausgabe). Bitte individuell vergeben.
                                            name:                   'Vorraum',
                                        
                                            // Haupt-Datenpunkt des Bewegungsmelders, z.B. "mihome.0.devices.sensor_motion_aq2_1234567abcde" oder "zigbee.0.00123456789415"
                                            // Es werden auch mehrere Sensoren unterstützt, d.h. etwa 3 Bewegungsmelder im Flur.
                                            sensorState:            'hm-rpc.1.00091A49A082FC.1.MOTION',
                                        //    sensorState:            ['mihome.0.devices.sensor_motion_aq2_XXXXXXXXXXX', 'zigbee.0.XXXXXXXXXXXXX', 'zigbee.0.YYYYYYYYYYYYYYYYYYYYY'],
                                        
                                            // Hier beliebig viele Schaltzeitpunkte hinzufügen (period_1, period_2, period_3, usw.)
                                            //  - "start" und "end": Erforderlich. Es wird geprüft, ob start/end innerhalb aktueller Uhrzeit ist, wenn Bewegungsmelder auslöst.
                                            //                       Astro-Zeitangaben sind erlaubt, also etwa 'sunrise' oder mit einem Offset wie {astro: 'sunrise', offset: -30}
                                            //                       Details zu start/end und Astro-Zeitangaben: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#comparetime
                                            // - "days":             OPTIONAL: Wenn weggelassen, wird jeden Tag geschaltet (Montag-Sonntag). 
                                            //                       Montag = 1, Dienstag = 2, ... Sonntag = 7. 
                                            //                       Mehrere Tage mit Komma trennen, z.B. '1, 3, 5' für Montag/Mittwoch/Freitag.
                                            //                       Periodische Angaben wie '2-4' für Dienstag/Mittwoch/Donnerstag sind auch möglich.
                                            //                       Ebenso Kombination einzelner Tage und Periode möglich, z.B. '2-4, 7' für Dienstag/Mittwoch/Donnerstag und Sonntag.
                                            // - "sec":              OPTIONAL: Nach wie vielen Sekunden soll wieder ausgeschalten werden? Falls weggelassen oder 0, dann wird nicht ausgeschaltet.
                                            // - "lux"               OPTIONAL: Ab wieviel Lux soll NICHT eingeschaltet werden? Falls weggelassen oder größer 9999, dann wird unababhängig von den gemessenen Lux immer eingeschaltet.
                                            // - "luxAlways"         OPTIONAL: Wir gehen davon aus, dass Lampen geschaltet werden. Ist eine Lampe an, wird ein größerer Lux-Wert vom Sensor gemessen, daher macht die Prüfung auf Lux bei  
                                            //                                 bereits eingeschalteter Lampe auf erneute Bewegung und Lux-Abfrage keinen Sinn mehr. Daher wird durch dieses Script bei Bewegung
                                            //                                 -- während das Gerät (die Lampe) an ist -- die Lux-Erkennung hier deaktiviert. Zum dauerhaften aktivieren auf "true" setzen, damit wird immer auf Lux geprüft, 
                                            //                                 auch wenn das Gerät an ist.
                                            period_1:               {start:'00:10', end:'23:59',    sec:60,   luxAlways:false},
                                        
                                            // Hier den Datenpunkt des Gerätes angeben, das geschaltet werden soll bei Bewegung an und wieder aus.
                                            // Falls als String gesetzt, z.B. 'javascript.0.Licht.Schlafzimmer.Switch', muss Datenpunkt muss von Typ "Boolean" (true/false) sein.
                                            //
                                            // Es sind noch deutlich mehr Optionen möglich, hierzu muss als Objekt gesetzt werden: {on:{state:'fullybrowser.0.X_X_X_X.Commands.screenOn', cmd:true}, off:{state:'fullybrowser.X_X_X_X.Commands.screenOff', cmd: true}, checkOnOffStatusState:'fullybrowser.X_X_X_X.Info.isScreenOn'}
                                            // Dadurch ist folgendes möglich:
                                            // 1. Individuellen State für An/Aus setzen, Beispiel: {on:{state:'javascript.0.Wohnzimmer.Licht.Szene', cmd:'Entspannen'}, off:{state:'shelly.0.XXXXXXXXXX.Relay0.Switch', cmd: false}, checkOnOffStatusState:'shelly.0.XXXXXXXXXX.Relay0.Switch'}
                                            // 2. Ausschalten deaktivieren (es wird also nur eingeschaltet): Einfach den Teil "off:{state:'fullybrowser.X_X_X_X.Commands.screenOff', cmd: true}," rauslöschen.
                                            // 3. Individuellen State zur Erkennung, ob Gerät an oder aus ist setzen: checkOnOffStatusState:'fullybrowser.X_X_X_X.Info.isScreenOn'. Dies ist notwenig, wenn "on:{state" nicht Boolean (true/false) ist.
                                            //target:                 {on:{state:'hue.0.R_Schlafzimmer.on', cmd:true}, off:{state:'hue.0.R_Schlafzimmer.on', cmd: false}, checkOnOffStatusState:'hue.0.R_Schlafzimmer.on'},
                                            target:                 'hm-rpc.0.OEQ0473764.1.STATE',
                                        
                                            // Optional: In manchen Fällen will man ggf. mit dem Bewegungsmelder nur einmalig einschalten. Dann soll der Bewegungsmelder x Sekunden (z.B. 10 Minuten = 600s) nicht mehr neu auslösen.
                                            //           Dazu hier den Wert in Sekunden entsprechend setzen. Durch weglassen oder wait:0 wird das ignoriert. 
                                            wait:                0,
                                        
                                            // Optional: Nicht schalten: Wenn einer der folgenden Datenpunkte mit dem Wert übereinstimmt, wird nicht geschaltet.
                                            //           Hilfreich, um z.B. nicht zu schalten, wenn keiner anwesend ist, oder etwa ein Fenster offen ist, etc.
                                            //           Es können beliebig viele States hinzugefügt werden (neverState_1, neverState_2, neverState_3 usw.)
                                            //neverState_1:           {state:'0_userdata.0.Anwesenheit.Status.anyonePresent', val:false},
                                          }, 
                                        
                                        ];
                                        
                                        
                                        /*******************************************************************************
                                         * Optionale weitere Einstellungen
                                         ******************************************************************************/
                                        
                                        // Die Datenpunkte der einzelnen Adapter (mihome, zigbee, etc.) unterscheiden sich, daher definieren wir diese hier.
                                        // Es können weitere Adapter hinzugefügt werden.
                                        // - Erster Teil (z.B. "mihome"): Hauptdatenpunkt ohne Instanz. Also bei mihome.0 ist das einfach nur "mihome".
                                        // - stateMotion: Der Datenpunkt, der eine neue Bewegung erfasst und dann auf true setzt. z.B. [mihome.0.devices.sensor_motion_aq2_123456789abc.state]
                                        //                Hier dann nur den Teil nach dem letzten Punkt nehmen, also hier "state"
                                        // - stateLux:    Der Datenpunkt, der die Lux (Helligkeit) anzeigt. Kann man weglassen, dann wird Lux nicht berücksichtigt.
                                        //                Z.B. [mihome.0.devices.sensor_motion_aq2_123456789abc.lux]. -> Nur den Teil nach dem letzten Punkt nehmen, also hier "lux"
                                        const ADAPTER_STATES = {
                                                //mihome: {stateMotion: 'state',     stateLux: 'lux'},
                                                hm-rpc: {stateMotion: 'MOTION',     
                                                //zigbee: {stateMotion: 'occupancy', stateLux: 'illuminance'},
                                        };
                                        
                                        
                                        // Logeinträge: Infos zeigen (wenn eingeschaltet oder ausgeschaltet wurde)
                                        const INFO = true;
                                        
                                        // Logeinträge: Zusätzliche Einträge anzeigen zur Fehlerbehebung. Auf "false" setzen, wenn alles funktioniert.
                                        const DEBUG = false;
                                        

                                        21:09:43.387 error javascript.0 (14980) script.js.Sigi.Mic_Bewegungsmelder compile failed: at script.js.Sigi.Mic_Bewegungsmelder:94 (66 Log gekürzt)

                                        MicM Offline
                                        MicM Offline
                                        Mic
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #19

                                        @sigi234 sagte in [Vorlage] Bewegungsmelder-Script (Xiaomi Aqara und andere):

                                        Irgendwo habe ich einen Fehler?

                                        Dein JavaScript-Adapter sollte rot unterkringelt anzeigen, wenn ein potenzieller Fehler vorliegt:
                                        s_1.png

                                        Mach hier mal:

                                        const ADAPTER_STATES = {
                                                //mihome: {stateMotion: 'state',     stateLux: 'lux'},
                                                'hm-rpc': {stateMotion: 'MOTION'},     
                                                //zigbee: {stateMotion: 'occupancy', stateLux: 'illuminance'},
                                        };
                                        

                                        Nimm außerdem hier das Ende wieder weg, also von sensorState: 'hm-rpc.1.00091A49A082FC.1.MOTION' auf sensorState: 'hm-rpc.1.00091A49A082FC.1'. Denn ".MOTION" fügt dann das Script entsprechend hinzu.

                                        sigi234S 1 Antwort Letzte Antwort
                                        0
                                        • MicM Mic

                                          @sigi234 sagte in [Vorlage] Bewegungsmelder-Script (Xiaomi Aqara und andere):

                                          Irgendwo habe ich einen Fehler?

                                          Dein JavaScript-Adapter sollte rot unterkringelt anzeigen, wenn ein potenzieller Fehler vorliegt:
                                          s_1.png

                                          Mach hier mal:

                                          const ADAPTER_STATES = {
                                                  //mihome: {stateMotion: 'state',     stateLux: 'lux'},
                                                  'hm-rpc': {stateMotion: 'MOTION'},     
                                                  //zigbee: {stateMotion: 'occupancy', stateLux: 'illuminance'},
                                          };
                                          

                                          Nimm außerdem hier das Ende wieder weg, also von sensorState: 'hm-rpc.1.00091A49A082FC.1.MOTION' auf sensorState: 'hm-rpc.1.00091A49A082FC.1'. Denn ".MOTION" fügt dann das Script entsprechend hinzu.

                                          sigi234S Online
                                          sigi234S Online
                                          sigi234
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von sigi234
                                          #20

                                          @Mic 👍

                                          21:29:49.350	info	javascript.0 (14980) Stop script script.js.Sigi.Mic_Bewegungsmelder
                                          21:29:49.356	info	javascript.0 (14980) Start javascript script.js.Sigi.Mic_Bewegungsmelder
                                          21:29:49.358	info	javascript.0 (14980) script.js.Sigi.Mic_Bewegungsmelder: *** Bewegungsmelder-Script gestartet *** Folgende Bewegungsmelder werden überwacht: Vorraum
                                          21:29:49.358	info	javascript.0 (14980) script.js.Sigi.Mic_Bewegungsmelder: registered 1 subscription and 0 schedules
                                          

                                          Ok, wenn ich eine dauernde Überwachung will ohne Lux stimmt das so :

                                          period_1:               {start:'00:01', end:'23:59',    sec:60,   luxAlways:false},
                                          

                                          Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                          Immer Daten sichern!

                                          MicM 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

                                          634

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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