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

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

Vorheriges Thema - Nächstes Thema

betateilchen

(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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DrBytebreaker

Kannst du nem Perl-Problemfall - wie z. B. mir - das 99_utils.pm "Zubehör" posten?  ;)
FHEM 5.7 Raspian auf Raspberry 2, 3 AVR-NetIOs, OWS Temperatursensoren, FS20-Aktoren und Sensoren, div. GPIOs, Intertechno Funksteckdosen, 3 WebCams

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

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);
}

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

CQuadrat

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
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

marvin78

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).

CQuadrat

FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

topfi

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.

Puschel74

#8
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)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

stromer-12

#DbLog myTwilight:sr:::$val=time2dec($val)
#DbLog myTwilight:ss:::$val=time2dec($val)
#DbLog myTwilight:ss:::$val=time2dec($val)
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Puschel74

#10
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)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Pnemenz

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

betateilchen

Du solltest vielleicht einfach fhem-Befehle nicht mit perl-Funktionen mischen. Das funktioniert nämlich nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hexenmeister

Cool!
habe nachgebaut und auch was dabei gelernt ;) Danke!

Pnemenz

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.  :(