Ankündigung

Einklappen
Keine Ankündigung bisher.

Openhab und Homematic Bewegungsmelder HM-Sec-MDIR

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Openhab und Homematic Bewegungsmelder HM-Sec-MDIR

    Hallo,

    ich besitze einen Homematic Bewegungsmelder HM-Sec-MDIR, welchen ich direkt mit einem Schalter verknüpft habe. Das heißt, wenn Bewegung erkannt wird, dann schalte mir das Treppenlicht ein. Das funktioniert auch ganz gut.
    Jetzt möchte ich aber das der Bewegungsmelder nicht immer reagiert, sondern nur wenn ich diesen mit einem Button in Openhab einschalte. Leider weiß ich überhaupt nicht wie ich das realisieren soll. Bin Umsteiger von FHEM und dort hatte ich das über einen sogenannten Dummy realisiert. Auch mit Rules ist es für mich im Moment noch sehr schwierig.

    Kann mir jemand einen Tip geben?

    MfG

    Olaf


    #2
    Für deinen Schalter legst du dir im Items file einen Schalter an, auf der nach her, abhängig ob ein oder ausgeschaltet, die Bewegungsteuerung reagiert.
    Code:
    Switch bewegung_schalter "Bewegungsmelder" (Flur)
    Danach regelt die rule ob auf Bewegung reagiert wird oder nicht.

    Code:
    import org.openhab.model.script.actions.Timer
    import org.joda.time.*
    import org.openhab.core.library.types.*
    import org.openhab.model.script.actions.*
    import org.openhab.core.library.types.DecimalType
     
    var Timer timer_Flur = null
    
    rule korridortimer
    when
    
    Item korridorbewegung changed 
    then
    
    if (korridorbewegung.state == ON && bewegung_schalter.state == ON )
    	 {
                   timer_Flur = createTimer(now.plusMinutes(3)) [|
                            sendCommand(KorridorDimmer,0)
                            
                            
         ]
          } else { if(timer_Flur != null) 
                    timer_Flur.cancel()
                    logInfo("runtime.busevents", "cancel timer")
    	}		
    	
          if (korridorbewegung.state == ON && bewegung_schalter.state == OFF )
    	 {
                   logInfo("runtime.busevents", "Bewegung aber Schalter aus")
          } 
         
          
            
    end
    Code ungetestet.

    Kommentar


      #3
      Das muss ich jetzt erstmal verinnerlichen.

      Aber danke für die schnelle Hilfe. Werde dann Feedback geben, wenn es geklappt hat.

      Gruß Olaf

      Kommentar


        #4
        Hallo,

        habe ich gerade getestet und funktioniert leider nicht. Hatte ja am Anfang noch die Direktverknüpfung beider HM-Komponenten drin und deshalb ging das Licht trotzdem immer an, auch wenn das Item bewegung_schalter OFF war.
        Habe dann die Direktverknüpfung gelöscht und jetzt reagiert nichts.

        Anbei noch einmal meine Rule:
        rule Bewegungsmelder schalten

        when

        Item BM_Flur changed

        then

        if (BM_Flur.state == ON && bewegung_schalter.state == ON )
        {
        timer_Flur = createTimer(now.plusMinutes(3)) [|
        sendCommand(Licht_Treppe,0)


        ]
        } else { if(timer_Flur != null)
        timer_Flur.cancel()
        logInfo("runtime.busevents", "cancel timer")
        }

        if (BM_Flur.state == ON && bewegung_schalter.state == OFF )
        {
        logInfo("runtime.busevents", "Bewegung aber Schalter aus")
        }



        end
        Irgendwo muss noch ein Gedankenfehler sein. Was meinst du mit sendCommand(Licht_treppe,0) ???? Da musste ich doch mein Item für den Lichtschalter eintragen, oder?

        Gruß Olaf

        Kommentar


          #5
          oh sorry ich habe eine Rule von mir kopiert und teilweise für dich angepasst.
          Aber richtig
          Code:
          sendCommand(Licht_treppe,0)
          ist das Kommando um das Licht ein zu schalten also direkt eine smarte Lampe , bei mit Philips Hue oder einen anderes smartes Ding Schalter etc einen Befehl zu geben. Wen es ein Schalter ist muss da ON rein. Da die Rule noch in eine entgegen gesetzte richtung als was du brauchst korrigiere ich die Rule noch einmal.

          Code:
          rule Bewegungsmelder schalten
          
          when
          
          Item BM_Flur changed 
          
          then
          
          if (BM_Flur.state == ON && bewegung_schalter.state == ON )
          {
          sendCommand(Licht_Treppe,ON)
          }  
          
          if (BM_Flur.state == ON && bewegung_schalter.state == OFF )
          {
          logInfo("runtime.busevents", "Bewegung aber Schalter aus")
          } 
          
          if (BM_Flur.state == OFF && bewegung_schalter.state == ON )
          {
          sendCommand(Licht_Treppe,OFF)
          }  
          
          end

          Kommentar


            #6
            Super,

            ich hatte es jetzt auch schon so hin bekommen
            rule Bewegungsmelder schalten

            when

            Item BM_Flur changed

            then

            if (BM_Flur.state == ON && bewegung_schalter.state == ON )
            {
            sendCommand(Licht_Treppe, ON)
            timer_Flur = createTimer(now.plusMinutes(2)) [|
            sendCommand(Licht_Treppe, OFF)


            ]
            } else { if(timer_Flur != null)
            timer_Flur.cancel()
            logInfo("runtime.busevents", "cancel timer")
            }

            if (BM_Flur.state == ON && bewegung_schalter.state == OFF )
            {
            logInfo("runtime.busevents", "Bewegung aber Schalter aus")
            }
            end
            aber dein Code ist viel schlanker und den Timer habe ich bereits in einer anderen Rule auch schon.

            Danke

            Gruß Olaf

            Kommentar


              #7
              Hallo Teasy1,

              kannst du bitte deinen gesammten Code Posten inkl. der Library´s die du eingebunden hast und den Time den du schon in einer anderen Rules verwendest.
              Bei mir funktioniert der Code den du gepostet hast leider nicht und ich kann leider nicht sehen warum.

              Danke im Voraus
              Gruß
              Christian

              Kommentar

              Lädt...
              X