Autor Thema: sun_time umrechnen in Lokalzeit mit Sommerzeit  (Gelesen 19495 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

ChristophB

  • Gast
sun_time umrechnen in Lokalzeit mit Sommerzeit
« am: 29. März 2009, 14:28:06 »
Hallo,

ich verwende sun_time zur Rolladensteuerung. Sonnenaufgang und Sonnenuntergang konvertiere ich mittels TOD_TO_DT und UTC_TO_LTIME (DST_ENABLE:TRUE, TIME_ZONE_OFFSET:60) zur Lokalzeit. Jedoch nach der Zeitumstellung auf Sommerzeit wird nicht die Stunde für die Sommerzeit dazuaddiert. In der Anleitung zur Oscat LIB
steht:

Damit SUN_TIME unabhängig vom Einsatzort funktioniert werden alle Zeiten in UTC (Weltzeit) berechnet und können bei Bedarf wieder in Lokalzeit umgerechnet werden.

Hab ich aber bisher nicht hinbekommen. SysRtcGetTime -> UTC_TO_LTIME funktioniert prima. bei sun_time fehlt aber das Datum, daher erkennt UTC_TO_LTIME die Sommerzeit nicht. Wie bekomme ich das hin?

Christoph

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #1 am: 29. März 2009, 14:40:16 »
ein tod_to_dt erzeugt dir zawr ein dt (dateTime format) aber das datum des erzeugten wertes ist 1.1.1970 da ja im tod kein datum steckt.

um aus einem tod ein dt mit aktueller zeit / datum zu erzeugen musst du wie folgt vorgehen:

1. erzeuge ein dt mit sonnenaufgang
dt_sunrise := dt_to_date(utc) + sunrise;

2. dann wandle es in lokalzeit um



ChristophB

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #2 am: 29. März 2009, 17:00:32 »
Will nicht so recht:

dt_sunrise := Datum + TOD_TO_DT(Sonnenaufgang);

Datum liegt schon DATE vor
Sonnenaufgang ist TOD (von sun_time)
dt_sunrise ist DT

Fehlermeldung: Unzulässiger Typ in Parameter 2 von "+": Kann DT nicht in DATE konvertieren
und Unverträgliche Typen: Kann DATE nicht in DT konvertieren

Folgendes habe ich auch probiert:
dt_sunrise := DATE_TO_DT(Datum) + TOD_TO_DT(Sonnenaufgang);
Fehlermeldung: Unzulässiger Typ in Parameter 2 von "+": Kann DT nicht in DT konvertieren

wo ist mein Denkfehler

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #3 am: 29. März 2009, 22:02:23 »
du sollst ja auch nicht die tod in ein dt umwandelt, denn dt + dt geht nicht.

du sollst date + tod machen das geht und ergibt eine dt

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #4 am: 29. März 2009, 22:15:41 »
sorry ich hab dir schmarrn erzählt.
folgendes funktioniert bei mir:
zu einem dt kannst du eine zeit addieren
vorsicht. aber das dt muss auf 0:00 lauten also ein datum verwenden und in ein dt wandeln sonst addiert der die zeit zur aktuellen tageszeit

dtx := DATE_TO_DT(D#2009-1-1) + TOD_TO_TIME(TOD#13:33);

ChristophB

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #5 am: 30. März 2009, 00:08:17 »
Ja danke für die Hilfe. Jetzt klappts:

dt_Sonnenaufgang := DATE_TO_DT(Datum) + TOD_TO_TIME(Sonnenaufgang);

Mit den Zeit Variablentypen hab ich immer so meine Probs.

Christoph

firsteleven

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #6 am: 12. April 2009, 06:56:32 »
Guten Morgen zusammen,
ich bin Neuling also bitte nicht schimpfen ;)
folgendes habe ich programmiert aber versehe das ergebnis nicht, denn es wird doch nicht um 18Uhr Lokalzeit dunkel, geschweige den wird es um 4Uhr30 hell  ???

Der Baustein liefert schon die richtigen Werte:
hi habe gerade folgenden fall geprüft:

baustein sun_time
- latitude 52.5
- longitude 13.5
- utc dt#2007-04-17-09:00
ergibt folgende ergebnisse
- sun_midday 12:00:50
- sun_rise 4:02
- sun_set 18:08

vergleich internet (volker quaschning) sun_rise 4:30 und sun_set 18:05
vergleich mit geoastro sun_rise 4:05 und sun_set 18:08

Dachte ich, ok umrechnen auf Lokalzeit:

sorry ich hab dir schmarrn erzählt.
folgendes funktioniert bei mir:
zu einem dt kannst du eine zeit addieren
vorsicht. aber das dt muss auf 0:00 lauten also ein datum verwenden und in ein dt wandeln sonst addiert der die zeit zur aktuellen tageszeit

dtx := DATE_TO_DT(D#2009-1-1) + TOD_TO_TIME(TOD#13:33);

Der Syntax habe ich probiert, aber hat nicht funktioniert da ich nicht weiss wo hin damit.
Dies ist doch eine deklaration also dachte ich in den oberen Teil?

ChristophB

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #7 am: 12. April 2009, 19:37:53 »
Hallo,

dort wird das Datum mit der Zeit addiert. Kommt also in den Programmteil und nicht in den Deklarationsteil. Die Variable dtx muß aber als DT deklariert werden.

Christoph

firsteleven

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #8 am: 14. April 2009, 14:28:02 »
Danke, hab das Prinzip nun verstanden, aber ich weiss nicht mit welchem Baustein ich DT und TOD addieren kann: (manchmal ist st wohl doch einfacher)


Mein Hauptproblem liegt aber eigentlich an der errechneten Zeit:
versehe das ergebnis nicht, denn es wird doch nicht um 18Uhr Lokalzeit dunkel, geschweige den wird es um 4Uhr30 hell


Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #9 am: 14. April 2009, 16:13:39 »
um tod zu dt zu addieren musst du zuerst tod in time wandeln mit tod_to_time
und dann kannst du mittels add dt und time adieren

firsteleven

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #10 am: 15. April 2009, 08:39:48 »
Danke, die Umrechnung funktioniert nun.
Aber: Mein Hauptproblem liegt an der errechneten Zeit!
Ich versehe einfach nicht, warum es laut dem Programm um 4:30 hell und um18:30 dunkel wird.
liegt es an der Lichtbrechung?

« Letzte Änderung: 15. April 2009, 08:44:21 von firsteleven »

VeronaFeldbusch

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #11 am: 15. April 2009, 13:40:56 »
Hallo,

du must ja die 2 Stunden dazu rechnen UTC + 2h = MESZ

also 4:39 ist 6:39 MESZ für Sonnenaufgang

und 18:15 ist 20:15 MESZ für Sonnenuntergang

Gruß Verona

firsteleven

  • Gast
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #12 am: 16. April 2009, 11:45:15 »
Hallo,

du must ja die 2 Stunden dazu rechnen UTC + 2h = MESZ

also 4:39 ist 6:39 MESZ für Sonnenaufgang

und 18:15 ist 20:15 MESZ für Sonnenuntergang

Gruß Verona

Ja richtig, danke verona

Offline gravieren

  • Entwickler
  • *****
  • Beiträge: 578
    • Profil anzeigen
Re: sun_time umrechnen in Lokalzeit mit Sommerzeit
« Antwort #13 am: 16. April 2009, 15:51:48 »
Hi

Da werden Sie geholfen   ;D