Variablenwerte in FHEM-Frontend anzeigen, Speicherort von LOG-Dateien

4,964 views
Skip to first unread message

Uwe

unread,
Jun 7, 2012, 10:21:37 AM6/7/12
to fhem-...@googlegroups.com
Hallo und schönen Feiertag (wer einen hat).

Ich knobele schon geraume Zeit an folgendem Problem (und habe hier im Forum nichts gefunden bzw. übersehen(?)):

Zum Debuggen möchte ich in FHEM den aktuellen Wert von Variablen ausgeben. Zum Beispiel aus der Zeile:

define WZ_Rolali_SoSchu at *10:00 { if ($month> 4 && $month< 10 && ReadingsVal("myUtils","fc1_high_c",0)>23) { fhem "set WZ_Rolali 75"}}

den Wert der Variable "fc1_high_c".

Wenn ich den Ausdruck so eingebe: fc1_high_c dann kommt als Fehlermeldung "Unknown command",
wenn so "fc1_high_c" dann passiert garnichts,
wenn so {fc1_high_c} dann wird "Bareword ... not allowed..." ausgegeben,
wenn so: {"fc1_high_c"} dann wird "fc1_high_c" (ohne Klammern) ausgegeben - das ist also die reine Textausgabe.
Oder gibt es für die verschiedenen Variablentypen (Zahl, Text, Array...) verschiedene Ausgabeanweisungen. Ich muss beim Programmieren/Probieren immer an BASIC denken - da war es so schön einfach :-)

Außerdem habe ich noch eine Frage zu diesem Beitrag: https://groups.google.com/forum/?fromgroups&pli=1#!searchin/fhem-users/Undefined$20subroutine$20&main/fhem-users/MJ7wDSHAzIU/Bu_959TEgKYJ

Die Datei fhem\log\var\tmp\TotalWetter-2012.log bleibt bei mir leer und wo legt diese Zeile:
define TotalWetter FileLog /var/tmp/TotalWetter-%Y.log Wetter_Sirnach

das LOG-File an? Bei mir existiert dieses File nicht, es kommt aber auch keine Fehlermeldung.

Übrigens FHEM läuft bei mir auf einer FB7390.

Danke für die Hilfe Uwe.

Prof. Dr. Peter A. Henning

unread,
Jun 7, 2012, 10:50:11 AM6/7/12
to fhem-...@googlegroups.com
Nun, dann rate ich, die allereinfachsten Einstiegsseiten für blutige perl-Anfänger ohne jede Programmiererfahrung zu lesen:

Variablennamen beginnen mit $, sonst ist es eben ein "bareword".

pah
Message has been deleted

Uwe

unread,
Jun 8, 2012, 5:40:53 AM6/8/12
to fhem-...@googlegroups.com
Und den Fehler in: define TotalWetter FileLog /var/tmp/TotalWetter-%Y.log Wetter_Sirnach
habe ich auch gefunden: es fehlt am anfang der Punkt für das FHEM-Arbeitsverzeichnis, mit Putty habe ich das File auf der FB im Verzeichnis: /var/tmp gefunden.

Am Freitag, 8. Juni 2012 11:25:39 UTC+2 schrieb Uwe:
Ok, danke - manchmal liegt das Einfache so nah!

Uwe

ilmtuelp0815

unread,
Jun 8, 2012, 8:01:42 AM6/8/12
to fhem-...@googlegroups.com
HI Uwe!
Warum willst du Werte, die du von Google beziehst debuggen? Die aktuellen Werte siehst du von fhem ausgegeben, wenn du in deiner Wetterdefinition Weather drauf klickst. Das ist ein Workaround, bis du dich an die Variablendefinitionen herangearbeitet hast. Wenn ich mich noch schwach an BASIC erinnere, musste man dort auch Variablen einen Bezeichner hinzufügen ;-)

Auf der 7390 liegen die log-Dateien im Verzeichnis (InternerSpeicher)/fhem/log ohne /var/tmp
Dort solltest du auch auch die TotalWetter-2012.log anlegen lassen.

den Wert der Variable "fc1_high_c".


Uwe

unread,
Jun 9, 2012, 8:02:53 AM6/9/12
to fhem-...@googlegroups.com
Hallo, danke für die Tipps. Die Variable aus dem Googlewetter war nur als Beispiel gedacht, um der Sache auf den Grund zu gehen, weil man ja den Wert auch zum Vergleich aus der Weather Def. hat.
Die Logs funzen jetzt und die Grafiken werden wieder generiert, nachdem ich den Speicherort angepasst habe (s. gestern).
Ich habe mal versucht, ein gplot-File für die Ausgabe von Min/Max-Werten zu erstellen, und es funktioniert :-). Das ist mal ein "selbsterarbeitetes" Erfolgserlebnis und motiviert zum Weitermachen.

Ich habe es aus dem temp4hum4 abgeleitet und temp4temp4 genannt:

# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
#set terminal png transparent small size <SIZE> crop

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<L1>'
set grid xtics y2tics

set yrange [-20:40]
set y2range [-20:40]

set y2label "Temperatur in C"
set ylabel "Temperatur in C"

#FileLog 4:fc1_high_c:10:
#FileLog 4:fc1_low_c:10:
#FileLog 4:temperature:10:
plot \
  "< egrep 'fc1_high_c' <IN>"\
         using 1:4 axes x1y1 title 'Maximum in C' with lines,\
  "< egrep 'fc1_low_c' <IN>"\
        using 1:4 axes x1y1 title 'Minimum in C' with lines,\
  "< egrep 'temperature' <IN>"\
         using 1:4 axes x1y2 title 'Gemessene Temperatur' with lines\

Die Bezeichnungen habe ich eingedeutscht - das gefällt mir in den Diagrammen besser.
Die Eingabeparameter kommen aus der fhem.cfg und Googlewetter:

define weblink_Borsdorf1 weblink fileplot TotalWetter:temp4temp4:CURRENT
attr weblink_Borsdorf1 label "Max/Min in Borsdorf Min $data{min1} C, Max $data{max1} C, Letzter $data{currval1} C, Durchschnitt $data{avg1} C"
attr weblink_Borsdorf1 room AlleGrafiken

Es ist sicher noch nicht perfekt, aber wie immer kann ja jeder eigene Anpassungen vornehmen.

Schönes WE, Uwe
Reply all
Reply to author
Forward
0 new messages