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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Skript für Bewegungsmelder

NEWS

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

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

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

Skript für Bewegungsmelder

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 4 Kommentatoren 2.6k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    Seehofweg
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    Diese Woche sind die neuen HM-IP Präsenzmelder angekommen und ich komme leider in deren Einbindung nicht weiter. :(

    Also…beim Gerät selbst kann man ja einstellen, wie oft der Status gesendet bzw. auch aktualisiert wird. Siehe Bild.

    Das war mein Skript:

    on({id: 'hm-rpc.1.000C17099A04A9.1.PRESENCE_DETECTION_STATE', val: true}, function () {
       log('Bewegung im Bad EG erkannt');
    
    setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', true);
    
    timer_baddecke ();
    
    function timer_baddecke() {
        clearTimeout(Timeout1);
        setTimeout(Timeout1, 30000);
    }
    
        function Timeout1() {
           setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', false);
    
           log('Deckenlampen im Bad leuchten für 30s');
    }
    
    });
    
    

    Das Licht ging zwar an, aber auch wenn man sich im Bad aufgehalten hat, ging es aus und nicht mehr an. Denkfehler war wohl, dass der Präsenzmelder den Bewegungsstatus auf "true" setzt und diesen natürlich beibehält. Mein Skript aber nur gestartet wird, wenn der Status auf true gesetzt wird.

    Dann habe ich etwas daran gearbeitet und versucht, das Ganze mit "If" umzusetzen. Allerdings geht da gar nichts mehr. :?

    if('hm-rpc.1.000C17099A04A9.1.PRESENCE_DETECTION_STATE', true) {
        log('Bewegung im Bad EG erkannt');
        setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', true);
        timer_baddecke ();
    
    function timer_baddecke() {
        setTimeout(Timeout1, 10000);
    }
    
        function Timeout1() {
           setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', false);
    
           log('Deckenlampen im Bad leuchten für 10s');
        }
    
    }
    

    Kann mir jemand helfen? Logischerweise soll bei jeder Bewegung der Lampen-Timer wieder auf die ursprüngliche Dauer gesetzt werden. Optimal auch nicht erst, wenn auf "true" gesetzt wird….sondern ob die Variable auf "true" steht.

    Dank euch und viele Grüße

    Tobias
    2771_pm.png

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Da der Bewegungsmelder so konfiguriert werden kann, dass er auch in einer Direkt-Vernüpfung richtig arbeitet (wenn der Aktor ein HMIP-Aktor wäre), sollte eine einfache Wertübertragung genügen:

      on('hm-rpc.1.000C17099A04A9.1.PRESENCE_DETECTION_STATE', function (dp) {
         if(dp.state.val) log('Bewegung im Bad EG erkannt');
         setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', dp.state.val);
      });
      
      

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

      1 Antwort Letzte Antwort
      1
      • P Offline
        P Offline
        ple
        schrieb am zuletzt editiert von
        #3

        hab es so gelöst, vielleicht ein wenig hintenrum, aber es geht soweit.

        Habe den Status durch der CCU für 1 min auf true.

        Export Blockly

        ! ````
        <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="Tt_aFR+}(|M2`m-D~)pU" x="-562" y="-262"><mutation items="1"></mutation>
        <field name="CONDITION">ne</field>

        <value name="OID0"><shadow type="field_oid" id="}c1Lhyei/6mr.JOy^V}p"><field name="oid">hm-rpc.1.000C17099A02EF.1.PRESENCE_DETECTION_STATE</field></shadow></value> 
        <statement name="STATEMENT"><block type="controls_if" id="n/cMf5v~E-G+*w-(q`ur"><mutation elseif="1"></mutation>
            <value name="IF0"><block type="logic_compare" id=";NKhS5OJtRd{%uF0E%U8"><field name="OP">EQ</field>
                <value name="A"><block type="get_value" id="=Hr1]HjyF]V7E-b{o#PH"><field name="ATTR">val</field>
                    <field name="OID">hm-rpc.1.000C17099A02EF.1.PRESENCE_DETECTION_STATE</field></block></value> 
                <value name="B"><block type="logic_boolean" id="*6@2x0I(n)Z=J5]{TAf{"><field name="BOOL">TRUE</field></block></value></block></value> 
            <statement name="DO0"><block type="timeouts_cleartimeout" id=")ZQ`6}2]Z4vqI6*YY)Si"><field name="NAME">timeout</field>
                <next><block type="controls_if" id="CiFNX[t_%75Wc7pbi^DB"><value name="IF0"><block type="logic_compare" id="gn6{X4h*fd|,k`?VLnUc"><field name="OP">EQ</field>
                        <value name="A"><block type="get_value" id="?I0x~E_9z~Mo3z_hyK.Y"><field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.MEQ1671045.1.STATE</field></block></value> 
                        <value name="B"><block type="logic_boolean" id="AfVb*KSt912SDI^#%+[*"><field name="BOOL">FALSE</field></block></value></block></value> 
                    <statement name="DO0"><block type="control" id="I@YxWw(Q#qq#)hyrxKeW"><mutation delay_input="false"></mutation>
                        <field name="OID">hm-rpc.0.MEQ1671045.1.STATE</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE"><block type="logic_boolean" id="f`SK@kHNp[035Vi[+D{H"><field name="BOOL">TRUE</field></block></value></block></statement> 
                    <next><block type="controls_if" id="!qnW^{X;*Xaj*s7CwSTb"><value name="IF0"><block type="logic_compare" id="klakKKDmo(_O0hm)1K0B"><field name="OP">EQ</field>
                            <value name="A"><block type="get_value" id="C=7N[RPg,WUh0`QcvCYq"><field name="ATTR">val</field>
                                <field name="OID">hm-rpc.0.MEQ1673086.1.STATE</field></block></value> 
                            <value name="B"><block type="logic_boolean" id="2[T=dZyi+}V:dpo^j[t{"><field name="BOOL">FALSE</field></block></value></block></value> 
                        <statement name="DO0"><block type="control" id=".=:g@GttcX+n`%Cz(cbf"><mutation delay_input="false"></mutation>
                            <field name="OID">hm-rpc.0.MEQ1673086.1.STATE</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE"><block type="logic_boolean" id="~jpU(e%?c7+1tLUe?_~3"><field name="BOOL">TRUE</field></block></value></block></statement> 
                        <next><block type="controls_if" id="cMRz-%xQhC!rQ)AkVX5C"><value name="IF0"><block type="logic_compare" id="EUIE4/eJa12=wB^d-p,6"><field name="OP">EQ</field>
                                <value name="A"><block type="get_value" id="^5wvE73D+MllSdR]o?[e"><field name="ATTR">val</field>
                                    <field name="OID">hm-rpc.0.MEQ1670131.1.STATE</field></block></value> 
                                <value name="B"><block type="logic_boolean" id="x;u6v(J6oX^DRBVg![0A"><field name="BOOL">FALSE</field></block></value></block></value> 
                            <statement name="DO0"><block type="control" id="wSI=d)]/jm-e*j{fx?DS"><mutation delay_input="false"></mutation>
                                <field name="OID">hm-rpc.0.MEQ1670131.1.STATE</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="logic_boolean" id="b7N{)@zBTB!x5~fT^,O("><field name="BOOL">TRUE</field></block></value></block></statement></block></next></block></next></block></next></block></statement> 
            <value name="IF1"><block type="logic_compare" id="usY|s`1v!s4|x)NVJp]j"><field name="OP">EQ</field>
                <value name="A"><block type="get_value" id="Vv;y;SXY|%IbHnIL~]Ni"><field name="ATTR">val</field>
                    <field name="OID">hm-rpc.1.000C17099A02EF.1.PRESENCE_DETECTION_STATE</field></block></value> 
                <value name="B"><block type="logic_boolean" id="%B6-9.G+6SCc-nQd7_;t"><field name="BOOL">FALSE</field></block></value></block></value> 
            <statement name="DO1"><block type="timeouts_settimeout" id="H{t.=N[?b[7OEf!1~3*g"><field name="NAME">timeout</field>
                <field name="DELAY">10</field>
                <field name="UNIT">sec</field>
                <statement name="STATEMENT"><block type="control" id="g9zx/)rCg39%pRCa|fOi"><mutation delay_input="false"></mutation>
                    <field name="OID">hm-rpc.0.MEQ1670131.1.STATE</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE"><block type="logic_boolean" id="^:}?h0Nu^!!_]v6||_79"><field name="BOOL">FALSE</field></block></value> 
                    <next><block type="control" id="*;lQW@@*?AKz.4ZQ_o3."><mutation delay_input="false"></mutation>
                        <field name="OID">hm-rpc.0.MEQ1673086.1.STATE</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE"><block type="logic_boolean" id="0Q.042:5#8Jq:Fp{5G)J"><field name="BOOL">FALSE</field></block></value> 
                        <next><block type="control" id="w_}GjyuK;NN9@y?#gG}Z"><mutation delay_input="false"></mutation>
                            <field name="OID">hm-rpc.0.MEQ1671045.1.STATE</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE"><block type="logic_boolean" id="{NgB:jcEa~!c.%{lP]i8"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></statement></block></statement></block></statement></block></xml> 
        
        [1241_bildschirmfoto_2017-08-10_um_21.19.53.png](/assets/uploads/files/1241_bildschirmfoto_2017-08-10_um_21.19.53.png)

        Intel Nuc + Proxmox

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          Seehofweg
          schrieb am zuletzt editiert von
          #4

          Servus!

          @ple -> hui…das sieht schon ziemlich aufwendig aus. :shock: Allerdings...

          @paul53 -> vielen Dank, das funktioniert so einwandfrei. Super. Da ich mich ja gerade erst an JavaScript langsam ran traue, wie kann ich dein Script nachvollziehen? KAnnst du es mir vielleicht kurz erklären. ;) Muss ich z. B. den Funktionsname dp bei jedem Programm ändern, damit es zu keinen Problemen kommt?

          Kann man dieses Script auch verwenden, um eine Lampe/Gruppe gedimmt zu schalten? Hier könnte ich ja nicht einfach den Status weitergeben.

          Viele Grüße

          Tobi

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            @Seehofweg:

            Muss ich z. B. den Funktionsname dp bei jedem Programm ändern, damit es zu keinen Problemen kommt? `
            Nein, dp ist der Name des an die Funktion übergebenen Objektes, der lokal (nur innerhalb dieser Funktion gültig) ist. Lokale Namen von Skriptvariablen können immer wieder lokal innerhalb des gleichen Skriptes verwendet werden.
            @Seehofweg:

            KAnnst du es mir vielleicht kurz erklären. `

            on('ID-String', function(dp) {
            

            löst bei Wertänderung aus, das Datenpunkt-Objekt des Auslösers wird unter dem Namen dp an die Callback-Funktion übergeben.

               if(dp.state.val) log('Bewegung im Bad EG erkannt');
            

            Wenn der Wert des auslösenden Datenpunktes wahr ist, wird die Log-Ausgabe ausgeführt.

               setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', dp.state.val);
            

            Der Wert des auslösenden Datenpunktes wird in den Datenpunkt mit der ID 'hue.1.Bridge-EG_2.a.Badezimmer(Decke).on'_ geschrieben.

            Eine ausfühliche Beschreibung der Funktion on(pattern, callback) findest Du auf https://github.com/ioBroker/ioBroker.javascript#on–-subscribe-on-changes-or-updates-of-some-state.
            @Seehofweg:

            Kann man dieses Script auch verwenden, um eine Lampe/Gruppe gedimmt zu schalten? Hier könnte ich ja nicht einfach den Status weitergeben. `
            Man muss es schon etwas abwandeln, z.B.

            var Dimmwert = 50;
            
            on('hm-rpc.1.000C17099A04A9.1.PRESENCE_DETECTION_STATE', function (dp) {
               if(dp.state.val) {
                   log('Bewegung im Bad EG erkannt');
                   setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', Dimmwert);
               }    
               else setState('hue.1.Bridge_-_EG_2.a.Badezimmer_(Decke).on', 0);
            });
            

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

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              smuxus
              schrieb am zuletzt editiert von
              #6

              Hi,

              ich nutze das Skript von Seehofweg in leicht abgewandelter Form um über einen Homematic IP Bewegungsmelder zwei HUEs zu schalten.

              Allerdings würde ich noch gerne die Helligkeit mit Abfragen. Im Prinzip müsste ja nur eine einfache IF Abfrage drumherum gebaut werden, in etwa "wenn Helligeit < 20, dann Skript ausführen…".

              Aber leider bekomme ich es im JS nicht hin ;(

              Hat jemand einen Tipp?

              on("hm-rpc.2.0009156xxxxxx.1.MOTION"/*BWM Flur:1.MOTION*/, function (dp) {
                 if(dp.state.val) {
                 log('Bewegung im Flur erkannt');
                 setState("hue.0.Philips_hue.Hue_white_lamp_2.level", 50);
                 }
                 else setState("hue.0.Philips_hue.Hue_white_lamp_2.level", 0);
              });
              
              on("hm-rpc.2.0009156xxxxxx.1.MOTION"/*BWM Flur:1.MOTION*/, function (dp) {
                 if(dp.state.val) {
                 log('Bewegung im Flur erkannt');
                 setState("hue.0.Philips_hue.Hue_white_lamp_3.level", 50);
                 }
                 else setState("hue.0.Philips_hue.Hue_white_lamp_3.level", 0);
              });
              
              
              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

              789

              Online

              32.4k

              Benutzer

              81.5k

              Themen

              1.3m

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

              • Du hast noch kein Konto? Registrieren

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