FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: FunkOdyssey am 07 August 2015, 16:45:18

Titel: DOIF, Geofancy und Roommate
Beitrag von: FunkOdyssey am 07 August 2015, 16:45:18
Sorry, aber ich konnte im Forum nichts zum folgenden Thema finden.:

Ich habe derzeit für jedes Geofancy-Endgerät ein Notify in folgender Form:

geofancy:currLoc_Jens.* set rr_Jens location $EVTPART1

Alle diese Dinge wollte ich nun in einem DOIF unterbringen.

([geofancy:currLoc_Jens])
(set rr_Jens location [geofancy:currLoc_Jens])
DOELSEIF ([geofancy:currLoc_Claudia])
(set rr_Claudia location [geofancy:currLoc_Claudia])


Kann mir jemand einen Tipp geben, wie der Vergleich aussehen muss? Muss ich für jede Lokation einen eigenen Vergleich machen? Im obigen Code fehlt ja quasi der Vergleich. Oder kann ich im DOIF evtl. sogar mit "$EVTPART1" arbeiten?
Titel: Antw:DOIF, Geofancy und Roommate
Beitrag von: Damian am 07 August 2015, 18:53:52
Zitat von: FunkOdyssey am 07 August 2015, 16:45:18
Sorry, aber ich konnte im Forum nichts zum folgenden Thema finden.:

Ich habe derzeit für jedes Geofancy-Endgerät ein Notify in folgender Form:

geofancy:currLoc_Jens.* set rr_Jens location $EVTPART1

Alle diese Dinge wollte ich nun in einem DOIF unterbringen.

([geofancy:currLoc_Jens])
(set rr_Jens location [geofancy:currLoc_Jens])
DOELSEIF ([geofancy:currLoc_Claudia])
(set rr_Claudia location [geofancy:currLoc_Claudia])


Kann mir jemand einen Tipp geben, wie der Vergleich aussehen muss? Muss ich für jede Lokation einen eigenen Vergleich machen? Im obigen Code fehlt ja quasi der Vergleich. Oder kann ich im DOIF evtl. sogar mit "$EVTPART1" arbeiten?

Das Thema Generalisierung in DOIF befindet sich noch in der Eruierungsphase. Z. Zt. muss man einzeln abfragen.

Gruß

Damian
Titel: Antw:DOIF, Geofancy und Roommate
Beitrag von: FunkOdyssey am 07 August 2015, 19:00:21
Schön zu hören, dass ich dann wenigstens nichts falsch gemacht habe.
Man traut sich ja manchmal gar nicht, da man die Devs nicht mit RTFM-Fragen nerven möchte. :-)
Titel: Antw:DOIF, Geofancy und Roommate
Beitrag von: Loredo am 09 August 2015, 11:24:26
Ich bin gerade dabei zu testen, wie ein Roommate Controller (so nenne ich meine DOIF's oft) für ROOMMATE aussehen kann.
Ohne die Generalisierung braucht man dann natürlich einen für jeden Bewohner, aber das get auch und ggf. hat man ja auch neben GEOFANCY noch andere Erkennungsmetoden parallel und je nach Bewohner unterschiedlich. Da ist ein Controller pro Bewohner ohnehin übersichtlicher.


So sieht mein Controller aktuell aus:



define di_rr_Julian_controller DOIF (
[geofancy:currLoc_Julian] eq "home" and
(
[?di_rr_Julian_controller:state] ne "underway" or
(
[?di_rr_Julian_controller:state] eq "underway" and
[?di_rr_Julian_controller:state:sec] >= 60
)
)
)
(
set rr_Julian location [geofancy:currLoc_Julian]
)


DOELSEIF
(
[geofancy:currLoc_Julian] eq "home" and
(
[?di_rr_Julian_controller:state] ne "underway" or
(
[?di_rr_Julian_controller:state] eq "underway" and
[?di_rr_Julian_controller:state:sec] < 60
)
)
)
(
set rr_Julian location [geofancy:currLoc_Julian]
)


DOELSEIF
(
[geofancy:currLoc_Julian] eq "underway" and
(
[?di_rr_Julian_controller:state] ne "home" or
(
[?di_rr_Julian_controller:state] eq "home" and
[?di_rr_Julian_controller:state:sec] >= 60
)
)
)
(
set rr_Julian location [geofancy:currLoc_Julian]
)


DOELSEIF
(
[geofancy:currLoc_Julian] eq "underway" and
(
[?di_rr_Julian_controller:state] ne "home" or
(
[?di_rr_Julian_controller:state] eq "home" and
[?di_rr_Julian_controller:state:sec] < 60
)
)
)
(
set rr_Julian location [geofancy:currLoc_Julian]
)


DOELSEIF
(
[geofancy:currLoc_Julian] ne "home" and
[geofancy:currLoc_Julian] ne "underway"
)
(
set rr_Julian location [geofancy:currLoc_Julian]
)


DOELSE




Diese Attribute sind gesetzt:



attr di_rr_Julian_controller alias Automation: Residents Controller Julian
attr di_rr_Julian_controller cmdState home|homeDelay|underway|underwayDelay|others
attr di_rr_Julian_controller do always
attr di_rr_Julian_controller event-on-change-reading state
attr di_rr_Julian_controller wait 0:120:0:120:0



Wie man vielleicht sieht habe ich dabei versucht kurzfristig sich verändernde Meldungen von den Apps zu entprellen (kommt vor, wenn man sich im Randbereich aufhält oder nur mit dem Auto vorbeifährt). Das ist noch in der Testphase, bisher funktioniert es ok.