Ankündigung

Einklappen
Keine Ankündigung bisher.

openHAB + Homematic Bewegungsmelder + Fritzboxsteckdose

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

    openHAB + Homematic Bewegungsmelder + Fritzboxsteckdose

    Hallo zusammen,

    ich bin neu im ganzen Thema Heimautomation und versuche mich jetzt so durch die verschiedenen Themen zu kämpfen.
    Seit mehreren Tagen versuche ich mit einem Homematic-Bewegungsmelder in Abhängigkeit von der Helligkeit eine FritzBox
    Steckdose zu steuern und dies über openHAB.
    Bewegung erkannt & Helligkeit < 50 dann Steckdose an sonst Steckdose aus.

    items:
    Code:
    Switch EZ_Bewegung "Bewegung Esszimmer [MAP(window.map):%s]" {homematic="address=LEQxxx, channel=1, parameter=MOTION"}
    String EZ_Helligkeit "Helligkeit Esszimmer [MAP (window.map):%d]" {homematic="address=LEQxxx, channel=1, parameter=BRIGHTNESS"}
    rule:
    Code:
    // Bewegung_Esszimmerr
    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
    import java.math.BigDecimal
    import java.util.IllegalFormatConversionException
    import org.openhab.core.types.Command
    import org.openhab.core.types.PrimitiveType
    import org.openhab.core.types.State
     
    rule "EZ_LichtBeiBewegung"
    when
            Item EZ_Bewegung changed
    then
        //sendCommand(FBSteckdose_EG_Esszimmer, ON)
        
    if (EZ_Bewegung.state==ON && EZ_Helligkeit.state < 50)
    {
        sendCommand(FBSteckdose_EG_Esszimmer, ON)
    }
    else
        sendCommand(FBSteckdose_EG_Esszimmer, OFF)
    end
    Leider funktioniert es überhaupt nicht. Wenn ich die UND Verknüpfung rausnehme funktioniert es problemlos.
    Es liegt auch nicht daran, dass der Helligkeistwert noch nicht unterschritten ist, dies habe ich geprüft.
    Ich vermute es liegt am Variablentyp für die Helligkeit, ich konnte aber auch durch rumprobieren keinen
    Erfolg erzielen.

    Wäre für jeden Tipp sehr dankbar.

    Grüße
    Tom

    #2
    Hi,

    ohne es überprüft zu haben und ohne wirklich Kenne zu besitzen, würde ich mal
    Code:
    if ((EZ_Bewegung.state==ON) && (EZ_Helligkeit.state < 50)) {  
        sendCommand(FBSteckdose_EG_Esszimmer, ON) }
    else
        sendCommand(FBSteckdose_EG_Esszimmer, OFF)
    end
    versuchen.

    Gruß Peter

    Kommentar


      #3
      Bei mir sieht das ganze so aus. Zwei Abfragen sind nötig, wenn eine Hysterese drin sein soll.

      Code:
      rule "Switch stairlight"
      when
          Item MdCoStairMotionBrightness changed
      then
          if ((MdCoStairMotionBrightness.state < 40) && (SwCoStairLightState.state == OFF)) {
              sendCommand(SwCoStairLightState, ON)
          } else if ((MdCoStairMotionBrightness.state > 50) && (SwCoStairLightState.state == ON)) {
              sendCommand(SwCoStairLightState, OFF)
          }
      end
      Thomas

      Kommentar


        #4
        Vielen Dank für Eure Hilfe. Leider bringt bin nich noch nicht weitergekommen. Ob das ganze Statement in Kammern steht oder nicht spielt soweit ich das beurteilen kann keine Rolle.

        Thomas: Im Grund habe ich nichts anderes gemacht wie du, nur das ich anstelle eines Schalters die Bewegung erkenne möchte.
        Könntest Du mir Deine Item-Definition für die Helligkeit posten. Ich vermute das da mein Fehler liegt.
        Danke+Grüße
        Tom

        Kommentar


          #5
          Aber klar doch hier die gesamte Definition des Bewegungsmelders.

          Code:
          Group gMdCoStairMotion "Bewegungsmelder Diele"
          Contact MdCoStairMotionMotion "Bewegung [%d]" (gMdCoStairMotion) { homematic="address=KEQxxxx, channel=1, parameter=MOTION" }
          Number MdCoStairMotionBrightness "Helligkeit [%d]" (gMdCoStairMotion) { homematic="address=KEQxxxx, channel=1, parameter=BRIGHTNESS" }
          Contact MdCoStairMotionLowBattery "Bewegungsmelder EG/Flur  [MAP(battery.map):%s]" <myBatteryLow> (gMdCoStairMotion, gVdBatteriesEmpty) { homematic="address=KEQxxxx, channel=0, parameter=LOWBAT" }
          Number MdCoStairMotionRSSI "Signalstärke [%d dbm]" <myAntenna> (gMdCoStairMotion) { homematic="address=KEQxxxx, channel=0, parameter=RSSI_DEVICE" }
          Number MdCoStairMotionStickyUnreach "Erreichbarkeitsfehler [%d]" (gMdCoStairMotion) {homematic="address=KEQxxxx, channel=0, parameter=STICKY_UNREACH"}
          Thomas

          Kommentar


            #6
            Spaßeshalber könntest Du nach dem when...then ein logInfo("Logger","EZ_Helligkeit.state = " + EZ_Helligkeit.state.toString ) einfügen. Dann siehst Du im openhab.log schon mal, was das Item genau enthält. Eine Möglichkeit wäre auch, dass Du
            if (EZ_Bewegung.state==ON && EZ_Helligkeit.state as DecimalType < 50) schreiben musst.

            Ach... Ich sehe gerade, dass EZ_Helligkeit bei Dir als String definiert ist. Das kann ja dann nicht funktionieren, wenn Du eine Zahl mit einem String vergleichst. EZ_Helligkeit sollte auf jeden Fall vom Typ Number sein. Das Mapping hat übrigens nur Auswirkungen auf die Anzeige, aber nicht auf den State eines Items.
            Zuletzt geändert von udo1toni; 14.06.2015, 18:17.

            Kommentar


              #7
              Super. Vielen Dank es tut jetzt. String in Number umgeändert und die Sache läuft.
              Nochmals vielen Dank. Jetzt bin ich endlich wieder einen kleinen Schritt weiter.

              Kommentar

              Lädt...
              X