HI!
Ich habe eine Verständnisfrage die mir hoffentlich jemand in einfachen Worten erklären kann...
Wo ist der Unterschied zwischen
[DruckluftDummy:"on"] und [DruckluftDummy] eq "on"?
Wann wird was wie ausgewertet? Komme irgendwie nicht ganz klar... ::)
Kann man das in einfache Worte fassen?
Vielen Dank!
Zitat von: misux am 10 Mai 2022, 18:36:39
HI!
Ich habe eine Verständnisfrage die mir hoffentlich jemand in einfachen Worten erklären kann...
Wo ist der Unterschied zwischen
[DruckluftDummy:"on"] und [DruckluftDummy] eq "on"?
Wann wird was wie ausgewertet? Komme irgendwie nicht ganz klar... ::)
Kann man das in einfache Worte fassen?
Vielen Dank!
Der erste Ausdruck ist ein reiner Ereignistrigger, der nur wahr ist, wenn das Ereignis eintritt, sonst ist es nicht wahr.
Der zweite Ausdruck ist eine Abfrage des Zustands mit einem Trigger, der Ausdruck ist ebenfalls wahr, wenn irgend Ereignis von DruckluftDummy eintritt und der Status von DruckluftDummy "on" ist.
Der Unterschied macht sich insb. bei logischen Verknüpfungen z. B. mit and bemerkbar:
[DruckluftDummy:"on"] and [bla:state] eq "on"
Dieser Ausdruck ist wahr wenn DruckluftDummy ein Ereignis "on" sendet und Status von bla "on" ist.
Wenn aber bla "on" sendet, ist [DruckluftDummy:"on"] nicht wahr und damit ist die und-Verknüpfung insgesamt nicht wahr.
Dagegen:
[DruckluftDummy] eq "on" and [bla:state] eq "on"
Dieser Ausdruck ist ebenfalls wahr, wenn DruckluftDummy "on" sendet und Status von bla "on" ist.
Allerdings ist der Ausdruck auch wahr, wenn bla "on" sendet und DurkluftDummy auf "on" steht.
PS
Um es genau zu nehmen, müsste der Ereignistrigger [DruckluftDummy:"^on$"] lauten, denn sonst reagiert er auf alle Ereignisse, bei denen irgendwo im Ereignis "on" vorkommt, z. B. "von"
Klasse! Vielen Dank für die Erläuterung!
Ich frage weil ich manchmal ein Problem habe wo ich noch keine Lösung finde für....
Ich habe ein recht einfaches DOIF welches mir einen Dummy (Haus) auf Absent oder Present setzen soll. Auf diesen Dummy greift dann ein anderes DOIF welches meinen Rolladen steuert in Abhängigkeit von dem Dummy (Haus) auf oder zu gehen soll..
Das einfache DOIF soll den "Haus" Dummy nach 900sek auf absent setzen wenn beide Handys absent sind.
Problem ist das es irgendwie manchmal irgendwie nicht klappt.... Entweder er hält die 900sek nicht ein oder er setzt den Timer nicht aus sobald in der Zeit sich wieder ein Handy auf "present" setzt...
Und deshalb habe ich gedacht das es vielleicht daran liegt...
Oder hat einer eine Idee wo mein Fehler/Problem sein könnte...
([DavidHandy] eq "absent" and [ChrissiHandy] eq "absent" and [?Haus] eq "present")
(set Haus absent)
DOELSEIF
([DavidHandy] eq "present" and $cmd == 1)
(set Haus present)
DOELSEIF
([ChrissiHandy] eq "present" and $cmd == 1)
(set Haus present)
attribute:
do: always
wait: 900:0:0
Die überprüfung ob das Handy Present ist geschieht alle 30 Sek. mit dem Presence Modul.
ZitatIch habe ein recht einfaches DOIF welches mir einen Dummy (Haus) auf Absent oder Present setzen soll. Auf diesen Dummy greift dann ein anderes DOIF welches meinen Rolladen steuert in Abhängigkeit von dem Dummy (Haus) auf oder zu gehen soll..
Hast du dir schon mal Residents https://fhem.de/commandref_DE.html#RESIDENTS (https://fhem.de/commandref_DE.html#RESIDENTS) angesehen?
Gruß
Detlef
Hallööchen! Sorry, ich muss das nochmal hochschieben...
Wie triggere ich denn auf ein Event eines userreadings?
Ich habe also einen HM 8 Kanal Sensor :
LIST:
Internals:
CFGFN
DEF PEQ0106924
FUUID 6516c6a5-f33f-e7ed-3532-d226df0ed7251408
IODev d_ccu
NAME 8KSensorBuero
NR 850766
STATE open
TYPE HMCCUDEV
ccuaddr PEQ0106924
ccudevstate active
ccuif BidCos-RF
ccuname 8KSensorBuero
ccurolectrl KEY
ccurolestate SHUTTER_CONTACT
ccusubtype HM-MOD-EM-8
ccutype HM-MOD-EM-8
eventCount 44
firmware 1.1
readonly no
OLDREADINGS:
READINGS:
2023-09-29 15:55:33 1.LOWBAT ok
2023-09-29 15:55:33 1.STATE open
2023-09-29 15:55:33 2.LOWBAT ok
2023-09-29 15:55:33 2.STATE closed
2023-09-29 15:55:33 3.LOWBAT ok
2023-09-29 15:55:33 3.STATE open
2023-09-29 15:55:33 4.LOWBAT ok
2023-09-29 15:55:33 4.STATE open
2023-09-29 15:55:33 5.PRESS_SHORT pressed
2023-09-29 15:55:33 6.PRESS_SHORT pressed
2023-09-29 15:55:33 7.PRESS_SHORT pressed
2023-09-29 15:55:33 8.PRESS_SHORT pressed
2023-09-29 15:55:33 SENSOR_1_Heizung open
2023-09-29 15:55:33 SENSOR_2_Tor closed
2023-09-29 15:55:33 SENSOR_3_WasserKeller open
2023-09-29 15:55:33 SENSOR_4_WasserKueche open
2023-09-29 15:55:33 activity alive
2023-09-29 15:55:33 battery ok
2023-09-29 15:55:33 control pressed
2023-09-29 15:55:33 devstate ok
2023-09-29 15:55:33 hmstate open
2023-09-29 15:55:33 pressed pressed
2023-09-29 15:55:33 rssidevice -255
2023-09-29 15:55:33 rssipeer -53
2023-09-29 15:55:33 sign off
2023-09-29 15:55:33 state open
hmccu:
channels 9
detect 3
devspec PEQ0106924
forcedev 0
nodefaults 0
role 0:MAINTENANCE,1:SHUTTER_CONTACT,2:SHUTTER_CONTACT,3:SHUTTER_CONTACT,4:SHUTTER_CONTACT,5:KEY,6:KEY,7:KEY,8:KEY
setDefaults 0
cmdlist:
get
set press:noArg pressLong:noArg off:noArg on:noArg
control:
chn 5
dpt PRESS_SHORT
dp:
0.AES_KEY:
VALUES:
NVAL 0
ONVAL 0
OSVAL off
OVAL 0
SVAL off
VAL 0
0.CONFIG_PENDING:
VALUES:
NVAL false
ONVAL false
OSVAL false
OVAL false
SVAL false
VAL false
0.DEVICE_IN_BOOTLOADER:
VALUES:
NVAL false
ONVAL false
OSVAL false
OVAL false
SVAL false
VAL false
0.LOWBAT:
VALUES:
NVAL false
ONVAL false
OSVAL ok
OVAL false
SVAL ok
VAL false
0.RSSI_DEVICE:
VALUES:
NVAL -255
ONVAL -255
OSVAL -255
OVAL 1
SVAL -255
VAL 1
0.RSSI_PEER:
VALUES:
NVAL -53
ONVAL -53
OSVAL -53
OVAL 203
SVAL -53
VAL 203
0.STICKY_UNREACH:
VALUES:
NVAL false
ONVAL false
OSVAL false
OVAL false
SVAL false
VAL false
0.UNREACH:
VALUES:
NVAL false
ONVAL false
OSVAL alive
OVAL false
SVAL alive
VAL false
0.UPDATE_PENDING:
VALUES:
NVAL false
ONVAL false
OSVAL false
OVAL false
SVAL false
VAL false
1.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
1.CHANNEL_FUNCTION:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
1.LOWBAT:
VALUES:
NVAL 0
ONVAL 0
OSVAL ok
OVAL 0
SVAL ok
VAL 0
1.MSG_FOR_POS_A:
MASTER:
NVAL 1
ONVAL 1
OSVAL 1
OVAL 1
SVAL 1
VAL 1
VALUES:
1.MSG_FOR_POS_B:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
1.STATE:
VALUES:
NVAL 1
ONVAL 1
OSVAL open
OVAL 1
SVAL open
VAL 1
1.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
2.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
2.CHANNEL_FUNCTION:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
2.LOWBAT:
VALUES:
NVAL 0
ONVAL 0
OSVAL ok
OVAL 0
SVAL ok
VAL 0
2.MSG_FOR_POS_A:
MASTER:
NVAL 1
ONVAL 1
OSVAL 1
OVAL 1
SVAL 1
VAL 1
VALUES:
2.MSG_FOR_POS_B:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
2.STATE:
VALUES:
NVAL 0
ONVAL 0
OSVAL closed
OVAL 0
SVAL closed
VAL 0
2.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
3.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
3.CHANNEL_FUNCTION:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
3.LOWBAT:
VALUES:
NVAL 0
ONVAL 0
OSVAL ok
OVAL 0
SVAL ok
VAL 0
3.MSG_FOR_POS_A:
MASTER:
NVAL 1
ONVAL 1
OSVAL 1
OVAL 1
SVAL 1
VAL 1
VALUES:
3.MSG_FOR_POS_B:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
3.STATE:
VALUES:
NVAL 1
ONVAL 1
OSVAL open
OVAL 1
SVAL open
VAL 1
3.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
4.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
4.CHANNEL_FUNCTION:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
4.LOWBAT:
VALUES:
NVAL 0
ONVAL 0
OSVAL ok
OVAL 0
SVAL ok
VAL 0
4.MSG_FOR_POS_A:
MASTER:
NVAL 1
ONVAL 1
OSVAL 1
OVAL 1
SVAL 1
VAL 1
VALUES:
4.MSG_FOR_POS_B:
MASTER:
NVAL 2
ONVAL 2
OSVAL 2
OVAL 2
SVAL 2
VAL 2
VALUES:
4.STATE:
VALUES:
NVAL 1
ONVAL 1
OSVAL open
OVAL 1
SVAL open
VAL 1
4.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
5.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
5.CHANNEL_FUNCTION:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
5.LONG_PRESS_TIME:
MASTER:
NVAL 0.400000
ONVAL 0.400000
OSVAL 0.4
OVAL 0.400000
SVAL 0.4
VAL 0.400000
VALUES:
5.PRESS_SHORT:
VALUES:
NVAL 1
ONVAL 1
OSVAL pressed
OVAL 1
SVAL pressed
VAL 1
5.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
6.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
6.CHANNEL_FUNCTION:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
6.LONG_PRESS_TIME:
MASTER:
NVAL 0.400000
ONVAL 0.400000
OSVAL 0.4
OVAL 0.400000
SVAL 0.4
VAL 0.400000
VALUES:
6.PRESS_SHORT:
VALUES:
NVAL 1
ONVAL 1
OSVAL pressed
OVAL 1
SVAL pressed
VAL 1
6.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
7.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
7.CHANNEL_FUNCTION:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
7.LONG_PRESS_TIME:
MASTER:
NVAL 0.400000
ONVAL 0.400000
OSVAL 0.4
OVAL 0.400000
SVAL 0.4
VAL 0.400000
VALUES:
7.PRESS_SHORT:
VALUES:
NVAL 1
ONVAL 1
OSVAL pressed
OVAL 1
SVAL pressed
VAL 1
7.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
8.AES_ACTIVE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
8.CHANNEL_FUNCTION:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
8.LONG_PRESS_TIME:
MASTER:
NVAL 0.400000
ONVAL 0.400000
OSVAL 0.4
OVAL 0.400000
SVAL 0.4
VAL 0.400000
VALUES:
8.PRESS_SHORT:
VALUES:
NVAL 1
ONVAL 1
OSVAL pressed
OVAL 1
SVAL pressed
VAL 1
8.TRANSMIT_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
d.DEVICE_LED_MODE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
d.LOCAL_RESET_DISABLE:
MASTER:
NVAL 0
ONVAL 0
OSVAL 0
OVAL 0
SVAL 0
VAL 0
VALUES:
d.LOW_BAT_LIMIT:
MASTER:
NVAL 0.000000
ONVAL 0.000000
OSVAL 0.0
OVAL 0.000000
SVAL 0.0
VAL 0.000000
VALUES:
d.TRANSMIT_DEV_TRY_MAX:
MASTER:
NVAL 3
ONVAL 3
OSVAL 3
OVAL 3
SVAL 3
VAL 3
VALUES:
roleCmds:
get:
set:
off:
channel 5
role KEY
subcount 1
syntax V:PRESS_SHORT:1
usage off
subcmd:
000:
args 1
dpt PRESS_SHORT
fnc
max 1
min 0
parname PRESS_SHORT
partype 3
ps VALUES
scn 000
unit
on:
channel 5
role KEY
subcount 1
syntax V:PRESS_SHORT:1
usage on
subcmd:
000:
args 1
dpt PRESS_SHORT
fnc
max 1
min 0
parname PRESS_SHORT
partype 3
ps VALUES
scn 000
unit
press:
channel 5
role KEY
subcount 1
syntax V:PRESS_SHORT:1
usage press
subcmd:
000:
args 1
dpt PRESS_SHORT
fnc
max 1
min 0
parname PRESS_SHORT
partype 3
ps VALUES
scn 000
unit
pressLong:
channel 5
role KEY
subcount 1
syntax V:PRESS_LONG:1
usage pressLong
subcmd:
000:
args 1
dpt PRESS_LONG
fnc
max 1
min 0
parname PRESS_LONG
partype 3
ps VALUES
scn 000
unit
state:
chn 1
dpt STATE
Attributes:
cmdIcon press:taster
event-on-change-reading Heizung, Tor, WasserKeller, WasserKueche
event-on-update-reading .*
userReadings SENSOR_1_Heizung { ReadingsVal("8KSensorBuero","1.STATE",0) },
SENSOR_2_Tor { ReadingsVal("8KSensorBuero","2.STATE",0) },
SENSOR_3_WasserKeller { ReadingsVal("8KSensorBuero","3.STATE",0) },
SENSOR_4_WasserKueche { ReadingsVal("8KSensorBuero","4.STATE",0) }
webCmd press
Dort habe ich mir 4 Userreadings erstellt die die Kanäle 1-4 abbilden...
Nun würde ich gerne so:
[8KSensorBuero:"open"]
trioggern, aber auf das Userreading "SENSOR_2_Tor"
Ich habe es so getestet:
([8KSensorBuero:SENSOR_2_Tor "open"] and [?Haus] eq "present" and (![?04:00-04:45]) and (![?05:15-06:20]) and (![?07:10-07:35]))
(set OG_Schlafzimmer_ECHO speak "Achtung, das Tor wurde geöffnet")
Funktioniert aber nicht...
Irgendwie bin ich zu doof...
Der Eventmonitor für das 8KSensorBuero schmeist mir folgendes raus:
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero 2.LOWBAT: ok
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero 2.STATE: open
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero devstate: ok
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero hmstate: open
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero SENSOR_1_Heizung: open
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero SENSOR_2_Tor: open
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero SENSOR_3_WasserKeller: open
2023-09-29 16:16:55 HMCCUDEV 8KSensorBuero SENSOR_4_WasserKueche: open
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero 2.LOWBAT: ok
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero 2.STATE: closed
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero devstate: ok
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero hmstate: open
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero SENSOR_1_Heizung: open
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero SENSOR_2_Tor: closed
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero SENSOR_3_WasserKeller: open
2023-09-29 16:17:13 HMCCUDEV 8KSensorBuero SENSOR_4_WasserKueche: open
HA!
Selbst ist der Mann... naja... nach langer sucherei...
[8KSensorBuero:"^SENSOR_2_Tor:.open$"]
So sollte es heißen der Gerät!
Leider wäre ich mit hilfe der WiKi EVENT Auswertung (https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events) nicht weiter gekommen...
Denn da sind so details die ich aus der Wiki nicht rauslesen konnte... Wie der "Punkt" vorm open...
Aber so eghts!
8)
Zitat von: misux am 29 September 2023, 19:01:44HA!
Selbst ist der Mann... naja... nach langer sucherei...
[8KSensorBuero:"^SENSOR_2_Tor:.open$"]
So sollte es heißen der Gerät!
Leider wäre ich mit hilfe der WiKi EVENT Auswertung (https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events) nicht weiter gekommen...
Denn da sind so details die ich aus der Wiki nicht rauslesen konnte... Wie der "Punkt" vorm open...
Aber so eghts!
8)
Leerzeichen hätte es auch getan ;)
Puh... Das habe ich nicht gewusst und hätte ich es gesehen dann hätte ich das Leerzeichen bestimmt weg gemacht :))
Irgendwie sieht ein Leerzeichen immer "falsch" aus... ::) Dann lieber ein anderes Zeichen...
Zitat von: misux am 01 Oktober 2023, 07:54:08Puh... Das habe ich nicht gewusst und hätte ich es gesehen dann hätte ich das Leerzeichen bestimmt weg gemacht :))
Irgendwie sieht ein Leerzeichen immer "falsch" aus... ::) Dann lieber ein anderes Zeichen...
Das ist auch so bei einem notify, beim DOIF kannst du den Event-String so übernehmen wie er ist, weil er durch Anführungszeichen eindeutig abgegrenzt werden kann.