FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: andre07 am 27 April 2021, 16:22:52

Titel: Bewegungsmelder Perl Modus
Beitrag 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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 27 April 2021, 16:31:19
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.
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: andre07 am 27 April 2021, 17:01:45
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"}}

Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 27 April 2021, 17:27:40
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.
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag 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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 27 April 2021, 20:04:00
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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: andre07 am 27 April 2021, 20:15:56
werds gleich mal testen danke für den hinweis  :)
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag 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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 27 April 2021, 22:40:28
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.
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: andre07 am 27 April 2021, 22:49:10
Die Brightness vom Sensor steht auf 58 gerade geschaut  ;)
state weiterhin auf "initialized"
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 27 April 2021, 23:28:52
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.
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: andre07 am 28 April 2021, 11:38:40
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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: andre07 am 28 April 2021, 21:26:59
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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 28 April 2021, 22:14:41
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
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag 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  :-\
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 28 April 2021, 23:43:12
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.
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: andre07 am 29 April 2021, 11:05:24
Diese Doifreadings gelten die nur innerhalb dieses DOIF und kann man Systemweit darauf zugreifen
Titel: Antw:Bewegungsmelder Perl Modus
Beitrag von: Damian am 29 April 2021, 11:11:14
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.