Laufzeit eines Gerätes per Systemvariable festlegen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von NilsG » 07.08.2022, 14:25

Moin zusammen!

Aktuell habe ich bei meinem Sprimgbrunnen eine feste Zeit eingestellt, die er läuft, wenn er eingeschaltet wird.
Jetzt kam mir die Idee, diese feste Zeit durch eine freie definierbare zu ersetzen, oder durch z.B. 4-5 feste Werte, die ich dann auswählen kann.

Ich denke, das richtige Stichwort ist CuXD-Timer und/oder Script?!

Könnte mir da jemand mal helfen?

Danke!
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Matsch
Beiträge: 5424
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 114 Mal
Danksagung erhalten: 734 Mal

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von Matsch » 07.08.2022, 14:46

Mit Script doch kein Problem. Hier wird eine SV für die Dauer gesetzt.
Annahme:
- Dauer in SV_Time
- Zu schaltendes Object SV_Status

Code: Alles auswählen

object oStatus = dom.GetObject("SV_Status");
var time = dom.GetObject("SV_Time").Value();  ! Zeit in Millisekunden, andernfalls auf ms umrechnen

oStatus.State(true);
oStatus.State(false, time);  ! Timer retriggernd

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von NilsG » 07.08.2022, 17:05

Danke, guck ich mir an 👍🏼
Scripts sind für mich leider böhmische Wälder 🙆🏼‍♂️
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von MichaelN » 07.08.2022, 17:12

Das geht ohne Skript
Du musst den "weißen Zettel" Trick anwenden. Viele Programmierer sind sauer über diesen Trick. Klicke hier um zu sehen wie es funktioniert.

Sorry. War gerade zulange auf Facebook.

Aber den Trick gibt es wirklich

Dort wo du sonst die Einschaltdauer fest vorgibt, gibt es ein Icon "weißer Zettel". Anklicken, System Zustand auswählen und dann kannst du eine Systemvariable auswählen. Die musst du natürlich vorher anlegen. Und der Wert, der da drin steht wird zukünftig als Einschalt Dauer genommen.
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 +++

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von NilsG » 07.08.2022, 17:20

Gucke ich mir an. Noch nie was von gehört.
Hast Du ggf nen Screenshot?!

Danke
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Matsch
Beiträge: 5424
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 114 Mal
Danksagung erhalten: 734 Mal

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von Matsch » 07.08.2022, 17:21

Sch... stimmt, hast wieder mal Recht, geht auch im Programm. Aber hat jeder Aktor auch den Datenpunkt Einschaltdauer?

Dabei beachten, dass erst die Einschaltdauer festgelegt werden und verzögert (!) danach der Einschaltbefehl erfolgen muß.

Einschaltdauer.jpg

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

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von Tyfys » 07.08.2022, 17:30

Und funktioniert auch nur bei Systemvariablen vom Typ Zahl.
Bei Werteliste wird dort leider nur der Index übergeben.
Gruß
Harry

Benutzeravatar
NilsG
Beiträge: 1692
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 383 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von NilsG » 07.08.2022, 17:34

Ach schade, hatte grad überlegt mit 4-5 festen Werten zu probieren
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von MichaelN » 07.08.2022, 17:40

Die müsstest du ja eh irgendwie einstellen. Und dann kannst du auch den Umweg über ein 2.Programm gehen

Wenn Werteliste X dann Systemvariable Dauer y

Den weißen Zettel findest du sogar im Handbuch. Mach doch einfach mal ein Programm, dann siehst du den schon.
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: 544
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 123 Mal

Re: Laufzeit eines Gerätes per Systemvariable festlegen

Beitrag von Tyfys » 07.08.2022, 17:44

dann könntest du das mit einer mit von diversen Skriptlösungen versuchen:

Code: Alles auswählen

!Variable vom Typ WerteListe
!aktuellen Wert holen  und z.B. Minuten in Sekunden umrechnen
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get("Springbrunnen_Minuten")) {
    var MinutesList = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Springbrunnen_Minuten").ValueList();
    var ListIndex = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Springbrunnen_Minuten").Value();
    var RunSeconds = (MinutesList.StrValueByIndex(";", ListIndex).ToInteger() * 60.0);
}

!Gerät für Springbrunnen schalten
!dom.GetObject('INTERFACE.SERIENNUMMER:KANAL.DATENPUNKT').Value();
if (dom.GetObject("INTERFACE.SERIENNUMMER:KANAL.STATE")) {
    dom.GetObject("INTERFACE.SERIENNUMMER:KANAL.ON_TIME").State(RunSeconds);
    !Einschaltbefehl verzögert senden um 500 Millisekunden
    dom.GetObject("INTERFACE.SERIENNUMMER:KANAL.STATE").State(true, 500);
}
ist aber auch nur (m)ein Vorschlag
Gruß
Harry

Antworten

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