Aktor-Einschaltzeit anpassen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
BDO
Beiträge: 75
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 26 Mal
Danksagung erhalten: 1 Mal

Aktor-Einschaltzeit anpassen

Beitrag von BDO » 25.11.2021, 19:03

Hallo „Wissende“,
ich würde so gerne euren Think-Tank noch einmal um Hilfe bitten.
Es geht darum, für einen Aktor die Funktion ON_TIME zu nutzen. Angenommen, ich habe 30 Sekunden vorgegeben, muss aber den Vorgang nach 10 Sekunden unterbrechen.
Ich möchte nun die verstrichene Zeit (10) von der Gesamtzeit (30) abziehen und nach der Unterbrechung den Aktor für die fehlende Zeit (20) neu starten.
Ich habe leider nichts Passendes im Forum entdecken können. Hat jemand vielleicht eine Idee, um das in einem Script zu realisieren?
Wie immer wäre ich sehr dankbar.
Gruß Boris

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

Re: Aktor-Einschaltzeit anpassen

Beitrag von MichaelN » 25.11.2021, 19:08

Eventuell mit einem CUXD Timer.
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 +++

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Aktor-Einschaltzeit anpassen

Beitrag von Tyfys » 26.11.2021, 13:40

Hallo Boris

Falls du noch eine weitere Idee gebrauchen kannst....

Der ON_TIME - Datenpunkt ist leider nur schreibend definiert. Da kann man also nicht die Restzeit auslesen.

Man muss sich also alles errechnen und ggf. merken.(Systemvariable)

So kannst du z.B. die Schaltzeitpunkte eines Kanals ermitteln und Zeitdifferenzen berechnen:

Code: Alles auswählen

!letzte Schaltzeit ermitteln lesbar und  Rechnen
string   Schaltzeit = dom.GetObject("HM-LC-SW4-SM.JEQ0143962:1").LastTimestamp().Format("%d.%m.%y %T Uhr");
WriteLine(Schaltzeit);

integer Schaltzeilt_numerisch = dom.GetObject("HM-LC-SW4-SM.JEQ0143962:1").Timestamp().ToInteger();
WriteLine(Schaltzeilt_numerisch);

!aktuelle Zeit lesbar und zum Rechnen
string  Jetzt = system.Date().ToTime().Format("%d.%m.%y %T Uhr");
WriteLine(Jetzt);

integer  Jetzt_numerisch = system.Date().ToTime().ToInteger();
WriteLine(Jetzt_numerisch);

!Zeitdifferenz zum Rechnen und lesbar
integer DifferenzSek  = Jetzt_numerisch - Schaltzeilt_numerisch;
WriteLine("Differenz in Sekunden: " # DifferenzSek);

string DifferenzZeit = DifferenzSek.ToTime().Format("%T");
WriteLine("Differenz in Std/Min/Sek: " # DifferenzZeit);

!oder über Zeitpunkt der Änderungen einer Variablen
var varname = "deineVariable";
integer varzeit  = dom.GetObject(ID_SYSTEM_VARIABLES).Get(varname).LastTimestamp().ToInteger();
WriteLine(dom.GetObject(ID_SYSTEM_VARIABLES).Get(varname).LastTimestamp());
WriteLine(varzeit);
Vielleicht hilft es dir weiter.
Gruß
Harry

BDO
Beiträge: 75
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 26 Mal
Danksagung erhalten: 1 Mal

Re: Aktor-Einschaltzeit anpassen

Beitrag von BDO » 27.11.2021, 14:37

Hallo Harry,
danke für die sehr hilfreichen Anregungen zum "Time Management".
Damit werde ich die richtige Lösung zu meiner Aufgabe finden.
Super Hilfe!
Gruß Boris

Antworten

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