(http://up.picr.de/18378981tu.jpg)
Definition des SVG plots:
Internals:
CFGFN
DEF sunDummyLog:SVG_sunDummy:CURRENT
GPLOTFILE SVG_sunDummy
LOGDEVICE sunDummyLog
LOGFILE CURRENT
NAME SVG_sunDummy
NR 276
STATE initialized
TYPE SVG
Attributes:
fixedrange year
room 19 Balkon
title {"".dec2hms($data{min1})." - ".dec2hms($data{max1})." - ".dec2hms($data{min2})." - ".dec2hms($data{max2})}
(http://up.picr.de/18378995ne.jpg)
zugehörige gplot-Datei:
# Created by FHEM/98_SVG.pm, 2014-05-18 23:36:13
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 '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "Sonnenaufgang"
set y2label "Sonnenuntergang"
set yrange [4:10]
set y2range [16:22]
#FileLog 4:sunDummy.sunrise\x3a::time2dec($fld[3])
#FileLog 4:sunDummy.sunset\x3a::time2dec($fld[3])
#FileLog 4:sunDummy.sunset\x3a::time2dec($fld[3])
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
Die beiden benutzten Funktionen time2dec und dec2hms dienen dazu, Uhrzeiten als Dezimalwerte zu verwenden (und umgekehrt) um sie auf der y-Achse plotten zu können. 05:30:00 Uhr wird dadurch zu 5,5 (und umgekehrt für die Anzeige der Titelzeile) Diese Funktionen muss man sich selbst programmieren und z.B. in die 99_myUtils.pm einbauen.
Die Titelzeile des plots bezeichnet
- frühester bisher erfasster Sonnenaufgang
- spätester bisher erfasster Sonnenaufgang
- frühester bisher erfasster Sonnenuntergang
- spätester bisher erfasster Sonnenuntergang
Eine Spielerei - aber ich wollte einfach mal wissen, ob es überhaupt irgendwie geht. Läuft noch nicht allzulange, deshalb ist bei meinem fixedrange=year noch nicht so arg viel zu sehen. Wird aber bestimmt eine interessante Grafik, wenn die Daten mal ein paar Monate länger gesammelt werden.
Kannst du nem Perl-Problemfall - wie z. B. mir - das 99_utils.pm "Zubehör" posten? ;)
das wird vermutlich sehr ähnlich ausschauen wie die lightmanager astro funktion.
http://cms.jbmedia.de/images/stories/lmpro_new/4_big.jpg
und wieder mal
zeigt sich das mit fhem alles geht und vor allem tolle namen fehlen.
Zitat von: DrBytebreaker am 24 Mai 2014, 09:27:19
Kannst du nem Perl-Problemfall - wie z. B. mir - das 99_utils.pm "Zubehör" posten? ;)
Eigentlich wollte ich die Leute ja zum Selberdenken motivieren. Das ist Mathematik, Grundschule, 3.Klasse
sub time2dec($){
my ($h,$m,$s) = split(":", shift);
$m = 0 if(!$m);
$s = 0 if(!$s);
my $t = $m * 60;
$t += $s;
$t /= 3600;
$t += $h;
return ($t)
}
sub dec2hms($){
my ($t) = @_;
my $h = int($t);
my $r = ($t - $h)*3600;
my $m = int($r/60);
my $s = $r - $m*60;
return sprintf("%02d:%02d:%02d",$h,$m,$s);
}
Hallo Betateilchen,
so aus Interesse mal gefragt:
Wie ist den Dein dummy-Device "sunDummy" denn definiert? Wenn ich das Beispiel hier richtig interpretiere, dann sind in diesem Dummy sowohl Sonnenuntergang ("sunset") als auch Sonnenaufgang ("sunrise") gespeichert :o
Ich dachte bisher, dass ein dummy-Device nur einen Wert abspeichern kann ???
Ich habe z.B. je einen dummy für Sonnenauf- und Untergang angelegt.
Viele Grüße
Christoph
Wieso sollte das so sein? Du kannst doch mit setreading (und/oder UserReadings) beliebig viele Readings im dummy unterbringen (wie übrigens in jedem anderen Device auch).
Bingo. Das hatte ich gar nicht auf meinem Radar.
Nicht hauen: Wie generiert man solche Readings und das passende Logfile mit den täglichen sunrise/sunset-Zeiten?
Klar könnte ich eine Tabelle für alle Ewigkeit ausrechnen, schließlich ändert sich das (hoffentlich :o) in den nächsten hundert Jahren nicht mehr. Aber mir geht es um ein besseres Verständnis von FHEM.
Hallo,
ich wäre auch dankbar für ein kleine Hilfestellung wie das mit DbLog aussehen würde.
Die Definition für den weblink bekomm ich ja hin aber wie muss die Umrechnung im gplot angestossen werden ???
#DbLog <SPEC1>:time2dec(state)
klappt so leider nicht :(
Reading ist vorhanden:
Aus myDbLog:
Zitat2014-05-29_01:06:00 04:59:13
Dummy siehe Screenshot.
Für einen sanften Tritt wäre ich mal wieder dankbar :-[
Als label steht auch nur HISTORY ??? erledigt
Grüße
Edith: Hier noch das define des weblink:
efine wl_Sonnenaufuntergang SVG myDbLog:sonnenaufuntergang:HISTORY
attr wl_Sonnenaufuntergang fixedrange year
attr wl_Sonnenaufuntergang label {"".dec2hms($data{min1})." - ".dec2hms($data{max1})." - ".dec2hms($data{min2})." - ".dec2hms($data{max2})}
attr wl_Sonnenaufuntergang plotfunction Sonnenaufgang Sonnenuntergang
Edith1: Ich nähere mich langsam an 8)
#DbLog myTwilight:sr:::$val=time2dec($val)
#DbLog myTwilight:ss:::$val=time2dec($val)
#DbLog myTwilight:ss:::$val=time2dec($val)
Hallo,
crazy - vielen Dank.
Das klappt schonmal wunderbar ;D
Grüße
Edith: Komm mal in meine Gegend - ein Bierchen steht im Kühlschrank für dich 8)
Zitat von: marvin78 am 27 Mai 2014, 11:33:56
Wieso sollte das so sein? Du kannst doch mit setreading (und/oder UserReadings) beliebig viele Readings im dummy unterbringen (wie übrigens in jedem anderen Device auch).
Ich versuche das jetzt schon einige Zeit aber es klappt bei mir nicht. Wenn ich mit setreading versuche die Uhrzeit in einen Dummy zu schreiben:
define sonnenzeit dummy
setreading sonnenzeit aufgang {sunrise_abs()}
dann hab ich folgendes Ergebnis (siehe Anhang)
ich hab es schon mit allen möglichen Varianten versucht. komm aber auf keinen grünen Zweig >:(.
Peter
Du solltest vielleicht einfach fhem-Befehle nicht mit perl-Funktionen mischen. Das funktioniert nämlich nicht.
Cool!
habe nachgebaut und auch was dabei gelernt ;) Danke!
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.
auch das hab ich versucht:
setreading sonne aufgang sunrise_abs()
mit dem selben Erfolg.
Anscheinend hab ich tiefliegendes Verständnisproblem vor allem mit der Syntax von FHEM. Das ist für mich inzwischen wirklich frustrierend. :(
Versuche doch anders herum, also mit einem Perl-Befehl.
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
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.
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())}
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())}
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')); }
Mit sunrise_abs() und sunset_abs() sollte man nicht unbedingt arbeiten.
CommandSetReading aufzurufen ist sicherlich etwas effezienter, aber für einen Anfänger nicht zu verstehen. ;)
als ob hier im Forum nur Dinge gepostet würden, die für Anfänger verständlich sind... 8)
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. ;)
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
Zitat von: betateilchen am 08 Juni 2014, 12:05:36
Mit sunrise_abs() und sunset_abs() sollte man nicht unbedingt arbeiten.
warum?
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.
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.
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
Zitataber das Ergebnis ist etwas seltsam
in der Tat ;)
mache doch einen Select, wie sehen denn die Daten aus?
@hexenmeister
In meiner DbLog Datenbank waren noch alte sunrise Datensätze mit sunrise >24:00:00, da ich :
*00:05:00 { CommandSetReading(undef, "sunDummy sunrise ".sunrise('REAL')); CommandSetReading(undef, "sunDummy sunset ".sunset('REAL')) }
mal tagsüber aufgerufen habe und dadurch "nächster Sonnenaufgang morgen früh" >24 ausgelesen wurde.
Habe auf die Schnelle das Ganze mal mit FileLog (wie betateilchen) nachgebaut, habe z.Zt. aber noch keine Daten, da ja die erst morgen früh 00:05:00 neu eingelesen werden. Werde mich also bis morgen gedulden müssen.
VG
Frank
Das erklärt natürlich das Problem :D
Jetzt, wo ich Daten über 2 Tage habe, es funktioniert. Die einzige Frage, die sich mir stellt ist: warum funktioniert der SVG Plot nur mit CURRENT und, wie vor einiger Zeit ("bitte SVG Plot´s von CURRENT auf HISTORY umstellen") NICHT??
Unterschied DbLog/FileLog?
VG
Frank
seit vorgestern verschiebt sich hier der morgendliche Sonnenaufgang bereits wieder nach hinten...
Zitat von: betateilchen am 20 Juni 2014, 19:16:55
seit vorgestern verschiebt sich hier der morgendliche Sonnenaufgang bereits wieder nach hinten...
Ja, es geht wieder abwärts ::'(
Da in diesem Thread vermutlich die entsprechend interessierten Foristen unterwegs sind, eine Frage im weiteren Zusammenhang zum Sonnenauf- und untergang:
Weiß jemand, woher ich die Mondphasen bekommen kann bzw. wie ich die darstellen kann? Schön wäre auch die jeweilige Mondauf- und untergangszeit.
@betateilchen: Falls Du diese Frage hier nicht haben willst, kann ich sie auch gerne woanders (wo?) stellen.
Viele Grüße
Christoph
ich habe wohl auch ein paar Probleme, kann mir jemand sagen warum ich trotz übernahme der gesamten Codeschnipsel folgendes siehe Screenshot erhalte... dazu zwei Fragen
1. oben rechts wird die Zeit nicht richtig dargestellt im Titel, - frühester bisher erfasster Sonnenuntergang - spätester bisher erfasster Sonnenuntergang
2. warum sieht mein Plot Editor im linken unteren Bereich anders aus, da kann ich nicht das einstellen wie es betateilchen im Bild zeigt
die 99_myUtils.pm ist so erstellt wie im Fred oben, die Definition des SVG plots ist die gleiche sowie die zugehörige gplot-Datei.
Was mache ich noch falsch..?
@moonsorrox
Hallo, lösch mal deine Filelog Datei vom sunDummy und führe die Abfrage in der Nacht aus. Wenn du das tagsüber mal gemacht hast ist die Zeit bis zum nächsten Sonnenaufgang >24h.
Hatte damals den gleichen Fehler gemacht, als ich das getestet habe.
ZitatIn meiner DbLog Datenbank waren noch alte sunrise Datensätze mit sunrise >24:00:00, da ich :
Code: [Auswählen]
*00:05:00 { CommandSetReading(undef, "sunDummy sunrise ".sunrise('REAL')); CommandSetReading(undef, "sunDummy sunset ".sunset('REAL')) }
mal tagsüber aufgerufen habe und dadurch "nächster Sonnenaufgang morgen früh" >24 ausgelesen wurde.
Habe auf die Schnelle das Ganze mal mit FileLog (wie betateilchen) nachgebaut, habe z.Zt. aber noch keine Daten, da ja die erst morgen früh 00:05:00 neu eingelesen werden. Werde mich also bis morgen gedulden müssen.
VG
Frank
in der steht ja noch gar nücht drin, die is von gestern am Tage - hätte also heute in der Nacht schon ein Eintrag sein sollen, oder täusche ich mich..?
Ich denke auch wie ich auch schon gefragt habe etwas stimmt mit meinem Plot Editor nicht..!
Dann liegt der neue Eintrag unter deinem alten Plot und du siehst den nicht, glaub's, war bei mir das gleiche.
Wie das bei dem Ploteditor war, weis ich nicht mehr. Nachdem ich ein rereadcfg gemacht hatte, konnte ich dann sunrise, Sunset und das dummy im Ploteditor auswählen. Anfangs erschien das dummy device bei mir auch nicht im Editor.
P.S. und warte bis nach Mitternacht, damit du valide Daten bekommst ;)
VG
Frank
so ich habe mal ins Logfile geschaut und sehe diesen Fehler von meinem sunMarker:
Unknown command CommandSetReading(undef,, try help.
2014.06.28 00:05:00 3: sunMarker: Unknown command CommandSetReading(undef,, try help.
den sunMarker habe ich so wie hier in dem Beitrag dargestellt komplett übernommen, damit ist natürlich auch kein Eintrag im Filelog, was ist jetzt nun falsch..?
Sieht bei mir so aus, copy&paste Fehler?
mal schauen jetzt meckert er nicht mehr, ich hatte den von ganz vorn hier aus dem Beitrag genommen aus der Antwort #20 von betateilchen...
er nimmt meines Wissens diese immer aus den Internals und so hatte ich es auch übernommen und sieht auch bei mir genauso aus.
Edit:// noch screenshot ran gehangen mit dem der gleiche Fehler im Log, weiß nicht was ich falsch mache
Unknown command CommandSetReading(undef,, try help.
2014.06.28 13:46:00 3: sunMarker: Unknown command {, try help.
Guck mal richtig in die Antwort 20 von betateilchen, dass ist das define aus der fhem.cfg.
P.S. Nach ))Real hast du 2 ;; das kommt so nur direkt in die fhem.cfg. In der DEF verdoppelt fhem das beim abspeichern
in der DEF so:
*00:05:00 { CommandSetReading(undef, "sunDummy sunrise ".sunrise('REAL')); CommandSetReading(undef, "sunDummy sunset ".sunset('REAL')) }
VG
Frank
OK, aber ich habe es ja jetzt so wie du es auch abgebildet hast drin..! ;)
habe die Zeit mal auf 15:44 gesetzt und er zeigt mir wieder diesen blöden Fehler:
Unknown command CommandSetReading(undef,, try help.
2014.06.28 15:44:00 3: sunMarker: Unknown command {, try help.
screenshot hänge ich ran damit du siehst es ist jetzt so wie bei dir, nur eben die Zeit angepasst ;)
@moonsoroxx
Hallo, ließ mal den Thread von Seite 1 an, wenn das, aus welchem Grund auch immer, bei dir nicht geht mit dem CommandSetReading dann mach es über 2 dummys, dass geht totsicher. Dann must du nur den Rest anpassen. Sunrise in ein dummy schreiben und sunset in dummy 2. Dann hast du erst mal die 2 Readings.
Was mich nur wundert ist, dass es bei dir mit CommandSetReading nicht gehen will :o
VG
Frank
P.S. Bin dann erst mal arbeiten
Hey,
ich habe folgendes SVG Plot File:
# Created by FHEM/98_SVG.pm, 2014-08-10 01:28:39
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]
#FileLog 4:sunDummy.sunrise\x3a:::$val=time2dec($val)
#FileLog 4:sunDummy.sunset\x3a:::$val=time2dec($val)
#FileLog 4:sunDummy.sunset\x3a:::$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
Auf der Website in SVG_Sonnenstand_1 habe ich stehen:
Bzw. in der FileLog_sunDummy:
2014-08-10_01:18:02 sunDummy sunrise: 06:16:02
2014-08-10_01:18:02 sunDummy sunset: 20:58:59
Die Funktion time2dec ist aus diesem Thread in die utils kopiert.
Wann wird die Funktion time2dec aufgerufen?
Ich bekomme keine Anzeige.
Habt ihr eine Idee
Grüße stim
Wird bei Attribut-Verwendung von fixedrange month etwas angezeigt? Bei mir ja, aber setze ich fixedrange auf year sehe ich auch nichts.
Gab mal oben den Hinweis bzgl. CURRENT vs. HISTORY, bringt bei mir leider nichts (ich hab FileLogs).
Hallo zusammen,
da ich blutiger FHEM-Anfänger bin und mich hier schon soweit durchgeboxt habe, stehe ich aktuell vor dem gleichen Problem, das keine Werte angezeigt werden.
Daher wollte ich mal fragen, ob noch jemand etwas zu einer möglichen Lösung schreiben kann.
Vielleicht gibt es ja doch noch eine funktionierende Zusammenfassung zu diesem Thema:-)
Vielen Dank
Stefan
Eigentlich ist hier alles im Thread.
Wo genau hängst Du? Sind die Daten im Log und hast Du Plot-Probleme? Oder klappt schon mit den Daten nicht?
Zitat von: hexenmeister am 08 Oktober 2014, 00:53:31
Eigentlich ist hier alles im Thread.
Wo genau hängst Du? Sind die Daten im Log und hast Du Plot-Probleme? Oder klappt schon mit den Daten nicht?
Um alle relevanten Infos zu meiner Konfig und den Logs hier zusammenzutragen, habe ich natürlich noch einmal alles kontrolliert. Ich war etwas stutzig, dass hier alles Infos vorhanden sein sollen. Aber das ist ja schon mal ein guter Hinweis.
Dabei habe ich festgestellt, dass die SVG-Plot-Datei von stim in Post #46 nicht mit der von betateilchen in Post #1 identisch ist. Den Unterschied in den drei #FileLog-Zeilen verstehe ich im Moment auch noch nicht. Also habe ich gerade die Datei von betateilchen genommen und muss sagen... es funktioniert ;D
Vielleicht war es gestern Abend für mich auch schon zu spät, um den Unterschied zu sehen:-)
Vielen Dank
Stefan
mit den inzwischen vorhandenen sunrise_abs_dat() und sunset_abs_dat() funktionen und logProxy lassen sich sonnenauf- und -untergang auch ohne die werte täglich zu loggen sondern 'live' berechnet plotten (und auch in andere plots einbauen). das ganze drum herum wie die umwandlung von uhrzeit nach dezimal und zurück ist dabei gleich geblieben.
(http://forum.fhem.de/index.php?action=dlattach;topic=26529.0;attach=21230)
mehr dazu gibt es hier: http://forum.fhem.de/index.php/topic,26529.msg217307.html#msg217307 (http://forum.fhem.de/index.php/topic,26529.msg217307.html#msg217307)
gruss
andre
edit: die aktuelle Version ist im wiki beschrieben: http://www.fhemwiki.de/wiki/LogProxy#Sonnenauf-_und_-untergangszeiten_plotten
Kann mir hier jemand noch einmal helfen?
Ich komme nicht weiter, bekomme keinen Plot denn ich weiß nicht wie genau die Funktion time2dec anzuwenden ist.
Ich habe eine Bildschirmkopie des SVG-Plot-File angefügt, vielleicht gibt es ja jemanden der weiter weiß.
Gruß
Reinhard
Zitat von: scheisserchen65 am 01 September 2015, 20:17:52
Ich komme nicht weiter, bekomme keinen Plot denn ich weiß nicht wie genau die Funktion time2dec anzuwenden ist.
Die Funktion time2dec kommt in die 99_myUtils.pm.
Grüße
Jörg
# für Sonnenaufgang - untergang
sub time2dec($){
my ($h,$m,$s) = split(":", shift);
$m = 0 if(!$m);
$s = 0 if(!$s);
my $t = $m * 60;
$t += $s;
$t /= 3600;
$t += $h;
return ($t)
}
sub dec2hms($){
my ($t) = @_;
my $h = int($t);
my $r = ($t - $h)*3600;
my $m = int($r/60);
my $s = $r - $m*60;
return sprintf("%02d:%02d:%02d",$h,$m,$s);
}
Zitat von: jnewton957 am 06 September 2015, 13:08:21
Die Funktion time2dec kommt in die 99_myUtils.pm.
Grüße
Jörg
# für Sonnenaufgang - untergang
sub time2dec($){
my ($h,$m,$s) = split(":", shift);
$m = 0 if(!$m);
$s = 0 if(!$s);
my $t = $m * 60;
$t += $s;
$t /= 3600;
$t += $h;
return ($t)
}
sub dec2hms($){
my ($t) = @_;
my $h = int($t);
my $r = ($t - $h)*3600;
my $m = int($r/60);
my $s = $r - $m*60;
return sprintf("%02d:%02d:%02d",$h,$m,$s);
}
Ja, danke, das habe ich bereits gemacht.
Mein Problem ist es in der SVG-Funktion die Funktion time2dec richtig einzubinden.
Egal was ich mache, ich bekomme nur einen leeren Plot :'(
Muss ich da in dem Feld
Function $val=time2dec($val) eintragen?
Gruß
Reinhard
Deine gplot sollte dann so aussehen.
Kopiere das einfach in deine aktuelle gplot rein und speichere sie wieder ab.
Grüße
Jörg
P.S. Die Sonnenfinsternis Ende März macht einen "unschönen" Ausschlag im Plot.
# Created by FHEM/98_SVG.pm, 2014-05-18 23:36:13
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 '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "Sonnenaufgang"
set y2label "Sonnenuntergang"
#set yrange [4:10]
#set yrange [5:11]
#set y2range [16:22]
set yrange [5:15]
set y2range [12:22]
#FileLog 4:sunDummy.sunrise\x3a::time2dec($fld[3])
#FileLog 4:sunDummy.sunset\x3a::time2dec($fld[3])
#FileLog 4:sunDummy.sunset\x3a::time2dec($fld[3])
plot "<IN>" using 1:2 axes x1y1 title 'Sonnenaufgang' ls l4fill 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 l6fill lw 1 with lines
Zitat von: jnewton957 am 06 September 2015, 17:14:06
Deine gplot sollte dann so aussehen.
Kopiere das einfach in deine aktuelle gplot rein und speichere sie wieder ab.
Grüße
Jörg
P.S. Die Sonnenfinsternis Ende März macht einen "unschönen" Ausschlag im Plot.
# Created by FHEM/98_SVG.pm, 2014-05-18 23:36:13
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 '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "Sonnenaufgang"
set y2label "Sonnenuntergang"
#set yrange [4:10]
#set yrange [5:11]
#set y2range [16:22]
set yrange [5:15]
set y2range [12:22]
#FileLog 4:sunDummy.sunrise\x3a::time2dec($fld[3])
#FileLog 4:sunDummy.sunset\x3a::time2dec($fld[3])
#FileLog 4:sunDummy.sunset\x3a::time2dec($fld[3])
plot "<IN>" using 1:2 axes x1y1 title 'Sonnenaufgang' ls l4fill 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 l6fill lw 1 with lines
Danke schön :)
Habe zwar den Code nicht kopiert und eingefügt aber ein paar wichtige Hinweise durch Deinen Post erhalten.
Nun funktioniert es bestens.
Gruß
Reinhard
ZitatP.S. Die Sonnenfinsternis Ende März macht einen "unschönen" Ausschlag im Plot.
Das stimmt nicht, der Ausschlag kommt einzig und alleine von der Umstellung Winter-/Sommerzeit!
V.G.
Frank
Zitat von: franky08 am 06 September 2015, 18:31:39
Das stimmt nicht, der Ausschlag kommt einzig und alleine von der Umstellung Winter-/Sommerzeit!
V.G.
Frank
Hi sieht bei mir etwas anders aus.
Grüße
Jörg
Die Sonnenfinsternis wird für die Berechnung der Sonnenauf- und -untergangzeiten nicht berücksichtigt.
Sonst hätte ich Mitte Mai eine Sonnenfinsternis gehabt ;)
Und bei mir hatte sich in dieser Nacht einfach nur der Cubie verabschiedet d.h. FHEM ist nicht gelaufen.
mal eine Frage für mich zum Verständnis, denn ich kapiere es nicht...!
Was ich also irgendwie nicht begreife, mein Plot wird aufgezeichnet und seit 3 Tagen entsteht so langsam eben dieser Plot...!
die andere hatte ich irgendwo hier aus dem Thread, diese also:
define sunMarker at *00:02:00 { CommandSetReading(undef, "sunDummy sunrise ".sunrise('REAL'));; CommandSetReading(undef, "sunDummy sunset ".sunset('REAL')) }
und die funktioniert nicht - hier füllt sich nichts im Log..!
Wie gesagt ich habs bisher nicht verstanden :-\ :-\
ihr habt aber schon gesehen das es hier: http://forum.fhem.de/index.php?topic=23912.msg217310#msg217310 eine version gibt die ohne log files auskommt und auch keine dummys oder ähnliches braucht?
Zitat von: justme1968 am 09 September 2015, 18:27:06
ihr habt aber schon gesehen das es hier: http://forum.fhem.de/index.php?topic=23912.msg217310#msg217310 eine version gibt die ohne log files auskommt und auch keine dummys oder ähnliches braucht?
nein noch nicht, dass werde ich mir mal anschauen...! ;)
Wer liest sich schon einen 5-Seiten Thread durch ::)
achja: die endgültige version ist im wiki beschrieben: http://www.fhemwiki.de/wiki/LogProxy#Sonnenauf-_und_-untergangszeiten_plotten (http://www.fhemwiki.de/wiki/LogProxy#Sonnenauf-_und_-untergangszeiten_plotten). damit sind auch alle eigenen routinen in 99_myUtils unnötig.
gruss
andre
sieht gut aus..:! Danke ;)
hat das schon mal jemand mit einem DOIF realisiert..?
Da denke ich es muss ein "userReadings" erstellt werden so in der Art:
{ CommandSetReading(undef, "sunDummy sunrise ".sunrise('REAL')); CommandSetReading(undef, "sunDummy sunset ".sunset('REAL')) }
falls das so funktioniert, aber wie kommen die beiden Werte dann in das Filelog..?
Hi,
vielen Dank für den Hinweis und den Wiki-Beitrag.
Wäre klassse wenn jemand die plot-Definition posten könnte, die nicht die Sonnenauf- und -untergangszeiten für's ganze Jahr plottet, sondern daraus die gelbe Hinterlegung der Tageslichtstunden im Tagesplot macht.
Wird der dummy noch benötigt? Falls ja, wie gefüllt? Werden Sonnenauf- und -untergang nur in der Plotdefinition hinterlegt, oder doch noch ins log geschrieben? Wenn ja, wie?
Vielen Dank schon im Voraus :)
Gruß, Uli
Moin UliM
Ich bin kein Experte.
Habe mir was zusammen gebastelt. :-[
1. Habe einen Helligkeitssensor nach diesen Beitrag ( http://forum.fhem.de/index.php/topic,26335.30.html (http://forum.fhem.de/index.php/topic,26335.30.html) nachgebaut.
1a. Dieser füllt ein Dummy
2. Dann habe ich zwei at 's für Sonnenauf,- untergang angelegt.
2a. Diese schreiben in den Dummy (1a) bei S-aufgang den wert 100, bei S-untergang den wert 0 in ein Reading.
3. Nun lasse ich den Dummy (1a) noch in ein Log schreiben.
4. Jetzt wird das Diagramm erstellt.
Das Ergebnis ist im Anhang zusehen.
Was mich noch stört, ist das der gelbe Bereich im Vordergrund ist, da habe ich noch keine Lösung für gefunden. :-[
Hoffe habe nicht vergessen.
So Ich weis, hier sind ganz andere Experten die dir weiter helfen können. ;)
Aber wollte mal auch was Beitragen auch auf die Gefahr hin das hier ein grinsen ;D durch Forum geht.
anbei ein paar ideen wie man das ohne extra dummy und log über logProxy lösen kann:
zusätzlich zur sonnenauf- und -untergangszeit die anzahl der tagesstunden plotten:
set y3label "Tagesstunden"
set y3range [8:19]
#logProxy Func:logProxy_Func2Plot($from,$to,'{logProxy_hms2dec(sunset_abs_dat($sec))-logProxy_hms2dec(sunrise_abs_dat($sec))}')
plot "<IN>" using 1:2 axes x1y4 title notitle ls l5 lw 1 with steps,\
sie screenshot unten.
die tagesstunden in einem plot gelb hinterlegen:
set y3range [0:1]
#logProxy Func:logProxy_Func2Plot($from,$to,'{logProxy_isDay($sec)}',{week=>60*30,day=>60*10,qday=>60})
plot "<IN>" using 1:2 axes x1y3 title notitle ls l4fill lw 1 with steps,\
siehe screenshot unten.
mit den folgenden beiden routinen (ab morgen eingecheckt):sub logProxy_hms2sec($){
my ($h,$m,$s) = split(":", shift);
$m = 0 if(!$m);
$s = 0 if(!$s);
my $t = $s;
$t += $m * 60;
$t += $h * 60*60;
return ($t)
}
sub logProxy_isDay($) {
my ($sec) = @_;
my $sr = logProxy_hms2sec(sunrise_abs_dat($sec));
my $ss = logProxy_hms2sec(sunset_abs_dat($sec));
my ($s,$m,$h) = localtime($sec);
my $cur = logProxy_hms2sec( "$h:$m:$s" );
return $cur > $sr && $cur < $ss;
}
inzwischen ist es nicht mehr nötig das komplette plotfile umzustellen wenn man logproxy verwenden möchte. es reicht das logproxy device zu definieren und die log proxy spezifischen zeilen im bestehende plotfile hinzuzufügen. statt dem #logProxy schlüsselwort wird dann der name des logproxy device verwendet. d.h. man kann nachträglich jeden beliebigen plot so hinterlegen.
@Michael: die einzelnen kurven werden in umgekehrter reihenfolge geplottet. d.h. die erste zeile ist der vordergrund und die nachfolgenden zeilen liegen dann immer weiter dahinter.
gruss
andre