98_CustomReadings.pm

Begonnen von P.A.Trick, 31 August 2014, 16:30:11

Vorheriges Thema - Nächstes Thema

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

hulzer

Hallo,

vielen Dank für das Modul.

Ich habe vermutlich einen Bug gefunden, der auftritt, wenn die Auswertung der Scriptrückgabe 0 ergibt.

attr readingDefinitions reading1:0
Perl behandelt ja 0 als false und somit erhält das Reading nicht den Wert 0 sondern "ERROR".

Eine Prüfung auf undef mittels defined sollte reichen oder?

if(defined $value) {
$value =~ s/^\s+|\s+$//g;
}
else {
$value = "ERROR";
$hasErrors = 1;
}


Gruß
Hulzer

HCS

Zitat von: hulzer am 11 März 2015, 09:28:35
Ich habe vermutlich einen Bug gefunden, der auftritt, wenn die Auswertung der Scriptrückgabe 0 ergibt.
OK, danke. Werde es übernehmen.

HCS

Zitat von: hulzer am 11 März 2015, 09:28:35
Ich habe vermutlich einen Bug gefunden, der auftritt, wenn die Auswertung der Scriptrückgabe 0 ergibt ...

Eingebaut und committed. Kommt morgen mit dem Update.

frank

hallo,

ich habe gerade dieses modul entdeckt und bin sehr erfreut. mit folgender definition lasse ich mir speicherdaten von fhem.pl (pid1838) auf meiner fritzbox anzeigen. das funktioniert wunderbar.

readingDefinitions COMBINED:qx(grep -e Vm -e PPid /proc/1838/status),ppid:,vmPeak:,vmSize:,vmLck:,vmHWM:,vmRSS:,vmData:,vmStk:,vmExe:,vmLib:,vmPTE:

leider funktioniert folgendes qx() nicht, um die pid von fhem gleichzeitig rauszusuchen. über telnet auf der fritzbox funktioniert es. es muss am dollarzeichen liegen. auch mit "\$" funktioniert es nicht. dann kommt zumindestens kein error mehr im state.

for i in `ps | grep fhem.pl | cut -f2 -d " "`; do grep -e Vm -e PPid /proc/$i/status; done

vielleicht hat der entwickler eine idee.

gruss frank
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

P.A.Trick

Ich bekomme gerade eine Warnmeldung beim FHEM Neustart:

Smartmatch is experimental at ./FHEM/98_CustomReadings.pm line 115, <$fh> line 127.

Perl     : v5.18.2

Nicht wirklich wichtig, aber mich nerven solche Hinweise :-) Vielen Dank im Voraus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Zitat von: P.A.Trick am 05 Januar 2016, 21:26:58
Ich bekomme gerade eine Warnmeldung beim FHEM Neustart:

Smartmatch is experimental at ./FHEM/98_CustomReadings.pm line 115, <$fh> line 127.

Perl     : v5.18.2

Nicht wirklich wichtig, aber mich nerven solche Hinweise :-) Vielen Dank im Voraus!

OK, steht jetzt mit Prio 2 in der einen Eintrag langen ToDo-Liste  ;D

P.A.Trick

Cool dann wird der Eintrag in ein paar Wochen an dein schlechtes Gewissen appelieren ;-) Danke dir im Voraus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Zitat von: P.A.Trick am 05 Januar 2016, 21:34:45
Cool dann wird der Eintrag in ein paar Wochen an dein schlechtes Gewissen appelieren ;-) Danke dir im Voraus!
Nach vier Wochen kam nun das schlechte Gewissen  ;D
-> Erledigt

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Torxgewinde

Hi,
Gibt es einen Trick wie man einen langsamen Befehl ausführt ohne das FHEM in der Zeit blockiert?

Grüße,
Torx

HCS

Zitat von: Torxgewinde am 04 August 2016, 21:02:47
Gibt es einen Trick wie man einen langsamen Befehl ausführt ohne das FHEM in der Zeit blockiert?
So direkt nicht. Da wir ja einen Wert als Ergebnis brauchen, muss auf alle Fälle gewartet werden, bis der geliefert wir.

Aber ein möglicher Trick könnte sein, ein bash script zu schreiben, das die langsame Ermittlung des Wertes in einem Hintergrundprozess macht und in eine Datei wegschreibt und immer den beim vorherigen Mal ermitelten Wert sofort zurückliefert.

Oder halt gleich auf Deinem System einen deamon laufen lassen, der die Werte zyklisch ermittelt und hinterlegt, dass FHEM sie nur noch abholen muss.

Torxgewinde

Danke HCS,
Ich habe es so gelöst, dass ein separates Programm (=Skript) beim Starten ausgeführt wird und dann all XX Sekunden die Messung vornimmt und den Wert an FHEM mit einem HTTP-GET Befehl postet. Das externe Programm ist in Python geschrieben. Das ganze habe ich hier im Forum dokumentiert: Forum:#56701 https://forum.fhem.de/index.php/topic,56701.0.html

Danke für die Antwort!

M.Piet

Hallo Zusammen,

ich lasse mir den Wasserstand meiner Zisterne in das Log Pfad: /home/pi/zisterne.log schreiben. Sieht dann so aus:
[...]
2017-02-05_17:00:01 Entfernung: 184.8 cm  Fuelhoehe: 15.2 cm  Liter: 914 l
2017-02-05_18:00:01 Entfernung: 186.9 cm  Fuelhoehe: 13.1 cm  Liter: 784 l
2017-02-05_18:10:02 Entfernung: 186.5 cm  Fuelhoehe: 13.5 cm  Liter: 813 l
2017-02-05_19:00:01 Entfernung: 186.9 cm  Fuelhoehe: 13.1 cm  Liter: 783 l
2017-02-05_20:00:02 Entfernung: 186.5 cm  Fuelhoehe: 13.5 cm  Liter: 808 l


Ich bekomme das Attribut readingDefinitions nicht so hin, dass er mir das ausspuckt was ich will.

Hier bekomme ich ein Error, ich bin leider nicht wirklich mit dem Aufbau der Codezeile bewandert....:
readingDefinitions COMBINED:qx(/home/pi/zisterne.log),Entfernung:,Fuelhoehe:,Liter:

Ich habe schon unzählige Varianten ausprobiert, und einige Stunden probiert....
Hier im Forum habe ich glaube ich alle Beispiele gelesen, die sich mit dem Thema CustomReadings und auslesen aus externen Logs beschäftigen. Bin in einer Sackgasse und über jede Hilfe dankbar.
Vielleicht kann mir jemand helfe...?

Wzut

#74
a. sicher stellen das der fhem User auch Leserechte auf die Datei /home/pi/zisterne.log hat.

b. in der Shell ist das recht einfach zu testen via
tail -n 1  /home/pi/zisterne.log | cut -d " " -f3,7,11 | tr -s ' ' '\n'
das übertragen auf das attr wäre IMHO dann :
readingDefinitions COMBINED:qx(tail -n1  /home/pi/zisterne.log | cut -d " " -f3,7,11| tr -s ' ' '\n'),Entfernung:,Fuelhoehe:,Liter:

liefert allerdings einen Dauerfehler im Webfrontend :( , also nicht nachmachen !
packt man aber die Shell Zeile in eine eigene Datei (Bsp /home/pi/fuell.sh):
#!/bin/bash
tail -n1  /home/pi/zisterne.log | cut -d " " -f3,7,11 | tr -s ' ' '\n'

und macht sie mit chmod +x fuell.sh ausführbar und setzt sie dann ein :
COMBINED:qx(./fuell.sh),Entfernung:,Fuelhoehe:,Liter:
werden wie gewünscht die Readings versorgt.

Eventuell hat ja HCS einen Tipp wie die erste Variante richtig anzuwenden wäre.

Edit : ich habe mir mal das Modul genau angeschaut , schuld ist die Zeile :
my @definitionList = split(",", $readingDefinitions);
D.h. die Readings müssen Komma getrennt sein (klar) , nun ist aber bereits im qx Teil auch eine solche Liste ( -f3,7,11) und damit geht das dann natürlich schief ....


Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher