Hallo
Möchte gern meine Bewegungsmelder auf Perl Modus umstellen
Das Beispiel aus der Commadref funktioniert leider bei mir nicht
DOIF {
if (["flur_bewegung:motion"] and [?19:00-05:00] ) {
fhem_set("Yeelight_flur on") if ([?Yeelight_flur:power] ne "on");
set_Exec("off",60,'fhem_set("Yeelight_flur off")');
}
}
Es passiert einfach gar nichts das Modul bleibt auf initialized und nichts passiert.
Andre
Zitat von: andre07 am 27 April 2021, 16:22:52
Hallo
Möchte gern meine Bewegungsmelder auf Perl Modus umstellen
Das Beispiel aus der Commadref funktioniert leider bei mir nicht
DOIF {
if (["flur_bewegung:motion"] and [?19:00-05:00] ) {
fhem_set("Yeelight_flur on") if ([?Yeelight_flur:power] ne "on");
set_Exec("off",60,'fhem_set("Yeelight_flur off")');
}
}
Es passiert einfach gar nichts das Modul bleibt auf initialized und nichts passiert.
Andre
Wenn nichts passiert, dann passen die Events nicht zu deiner Abfrage. Für eine konkrete Hilfe, musst du schon konkrete Events deines Bewegungsmelder hier liefern.
Es handelt sich um ein MQTT2 Device bei bewegung bekomme ich im reading occupancy ein true was ich ins state als motion schreibe
Internals:
.FhemMetaInternals 1
CID zigbee_0x00158d00015f2868
DEF zigbee_0x00158d00015f2868
DEVICETOPIC zigbee2mqtt/0x00158d00015f2868
FUUID 5fdcbc59-f33f-c2a9-a0e0-9a63b43731222bf0
FVERSION 10_MQTT2_DEVICE.pm:0.238430/2021-02-27
IODev MQTTServer
LASTInputDev MQTTServer
MQTTServer_MSGCNT 8
MQTTServer_TIME 2021-04-27 16:42:13
MSGCNT 8
NAME flur_bewegung
NR 663
STATE no_motion
TYPE MQTT2_DEVICE
.attraggr:
.attreocr:
.*
.attrminint:
.userReadings:
HASH(0x55ac1efdcae0)
HASH(0x55ac1efe84e0)
JSONMAP:
battery batteryPercent
voltage batterymV
READINGS:
2020-12-18 15:27:38 associatedWith MQTT2_zigbee_bridge
2020-12-18 15:29:03 attrTemplateVersion 20201208
2021-04-27 16:42:13 batteryPercent 100
2021-02-15 14:05:11 batteryVoltage 3.025
2021-04-27 16:42:13 batterymV 3025
2021-04-27 16:42:13 linkquality 144
2021-04-27 16:42:13 occupancy false
2021-04-27 16:42:13 state no_motion
Attributes:
DbLogExclude .*
IODev MQTTServer
alexaName bewegung
devStateIcon Motion..true:people_sensor Motion..false:motion_detector
devicetopic zigbee2mqtt/0x00158d00015f2868
event-on-change-reading .*
genericDeviceType motion
group Bewegung
icon people_sensor
imageLink /fhem/deviceimages/mqtt2/RTCGQ01LM.jpg
jsonMap battery:batteryPercent voltage:batterymV
model zigbee2mqtt_human_body_movement
readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
room MQTT2_DEVICE
stateFormat {
if(ReadingsVal("$name","occupancy",0) eq "true") {
sprintf("motion");;
} else {
sprintf("no_motion");;
}
}
userReadings batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000},state { if(ReadingsVal("$name","occupancy",0) eq "true") {sprintf("motion");;} else {sprintf("no_motion");; }
So funktioniert das bei mir bisher {if ( [?19:30-02:45] and ["flur_bewegung:motion"] and ["haustuer_bewegung:brightness"] < 80) {fhem_set"Yeelight_flur on-for-timer 180"}}
Also der Status im DOIF-Perlmodus ändert sich nicht von alleine. Den kann man mit set_State selber setzen.
Ob etwas ankommt, siehst du im DOIF an den Readings, die mit e_ beginnen.
Ist das dann so richtig oder wie ist das set_State zu setzen
DOIF {
if (["flur_bewegung:motion"] and [?19:00-05:00] ) {
fhem_set("Yeelight_flur on") if ([?Yeelight_flur:power] ne "on"); set_State("Licht eingeschalten");
set_Exec("off",60,'fhem_set("Yeelight_flur off")');
}
}
Andre
Zitat von: andre07 am 27 April 2021, 19:40:56
Ist das dann so richtig oder wie ist das set_State zu setzen
DOIF {
if (["flur_bewegung:motion"] and [?19:00-05:00] ) {
fhem_set("Yeelight_flur on") if ([?Yeelight_flur:power] ne "on"); set_State("Licht eingeschalten");
set_Exec("off",60,'fhem_set("Yeelight_flur off")');
}
}
Andre
zum Beispiel
werds gleich mal testen danke für den hinweis :)
Funktioniert soweit wenn ich jedoch die Helligkeit meines Bewegungsmelders abfrage
geht es wieder nicht
if (["keller_bewegung:motion"] and [sensor_h:brightness] < 80 ) {
fhem_set("kellerlicht on") if ([?kellerlicht:state] ne "on"); set_State("Licht eingeschalten");
set_Exec("off",90,'fhem_set("kellerlicht off")');
}
}
Andre
Zitat von: andre07 am 27 April 2021, 22:20:36
Funktioniert soweit wenn ich jedoch die Helligkeit meines Bewegungsmelders abfrage
geht es wieder nicht
if (["keller_bewegung:motion"] and [sensor_h:brightness] < 80 ) {
fhem_set("kellerlicht on") if ([?kellerlicht:state] ne "on"); set_State("Licht eingeschalten");
set_Exec("off",90,'fhem_set("kellerlicht off")');
}
}
Andre
Dann weißt du, dass es an der Helligkeit liegt. Die Ursache musst du jetzt herausfinden.
Die Brightness vom Sensor steht auf 58 gerade geschaut ;)
state weiterhin auf "initialized"
Zitat von: andre07 am 27 April 2021, 22:49:10
Die Brightness vom Sensor steht auf 58 gerade geschaut ;)
state weiterhin auf "initialized"
Das reicht nicht, er muss zum Zeitpunkt des Triggers unter 80 sein.
Also würde es erst am nächsten Tag triggern wenn es wieder dunkel wird
Andre
Es wurde leider kein trigger ausgelöst doif steht immer noch auf initialized
Habs jetzt so gelöst
{
if ([$SELF:nacht] and ["innen_bewegung:motion"]) {
fhem_set("kellerlicht on") if ([?kellerlicht:state] ne "on"); set_State("Licht ein");
set_Exec("off",90,'fhem_set("kellerlicht off")');
}
}
attr ... DOIF_Readings nacht: [mytwilight:twilight_weather] < 70,
tag: [mytwilight:twilight_weather] > 85
Mit dem anderen hat es nicht funktioniert
Das Problem wird sein, dass dein Helligkeitssensor ständig getriggert hat:
... [sensor_h:brightness] < 80
Ohne Trigger hätte es wahrscheinlich auch geklappt:
... [?sensor_h:brightness] < 80
Hab das so auch mit twilight getestet und der dürfte doch nicht ständig triggern
[?mytwilight:twilight_weather] < 70 :-\
Zitat von: andre07 am 28 April 2021, 22:55:16
Hab das so auch mit twilight getestet und der dürfte doch nicht ständig triggern
[?mytwilight:twilight_weather] < 70 :-\
Gepostet hattest du aber eine Version mit Trigger. Beim nächsten Mal postest du am besten list vom DOIF, sonst kann man nur raten, was das Problem ist.
Deine Lösung mit DOIF_Readings ist auf jeden Fall eine gute Alternative, vor allem wenn es funktioniert.
Diese Doifreadings gelten die nur innerhalb dieses DOIF und kann man Systemweit darauf zugreifen
Zitat von: andre07 am 29 April 2021, 11:05:24
Diese Doifreadings gelten die nur innerhalb dieses DOIF und kann man Systemweit darauf zugreifen
Es sind Reading, auf die man von überall zugreifen kann, sie produzieren aber keine Events im System, sondern triggern nur das eigene Device.