[gelöst] Abfragen von Werten differenzieren/ignorieren

Begonnen von sash.sc, 27 Januar 2023, 11:07:51

Vorheriges Thema - Nächstes Thema

sash.sc

Hallo zusammen.

Ich fragen über JSNMOD den Eiro Werte alle 15 Minuten ab. Jetzt habe ich das Problem, dass unregelmäßig ein Wert von 0 im Diagramm zu sehen ist, der den Graphen entsprechend verhaut.

Wie kann der 0 Wert ausgefilter werden, so das dieser nicht im Diagramm erscheint. Habe schon event-on-change-reading geschaut. Dort geht es aber nur wenn der Wert größer als x ist und nicht kleiner.

jemand noch eine Idee ?

gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Gisbert

Hallo Sascha,

das funktioniert bei mir in Feld "Function":
$fld[3]<10||$fld[3]>50?"":$fld[3
Nur Werte von 10 bis 50 werden geplottet.

Es gibt noch eine weitere Lösung, nach der ich erst suchen muss.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Hallo Sascha,

die 2. Möglichkeit ist, die Werte erst gar nicht zu loggen. Das geht im Filelog-Device mit folgendem Attribut, hier die Beschreibung:
acceptedRange col1:min:max[:regexp] ...
This attribute takes a space separated list of ranges. An event wont be logged, if the column of the event (counted from 0) is a number, and it is outside of the specified range. The optional regexp will check the event only, without the usual ^ and $ added to it. Example:
attr fl acceptedRange 1:5:35:[Tt]emperature 1:-90:-40:RSSI


Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

sash.sc

Ok. Filellog anfangen ist schonmal gut. Ich möchte aber direkt das Event verhindern, da die Daten noch parallel nach Influxdb gehen. Dann würde da immer noch die Null mit geloggt werden
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Gisbert

Hallo Sascha,

in dem Fall musst du dir die Attribute event-on-change-reading oder event-on-update-reading anschauen, ob du damit die unerwünschten Events rausfiltern kannst.
Damit bin ich am Ende mit meinem Latein; vielleicht weiß einer der Entwickler mehr.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

frank

man könnte zb ein userreading erzeugen, welches bei bestimmten "eingangs-events" selbst keine events erzeugt.
insgesamt erzeugt man dadurch aber quasi doppelt soviele events.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

Es wäre schön, wenn readingsChange die Option bieten würde, "kaputte" Werte einfach zu löschen, aber das geht afaik nicht...
Aber man könnte es dazu nutzen, in Verbindung mit OldReadings wenigstens den alten Wert wieder reinzuschreiben.
(Erzeugt aber insgesamt auch ein "doppeltes Reading" pro Event-loop).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

sash.sc

Zitat von: Gisbert am 27 Januar 2023, 13:25:04
Hallo Sascha,

in dem Fall musst du dir die Attribute event-on-change-reading oder event-on-update-reading anschauen, ob du damit die unerwünschten Events rausfiltern kannst.
Damit bin ich am Ende mit meinem Latein; vielleicht weiß einer der Entwickler mehr.

Viele Grüße Gisbert

Bei event-on-change-reading kannst du nur angeben ab wieviel mehr oder weniger ein event erzeugt wird. Also z.B. 10°C +/- 0.2
Wird das über/unterschritten dann wird ein event erzeugt.

Ich bräcuhte eine Funktion, mit der ich einen Range/Bereich angeben kann, wo ein event erzeugt wird. Liegt der Wert ausserhalb, wird das stumpf ignoriert !

Vielleicht hat jemand noch ne Idee.

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

#8
Habe es jetzt, gelöst, hoffe ich. Habe das ganze über ein DOIF und ein2. reading realisiert.

Eigentlich ganz einfach..... ::)

defmod EUR_check DOIF ([Euro_Dollar:ED2] > 0) (setreading Euro_Dollar Euro_Dollar {(ReadingsVal("Euro_Dollar","ED2",0))})

Euro_Dollar ist das Device. ED2 wird mit dem Boersenwert vom Euro gefütter. DOIF prüft das reading ob größer 0, wenn ja dann den Wert in ein 2. Reading schreiben zum loggen.

Es geht mit Sicherheit auch eleganter. Da müßten dann aber die Profis ran.

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb