FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: dk3572 am 10 Mai 2022, 18:37:02

Titel: Nur Werte zw 0 und 100
Beitrag von: dk3572 am 10 Mai 2022, 18:37:02
Hallo,
habe einen Ultraschallsensor zur Füllstandsanzeige der mir Werte zw. 0 und 100% liefert.
Leider überträgt er auch falsche Werte z.B. -439,5.
Gibt es eine Möglichkeit nur den Wertebereich zw. 0 und 100 zuzulassen?
Mit dem event-aggregator funktioniert es nicht.

CID        esp8266_D8_BF_C0_14_16_84
   DEF        esp8266_D8_BF_C0_14_16_84
   FUUID      604b5bb8-f33f-cd72-4ac3-576a473e6117c744
   FVERSION   10_MQTT2_DEVICE.pm:0.258890/2022-03-27
   IODev      MQTT2_Server
   LASTInputDev MQTT2_Server
   MQTT2_Server_CONN MQTT2_Server_192.168.178.xxxxxxxx
   MQTT2_Server_MSGCNT 939
   MQTT2_Server_TIME 2022-05-10 18:29:10
   MSGCNT     939
   NAME       MQTT2_esp8266_D8_BF_C0_14_16_84
   NR         461
   STATE      Menge: <b>-24200 L</b><br>
Stand: <b>-439.5 %</b><br>
   TYPE       MQTT2_DEVICE
   READINGS:
     2022-05-10 18:29:10   Abstand         1071.5
     2022-05-10 18:29:10   Fuellstand      -439.5
     2022-05-09 16:22:07   IODev           MQTT2_Server
     2022-05-10 18:29:10   Liter           -24200
Attributes:
   DbLogExclude .*
   IODev      MQTT2_Server
   alias      Zisterne
   event-aggregator Liter::none:median:900,Abstand::none:median:900,Fuellstand::none:median:900
   event-min-interval Liter:1200,Abstand:1200,Fuellstand:1200
   event-on-change-reading .*
   icon       zisterne_00
   readingList esp8266_D8_BF_C0_14_16_84:Fuellstand:.* Fuellstand
esp8266_D8_BF_C0_14_16_84:Abstand:.* Abstand
esp8266_D8_BF_C0_14_16_84:Liter:.* Liter
   room       Garten,Zähler
   stateFormat Menge: <b>[$name:Liter] L</b><br>
Stand: <b>[$name:Fuellstand] %</b><br>


Für Tipps danke ich im Voraus.
VG Dieter
Titel: Antw:Nur Werte zw 0 und 100
Beitrag von: Otto123 am 10 Mai 2022, 21:58:53
Hi,

machst ein userReadings - als Idee ungetestet
attr MQTT2_esp8266_D8_BF_C0_14_16_84 userReadings Fuellstand1:Fuellstand{my $val=ReadingsNum($name,'Fuellstand',0);;if($val >=0 or $val <= 100){return $val}}

Gruß Otto
Titel: Antw:Nur Werte zw 0 und 100
Beitrag von: DetlefR am 10 Mai 2022, 22:27:16
Hallo Dieter,

hier noch was von mir aus der Kramkiste. Entsprechend angepasst.
attr MQTT2_esp8266_D8_BF_C0_14_16_84 userReadings Fuellstand1:Fuellstand:.([0-9]\..*|[1-9][0-9]\..*|100) {ReadingsNum($name,"Fuellstand",0);;}
Kurz zu Erklärung. Es wird ein Userreading angelegt "Fuellstand1", das auf Änderungen von "Fuellstand" reagiert. Aber nur, wenn die Bedingung 0-100 zutrifft. Es muss auch immer ein Dezimalpunkt im Wert stehen.

Gruß
Detlef
Titel: Antw:Nur Werte zw 0 und 100
Beitrag von: Beta-User am 10 Mai 2022, 23:50:35
Direkt filtern?
Ginge bei M2D per Perl-Code in der readingList...
Titel: Antw:Nur Werte zw 0 und 100
Beitrag von: Otto123 am 11 Mai 2022, 08:40:50
Du meinst so?
readingList esp8266_D8_BF_C0_14_16_84:Fuellstand:.* { if($EVENT >=0 or $EVENT <= 100){{"Fuellstand"=>$EVENT}} }
Titel: Antw:Nur Werte zw 0 und 100
Beitrag von: Beta-User am 11 Mai 2022, 09:07:51
Zitat von: Otto123 am 11 Mai 2022, 08:40:50
Du meinst so?
readingList esp8266_D8_BF_C0_14_16_84:Fuellstand:.* { if($EVENT >=0 or $EVENT <= 100){{"Fuellstand"=>$EVENT}} }
...der Spur nach...

Mit "warnings-Hosenträger" und ohne unnötige Quotes käme ich auf sowas:
readingList esp8266_D8_BF_C0_14_16_84:Fuellstand:.* { if( looks_like_number($EVENT) && $EVENT >=0 && $EVENT <= 100 ){{Fuellstand=>$EVENT}} }
Titel: Antw:Nur Werte zw 0 und 100
Beitrag von: dk3572 am 11 Mai 2022, 14:04:29
Hallo an alle Unterstützer,
vielen Dank für die Hilfe.
Werde das letzte Bsp. testen und berichten.

VG Dieter