devState-Fehler ? Logikbaum bei Anwesenheit

Begonnen von SGi, 31 März 2013, 19:17:54

Vorheriges Thema - Nächstes Thema

SGi

Hallo zusammen,

ich habe zwei Anfängerfragen:

1. Verhalten der FHEM-Oberfläche bei devStateIcons

Ich setze einen HM-3-fach Schaltsensor ein, um den Alarmanlagenstatus eines anderen Systems abzufragen und anzeigen zu können. Die Definition sieht etwa wie folgt aus:

define Alarmanlage CUL_HM 12345678
attr Alarmanlage devStateIcon unscharf:Restart scharf:Shutdown
attr Alarmanlage eventMap /open:unscharf/closed:scharf/

define Alarmstatus CUL_HM 87654321
attr Alarmstatus devStateIcon open:Restart closed:Shutdown
attr Alarmstatus eventMap /open:Bereit/closed:ALARM/

Wie man sieht, wird in Kanal 1 die eventMap-Bezeichnung für das Icon verwendet, in Kanal 2 jedoch nicht. Nur so aber werden die Zustände mit den roten und grünen Icons (Restart/Shutdown) korrekt angezeigt. Sobald ich bei Kanal 2 die eventMap-Events (statt open/closed) für die Auswertung des devStateIcons benutze, funktioniert das nicht mehr und es wird in der Web-GUI nur noch das Wort open/closed angezeigt. Das funktioniert reproduzierbar auch andersherum mit Kanal 1: wenn ich in Kanal 2 die eventMap-Keywords verwenden möchte, muß ich bei Kanal 1 open/closed verwenden statt unscharf/scharf, ansonsten fehlt dort das korrekte Icon.

Ich sehe aber nicht, was ich falsch mache, denn die Keywords aus den eventMaps funktionieren ja, aber nicht beide gleichzeitig.


2. Anwesenheit/Abwesenheit

Dieses Thema wurde ja in verschiedenen Threads schon angefasst, ich bin aber noch nicht so fit in PERL, daß ich das in FHEM auf die Reihe kriege:

Folgende Situation:  

Ich möchte eine globale Variable (Haus) mit "bewohnt" oer "unbewohnt" setzen, diese soll sich ergeben aus einer logischen Kombination aus Person1 und Person2
(Haus = "bewohnt", sobald Person1 = "anwesend" oder Person2 = "anwesend". Haus = "unbewohnt", sobald beide "abwesend")
Die Variablen sind alle als Dummys definiert, Person1 und Person2 bekomme ich per GPS-Ortung richtig im System als "anwesend" oder "abwesend" gesetzt.
EventMaps sind ebenfalls passend definiert.

Sobald niemand zu Hause ist, sollen verschiedene ebenfalls mit Bedingungen versehene Aktionen ausgeführt werden (Garage zumachen, falls Garage noch auf, Abwesenheitssimulation durch zeitbasierte Beleuchtungssteuerung, die jetzt schon unabhängig als "at"-Blöcke laufen usw))

Für mich gäbe es nach der Lektüre verschiedener Threads zwei denkbare Lösungsvarianten, die übersichtlich bleiben:

a) watchdog, der alle xx Minuten prüft, ob niemand zu Hause ist (also Haus = "unbewohnt"), dann Abarbeitung der möglichen Aktionen (auch an einzelne weitere Bedingungen geknüpft wie "Tor offen" oder "nach 18 Uhr"))  

b) eventbasierte Lösung mit notify (also prüfen, wenn sich der Status von Haus auf "unbewont" ändert) und dann wie bei a)                                
                                                                                                                         
                                                                                                                                                                    #
Alternativ könnte man natürlich jedes Eregnis per UND mit dem "Haus = bewohnt" verknüpfen, aber das wird dann sicherlich unübersichtlicher.
Zudem scheitert es bei mir schon daran, daß ich die Logikimplementation noch nicht geblickt habe. Variante b) würde ich mir so vorstellen

   define HausStatus_pruefen notify (Person1 | Person2) set Haus bewohnt

das will aber nicht...

Würde mich über einen logischen Rahmenkonstruktvorschlag freuen, der modular ausbaubar ist und vor allem möglichst wenig Systemlast verursacht, da FHEM nebenher auf einer FBox läuft...  


Sven
FHEM auf RasPi und FritzBox 7390 mit MAX! und HomeMatic