[gelöst] Pushover - RCV TIMEOUT - Luftentfeuchter

Begonnen von pallago, 09 Oktober 2022, 11:57:44

Vorheriges Thema - Nächstes Thema

pallago

Hallo zusammen,
ich habe eine Frage zum Pushover. Pushover habe ich bereits für einige Meldungen implementiert, bspw. zu niedriger Batteriestand, Temperatur unterhalb eines Grenzwertes etc. Das funktioniert auch wunderbar. Nun möchte ich eine Pushmitteilung auch für meine DOIF des Luftentfeuchters (https://forum.fhem.de/index.php/topic,129483.msg1237693.html#msg1237693) implementieren. Dazu habe ich eine Abfrage über einen Sensor (MQTT2_lora_node05_module01) gemacht, falls der Wert des Sensors (up_uplink_message_decoded_payload_relative_humidity_2) überhalb eines Grenzwertes liegt, so schalte den Luftentfeuchter ein und sende eine Nachricht. Ebenfalls soll er eine Nachricht senden, wenn der Wert des Sensors unterhalb des Grenzwertes liegt. Zum Ausprobieren, schalte ich ein Licht an, damit der Luftentfeuchter nicht immer ein-und ausgeschaltet wird.


Das DOIF schaut wie folgt aus

([MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2] >[di_Keller_Entfeuchten:Grenzwert])
{my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $lstat = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'status', '');
my $lsoll = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'humiditySetpoint', '');
my $luefter = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'fanSpeed', '');
my $modus = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'mode', '');
my $message = "empty";
if ($lstat eq "online"){
fhem ("set Wohnzimmer_Halogen on");
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist online. Ich schalte ihn nun ein. Die Einstellungen sind: \\n Luffeuchtigkeit SOLL: $lsoll \\n Lüftergeschwindigkeit: $luefter \\n Modus: $modus'");
}
elsif ($lstat eq "offline"){
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber OFFLINE. Checke die Stromzufuhr - ShellyPlugS1!'");;
}
else{
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber weder online noch offline. Systemerror!'");;
}
}
DOELSE
{if (ReadingsVal('Wohnzimmer_Halogen', 'state', '') eq "on"){
fhem ("set Wohnzimmer_Halogen off");
my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $delay = ReadingsVal('di_Keller_Entfeuchten', 'Verzoegerung', '');
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller liegt die Luftfeuchtigkeit nun bei $hum \% (Grenzwert: $thr \%). Ich schalte den Luftentfeuchter in $delay Sekunden aus.'");
}
}


Für die Vollständigkeit noch ein paar Attribute

userReadings: Verzoegerung 10, Grenzwert 60
wait: 0:[di_Keller_Entfeuchten:Verzoegerung]
webCmd: initialize:disable




Wenn ich nun den Grenzwert di_Keller_Entfeuchten:Grenzwert nun manuell ändere, bspw. auf 60, so erhalte ich eine Pushnachricht, je nachdem ob der Wert des Sensors über- oder unterhalb des Grenzwertes liegt. Wenn ich aber nun das reading des Sensors ändere mit

setreading MQTT2_lora_node05_module01 up_uplink_message_decoded_payload_relative_humidity_2 59
setreading MQTT2_lora_node05_module01 up_uplink_message_decoded_payload_relative_humidity_2 62

so erhalte ich keine Pushnachricht. Das Licht wird aber richtig geschaltet, d.h. das DOIF wird ausgeführt. Ich habe nun in global das verbose auf 4 gestellt und beobachte die log Datei auf dem raspberry mit

tail -n 20 /opt/fhem/log/fhem-2022-10.log -f | grep -i Push


Dabei mache ich folgende Beobachtung: Wenn ich den Grenzwert manuell setze, so sehe ich, dass die Nachricht erfolgreich gepusht wird:

2022.10.09 11:22:43 4: Pushover Pushnachricht: REQ messages.json/message=AUS&title=Keller&device=iphoneAB_xyz&token=yyy&user=xxx
2022.10.09 11:22:43 4: IP: api.pushover.net -> 137.220.59.207
2022.10.09 11:22:51 4: https://api.pushover.net:443/1/messages.json: HTTP response code 200
2022.10.09 11:22:51 4: Pushover Pushnachricht: RCV messages.json/message=AUS&title=Keller&device=iphoneAB_xyz&token=yyy&user=xxx



Wenn ich den Wert des readings (Wert des Sensors) ändere, so kommt ein RCV TIMEOUT

2022.10.09 11:23:13 4: Pushover Pushnachricht: REQ messages.json/device=iphoneAB_xyz&message=EIN&title=Keller&user=xxx&token=yyy
2022.10.09 11:23:13 4: IP: api.pushover.net -> 137.220.59.207
2022.10.09 11:23:21 4: Pushover Pushnachricht: RCV TIMEOUT messages.json/device=iphoneAB_xyz&message=EIN&title=Keller&user=xxx&token=yyy



Das ist reproduzierbar. Hat da jemand eine Idee?

pallago

Update

Ich habe ein notify geschrieben mit dem gleichen Ziel: eine Pushnachricht zu versenden. Hier tritt ebenfalls dasselbe Problem auf: Sobald ich auf das reading MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2 triggere, erhalte ich einen RCV Timeout. Wenn ich hingegen auf den Grenzwert di_Keller_Entfeuchten:Grenzwert triggere, bekomme ich die Pushnachricht.
Nun habe ich mir mal die CPU Last angeschaut, es sind immer 100% beim Readingsetzen von MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2. Diese CPU Last liegt für ca. 10 Sekunden bei 100%. Ich nehme an, dass die Pushnachricht bzw. deren Antwort einfach nicht bedient werden kann. Warum für ein Readingsetzen jedoch so viel Rechenpower benötigt wird, leuchtet mir noch nicht ein. Die ganzen UserReadings habe ich mal gelöscht - jedoch ohne Änderung.... ich suche mal weiter.

pallago

Ok, die Lösung des Problems war sehr simpel. Ich baue einfach ein bzw. zwei (für den DOELSE-Fall) ausreichende(s) Delay(s) zwischen dem Lesen der Variablen und dem Befehl die Pushnachricht zu senden ein. Außerdem war noch ein Denkfehler in der Nachricht für den DOELSE Fall. Diese wird natürlich auch nur verzögert gesendet. Deshalb hier nun meine Lösung (schön ist sie zwar nicht, aber funktioniert), falls es jemanden interessiert oder falls jemand eventuell auf das gleiche Problem stoßen sollte.

DOIF di_Keller_Entfeuchten

([MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2] >[di_Keller_Entfeuchten:Grenzwert])
{my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $lstat = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'status', '');
my $lsoll = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'humiditySetpoint', '');
my $luefter = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'fanSpeed', '');
my $modus = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'mode', '');
sleep(6);
if ($lstat eq "online"){
fhem ("set MQTT2_DEHUMIDIFIER_A12345 on");
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist online. Ich schalte ihn nun ein. Die Einstellungen sind: \\n Luffeuchtigkeit SOLL: $lsoll \\n Lüftergeschwindigkeit: $luefter \\n Modus: $modus'");
}
elsif ($lstat eq "offline"){
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber OFFLINE. Checke die Stromzufuhr - ShellyPlugS1!'");;
}
else{
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber weder online noch offline. Systemerror!'");;
}
}
DOELSE
{if (ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'state', '') eq "on"){
sleep(1);
fhem ("set MQTT2_DEHUMIDIFIER_A12345 off");
my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $delay = ReadingsVal('di_Keller_Entfeuchten', 'Verzoegerung', '');
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller lag die Luftfeuchtigkeit nun bei $hum \% (Grenzwert: $thr \%) vor $delay Sekunden. Ich habe den Luftentfeuchter jetzt ausgeschaltet.'");
}
}

MadMax-FHEM

#3
Warum postest du das nicht im Unterforum von DOIF?

Zitat von: help DOIF
Module: 98_DOIF.pm Maintainer: damian-s Forum: Automatisierung/DOIF

EDIT: du kannst das auch nachträglich verschieben... 8)

Ich kenne ja DOIF zu wenig (und nutze es nicht) aber die sleep sehen mir nach Perl-sleep aus?
-> die blockieren!
Und wenn dem so ist, dann ist das sicher nicht die Lösung sondern (denke ich unabhängig davon) kaschiert das nur das eigentliche Problem.

Hilfreich wäre auch ein KOMPLETTES list des DOIF nicht "zerhackt"...
(hier ein wenig DOIF hier ein paar Attribute und Readings? Wozu? lassen wir einfach weg ;) )
...und auch der/des anderen beteiigten Devices "MQTT2_lora_node05_module01" und evtl. auch von "MQTT2_DEHUMIDIFIER_A12345"...

EDIT: gibt es weitere notify/DOIF etc. die auf deine Events reagieren? Mehr sieht man auch, wenn man mit dem Eventmonitor arbeitet...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

pallago

Hallo Joachmin,
vielen Dank für die Antwort.

1) => Thema ist verschoben

2) => ja, das ist in perl; schön ist es nicht; es blockiert wahrscheinlich wie du sagst

3) => anbei (siehe unten die list des DOIFs sowie der beteiligten Devices); habe noch bisschen mit den delayzeiten gespielt

4) => Nein, das ist das einzige DOIF (ich habe noch ein notify implentiert, wieder gelöscht und ein weiteres DOIF, das deaktiviert ist). Event Monitor ist auch noch ein guter Hinweis, danke auch dafür.





list di_Keller_Entfeuchten

Internals:
   DEF        ([MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2] >[di_Keller_Entfeuchten:Grenzwert])
{my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $lstat = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'status', '');
my $lsoll = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'humiditySetpoint', '');
my $luefter = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'fanSpeed', '');
my $modus = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'mode', '');
sleep(20);
if ($lstat eq "online"){
fhem ("set MQTT2_DEHUMIDIFIER_A12345 on");
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist online. Ich schalte ihn nun ein. Die Einstellungen sind: \\n Luffeuchtigkeit SOLL: $lsoll \\n Lüftergeschwindigkeit: $luefter \\n Modus: $modus'");
}
elsif ($lstat eq "offline"){
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber OFFLINE. Checke die Stromzufuhr - ShellyPlugS1!'");;
}
else{
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber weder online noch offline. Systemerror!'");;
}
}
DOELSE
{if (ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'state', '') eq "on"){
sleep(1);
fhem ("set MQTT2_DEHUMIDIFIER_A12345 off");
my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $delay = ReadingsVal('di_Keller_Entfeuchten', 'Verzoegerung', '');
fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller lag die Luftfeuchtigkeit nun bei $hum \% (Grenzwert: $thr \%) vor $delay Sekunden. Ich habe den Luftentfeuchter jetzt ausgeschaltet.'");
}
}
   FUUID      xxx
   MODEL      FHEM
   NAME       di_Keller_Entfeuchten
   NOTIFYDEV  di_Keller_Entfeuchten,global,MQTT2_lora_node05_module01
   NR         139
   NTFY_ORDER 50-di_Keller_Entfeuchten
   STATE      initialized
   TYPE       DOIF
   VERSION    26444 2022-09-25 16:29:19
   eventCount 39
   OLDREADINGS:
   READINGS:
     2022-10-10 00:18:36   Grenzwert       60
     2022-10-10 00:16:12   Verzoegerung    3600
     2022-10-11 18:55:52   cmd             0
     2022-10-11 18:55:52   mode            enabled
     2022-10-11 18:55:52   state           initialized
   Regex:
     accu:
     collect:
     cond:
       MQTT2_lora_node05_module01:
         0:
           up_uplink_message_decoded_payload_relative_humidity_2 ^MQTT2_lora_node05_module01$:^up_uplink_message_decoded_payload_relative_humidity_2:
       di_Keller_Entfeuchten:
         0:
           Grenzwert  ^di_Keller_Entfeuchten$:^Grenzwert:
   attr:
     cmdState:
     wait:
       0:
         20
       1:
         [di_Keller_Entfeuchten:Verzoegerung]
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'MQTT2_lora_node05_module01','up_uplink_message_decoded_payload_relative_humidity_2') >::ReadingValDoIf($hash,'di_Keller_Entfeuchten','Grenzwert')
   do:
     0:
       0          {my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', ''); my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', ''); my $lstat = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'status', ''); my $lsoll = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'humiditySetpoint', ''); my $luefter = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'fanSpeed', ''); my $modus = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'mode', ''); sleep(20); if ($lstat eq "online"){ fhem ("set MQTT2_DEHUMIDIFIER_A12345 on"); fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist online. Ich schalte ihn nun ein. Die Einstellungen sind: \\n Luffeuchtigkeit SOLL: $lsoll \\n Lüftergeschwindigkeit: $luefter \\n Modus: $modus'"); } elsif ($lstat eq "offline"){ fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber OFFLINE. Checke die Stromzufuhr - ShellyPlugS1!'");; } else{ fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber weder online noch offline. Systemerror!'");; } }
     1:
       0          {if (ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'state', '') eq "on"){ sleep(1); fhem ("set MQTT2_DEHUMIDIFIER_A12345 off"); my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', ''); my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', ''); my $delay = ReadingsVal('di_Keller_Entfeuchten', 'Verzoegerung', ''); fhem ("set Pushnachricht msg device='iphoneAB_xyz' title='Keller' message='Im Keller lag die Luftfeuchtigkeit nun bei $hum \% (Grenzwert: $thr \%) vor $delay Sekunden. Ich habe den Luftentfeuchter jetzt ausgeschaltet.'"); } }
   helper:
     NOTIFYDEV  di_Keller_Entfeuchten,global,MQTT2_lora_node05_module01
     globalinit 1
     last_timer 0
     sleeptimer -1
   readings:
     all         MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2 di_Keller_Entfeuchten:Grenzwert
   uiState:
   uiTable:
Attributes:
   devStateIcon disabled:15px-red:initialize initialize:15px-green:disable
   room       System
   userReadings Verzoegerung 10,
Grenzwert 63
   wait       20:[di_Keller_Entfeuchten:Verzoegerung]
   webCmd     initialize:disable




list MQTT2_DEHUMIDIFIER_A12345

Internals:
   CID        DEHUMIDIFIER_A12345
   DEF        DEHUMIDIFIER_A12345
   FUUID      xxx
   IODev      MQTTserver
   LASTInputDev MQTTserver
   MQTTserver_CONN MQTTserver_192.168.0.101_54290
   MQTTserver_MSGCNT 5312
   MQTTserver_TIME 2022-10-11 19:04:32
   MSGCNT     5312
   NAME       MQTT2_DEHUMIDIFIER_A12345
   NR         130
   STATE      off
   TYPE       MQTT2_DEVICE
   eventCount 110
   READINGS:
     2022-10-09 23:30:33   IODev           MQTTserver
     2022-10-11 18:52:40   availability_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/status
     2022-10-11 18:52:40   command_topic   esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command
     2022-10-11 18:52:40   device_class    dehumidifier
     2022-10-11 18:52:40   device_identifiers_1 DEHUMIDIFIER-A12345
     2022-10-11 18:52:40   device_manufacturer Midea Group Co., Ltd.
     2022-10-11 18:52:40   device_model    Generic Dehumidifier
     2022-10-11 18:52:40   device_name     DEHUMIDIFIER-A12345
     2022-10-11 18:52:40   device_sw_version 2021.08.0
     2022-10-11 19:04:32   errorCode       0
     2022-10-11 19:04:32   fanSpeed        medium
     2022-10-11 19:04:32   humidityCurrent 62
     2022-10-11 19:04:32   humiditySetpoint 45
     2022-10-11 18:52:40   icon            mdi:wifi
     2022-10-11 18:52:40   json_attributes_template {"ssid": "{{value_json.wifi.ssid}}", "ip": "{{value_json.wifi.ip}}"}
     2022-10-11 18:52:40   json_attributes_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/state
     2022-10-11 18:52:40   max_humidity    85
     2022-10-11 18:52:40   min_humidity    35
     2022-10-11 19:04:32   mode            continuous
     2022-10-11 18:52:40   mode_command_template {"mode": "{{value}}"}
     2022-10-11 18:52:40   mode_command_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command
     2022-10-11 18:52:40   mode_state_template {{value_json.mode}}
     2022-10-11 18:52:40   mode_state_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/state
     2022-10-11 18:52:40   modes_1         setpoint
     2022-10-11 18:52:40   modes_2         continuous
     2022-10-11 18:52:40   modes_3         smart
     2022-10-11 18:52:40   modes_4         clothesDrying
     2022-10-11 18:52:40   name            DEHUMIDIFIER-A12345 Dehumidifier
     2022-10-11 18:52:40   payload_off     {"state": "off"}
     2022-10-11 18:52:40   payload_on      {"state": "on"}
     2022-10-11 18:52:40   preset_mode_command_template {"fanSpeed": "{{value}}"}
     2022-10-11 18:52:40   preset_mode_command_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command
     2022-10-11 18:52:40   preset_mode_state_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/state
     2022-10-11 18:52:40   preset_mode_value_template {{value_json.fanSpeed}}
     2022-10-11 18:52:40   preset_modes_1  low
     2022-10-11 18:52:40   preset_modes_2  medium
     2022-10-11 18:52:40   preset_modes_3  high
     2022-10-11 19:04:32   state           off
     2022-10-11 18:52:40   state_topic     esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/state
     2022-10-11 18:52:40   state_value_template {"state": "{{value_json.state}}"}
     2022-10-11 18:52:40   status          online
     2022-10-11 18:52:40   target_humidity_command_template {"humiditySetpoint": {{value | int}}}
     2022-10-11 18:52:40   target_humidity_command_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command
     2022-10-11 18:52:40   target_humidity_state_template {{value_json.humiditySetpoint | int}}
     2022-10-11 18:52:40   target_humidity_state_topic esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/state
     2022-10-11 18:52:40   unique_id       DEHUMIDIFIER-A12345_dehumidifier
     2022-10-11 18:52:40   unit_of_measurement %
     2022-10-11 18:52:40   value_template  {{value_json.humidityCurrent}}
     2022-10-11 19:04:32   wifi_ip         192.168.0.101
     2022-10-11 19:04:32   wifi_rssi       -43
     2022-10-11 19:04:32   wifi_ssid       xxx
Attributes:
   event-min-interval humidityCurrent:3600
   event-on-change-reading errorCode,fanSpeed,humidityCurrent:3,humiditySetpoint,mode,state,status
   readingList DEHUMIDIFIER_A12345:esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/status:.* status
DEHUMIDIFIER_A12345:homeassistant/sensor/esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345_wifi/config:.* { json2nameValue($EVENT) }
DEHUMIDIFIER_A12345:homeassistant/sensor/esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345_humidity/config:.* { json2nameValue($EVENT) }
DEHUMIDIFIER_A12345:homeassistant/fan/esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345_fan/config:.* { json2nameValue($EVENT) }
DEHUMIDIFIER_A12345:homeassistant/humidifier/esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345_dehumidifier/config:.* { json2nameValue($EVENT) }
DEHUMIDIFIER_A12345:esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/state:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    humiditySetpoint:slider,40,5,75 esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command {"humiditySetpoint": "$EVTPART1"}
on esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command {"state": "on"}
off esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command {"state": "off"}
modeSet:uzsuDropDown,setpoint,continuous,smart,clothesDrying esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command {"mode": "$EVTPART1"}
fanSpeedSet:uzsuDropDown,low,medium,high esp8266-midea-dehumidifier/DEHUMIDIFIER-A12345/command {"fanSpeed": "$EVTPART1"}



list MQTT2_lora_node05_module01

Internals:
   CID        lora_node05_module01
   DEF        lora_node05_module01
   FUUID      xxx
   IODev      MQTT_lora_node05
   LASTInputDev MQTT_lora_node05
   MQTT_lora_node05_MSGCNT 40
   MQTT_lora_node05_TIME 2022-10-11 18:11:24
   MSGCNT     40
   NAME       MQTT2_lora_node05_module01
   NR         137
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 78
   READINGS:
     2022-10-09 23:30:33   IODev           MQTT_lora_node05
     2022-10-11 18:11:24   RSSI            -103
     2022-10-11 18:11:24   SNR             4
     2022-10-04 22:51:17   associatedWith  MQTT2_MQTT_lora_node05
     2022-10-11 18:11:24   firmware_version 2.1.2.0
     2022-10-04 23:06:08   queued_correlation_ids_1 as:conn:xxx
     2022-10-04 23:06:08   queued_correlation_ids_2 as:downlink:xxx
     2022-10-04 23:06:08   queued_downlink_queued_correlation_ids_1 as:conn:xxx
     2022-10-04 23:06:08   queued_downlink_queued_correlation_ids_2 as:downlink:xxx
     2022-10-09 23:14:47   queued_downlink_queued_f_port 1
     2022-10-04 23:06:08   queued_downlink_queued_frm_payload AA4Q
     2022-10-04 23:06:08   queued_downlink_queued_priority NORMAL
     2022-10-04 23:06:08   queued_end_device_ids_application_ids_application_id lora-node05
     2022-10-04 23:06:08   queued_end_device_ids_device_id module01
     2022-10-04 23:55:23   sent_correlation_ids_1 as:conn:xxx
     2022-10-04 23:55:23   sent_correlation_ids_10 ns:tx_ack:xxx
     2022-10-04 23:55:23   sent_correlation_ids_11 ns:uplink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_12 rpc:/ttn.lorawan.v3.GsNs/HandleUplink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_13 rpc:/ttn.lorawan.v3.GsNs/ReportTxAcknowledgment:xxx
     2022-10-04 23:55:23   sent_correlation_ids_14 rpc:/ttn.lorawan.v3.NsAs/HandleUplink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_15 rpc:/ttn.lorawan.v3.NsGs/ScheduleDownlink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_2 as:downlink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_3 as:up:xxx
     2022-10-04 23:55:23   sent_correlation_ids_4 gs:conn:xxx
     2022-10-04 23:55:23   sent_correlation_ids_5 gs:tx_ack:xxx
     2022-10-04 23:55:23   sent_correlation_ids_6 gs:up:host:xxx
     2022-10-04 23:55:23   sent_correlation_ids_7 gs:uplink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_8 ns:downlink:xxx
     2022-10-04 23:55:23   sent_correlation_ids_9 ns:transmission:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_1 as:conn:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_10 ns:uplink:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_11 rpc:/ttn.lorawan.v3.GsNs/HandleUplink:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_12 rpc:/ttn.lorawan.v3.GsNs/ReportTxAcknowledgment:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_13 rpc:/ttn.lorawan.v3.NsGs/ScheduleDownlink:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_2 as:downlink:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_3 gs:conn:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_4 gs:tx_ack:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_5 gs:up:host:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_6 gs:uplink:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_7 ns:downlink:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_8 ns:transmission:xxx
     2022-10-04 23:55:23   sent_downlink_sent_correlation_ids_9 ns:tx_ack:xxx
     2022-10-04 23:55:23   sent_downlink_sent_f_cnt 128
     2022-10-04 23:55:23   sent_downlink_sent_f_port 1
     2022-10-04 23:55:23   sent_downlink_sent_frm_payload AA4Q
     2022-10-04 23:55:23   sent_downlink_sent_priority HIGHEST
     2022-10-04 23:55:23   sent_downlink_sent_session_key_id AYN1oKFVazUfWPHm8cNndA==
     2022-10-04 23:55:23   sent_end_device_ids_application_ids_application_id lora-node05
     2022-10-04 23:55:23   sent_end_device_ids_dev_addr xxx
     2022-10-04 23:55:23   sent_end_device_ids_dev_eui xxx
     2022-10-04 23:55:23   sent_end_device_ids_device_id module01
     2022-10-04 23:55:23   sent_end_device_ids_join_eui xxx
     2022-10-04 23:55:23   sent_received_at 2022-10-04T21:55:23.383848641Z
     2022-10-11 18:11:24   up_correlation_ids_1 as:up:xxx
     2022-10-11 18:11:24   up_correlation_ids_2 gs:conn:xxx
     2022-10-11 18:11:24   up_correlation_ids_3 gs:up:host:xxx
     2022-10-11 18:11:24   up_correlation_ids_4 gs:uplink:xxx
     2022-10-11 18:11:24   up_correlation_ids_5 ns:uplink:xxx
     2022-10-11 18:11:24   up_correlation_ids_6 rpc:/ttn.lorawan.v3.GsNs/HandleUplink:xxx
     2022-10-11 18:11:24   up_correlation_ids_7 rpc:/ttn.lorawan.v3.NsAs/HandleUplink:xxx
     2022-10-11 18:11:24   up_end_device_ids_application_ids_application_id lora-node05
     2022-10-11 18:11:24   up_end_device_ids_dev_addr xxx
     2022-10-11 18:11:24   up_end_device_ids_dev_eui xxx
     2022-10-11 18:11:24   up_end_device_ids_device_id module01
     2022-10-11 18:11:24   up_end_device_ids_join_eui xxx
     2022-10-11 18:11:24   up_received_at  2022-10-11T16:11:24.750470283Z
     2022-10-11 18:11:24   up_uplink_message_consumed_airtime 0.xyz
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_analog_in_4 3.31
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_barometric_pressure_3 960.6
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_firmware_version_1_5 2
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_firmware_version_2_5 1
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_firmware_version_3_5 2
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_firmware_version_4_5 0
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_relative_humidity_2 48
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_temperature_1 19.5
     2022-10-11 18:11:24   up_uplink_message_decoded_payload_txinterval_6 3600
     2022-10-11 18:11:24   up_uplink_message_f_cnt 416
     2022-10-11 18:11:24   up_uplink_message_f_port 1
     2022-10-11 18:11:24   up_uplink_message_frm_payload xxx
     2022-10-11 18:11:24   up_uplink_message_network_ids_cluster_address eu1.cloud.thethings.network
     2022-10-11 18:11:24   up_uplink_message_network_ids_cluster_id eu1
     2022-10-11 18:11:24   up_uplink_message_network_ids_net_id 000013
     2022-10-11 18:11:24   up_uplink_message_network_ids_tenant_id ttn
     2022-10-11 18:11:24   up_uplink_message_received_at 2022-10-11T16:11:24.545418537Z
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_channel_index 3
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_channel_rssi -103
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_gateway_ids_eui xxx
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_gateway_ids_gateway_id xxx
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_location_altitude xyz
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_location_latitude yy.xxx
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_location_longitude yy.xxx
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_location_source SOURCE_REGISTRY
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_received_at 2022-10-11T16:11:24.544400881Z
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_rssi -103
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_snr 4
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_time 2022-10-11T16:11:24.523727Z
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_timestamp 2395046635
     2022-10-11 18:11:24   up_uplink_message_rx_metadata_1_uplink_token xxx
     2022-10-11 18:11:24   up_uplink_message_session_key_id xxx
     2022-10-11 18:11:24   up_uplink_message_settings_data_rate_lora_bandwidth 125000
     2022-10-11 18:11:24   up_uplink_message_settings_data_rate_lora_coding_rate 4/5
     2022-10-11 18:11:24   up_uplink_message_settings_data_rate_lora_spreading_factor 7
     2022-10-11 18:11:24   up_uplink_message_settings_frequency 867100000
     2022-10-11 18:11:24   up_uplink_message_settings_time 2022-10-11T16:11:24.523727Z
     2022-10-11 18:11:24   up_uplink_message_settings_timestamp 2395046635
Attributes:
   alias      my_alias
   icon       15px-green
   readingList v3/lora-node05\x40ttn/devices/module01/down/queued:.* { json2nameValue($EVENT, 'queued_', $JSONMAP) }
v3/lora-node05\x40ttn/devices/module01/up:.* { json2nameValue($EVENT, 'up_', $JSONMAP) }
v3/lora-node05\x40ttn/devices/module01/down/sent:.* { json2nameValue($EVENT, 'sent_', $JSONMAP) }
   room       MQTT2_DEVICE
   userReadings RSSI {
my $device = "MQTT2_lora_node05_module01";
my @rssi = (-510..-500);
my @a = (0..10);
# Jetzt lesen wir quasi alle Geraete aus, wir nehmen an max. 10 Stueck
for my $i (@a){
# definiere den ReadingValue
my $name = "up_uplink_message_rx_metadata_" . $i . "_rssi";
# wir lesen nur aus, falls falls der Wert neuer als 2h ist (3600sec*2)
if (ReadingsAge($device, $name, 10000) < 7200){
# Wir fuettern unser array mit den Werten
$rssi[$i] = ReadingsVal($device, $name, -500);
}
}
# jetzt nehmen wir den Maximalwert
List::Util::max(@rssi);
},
SNR {
my $device = "MQTT2_lora_node05_module01";
my @snr = (-110..-100);
my @a = (0..10);
# Jetzt lesen wir quasi alle Geraete aus, wir nehmen an max. 10 Stueck
for my $i (@a){
# definiere den ReadingValue
my $name = "up_uplink_message_rx_metadata_" . $i . "_snr";
# wir lesen nur aus, falls falls der Wert neuer als 2h ist (3600sec*2)
if (ReadingsAge($device, $name, 10000) < 7200){
# Wir fuettern unser array mit den Werten
$snr[$i] = ReadingsVal($device, $name, -100);
}
}
# jetzt nehmen wir den Maximalwert
List::Util::max(@snr);
},
firmware_version {
       my $device = "MQTT2_lora_node05_module01";
       my $version1 = ReadingsVal($device, "up_uplink_message_decoded_payload_firmware_version_1_5", -1);
       my $version2 = ReadingsVal($device, "up_uplink_message_decoded_payload_firmware_version_2_5", -1);
       my $version3 = ReadingsVal($device, "up_uplink_message_decoded_payload_firmware_version_3_5", -1);
       my $version4 = ReadingsVal($device, "up_uplink_message_decoded_payload_firmware_version_4_5", -1);
       "$version1.$version2.$version3.$version4";
       
}


Viele Grüße

Damian

Sleep solltest du so nicht verwenden, sonst steht dein ganzes System. Verzögerungen im DOIF-Perl-Modus werden mit einem set_Exec-Aufruf realisiert:
https://wiki.fhem.de/wiki/DOIF/Perl-Modus#Interne_Timer
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

pallago

Hallo,
danke auch für die Antwort. Ok, ich habe mal ein funktionierendes Minimalbeispiel. (Diesmal der DOIF-Befehl im perl-Modus, damit die set_Exec Funktion funktioniert.)
{if ([MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2]>[di_Keller_Entfeuchten:Grenzwert]){
set_Exec("timer1",1,'fhem("set Wohnzimmer_Halogen on")');
set_Exec("timer2",1,'fhem("set Pushnachricht msg device=\'iphoneAB_xyz\' title=\'Keller\' message=\'Im Keller liegt die Luftfeuchtigkeit bei \'")');
}
}


Jetzt ne Frage bzgl. den Variablen, wie bekomme ich geschickt den Wert $hum (my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');) in meine Pushnachricht? Muss die Variable $hum die in den <perlCode>, also drittes Argument der set_Exec Funktion, dort definiert werden? Geht das auch woanders? Ich habe das Gefühl, dass das ganz unschön wird.
Ich bin gerne für weitere Vorschläge offen, eventuell muss ich auch alles umbauen.

Hier ein funktionierender Versuch die ReadingsVal im String der Textmessage zu implementieren:


{if ([MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2]>[di_Keller_Entfeuchten:Grenzwert]){
set_Exec("timer1",1,'fhem("set Wohnzimmer_Halogen on")');
set_Exec("timer2",1,'fhem("set Pushnachricht msg device=\'iphoneAB_xyz\' title=\'Keller\' message=\'Im Keller liegt die Luftfeuchtigkeit bei @{[ReadingsVal(\'MQTT2_lora_node05_module01\', \'up_uplink_message_decoded_payload_relative_humidity_2\', \'\')]} \' ")');
}
}

Damian

Variablen kannst du in Perl direkt im String in (doppelten) Anführungszeichen angeben, dann werden sie beim Aufruf der Funktion ausgewertet:
set_Exec("timer1",1,"fhem('set Pushnachricht msg $hum')");

PS: die Reihenfolge des Anführungszeichen beachten

Du brauchst auch nicht mehrere Timer, du kannst es mit einem erledigen:

set_Exec("timer1",1,"fhem('set Pushnachricht msg $hum');fhem('sonst was')");
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

pallago

Ein herzliches Dankeschön. Es funktioniert! Und dank des Timers werden für den Fall, dass die Luftfeuchtigkeit in Ordnung ist (d.h. unterhalb des Grenzwertes) auch gleich 2x Pushnachrichten versendet;
1) wenn die Luftfeuchtigkeit wieder in Ordnung ist und
2) wenn der Luftentfeuchter ausgeschaltet wird.
Mit der Reihenfolge der Anführungszeichen habe ich tatsächlich nicht aufgepasst.
Ich habe es mit dem Wohnzimmerlicht getestet, es schaut ganz gut aus. Anbei meine Implementierung, eventuell hilft es dem ein oder anderen.


{if ([MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2]>[di_Keller_Entfeuchten:Grenzwert]){
# Lese Varibalen des Sensors und des Luftentfeuchters aus
my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $lstat = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'status', '');
my $lsoll = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'humiditySetpoint', '');
my $luefter = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'fanSpeed', '');
my $modus = ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'mode', '');
# Wir überprüfen, ob der Luftentfechter online ist
if ($lstat eq "online"){
# Dann schalten wir ihn an
fhem ("set MQTT2_DEHUMIDIFIER_A12345 on");
#fhem ("set Wohnzimmer_Halogen on");
# und schicken 20sek später eine Pushnachricht (wg. Systemüberlastung und möglichen Timeout)
set_Exec("timer1",20,"fhem('set Pushnachricht msg device=iphoneAB_xyz title=Keller message=\"Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist online. Ich schalte ihn nun ein. Die Einstellungen sind: \\n Luffeuchtigkeit SOLL: $lsoll \\n Lüftergeschwindigkeit: $luefter \\n Modus: $modus\" ')");
}
elsif ($lstat eq "offline"){
# wenn er offline ist, so schicken wir auch eine Nachricht mit der Info
set_Exec("timer1",20,"fhem('set Pushnachricht msg device=iphoneAB_xyz title=Keller message=\"ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber OFFLINE. Checke die Stromzufuhr - ShellyPlugS1!\" ')");
}
else{
# falls er weder online noch offline ist, haben wir ein anderes Problem - das teilen wir auch mit
set_Exec("timer1",20,"fhem('set Pushnachricht msg device=iphoneAB_xyz title=Keller message=\"ERROR: Im Keller liegt die Luftfeuchtigkeit bei $hum \% (Grenzwert: $thr \%). Der Luftentfeuchter ist aber weder online noch offline. Systemerror!\" ')");
}
}
# für den Fall, dass die Luftfeuchtigkeit unterhalb des Grenzwertes ist, d.h. im grünen Bereich
else
{# wir machen nur etwas, wenn der Luftentfeuchter eingeschaltet ist
if (ReadingsVal('MQTT2_DEHUMIDIFIER_A12345', 'state', '') eq "on"){
# Lese Varibalen des Sensors und des Luftentfeuchters aus
my $hum = ReadingsVal('MQTT2_lora_node05_module01', 'up_uplink_message_decoded_payload_relative_humidity_2', '');
my $thr = ReadingsVal('di_Keller_Entfeuchten', 'Grenzwert', '');
my $delay = ReadingsVal('di_Keller_Entfeuchten', 'Verzoegerung', '');
# nun schicken wir mit 20sek Verzögerung eine Nachricht, dass der Luftentfechter mit der eingestellten Verzögerung (delay) ausgeschaltet werden wird
set_Exec("timer1",20,"fhem('set Pushnachricht msg device=iphoneAB_xyz title=Keller message=\"Im Keller liegt die Luftfeuchtigkeit nun bei $hum \% (Grenzwert: $thr \%). Ich werde den Luftentfeuchter in $delay Sekunden ausschalten.\"  ')");
# nach der Verzögerung wird der Luftentfeuchter ausgeschaltet und wir schicken außerdem noch eine Nachricht
set_Exec("timer2",$delay+20,"fhem('set MQTT2_DEHUMIDIFIER_A12345 off'); fhem('set Pushnachricht msg device=iphoneAB_xyz title=Keller message=\"Ich habe den Luftentfeuchter jetzt ausgeschaltet.\" ')");
#set_Exec("timer2",$delay+20,"fhem('set Wohnzimmer_Halogen off'); fhem('set Pushnachricht msg device=iphoneAB_xyz title=Keller message=\"Ich habe den Luftentfeuchter jetzt ausgeschaltet.\" ')");
}
}
}

pallago

Bei den ersten Tests hat sich nun gezeigt, dass der Timer nicht ausgeführt wird bzw. abgebrochen wird, wenn ein neuer Sensorwert (Reading) auftritt, konkret: Der Luftentfeuchter hat eine Nachlaufzeit von 3h; jede Stunde kommt ein neues Reading von MQTT2_lora_node05_module01:up_uplink_message_decoded_payload_relative_humidity_2. Dies hat zur Folge, dass der Luftentfeuchter nie ausgeschaltet wird. => zurück zur ursprünglichen Lösung mit dem Problem, dass die Pushnachrichten nicht gesendet werden, aber mit dem wait Attribut, dass der Befehl erst nach 20 Sekunden ausgeführt wird. Das beobachte ich nun. Scheint aber zu funktionieren und der Luftentfeuchter wird auch nach 3 h Verzoegerung ausgeschaltet.