Falls mal jemand Sonnenauf- und -untergangszeiten plotten möchte

Begonnen von betateilchen, 23 Mai 2014, 23:46:06

Vorheriges Thema - Nächstes Thema

hexenmeister

Versuche doch anders herum, also mit einem Perl-Befehl.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Pnemenz

Lieber Hexenmeister und liebes betateilchen,

Zitat von: hexenmeister am 08 Juni 2014, 08:53:46
Versuche doch anders herum, also mit einem Perl-Befehl.
Zitat von: betateilchen am 07 Juni 2014, 22:35:39
Du solltest vielleicht einfach fhem-Befehle nicht mit perl-Funktionen mischen. Das funktioniert nämlich nicht.

Danke für Eure Antworten aber sie wiedersprechen sich komplett und beide Ansätze funktioniert bei mir offensichtlich nicht.

Ich habe alle erdenklichen Variante ausprobiert  mit und ohne sämtlichen Klammervarianten, mit und ohne Anführungszeichen, mit ond ohne $-Zeichen usw. Ich frage erst in Foren wenn mir wirklich nichts mehr einfällt, wie ich selber draufkommen könnte. Ich habe auch die Comandref, das HowTo und  alle anderen erdenklichen Quellen gelesen.

Trotzdem brauche ich Hilfe. Leider helfen mir Allgemeinplätze, die auf die von mir offensichtlich nciht verstandenen Quellen Verweise nicht weiter.

Vielleicht könnte einfach einer der das Problem gelöst hat mir ganz simpel die eine Zeile, die ich anscheined falsch habe  in seiner Version Posten.

Danke

hexenmeister

Wenn ich hier eine fertige Lösung poste, wird Betateilchen wütend  :o

Das Problem an Deinem Befehl ist, dass an dieser Stelle die Perl-Anweisungen offensichtlich nicht interpretiert werden. Eine möglich Lösung ist, dies als ein Perl-Befehl mit einem fhem-Aufruf umzubauen. Etwa so:
{fhem("setreading sunDummy sunrise ".sunrise_abs());fhem("setreading sunDummy sunset ".sunset_abs());}
Hier wird im Perl die komplette FHEM-Anweisung fertig aufgbaut. Mit 'richtigen' Zeitangaben statt Funktionsnamen.

Jetzt muss Du nur noch dafür sorgen, dass das täglich ausgeführt wird und in einer LogDatei (-DB) landet.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Pnemenz

Danke Dir. Das hilft schon viel weiter.

Ganz schaff ichs immer noch nicht.
Ich habe deine Zeile mit meinen Namen umgeformt:
{fhem("setreading sonne aufgang ".sunrise_abs());fhem("setreading sonne untergang ".sunset_abs())}
erzeugt folgende Fehlermeldung:
Unknown command {fhem("setreading, try help.
Unknown command fhem("setreading, try help.


Das hintereinander Ausführen der beiden Befehle bringt das richtige Ergebnsi.

{fhem("setreading sonne aufgang ".sunrise_abs())}
{fhem("setreading sonne untergang ".sunset_abs())}




hexenmeister

wenn Du die Befehle so eingibst (oder direkt in config schreibst), dann musst Du die Semikolons verdoppeln:

{fhem("setreading sonne aufgang ".sunrise_abs());;fhem("setreading sonne untergang ".sunset_abs())}
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

betateilchen

bei mir werden die Werte jede Nacht um 00:02 Uhr ermittelt und in ein dummy geschrieben:



define sunMarker at *00:02:00 { CommandSetReading(undef, "sunDummy sunrise ".sunrise('REAL'));; CommandSetReading(undef, "sunDummy sunset ".sunset('REAL')); }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#21
Mit sunrise_abs() und sunset_abs() sollte man nicht unbedingt arbeiten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hexenmeister

CommandSetReading aufzurufen ist sicherlich etwas effezienter, aber für einen Anfänger nicht zu verstehen.  ;)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

betateilchen

als ob hier im Forum nur Dinge gepostet würden, die für Anfänger verständlich sind...  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hexenmeister

Ja schon, aber dein Post war doch eindeutig eine Anregung für Anfänger zum mitmachen (=mitdenken).
Sonst hättest du einfach die Lösung gepostet.   ;)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Pnemenz

Zitat von: hexenmeister am 08 Juni 2014, 12:16:22
CommandSetReading aufzurufen ist sicherlich etwas effezienter, aber für einen Anfänger nicht zu verstehen.  ;)
vor allem wenn in der comandref nix darüber steht

Pnemenz


hexenmeister

Zitatvor allem wenn in der comandref nix darüber steht
Wird auch nie, es ist die interne Implementierung des setreading Befehls in fhem.pl
Der Aufruf von fhem("setreading... wird letzendlich auch da landen. Beim direkten Aufruf wird quasi der Weg dahin gespart.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

betateilchen

Zitat von: Pnemenz am 09 Juni 2014, 08:41:47
vor allem wenn in der comandref nix darüber steht

Man sollte sich irgendwann verinnerlichen, dass in der commandref die fhem Anweisungen (commands) beschrieben sind. Die Anweisung heißt setreading und sollte auch in der commandref zu finden sein.

CommandSetReading() ist eine perl Funktion und keine fhem Anweisung. Deshalb steht darüber korrekterweise nichts in der Befehlsreferenz.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

franky08

#29
Hab mich da gerade auch mal drann versucht, aber das Ergebnis ist etwas seltsam, siehe Screenshot:

Meine gplot:# Created by FHEM/98_SVG.pm, 2014-06-10 00:44:08
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 title '<L1>'
set ytics
set y2tics
set grid ytics
set ylabel "Sonnenaufgang"
set y2label "Sonnenuntergang"
set yrange [4:10]
set y2range [16:22]

#DbLog sunDummy:sunrise:::$val=time2dec($val)
#DbLog sunDummy:sunset:::$val=time2dec($val)
#DbLog sunDummy:sunset:::$val=time2dec($val)

plot "<IN>" using 1:2 axes x1y1 title 'Sonnenaufgang' ls l6fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Sonnenuntergang' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title ' ' ls l4fill lw 1 with lines


Hat da jemand einen Fingerzeig?

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...