Manueller Eingriff in Jalousiesteuerung / Problem mit DOIF und NOTIFY

Begonnen von maxheadroom, 09 August 2015, 20:50:46

Vorheriges Thema - Nächstes Thema

maxheadroom

Hallo zusammen,

meine ersten Gehversuche in FHEM habe ich erfolgreich hinter mich gebracht und die ersten Lichter und Jalousien steuere ich nun automatisch.

Ein Thema bekomme ich aber nicht gelöst: Eine Jalousie steuere ich in Abhängigkeit der Wettervorhersage, der Uhrzeit und dem Status einer Dummy Variablen automatisch mit Hilfe eines DOIFs. Jedoch hätte ich die Funktion gerne so aufgesetzt, dass sobald im Laufe des Tages eine manuelle Betätigung des Tasters (Jalousienaktors) erfolgt, die Automatik (sprich der DOIF) für den Rest des Tages abgeschaltet wird und nur manuell gesteuert werden kann. Daher habe ich die bereits oben erwähnte Dummy Variable ManualOverride.WZ.Jalousie eingebaut. Das DOIF sieht wie folgt aus:

define Auto.WZ.Jalousie DOIF ([07:30-17:00] and [Wetter:fc1_high_c] >= 30 and [Wetter:code] >= 27 and [Wetter:code] <= 34 and [ManualOverride.WZ.Jalousie:state] eq 'automatic') (set WZ.Jalousie 100)
DOELSEIF ([07:30-17:00] and [Wetter:fc1_high_c] >= 27 and [Wetter:fc1_high_c] < 30 and [Wetter:code] >= 27 and [Wetter:code] <= 34 and [ManualOverride.WZ.Jalousie:state] eq 'automatic') (set WZ.Jalousie 60)
DOELSEIF ([17:00-7:00] and [ManualOverride.WZ.Jalousie:state] eq 'automatic') (set WZ.Jalousie off)


Meine Idee war die Dummy Variable durch ein NOTIFY zu ändern (auf den Zustand "manual"), wenn der Taster betätigt wird. Das funktioniert auch. Allerdings wird der NOTIFY sowohl durch den DOIF als auch manuelle Steuerungen über die FHEM Weboberfläche getriggert. Das NOTIFY sieht wie folgt aus:

define Manual.WZ.Jalousie NOTIFY WZ.Jalousie set ManualOverride.WZ.Jalousie manual

Wie muss ich ich das NOTIFY ändern, damit es nur auf manuelle Eingriffe reagiert?

Am frühen morgen stelle ich den Wert der Dummy Variablen per AT wieder auf "automatic" und die Befehle der Jalousie habe ich invertiert. Ich verwende im übrigen Homematic Aktoren.

Danke für eure Hilfe.

Ellert

Hat der Taster Readings, die es ermöglichen zwischen Tastendruck und set-Befehl zu unterscheiden? Wenn ja, dann würde ich so ein Reading zum triggern nehmen.

Otto123

Hi,

welchen Jalousie Aktor verwendest Du? Integrierte Tasten? Suche mal nach R-intKeyVisib damit kann man die Tasterschnittstelle sichtbar machen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

maxheadroom

Hatte nach meinem Urlaub erst jetzt geschafft zu antworten: Sorry.

Ich verwende einen Homematic HM-LC-Bl1PBU-FM (Unterputz Jalousien 1fach Schaltaktor). Ich habe mit "set ... regset intKeyVisib visib" die internen Readings sichtbar gemacht. Da gibt es natürlich jede Menge Zeug. Ich habe aber nichts gefunden, dass sich nur bei manuellem Tastendruck ändern würde.

Übersehe ich etwas:

CommandAc yes 26.08.15 13:07
D-firmware 42065 31.07.15 19:47
D-serialNr LEQ117**** 31.07.15 19:47
PairedTo 0x2BAB6D 26.08.15 13:07
R-confBtnTi permanent 30.07.15 20:57
R-driveDown 21.5 s 31.07.15 19:53
R-driveTurn 0.5 s 30.07.15 20:57
R-driveUp 23 s 31.07.15 19:54
R-intKeyVisib invisib 26.08.15 13:07
R-localResDi off 30.07.15 20:57
R-pairCentral 0x2BAB6D 30.07.15 20:57
R-refRunCou 0 30.07.15 20:57
R-self01-lgAc jmpToTarget 21.08.15 06:38
R-self01-lgBl refOff 21.08.15 06:38
R-self01-lgBl dlyOff 21.08.15 06:38
R-self01-lgBl dlyOff 21.08.15 06:38
R-self01-lgBl dlyOff 21.08.15 06:38
R-self01-lgBl rampOff 21.08.15 06:38
R-self01-lgBl on 21.08.15 06:38
R-self01-lgBl rampOff 21.08.15 06:38
R-self01-lgBl on 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt geLo 21.08.15 06:38
R-self01-lgCt 100 21.08.15 06:38
R-self01-lgCt 50 21.08.15 06:38
R-self01-lgDr direct 21.08.15 06:38
R-self01-lgM 0.4 s 21.08.15 06:38
R-self01-lgM on 21.08.15 06:38
R-self01-lgOf 0 s 21.08.15 06:38
R-self01-lgOf 0 21.08.15 06:38
R-self01-lgOf unused 21.08.15 06:38
R-self01-lgOf absolut 21.08.15 06:38
R-self01-lgO 0 s 21.08.15 06:38
R-self01-lgO 1 21.08.15 06:38
R-self01-lgO unused 21.08.15 06:38
R-self01-lgO absolut 21.08.15 06:38
R-self01-shA jmpToTarget 21.08.15 06:38
R-self01-shBl refOff 21.08.15 06:38
R-self01-shBl dlyOff 21.08.15 06:38
R-self01-shBl dlyOff 21.08.15 06:38
R-self01-shBl dlyOff 21.08.15 06:38
R-self01-shBl rampOff 21.08.15 06:38
R-self01-shBl on 21.08.15 06:38
R-self01-shBl rampOff 21.08.15 06:38
R-self01-shBl on 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC geLo 21.08.15 06:38
R-self01-shC 100 21.08.15 06:38
R-self01-shC 50 21.08.15 06:38
R-self01-shD direct 21.08.15 06:38
R-self01-sh unused 21.08.15 06:38
R-self01-shO 0 s 21.08.15 06:38
R-self01-shO 0 21.08.15 06:38
R-self01-shO unused 21.08.15 06:38
R-self01-shO absolut 21.08.15 06:38
R-self01-shO 0 s 21.08.15 06:38
R-self01-shO 1 21.08.15 06:38
R-self01-shO unused 21.08.15 06:38
R-self01-shO absolut 21.08.15 06:38
R-self02-lgAc jmpToTarget 21.08.15 06:38
R-self02-lgBl dlyOn 21.08.15 06:38
R-self02-lgBl refOn 21.08.15 06:38
R-self02-lgBl dlyOn 21.08.15 06:38
R-self02-lgBl dlyOn 21.08.15 06:38
R-self02-lgBl off 21.08.15 06:38
R-self02-lgBl rampOn 21.08.15 06:38
R-self02-lgBl off 21.08.15 06:38
R-self02-lgBl rampOn 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt geLo 21.08.15 06:38
R-self02-lgCt 100 21.08.15 06:38
R-self02-lgCt 50 21.08.15 06:38
R-self02-lgDr direct 21.08.15 06:38
R-self02-lgM 0.4 s 21.08.15 06:38
R-self02-lgM on 21.08.15 06:38
R-self02-lgOf 0 s 21.08.15 06:38
R-self02-lgOf 0 21.08.15 06:38
R-self02-lgOf unused 21.08.15 06:38
R-self02-lgOf absolut 21.08.15 06:38
R-self02-lgO 0 s 21.08.15 06:38
R-self02-lgO 1 21.08.15 06:38
R-self02-lgO unused 21.08.15 06:38
R-self02-lgO absolut 21.08.15 06:38
R-self02-shA jmpToTarget 21.08.15 06:38
R-self02-shBl dlyOn 21.08.15 06:38
R-self02-shBl refOn 21.08.15 06:38
R-self02-shBl dlyOn 21.08.15 06:38
R-self02-shBl dlyOn 21.08.15 06:38
R-self02-shBl off 21.08.15 06:38
R-self02-shBl rampOn 21.08.15 06:38
R-self02-shBl off 21.08.15 06:38
R-self02-shBl rampOn 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC geLo 21.08.15 06:38
R-self02-shC 100 21.08.15 06:38
R-self02-shC 50 21.08.15 06:38
R-self02-shD direct 21.08.15 06:38
R-self02-sh unused 21.08.15 06:38
R-self02-shO 0 s 21.08.15 06:38
R-self02-shO 0 21.08.15 06:38
R-self02-shO unused 21.08.15 06:38
R-self02-shO absolut 21.08.15 06:38
R-self02-shO 0 s 21.08.15 06:38
R-self02-shO 1 21.08.15 06:38
R-self02-shO unused 21.08.15 06:38
R-self02-shO absolut 21.08.15 06:38
R-sign off 30.07.15 20:57
R-statusInfo 2 s 30.07.15 20:57
R-statusInfo 1 s 30.07.15 20:57
R-transmitTr 6 30.07.15 20:57
RegL_00: 02:01 0A:2B 26.08.15 13:07
RegL_01: 08:00 09:00 26.08.15 13:07
deviceMsg 60 (to HMLA 26.08.15 09:00
level 60 26.08.15 09:00
motor stop:60 26.08.15 09:00
pct 60 26.08.15 09:00
powerOn 42216,78493 31.07.15 18:50
recentStateT info 26.08.15 09:00
state 60 26.08.15 09:00
timedOn off 26.08.15 09:00


Btw, wie blende ich die Sachen wieder aus? mit dem logischen erscheinendne "set ... regset intKeyVisib invisib" geht es jedenfalls nicht.


Otto123

Zitat von: maxheadroom am 26 August 2015, 13:27:15
Btw, wie blende ich die Sachen wieder aus? mit dem logischen erscheinendne "set ... regset intKeyVisib invisib" geht es jedenfalls nicht.
Der einfache Teil der Frage 8) set <devicename> clear readingskannst Du prima in der GUI machen/klicken.
Die einmal gelesenen Readings bleiben erhalten, auch wenn sie nicht mehr übertragen werden.

self01 und self02 sind die Readings die sich auf die internen Tasten beziehen.

Der Aktor unterscheidet für jeden gepeerten Sender was er tun soll. Der Sender sendet einen trigger, der Aktor wertet ihn aus.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

maxheadroom

Hallo zusammen,

ich habe mich vor allem mit Hilfe des Einsteigermanuals noch mal intensiver mit den HM Devices beschäftigt. Dass war für das Verständnis sehr hilfreich, allerdings habe ich immer noch keine Lösung für das Problem.

Mein Verständnis bis hierher:

Die Tasten (als Sensor) sind mit dem eigentlichen Aktor gepeered (und nicht gepaired  ;) ). Es handelt sich um zwei interne Peers (self1 und self2).

Das kann ich den sowohl den Readings

peerList self01,self02, 2015-08-27 13:15:57

als auch den Attributes entnehmen.

peerIDs 00000000,30C52A01,30C52A02 deleteattr

Meine Hoffnung war, dass ich diese internen Peers irgendwie aus den Messages herauslesen kann, und somit den "Verursacher" für eine die Schaltung der Jalousie identifizieren kann. Ich hatte mir speziell die beiden Internals HMLAN1_RAWMSG und lastMsg angeschaut.


DEF 30C52A
HMLAN1_MSGCNT 108
HMLAN1_RAWMSG E30C52A,0000,0EF126AE,FF,FFD1,A9A41030C52A2BAB6D0601C800
HMLAN1_RSSI -47
HMLAN1_TIME2015-08-28 17:00:18
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 108
NAME WZ.Jalousie
NR 32
NTFY_ORDER 50-WZ.Jalousie
STATE off
TYPE CUL_HM
lastMsg No:A9 - t:10 s:30C52A d:2BAB6D 0601C800
peerList self01,self02
protLastRcv 2015-08-28 17:00:18
protSnd 108 last_at:2015-08-28 17:00:18
protState CMDs_done
rssi_HMLAN1 avg:-49.53 cnt:28 min:-50 lst:-50 max:-48
rssi_at_HMLAN1 avg:-47.6 lst:-47 min:-49 max:-45 cnt:108


Allerdings ist, soweit ich dass sehe, der "Verursacher" hiermit nicht zu ermitteln. Ich finde das Device (30C52A) und den HMLAN (2BAB6D), als auch den den Stand in Prozent der Jalousie (C8,  = 200%, wenn ich die HexDez Zahl übersetze).

Hat noch irgendjemand eine Idee? Bin ich wirklich der einzige, der sich dafür interessiert, ob der Aktor manuell oder durch einen FHEM Aufruf bedient wurde?

Für Hilfe bin ich weiterhin dankbar.



Otto123

Hallo,

ich glaube über die Readings bekommst Du das nicht unterschieden, ob der Aktor von FHEM oder lokal betätigt wurde.

Ich habe dazu noch zwei Ansätze:
Du könntest in Deinem DOIF noch für einen kurzen Zeitraum einen Dummy setzen, der das notify sozusagen ins leere laufen lässt. Ich meine Du hast den Befehl per FHEM abgesetzt, Du weißt, dass der nächste Event (genauer gesagt immer ein Serie schau Dir das im Eventmonitor an) durch Dich (FHEM) erzeugt  wurde.
Du könntest mit den Prozenten der Rolläden operieren. z.B. statt 100 99% setzen (merkt man nicht) und dann muss alles außer 60 und 99% wohl manuell passiert sein. Die Chance dass einer manuell 60 oder 99% trifft ist unwahrscheinlich. Ich mache das bei mir an einigen Stellen so. Um die Rollos nicht unnötig anzusteueren wenn sie durch einen andere Routine schon in Position sind.
Beispiel, mache alle Rollos nur hoch wenn sie nicht schon oben sind:
(set Rollo.*:FILTER=STATE!=auf auf

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz