Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler in der Rule: Check presence by detecting WiFi phones/tablets

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

    Fehler in der Rule: Check presence by detecting WiFi phones/tablets

    Ich habe gerade angefangen, mit den Rules zu experimentieren und bekomme die Präsenzerkennung via WLAN einfach nicht hin.

    Ich habe einfach das Beispiel aus den Samples übernommen aber ich sehe weder eine log-Info (logInfo("PresenceCheck", "No phone within reach")) noch wird entsprechend umgeschaltet. Kann mir jemand auf die Sprünge helfen? Vielen Dank.

    rule:
    http://pastebin.com/XAeQArGi

    relevante Bestandteile aus der sitemap:
    http://pastebin.com/HCh3RDeK

    items:
    http://pastebin.com/cdxavJxH
    Zuletzt geändert von EdgarWallace; 23.01.2016, 14:11.
    openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
    Devices: KNX & ZWave

    #2
    Meine items und sitemap sehen genauso aus wie deine, allerdings weicht meine rule von deiner in einigen Punkten ab:

    Code:
    import org.openhab.core.library.types.*
    import org.openhab.core.persistence.*
    import org.openhab.model.script.actions.*
    
    import org.java.math.*
    import org.joda.time.*
    
    rule "Periodically check presence"
    when
        Time cron "0 */5 * * * ?"
    then
            if (Presence.state == ON)
            {
                    if(gMobiles.members.filter(s | s.state == ON).size == 0) {
                            logInfo("PresenceCheck", "No phone within reach, checking for flapping")
                            if(gMobiles.members.filter(s | s.changedSince(now.minusMinutes(5))).size == 0) {
                                    logInfo("PresenceCheck", "Nobody is at home")
                                    Presence.sendCommand(OFF)
                            }
                    }
            }
            else
            {
                    //For initialisation. If Presence is undefined or off, although it should be on.
                    if(gMobiles.members.filter(s | s.state == ON).size > 0) {
                            Presence.sendCommand(ON)
                    }
                    else if (Presence.state == Undefined || Presence.state == Uninitialized) {
                            Presence.sendCommand(OFF)
                    }
            }
    
    end
    
    rule "Coming home"
    when
            Item gMobiles changed
    then
            if (Presence.state != ON) {
                    if(gMobiles.members.filter(s | s.state == ON).size > 0) {
                            logInfo("PresenceCheck", "Somebody is home")
                            Presence.sendCommand(ON)
                    }
            }
    end
    Dieses Beispiel stammt auch aus einer Wiki, ich kann mich allerdings nicht mehr erinnern woher genau, sie funktioniert jedoch seit einem Jahr ohne jegliche Probleme (solange man kein iPhone damit überwachen will, aber das ist eine andere Geschichte).

    Gruß, Sigi

    Kommentar


      #3
      Hi Sigi,

      ja das sind im Wesentlichen Presence.sendCommand(ON) anstelle von sendCommand(Presence, ON) (bzw. OFF) sowie die Verwendung des "?" hier und an anderen Stellen: if(gMobiles?.members.filter(s | s.state == ON).size > 0) {

      Herzlichen Dank, werde ich ausprobieren.

      [EDIT: Hier gibt's schon einmal eine log Meldung, das ist doch ein Fortschritt: Received HTTP POST request at 'items/Presence' with value 'OFF', und er scheint jetzt auch zu schalten!!! Vielen Dank]
      Zuletzt geändert von EdgarWallace; 23.01.2016, 14:10.
      openHAB2 2.5.10 als Docker auf einen unRAID Server (Repository: openhab/openhab:latest-debian)
      Devices: KNX & ZWave

      Kommentar


        #4
        Zitat von EdgarWallace Beitrag anzeigen
        ... und er scheint jetzt auch zu schalten!!!
        Da ich aus deinem anderen Thread jetzt weiss dass du ein iPhone nutzt wirst du dann ja bald auch auf das Problem stoßen: das iPhone geht, im Gegensatz zu Android Geräten, in den Deep Sleep Modus, wenn es längere Zeit keine Daten über WLAN empfängt, somit ist es dann über das Network Health Binding nicht mehr zu erkennen und schaltet den Presence Schalter auf aus.
        Es gibt irgendwo einen Thread, der mit einem nicht unerheblichen Aufwand dieses Problem umgeht, aber ich habe es noch nicht getestet.

        Gruß, Sigi

        Kommentar

        Lädt...
        X