Hauptmenü

Bewegungsmelder Perl Modus

Begonnen von andre07, 27 April 2021, 16:22:52

Vorheriges Thema - Nächstes Thema

andre07

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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andre07

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"}}


Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andre07

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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andre07

werds gleich mal testen danke für den hinweis  :)

andre07

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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andre07

#9
Die Brightness vom Sensor steht auf 58 gerade geschaut  ;)
state weiterhin auf "initialized"

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andre07

#11
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

andre07

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

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andre07

Hab das so auch mit twilight getestet und der dürfte doch nicht ständig triggern
[?mytwilight:twilight_weather] < 70  :-\