Skript zur Schaltung nach erfüllter Wartezeit

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

VolGra
Beiträge: 86
Registriert: 24.03.2012, 11:40
Hat sich bedankt: 19 Mal
Danksagung erhalten: 2 Mal

Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von VolGra » 22.04.2024, 20:02

Hallo in die Runde,
Leider bekomme ich einfach folgende Aufgabenstellung per Skript nicht hin:
Ich habe das Datum der letzten Schaltung eines Kanals A als sysvar in Form z.B. „21-04-24 16:35-Uhr“.
Wenn ein Kanal B einschaltet, sollen im Rahmen einer Prüfung zu vorgenannter sysvar sieben Tage (eine Woche) addiert werden. Die Uhrzeit ist völlig unwichtig und sollte sogar unberücksichtigt bleiben. Wenn das Ergebnis >hier also z.B. 28-04-24, unabhängig von der Uhrzeit< per aktueller Systemzeit erreicht wurde, soll der Kanal A eingeschaltet werden (wodurch sich durch ein bestehendes Skript die sysvar aktualisiert). Wenn der Abstand von 7 Tagen nicht erreicht wurde, bleibt Kanal A aus.
Für hilfreiche Tips bedanke ich mich schon jetzt.

rentier-s
Beiträge: 384
Registriert: 19.06.2017, 09:24
Hat sich bedankt: 20 Mal
Danksagung erhalten: 67 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von rentier-s » 22.04.2024, 21:03

Auch wenn ich null verstehe, was Du damit vor hast, würde ich zu CuXD Timern raten. Die ersparen viel Rechnerei.

Benutzeravatar
robbi77
Beiträge: 13868
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von robbi77 » 22.04.2024, 21:26

Eine Anzeige zum Tonne rausstellen?

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

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von Tyfys » 22.04.2024, 21:28

Hier mal ein Beispiel, wie man es machen könnte :
ich musste das Datum aus der SysVar ändern auf 15.4. , damit es HEUTE klappt. morgen auf 16.4. setzen etc.

Code: Alles auswählen

!alle Zeitangaben auf 12:00 UHr setzen
time heute= ( localtime.Format("%F") #  " 12:00:00").ToTime();
string sysvar = "15-04-24 16:35-Uhr";  

time alt =("20"#sysvar.Substr(6,2) #sysvar.Substr(2,3)#"-"#sysvar.Substr(0,2)# " 12:00:00").ToTime();
time neu= alt + ( 7*86400);
!Kontrollausgaben - können auskommentiert werden
WriteLine(alt);
WriteLine(neu);
WriteLine(heute);

if ( heute  == neu ) {
 !mach was z.B.:
 WriteLine("7 Tage vergangen")
}
Gruß
Harry

VolGra
Beiträge: 86
Registriert: 24.03.2012, 11:40
Hat sich bedankt: 19 Mal
Danksagung erhalten: 2 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von VolGra » 22.04.2024, 21:44

Hallo Tyfys
vielen Dank erst mal. Sehe ich mir morgen gleich an und melde mich dann noch mal

VolGra
Beiträge: 86
Registriert: 24.03.2012, 11:40
Hat sich bedankt: 19 Mal
Danksagung erhalten: 2 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von VolGra » 22.04.2024, 21:51

Zur Verwendung: Ich will an meiner per MQTT angebunden Heizung in den empfohlenen Abständen von 7 Tagen die Warmwasser-Desinfektion starten. Anlass soll dabei die mit definierter Temperatur angeforderderte Warmwasserbereitung sein. Zum Duschen reichen bei unserem 150Liter-Speicher über die Woche 50°C, immer Abends bereitet. Zum Baden braucht man etwas mehr und dort soll dann das auf 70°C erhitzte Wasser mit herhalten. Mit einem derartigen Heizungs- und Warmwasser-Management habe ich meinen Gasverbrauch um sage und schreibe 30% gesenkt!
Also nichts geheimes 8)

VolGra
Beiträge: 86
Registriert: 24.03.2012, 11:40
Hat sich bedankt: 19 Mal
Danksagung erhalten: 2 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von VolGra » 23.04.2024, 10:10

Tyfys hat geschrieben:
22.04.2024, 21:28
Hier mal ein Beispiel, wie man es machen könnte :

Hallo Tyfys
funktioniert offensichtlich genau so, wie vorgesehen. Nochmals recht herzlichen Dank.
Jetzt sehe ich auch meinen (blöden) Fehler: Ich hatte mit Woche und Tag experimentiert, statt mit Sekunden zu multiplizieren - Manchmal ist man wie vernagelt.
Da ich die nächsten zwei Wochen unterwegs bin, werde ich jetzt noch einen Testausgang mit einer Test-SMS anschließen. Dann kann die Lösung live gehen

Benutzeravatar
Roland M.
Beiträge: 9824
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1384 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von Roland M. » 23.04.2024, 11:19

Hallo!
VolGra hat geschrieben:
22.04.2024, 21:51
Zur Verwendung: Ich will an meiner per MQTT angebunden Heizung in den empfohlenen Abständen von 7 Tagen die Warmwasser-Desinfektion starten. Anlass soll dabei die mit definierter Temperatur angeforderderte Warmwasserbereitung sein. Zum Duschen reichen bei unserem 150Liter-Speicher über die Woche 50°C, immer Abends bereitet. Zum Baden braucht man etwas mehr und dort soll dann das auf 70°C erhitzte Wasser mit herhalten.
WENN Wassertemperatur < 63°C
DANN CUxD-Timer starten mit 168 h
SONSTWENN Wassertemperatur > 67°C
DANN CUxD-Timer stoppen

WENN CUxD-Timer = 0
DANN Desinfektion starten


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

VolGra
Beiträge: 86
Registriert: 24.03.2012, 11:40
Hat sich bedankt: 19 Mal
Danksagung erhalten: 2 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von VolGra » 23.04.2024, 14:20

Hallo Roland,
danke für die Lösung per CuxD. Letzteres habe ich NOCH nicht installiert und TYFYS hat mir eine Lösung per Skript genannt, die schon im Test läuft

VolGra
Beiträge: 86
Registriert: 24.03.2012, 11:40
Hat sich bedankt: 19 Mal
Danksagung erhalten: 2 Mal

Re: Skript zur Schaltung nach erfüllter Wartezeit

Beitrag von VolGra » 23.04.2024, 17:25

Tyfys hat geschrieben:
22.04.2024, 21:28

Code: Alles auswählen

!alle Zeitangaben auf 12:00 UHr setzen
time heute= ( localtime.Format("%F") #  " 12:00:00").ToTime();
string sysvar = "Letzte_WW-Desinf";  

time alt =("20"#sysvar.Substr(6,2) #sysvar.Substr(2,3)#"-"#sysvar.Substr(0,2)# " 12:00:00").ToTime();
...
[/quote]
Hallo Tyfys, muß leider noch mal durchkommen-bin doch noch zu sehr Skript-Anfänger.
Ich habe die sysvar nun erst mal ordentlich definiert und komme jetzt nicht weiter. Wenn ich den Wert der sysvar manuell ändere, wirft mir das Skript unveränderte Ergebnisse mit alt=20.04.24 aus. Dies stammt offensichtlich aus Deiner Zeile "time alt". Wenn ich dort die sysvar statt der "20" einsetze, wird das Ergebnis falsch formatiert (1970-01-01 01:00:00). Nun verstehe ich nicht den Rest der Zeile. Irgendwo müsste doch der Wert der sysvar übernommen werden :oops: 
Wäre toll, wenn Du mir noch mal auf die Sprünge hilfst - vielen Dank im Voraus

Antworten

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