HomeMatic CCU2 bei ELV bestellen

Tagesstart und Tagesende zum Vortag ermitteln

Betrieb der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Werbung


Tagesstart und Tagesende zum Vortag ermitteln

Beitragvon WAdler 68 » 29.04.2018, 15:38

Irgendwie steckt hier gerade der Wurm drin. Ich komme nicht drauf, warum ich als Ergebniss eine 5 stellige Zahl bekomme....
Ich habe mir ein Objekt (Type Zeichen) (Sonnenaufgang_Speicher) angelegt.
Darin eine Variable (Type Zahl) (diff)
und noch eine Variable (Type Text) (temp)

In einem anderem Objekt, das minütlich aufgerufen wird. ist dann die berechnung mit drin:
in dem Objekt sind die Variabeln
Sa_Su_temp und Sa_Su_wandel als uhrzeit angelegt.

wenn Sonnenaufgang_Speicher.temp <> SONNENAUFGANG dann
Sa_Su_temp := Sonnenaufgang_Speicher
Sa_Su_wandel := SONNENAUFGANG
Sonnenaufgang_Speicher.diff := Sa_Su_wandel - Sa_Su_temp <---- hier scheint der Fehler zu sein
Sonnenaufgang_Speicher := Sonnenaufgang_Speicher.temp <---- Vortag speichern
Sonnenaufgang_Speicher.temp := SONNENAUFGANG <--- das ist nötig um nicht minütlich zu rechnen
endewenn

Ergebniss heute: 20935
OK, / 3600 fehlt noch. doch das Ergebniss stimmt immer noch nicht mit den 4 min Tagesdifferenz überein.
errechnete Tageslänge heute ist aber +4 min


Der Sonnenuntergang sieht völlig gleich aus und den lasse ich mal weg....
WAdler 68
 
Beiträge: 1256
Registriert: 09.11.2008, 17:29

Re: Tagesstart und Tagesende zum Vortag ermitteln

Beitragvon Familienvater » 29.04.2018, 23:42

Hi,

wichtigster Verbesserungsvorschlag:
Variablen-/Objekttypen mit in den Namen aufnehmen. Ich blicke vor lauter Sa_Su ähnlicher Namen und Uhrzeit/Zeichenketten-Variablen nicht mehr durch, wann explizite, implizite oder überhaupt Typumwandlungen notwendig werden.

Mir ist auch nicht klar, warum so etwas jede Minute geprüft werden muss, es müsste theoretisch reichen, das zum Tageswechsel zu machen, damit ändern sich die Daten den ganzen Tag über nicht mehr.

Da ich ehrlich nicht weiß, wie z.B. die Zuweisung einer dynamischen Zeichenkette (vorraussichtlich im Format "HH:MM:SS") zu einer Uhrzeit Funktioniert, hilft wie immer nur, sich ein Test-Makro zu erstellen, und jeden Schritt einzeln per "Ausgabe" z.B. in eine Datei oder mit warte-Befehlen in ein Zeichenketten-Objekt zu machen, und dieses zu beobachten. Das ist die einzige mir bekannte Art, die Funktionsweise von unvorhersagbaren Typkonvertierungen und Rechenoperationen mit Uhrzeiten/Zeiten/Zahlen zu ergründen, bei Dir kommen erschwerend noch Zeichenketten hinzu. Die selbst ermittelten Ergebnisse sollten leider auch noch regelmäßig auf Beständigkeit überprüft werden, falls nach einem Update auf einmal was anders funktioniert (absichtlich(Feature) oder versehentlich(Bug)).

Grundsätzlich:
Uhrzeit-Variablen sind eher nur eine "Formatierungsanweisung" für die Darstellung, intern sind das auch eher Zeitstempel mit Datums-Anteil, von daher kann bei der Rechnerei dann auch noch der unterdrückte Datumsanteil zu massiv unerwünschten Nebenwirkungen führen, weil vielleicht ein "12:34:56" intern zu 12:34:56 01.01.1970 wird, und bei einer Verrechnung mit einem "Zeitstempel" auch noch 48 Jahre, 4 Monate und Quetschie in Sekunden oder Tagesbruchteilen das Ergebnis irgendwie verfälschen.


Der Familienvater
Familienvater
 
Beiträge: 6068
Registriert: 31.12.2006, 16:18
Wohnort: Rhein-Main


Zurück zu homeputer Studio / Standard: allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.