Timer Scheduler - Verzögerungen aus HM-Script V1.3

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Xel66 » 06.07.2019, 15:35

Black hat geschrieben:
06.07.2019, 15:31
Xel66, ich denke mal, er hat sich nur etwas undeutlich ausgedrückt.
Ich befürchte aber, er steuert gerade das Tor, welches einen Impuls erwartet, mit einem Dauersignal an.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

corny359
Beiträge: 4
Registriert: 03.10.2015, 20:34

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von corny359 » 06.07.2019, 16:53

Hi,
Black hat das schon richtig erkannt. Ich meine nicht die Einschaltdauer, war nur etwas ungenau.
Der Garagenschalter macht drei Dinge: öffnen, stoppen, schließen (stoppen, öffnen,...). Ich möchte mir nun eine Funktion programmieren, die immer nur öffnet bzw. eine, die immer schließt, egal in welchem Status das Garagentor gerade ist. Wenn es gerade geschlossen ist, muss der Schalter 1x ausgelöst werden. Wenn es gerade öffnet (z. B. Programm aus versehen ein 2. mal gestartet), soll nichts ausgelöst werden. Und jetzt kommt's: wenn es aber gerade schließt, muss der Schalter im Abstand von 1-2 sek. 2x ausgelöst werden, damit das Tor erst stoppt und dann in die andere Richtung fährt. Und da benötige ich den Delay.
Nach dem ganzen Blabla bleibt mein Problem :roll:
Ich werde nachher einen Bugreport schreiben. Danke für den Tipp!
Schönes Wochenende!
Raspberry Pi 4B mit RaspberryMatic, Redmatic und 150 Geräten

Georgee
Beiträge: 149
Registriert: 22.05.2017, 11:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 4 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Georgee » 10.10.2019, 12:58

Hallo Black,

Ich nutze seit kurzem dieses Skript, um morgens alle Rollläden (Gewerk Safety) hochzufahren, einige könnten aber auch schon hoch sein.

Ich habe einige kleine Anmerkungen:

1. Es funktioniert bisher prima, grosses Lob.
2. Offenbar wird beim Setzen nur eines Kanals (wegen Überprüfung (-c), ob schon gesetzt) die (sinnlose) Verzögerung ausgeblendet, d.h. der Einstellwert muss der 2. Parameter sein.
3. Es werden offenbar auch Fehler gemeldet, wenn der Kanal schon den Sollwert hat. Dieses ist eigentlich keine Fehlermeldung, sondern zeigt nur, dass eine erneute Einstellung, in Erfüllung des Parameter -c nicht erforderlich war. Eine Klarstellung dieser Meldung würde ich mir wünschen.
4. Bei einer Fehlmeldung wird nur die ID gemeldet, nicht die Kanalbezeichnung. Dies würde die Fehlersuche ggf. leichter machen, sofern tatsächlich ein Fehler vorliegt.

Bei HM Skriptsprache hätte ich wahrscheinlich mit meinen Kenntnissen die entsprechenden Änderungen vornehmen können, mit TCL kann ich nichts anfangen.

Siehst Du eine Möglichkeit der Nachbesserung? Wird das Skript so oft genutzt, dass es ggf. Sinn macht?

Viele Grüße
Georgee

Code: Alles auswählen

string sTimer= 'tclsh /usr/local/timerschedule.tcl -c -d -g "Safety LEVEL 4 1.0"';
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(sTimer);                  

Code: Alles auswählen

Oct 10 07:55:17 homematic-raspi user.debug TIME_Scheduler_V13: [BidCos-RF.....:1.LEVEL erfolgreich auf 1.0 ]
Oct 10 07:55:21 homematic-raspi user.debug TIME_Scheduler_V13: [BidCos-RF.... :1.LEVEL erfolgreich auf 1.0 ]
Oct 10 07:55:25 homematic-raspi user.debug TIME_Scheduler_V13: [ID (24473) Fehler beim Versuch Wert (1.0)]
Oct 10 07:55:29 homematic-raspi user.debug TIME_Scheduler_V13: [ID (24501) Fehler beim Versuch Wert (1.0)]
Tinker Board S, aktuelle Version, kleines Funkmodul mit USB-2, USV, ca. 45 Geräte, CUxD, Mail, Programme drucken, ccu-historian mit Highcharts, hm-pdetect

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

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Black » 10.10.2019, 20:17

hi, ich konnte deinen Effekt nachvollziehen.

bei -c und keiner Valueänderung wurde als Kennung nicht der name zurückgegeben sondern ein Leerstring. und der leerstring des Regascriptes wird im TCL dann als Fehler interpretiert obwohl es korrekt ausgeführt wurde.

probiert mal diese B Version

Code: Alles auswählen

#!/bin/tclsh
# Zeitverzögertes setzen von Datenpunkten aus einem HM script heraus.
# Michael Thelen aka Black in November 2018 / Oktober 2019
#
# bekannterweise gibt es keine sinnig vorhandene Methode, um zeitverzögert Datenpunkte zu setzen (Grund Funkdisziplin)
# Abhilfe: Dieses TCL Script
# Aufruf:bitte über CUxD.Exec, nich tüber system Exec. mit der & option hab ichs mit System Exec nicht stabil zum Laufen bekommen 
# Syntax
# tclsh /usr/local/timeschedule.tcl [-c] [-d] "ID1 T1 V1 (ED)[, ID2 T2 V2 (ED2)]"
# hierbei bedeutet ID1: ID des zu setzenden Datenpunktes (es wird testet, ob der DP Systemvariable oder Datenpunkt vom Kanal ist
#                  T1 : Verzögerungszeit in Sekunden
#                  V1 : neuer Wert
#                  ID1 T1 und V1 jeweils getrennt durch Leerzeichen
# bei mehreren Werten, komma, dann ID2 T2 und V2 gemäß wie oben
#
# Aufruf mit Option -g in dem Moment läuft die Routine über ein Gewerk der CCU
# tclsh /opt/usr/timeschedule.tcl -g "GewerkID StateName T1 V1 (ED)"
# hierbei wird durch alle Kanäle des Gewerks Iteriert und dabei Zeitverögert die Einzelnen Datenpunkte auf den Werte V1 gesetzt
# 
# Aufruf mit der Option -r in dem Moment läuft die Routine über einen Raum der CCU
# tclsh /opt/usr/timeschedule.tcl -r "RaumID StateName T1 V1 (ED)"
# hierbei wird durch alle Kanäle des Raumes Iteriert und dabei Zeitverögert die Einzelnen Datenpunkte auf den Werte V1 gesetzt
# 
# Aufruf mit der Option -f in dem Moment läuft die Routine über einen Favoriten der CCU
# tclsh /opt/usr/timeschedule.tcl -f "FavoritenID StateName T1 V1 (ED)"
# hierbei wird durch alle Kanäle des Favoriten Iteriert und dabei Zeitverögert die Einzelnen Datenpunkte auf den Werte V1 gesetzt
#
# V1.1 Ergänzung Optionaler Parameter ED (Einschaltdauer)
# Wird dieser Parameter mitgegeben, wird überprüft, ob dieser Channel einen Datenpunkt ON_TIME besitzt,
# Wenn ja, wird dieser Datenpunkt mit der voreingestellten Zeit beschrieben,bevor der Schaltdatenpunkt gesetzt wird
#
# V1.2 Ergängung -s bei Gewerk,Raum,Favorit
# Wenn als Datenpunkt Level angegeben wurde, wird bei -s geprüft.
# gibt es keinen Datenpunkt Level, wird Versucht, den Datenpunkt "State" zu erreichen.
# gibt es diesen Datenpunkt, so wird bei Level >=0 der Wert State 1 eingetragen, wei Wert Level=0 der Wert State =0 eingetragen
# tclsh /usr/local/timeschedule.tcl -g -s "GwerkID StateName T1 V1 (ED)"
# Beispiel für Aufruf -c -g -s "Licht LEVEL 1.0 0.0"
# Script läuft durch das Gewerk Licht, Sucht alle Datenpunkte Level und setzt diese auf den Wert 0, so er nicht nicht den Wert 0 hat. 
# Hat der Channel keinen Datenpunkt Level,
# so wird der Datenpunkt State (Option -s) genommen. bei Wert V1= 0.0 wird State = false gesetzt, bei V1 <> 0.0 wird State auf true gesetzt
#
# V1.3 Ergängung -z bei Gewerk, Raum, Favorit (Szene) noch nicht implementiert
# es wird iteriert und dabei aus 
# Szene: Liest
# ##################################################################################################################################
load tclrega.so

proc option {_argv name {_var ""}} {
  upvar 1 $_argv argv $_var var
  set pos [lsearch -regexp $argv ^$name]
  if {$pos>=0} {
    if {$_var != ""} {
      set var 1
    }
    set argv [lreplace $argv $pos $pos]
    incr ::argc -1
    return 1
  }
  return 0
}

set blackversion "TIME_Scheduler_V13B"

# option compare: macht nur setstate wenn value <> neuem Wert ist
set compare [option argv -c]
# option debug: gibt über logger aus, wenn über hm script datenpunkt gesetzt wird
set debug [option argv -d]
# option gewerk: läuft über ein Gewerk
set gewerk [option argv -g]
# option Raum: läuft über einen Raum
set raum [option argv -r]
# option favorit: läuft über einen Favoriten
set favorit [option argv -f]
set iteration 0
if {$gewerk} {
	set scriptid "ID_FUNCTIONS"
	set scriptname "Gewerk"
	set iteration 1
}
if ($raum) {
	set scriptid "ID_ROOMS"
	set scriptname "Raum"
	set iteration 1
} 
if ($favorit) {
	set scriptid "ID_FAVORITES"
	set scriptname "Favorit"
	set iteration 1
}
# nur aktualisieren (es wird keinenuer wert zugewiesen sondern der alte Wert
# führt dazu, das ein Trigger auf aktualisierung erkannt wird ohne Wertänderung
# bei actual wird das compare Flag ignotiert
set actual [option argv -a]
# -s
# Wenn als Datenpunkt Level angegeben wurde, wird bei -s geprüft.
# gibt es keinen Datenpunkt Level, wird Versucht, den Datenpunkt "State" zu erreichen.
# gibt es diesen Datenpunkt, so wird bei Level >=0 der Wert State 1 eingetragen, wei Wert Level=0 der Wert State =0 eingetragen
set lstate [option argv -s]
#puts $actual

if { $argc < 1 } {
  puts "$blackversion by Black in November 2018"
  puts "Aufruf tclsh timeschedule.tcl \[-c\] \[-d\] \[-g\] \[-s\] \[-s\]\"COMMANDO\""
  exit 1
}

if {$iteration} {
	# Es ist eine Iteration, dann erstmal den Code für Iteration abarbeiten
	set ts [split [lindex $argv 0] " "]
	set duration [lindex $ts 4]
	# wenn duration gültig, diese mit in den String einbinden, ansonsten EInfügestring = Leerstring
	if {[string is double $duration] && ($duration> 0)} {
		set sed " $duration"
	} else {
		set sed ""
	}
  	append cmd "string sID;string sTCL=\"\";string sTime=\"0.0\";object oFunc= dom.GetObject ($scriptid).Get(\"[lindex $ts 0]\");"
	append cmd "if (oFunc)\{foreach (sID,oFunc.EnumUsedIDs() ) \{"
	set dp [string toupper [lindex $ts 1]]
	puts $dp
	append cmd "object oID= dom.GetObject (sID).DPByHssDP (\"$dp\");"
	
	append cmd "if (oID) \{"
	append cmd "if (sTCL != \"\") \{sTCL = sTCL # \",\";\}"
	append cmd "sTCL= sTCL # oID.ID () # \" \" # sTime # \" [lindex $ts 3]$sed\";sTime=\"[lindex $ts 2]\";\}"
	if {$lstate} {
		if {[string compare $dp "LEVEL"]==0} {
			# Der Original DP ist ein LEVEL
		    set newval [lindex $ts 3]
			set stateval "true"
			if {[string compare $newval "0.0"]==0} {
				set stateval "false"
			}
			# Hier nun probieren, obs dort den Datenpunkte State gibt und diesen setzen
			append cmd " else \{"
			append cmd "oID= dom.GetObject (sID).DPByHssDP (\"STATE\");"
			append cmd "if (oID) \{"
			append cmd "if (sTCL != \"\") \{sTCL = sTCL # \",\";\}"
			append cmd "sTCL= sTCL # oID.ID () # \" \" # sTime # \" $stateval$sed\";sTime=\"[lindex $ts 2]\";\}"
			# das ist die klammer vom else
			append cmd "\}"
#			puts $stateval
		}
	}
	
	# Dies ist die Klammer von foreach
	append cmd "\}"   
	# Dies ist die Klammer von if (oFunc)
	append cmd "\}"
#	puts $cmd
	array set values [rega_script $cmd]
	unset cmd
	if { [info exists values(sTCL)]} {
		set x $values(sTCL)
		set para [split $x ","] 
	} else {
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	
		exec logger -t $blackversion -p user.debug \[Error in HMScript $scriptname\]
		exit 1
	}
} else {
	# Keine Iteration, damit die liste aus argv holen und splitten
	set para [split [lindex $argv 0] ","]
}
# Ab hier läuft das Hauptprogramm
#puts $para
set params [llength $para]
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
exec logger -t $blackversion -p user.debug \[Start Scheduler mit \($params\) State\(s\) - Black in November 2018\]
# durch die Anzahl an Datenpunkten durchlaufen
foreach lData $para {
	set ts [split $lData " "]
	set id [lindex $ts 0]
	set delay [lindex $ts 1]
	set value [lindex $ts 2]
	set duration [lindex $ts 3]
	# Warten nur wenn delay sinnige eingabe ist
	if {[string is double $delay] && ($delay> 0)} {
		set wait_in_ms [expr $delay * 1000 + 1]
		after [expr int($wait_in_ms)]
	}	
	# Warten zuende
	if {[string is double $duration] && ($duration> 0)} {
		append sdur "object oChan= dom.GetObject (o1.Channel());if ((oChan) && (o1.Type()==OT_HSSDP)) \{"
		append sdur "object oDur=oChan.DPByHssDP (\"ON_TIME\");if (oDur) \{"
		append sdur "oDur.State ($duration);retDur= $duration;\}\}"
	} else {
		append sdur ""
	}	
	append cmd "string retID=\"\";string retDur=\"\";object o1= dom.GetObject (\"$id\");if (o1)\{"
	append cmd "if ((o1.Type()==OT_HSSDP)||(o1.Type()==OT_VARDP)) \{"
	if { $compare && !$actual} {
		append cmd "if (o1.Value()!=$value) \{"
	}
	# Zuweisung Schreiben
	# Bei actual ist es der eigene Wert und es wird dabei auch keine Einschaltdauer geschrieben
	if { $actual } {
		append cmd "o1.State (o1.Value () ); "
		set value "alten Wert aktualisiert"
	} else {
		append cmd "$sdur o1.State (\"$value\");"	
	}
	# Name in Rückgabe
	# Änderung 10.10.2019
	# Zuerst die Klammer zu, ansonsten keine Rückgabe
    if { $compare && !$actual} {
 		append cmd "\}" 
	}	
	append cmd "retID=o1.Name();"
	append cmd "\} \}"
	#puts $cmd
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	array set values [rega_script $cmd]
	# Die reale zeitverzögerung Analysieren
	if { [info exists values(retDur)] && ($values(retDur) != "")} {
		set duration $values(retDur)
		set durtext "mit Einschaltdauer $duration s"
	} else {
		set durtext ""
	}	
	# Erfolg oder Misserfolg Parameter setzen
	if { [info exists values(retID)] && ($values(retID) != "")} {
		set x $values(retID)
		if { $debug } {
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!		
			exec logger -t $blackversion -p user.debug \[$x erfolgreich auf $value $durtext\]
			#puts "Erfolgreich"
		}	
	} else {
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!	
	    exec logger -t $blackversion -p user.debug \[ID \($id\) Fehler beim Versuch Wert \($value\)\]
		#puts "Nicht erfolgreich"
	}	
	unset cmd
	unset sdur
}

Ansonsten werde ich nicht mehr viel an dem Script ändern. Bei mir läuft es auch seit letztem Jahr, mit der Rega Änderung von jens und Einführung von StateDelay liesse sich dieses in Zukunft auch rein über regaScript lösen (ok, nicht das Automatische über gewerke etc und nicht das Parametrierbare mit -c -d)

TCL musste sein, um die Rega nicht zu blockieren musste dieses quasi als TCL prozess laufen.

ID im Fehlerfall muss auch sein, es kann ja sein, dass ein ungültiges Object referenziert wurde, in dem Falle ist ja die angegebene ID das einzige was bekannt ist.

Im Falle, dass zu analysieren (Disclaimer: Werbung für das eigene Projekt) gibt es von mir auch noch den SDV, dort kann man recht schnell analsysieren wass sich hinter einer ID verbirgt.

Gruss, 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

Georgee
Beiträge: 149
Registriert: 22.05.2017, 11:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 4 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Georgee » 11.10.2019, 10:34

Hallo Black,

danke für die schnelle Antwort.

Das neue Skript ist wie erwartet durchgelaufen, keine Fehlermeldung mehr, auch wenn der Rollladen schon offen ist, Angabe des Kanals, alles prima.

Ich möchte dieses Skript vor allem wegen der -c Option nutzen, sie sollte doch deutlich zur Funkhygiene beitragen im Vergleich zu meiner bisherigen Variante, alle Rollläden hochzufahren, auch wenn einige schon geöffnet sind.

Den Script Developer nutze ich auch - in geringem Umfang - , er scheint so mächtig zu sein. Aber die Suche nach einem Kanal über dann separates Programm ist aufwendiger als unmittelbar die Bestätigung, Rollladen ist hochgezogen.

Vielen Dank.
Viele Grüße
Georgee
Tinker Board S, aktuelle Version, kleines Funkmodul mit USB-2, USV, ca. 45 Geräte, CUxD, Mail, Programme drucken, ccu-historian mit Highcharts, hm-pdetect

Georgee
Beiträge: 149
Registriert: 22.05.2017, 11:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 4 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Georgee » 10.08.2021, 15:11

Ich stehe wohl völlig auf dem Schlauch

Ich nutze Black's timerschedule.tcl überwiegend mit Verzögerungen im Minutentakt, in einem Fall auch um Stunden. Alle Anwendungen bisher sind Gewerke.

Jetzt möchte in SV, Typ Text, mit einem freien Text belegen.

Code: Alles auswählen

string sTimer = 'tclsh /usr/local/timerschedule.tcl -d "4592 60 HUHU"';
WriteLine(sTimer);
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(sTimer);
Ich habe viele Ansätze versucht, immer wieder wird exit(1) im Systemlog angegeben und die SV nicht besetzt.

Code: Alles auswählen

homematic-raspi daemon.info cuxd[26059]: system(tclsh /usr/local/timerschedule.tcl -d "4592 60 HUHU") exit(1) 0s
Hat jemand bitte einen Hinweis für mich, was ich offenbar übersehe oder falsch mache?

Danke.
Viele Grüé
Tinker Board S, aktuelle Version, kleines Funkmodul mit USB-2, USV, ca. 45 Geräte, CUxD, Mail, Programme drucken, ccu-historian mit Highcharts, hm-pdetect

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von dtp » 10.08.2021, 15:50

Du brauchst doch den Timer Scheduler gar nicht mehr. Man kann doch mittlerweile direkt im .State()-Befehl ein Delay setzen.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Georgee
Beiträge: 149
Registriert: 22.05.2017, 11:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 5 Mal
Danksagung erhalten: 4 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Georgee » 10.08.2021, 16:56

Danke für die Antwort.

Ich habe es so verstanden, dass das Delay im State nur kurz sein sollte, weil die CCU dann aufgehalten wird.

Ich nutze durchaus Verzögerungen von 30 - 240 Minuten, geht mit timerschedule eigenlich ganz prima und wird täglich genutzt.

Nur diese Variante will nicht...

nur per HM-script ist sicherlich deutlich einfacher, wenn mit diesen Delays machbar
Tinker Board S, aktuelle Version, kleines Funkmodul mit USB-2, USV, ca. 45 Geräte, CUxD, Mail, Programme drucken, ccu-historian mit Highcharts, hm-pdetect

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von MichaelN » 10.08.2021, 17:34

Da wird nichts angehalten.
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 +++

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von dtp » 10.08.2021, 18:29

MichaelN hat geschrieben:
10.08.2021, 17:34
Da wird nichts angehalten.
Genau. Was ich mich aber noch in Verbindung mit CUxD frage, ist, wann der Verzögerungswert an CUxD übergeben wird. Sprich, wenn zwischenzeitlich die ReGaHSS abstürzt, führt CUxD den verzögerten Befehl dann trotzdem noch aus, oder wird er dann gar nicht weitergeleitet?
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“