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.