Script Zeiten addieren

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

JürgenHM
Beiträge: 13
Registriert: 07.06.2018, 16:33

Script Zeiten addieren

Beitrag von JürgenHM » 07.06.2018, 16:47

Hallo,
mein Name ist Jürgen und benötige eure Hilfe bei einem Script, bei dem ich einfach nicht weiterkomme. Ich habe zwar entsprechende Themen gefunden, aber es funktioniert trotzdem nicht...
Hoffentlich könnt ihr mir helfen.

Aufgabenstellung: Ich will 2 Zeiten (Ein und Dauer) addieren und in Ergebnis Res speichern.
Hier mein Script:

Code: Alles auswählen

var Ein;         !Einschaltzeitpunkt
var Dauer;    !Wert der addiert werden soll
var Res;        !Ergebnis

Ein = dom.GetObject("Wasser_Einschaltzeitpunkt").Value();
Dauer = dom.GetObject("Wasser_Einschaltdauer_Kreis_1").Value();
Res = Ein + Dauer;

WriteLine(Ein);
WriteLine(Dauer);
WriteLine(Res);
Im Ergebnis steht:
05:00:00
00:30:00
05:00:0000:30:00 >>>>>hier sollte 05:30:00 stehen
Die Eingaben für Ein und Dauer kommen über ioBroker im Zeitformat in die CCU.


Könnt ihr mir helfen?
Danke.

Gruß
Jürgen
Zuletzt geändert von alchy am 07.06.2018, 18:55, insgesamt 2-mal geändert.
Grund: verschoben aus Informationen zum HomeMatic-Forum & Code in Codetags posten

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Script Zeiten addieren

Beitrag von alchy » 07.06.2018, 18:31

Bei deinen Systemvariaben handelt es sich nach meiner Glaskugel um Zeichenkettenvariablen.
Der Wert dieser Variablen ist also ein string und mit strings kann man schlecht rechnen.

Code: Alles auswählen

string eins = "1";
string zwei = "2";
WriteLine(eins+zwei);
Ergibt eben 12.


Abhilfe schafft da, vorher die ausgelesenen Werte in das umzuwandeln, womit du Rechnen kannst.
Aber:
Vielleicht beschreibst du erstmal was du eigentlich vor hast.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

JürgenHM
Beiträge: 13
Registriert: 07.06.2018, 16:33

Re: Script Zeiten addieren

Beitrag von JürgenHM » 07.06.2018, 18:59

Also das Projekt soll meinen bisherigen Bewässerungscomputer ersetzen, der gerade den Geist aufgibt.
Insgesamt gibt es 6 Kreise (6 x Dauer) und eine (1) Startzeit. Alles über angelegte Variablen aus ioBroker beschrieben.
Ich will auf die Startzeit die erste Bewässerungsdauer (von Kreis 1) aufadieren. Das Ergibt die Startzeit von Kreis 2 usw.
Ist ein Kreis abgewählt, wird der Kreis überspringen.
Funktioniert schon alles - bis auf das aufadieren der Zeiten.
Ich hoffe, ich habe das so anständig erklärt, dass es jeder verstehen kann.
Mit dem umwandeln der Variablen habe ich heute Mittag zugebracht. Leider ohne Erfolg.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Script Zeiten addieren

Beitrag von alchy » 07.06.2018, 19:06

Ob das wohl der richtige Weg ist? Naja, egal es ist dein Weg, gib mir 5 Min.

Code: Alles auswählen

! Zeiten aus Stringvariable berechnen
! v0.1 (c) by Alchy
object oEin = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Wasser_Einschaltzeitpunkt"); ! Variable enthaelt string im Format "HH:MM:SS"
object oDauer = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Wasser_Einschaltdauer_Kreis_1");! Variable enthaelt string im Format "HH:MM:SS"
if( (oEin) && (oDauer)){
string ein = oEin.Value(); 
string dauer = oDauer.Value(); 
string res = (((("1970-01-01 " # ein ).ToTime() + (("1970-01-01 " #dauer).ToTime() + 3600))).Format("%H:%M:%S"));
WriteLine("Einschaltdauer endet um " #res #" Uhr");
}else{WriteLine("Variablen nicht vorhanden");}
Alchy
Zuletzt geändert von alchy am 07.06.2018, 19:19, insgesamt 1-mal geändert.
Grund: Script

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

JürgenHM
Beiträge: 13
Registriert: 07.06.2018, 16:33

Re: Script Zeiten addieren

Beitrag von JürgenHM » 07.06.2018, 19:40

Hallo Alchy,
funktioniert!
Vielen Dank für deine Hilfe.

Grüße
Jürgen

kroegi
Beiträge: 48
Registriert: 11.09.2018, 16:01

Re: Script Zeiten addieren

Beitrag von kroegi » 20.12.2021, 11:46

Ich krame das mal raus.
Ich möchte zur Aktuellen Uhrzeit 5min drauf schlagen und diese dann auf dem e Paper Display anzeigen lassen.

Aktuell sieht die Ausgabe der Zeile so aus:

Code: Alles auswählen

string zeile2 = system.Date("%H:%M ");
Dann wird die aktuelle Zeit angezeigt, klar.
Ich möchte allerdings 5 min draufschlagen.

Warum?
Das Display aktualisiert sich alle 5min und dann soll die angezeigt Uhrzeit voreilen, sonst würde sie ja 5min nacheilen.
Somit ist man immer pünktlich oder sogar zu früh fertig...das Display soll ins Bad auf Augenhöhe.
Es werden noch Datum und Aussentemperatur angezeigt.

Wie kann ich das tun?

Danke!

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Script Zeiten addieren

Beitrag von Black » 20.12.2021, 11:54

Code: Alles auswählen

localtime+300
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

kroegi
Beiträge: 48
Registriert: 11.09.2018, 16:01

Re: Script Zeiten addieren

Beitrag von kroegi » 20.12.2021, 12:01

Black hat geschrieben:
20.12.2021, 11:54

Code: Alles auswählen

localtime+300
Black
Danke.
wie bekäme ich davon dann nur die Stunden und Minuten?

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Script Zeiten addieren

Beitrag von Black » 20.12.2021, 12:12

Das Handbuch Script Doku Teil 1, Seite17 sagt:

Code: Alles auswählen

(localtime+300).Format("%H:%M");
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Script Zeiten addieren

Beitrag von MichaelN » 20.12.2021, 12:34

ALso eigentlich sagt das Handbuch nicht, das es eine Konstante (?) localtime gibt. Oder hast Du eine andere Ausführung als ich?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“