CUx-D Timer

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

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

CUx-D Timer

Beitrag von BDO » 05.12.2021, 16:05

Hallo "Wissende",
ich hänge mal wieder und wäre für Hilfe sehr dankbar.
Ich möchte eine Lampe über eine Zwischensteckdose per Script 5 Sek. nach dem Aufruf für 5 Sek. einschalten.
Ich habe hierzu im CUx-D eine 12-Kanal Fernbedienung in der Funktion "Timer" erstellt und über den Posteingang ins System übernommen. Die Ser.Nr.: CUX2800001:1
Jetzt habe ich das folgende Script im Forum hierzu gefunden:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2800001:1.CMD_EXEC").State("tclsh /usr/local/timer.tcl BidCos-RF.LEQ0875257:1.STATE 1 5");
dom.GetObject("CUxD.CUX2800001:1.CMD_EXEC").State("tclsh /usr/local/timer.tcl BidCos-RF.LEQ0875257:1.STATE 0 10");
Die Seriennummer des Zwischensteckers habe ich angepasst. Leider passiert nichts. Was habe ich falsch gemacht?
Zuletzt geändert von Roland M. am 06.12.2021, 17:08, insgesamt 1-mal geändert.
Grund: Thema verschoben
Gruß Boris

Benutzeravatar
Baxxy
Beiträge: 5022
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 322 Mal
Danksagung erhalten: 928 Mal

Re: CUx-D Timer

Beitrag von Baxxy » 05.12.2021, 16:22

Mit dem CUxD - Timeraufruf kenne ich mich nicht aus.
Eine Lösung ohne CUxD könnte so aussehen:

Code: Alles auswählen

string aktorkanalname = "HM-ES-PMSw1-Pl LEQ0529290:1";
object status = channels.Get (aktorkanalname).DPByHssDP ("STATE");
object ontime = channels.Get (aktorkanalname).DPByHssDP ("ON_TIME");
integer on_time = 5;   !- Einschaltdauer: Zeiteinheit Sekunden
integer on_delay = 5;  !- Einschaltverzögerung: Zeiteinheit Sekunden

on_delay = on_delay * 1000;
ontime.State(on_time);
status.State(true, on_delay);
(funktional auf RaspberryMatic)

Grüße, Baxxy

dtp
Beiträge: 10220
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 244 Mal
Danksagung erhalten: 420 Mal

Re: CUx-D Timer

Beitrag von dtp » 06.12.2021, 12:05

Für so etwas brauchst du kein Skript. Das geht direkt mit einem Programm, das den Timer als Gerät (TIMER_SET) setzt und eines, das bei Ablauf des Timers (TIMER_GET) ausgelöst wird.

Hier ein Beispiel. Sehr schön an den CUxD-Timern finde ich, dass man sie auch noch zusätzlich sperren - also deaktivieren - kann.
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.

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

Re: CUx-D Timer

Beitrag von BDO » 06.12.2021, 18:33

Hallo,
ich verstehe, dass ich wohl mit dem CUxD-Timer auf ein falsches Pferd setzen wollte.
Danke für die Infos.
Leider läuft der Vorschlag von Baxxi bei mir nicht. Ich nutze (noch) die CCU3 unter eQ-3.
Würde gerne auf >CCU3 / ELV Charly - ASUS Tinker Board S< umsteigen, ist aber derzeit nicht verfügbar.
Muss ich meinen Plan von on_Time und on_Delay unter der FW-Version 3.61.6 aufgeben? Oder mache ich mit dem: string aktorkanalname = "HM-LC-Sw1-Pl-2 LEQ0875257:1"; einen Fehler?
Gruß Boris

MichaelN
Beiträge: 4325
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 349 Mal
Danksagung erhalten: 627 Mal

Re: CUx-D Timer

Beitrag von MichaelN » 06.12.2021, 18:50

Das geht sogar noch viel einfacher (oder ich habe die Aufagebnstellung nicht verstanden):

SV "Licht-Verzögerung", Typ Logik anlegen

Programm 1 anlegen:

Code: Alles auswählen

WENN was auch immer passiert
DANN SV Licht-Verzögerung verzögert um 5 Sek auf wahr
Programm 2 anlegen:

Code: Alles auswählen

WENN SV Licht-Verzögerung ist WAHR  bei Änderung
DANN 
Licht Kanalaktion "Einschaltdauer 5 Sekunden, EIN"
SV Licht-Verzögerung verzögert um 5 Sekunden falsch
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: 185
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 8 Mal
Danksagung erhalten: 40 Mal

Re: CUx-D Timer

Beitrag von Tyfys » 07.12.2021, 20:42

Hallo Boris
BDO hat geschrieben:
06.12.2021, 18:33
Leider läuft der Vorschlag von Baxxi bei mir nicht. Ich nutze (noch) die CCU3 unter eQ-3.
Der Vorschlag von Baxxy muss auf deiner CCU3 laufen - läuft bei mir genauso auf einer CCU2 mit FW 2.59.7

BDO hat geschrieben:
06.12.2021, 18:33
Oder mache ich mit dem: string aktorkanalname = "HM-LC-Sw1-Pl-2 LEQ0875257:1"; einen Fehler?
Nur wenn der Kanalname nicht stimmt. Evtl. hat sich ein anderer Fehler eingeschlichen?

Falls du noch an einer Skript-Lösung rumfummelst.
Hier noch eine weitere Möglichkeit:

Code: Alles auswählen

integer on_time = 5;     ! Einschaltdauer in Sekunden
integer on_delay = 500;  ! Einschaltverzögerung in Millisekunden
!Dauer einstellen
dom.GetObject("BidCos-RF.LEQ0875257:1.ON_TIME").State(on_time); 
!dann einschalten
dom.GetObject("BidCos-RF.LEQ0875257:1.STATE").State(1, on_delay );
Zuletzt geändert von Tyfys am 07.12.2021, 21:54, insgesamt 2-mal geändert.
Gruß
Harry

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

Re: CUx-D Timer

Beitrag von BDO » 07.12.2021, 21:19

Vielen Dank Michael,
verstehe ich richtig, dass „on_delay“ für Aktoren, zusätzlich zu on_time in Scripten, nur bei Raspberrymatic zur Verfügung steht?
Da es bei mir nicht nur um das Schalten einer Lampe geht, sondern bis zu 8 Aktoren teilweise verzögert geschaltet werden sollen, möchte ich die Aufgabe unbedingt als Script lösen.
Ich frage das deshalb, weil der Vorschlag von Baxxy bei mir nicht läuft. In diesem Fall würde ich mich gleich um Raspberrymatic kümmern. Danke für eine Entscheidungshilfe.
Gruß Boris

MichaelN
Beiträge: 4325
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 349 Mal
Danksagung erhalten: 627 Mal

Re: CUx-D Timer

Beitrag von MichaelN » 07.12.2021, 21:29

Das geht auch auf einer halbwegs aktuellen CCU.
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
Baxxy
Beiträge: 5022
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 322 Mal
Danksagung erhalten: 928 Mal

Re: CUx-D Timer

Beitrag von Baxxy » 07.12.2021, 22:59

BDO hat geschrieben:
07.12.2021, 21:19
„on_delay“ für Aktoren
Tatsächlich nennt sich das StateDelay, damit wird einfach nur die Ausführung des .State() verzögert. Quasi genauso wie in WebUI-Programmen mit "verzögert um...". Das sollte auch auf aktuellen CCUen laufen wie von @Tyfys bestätigt. Kann man auch für Systemvariablen nutzen.
BDO hat geschrieben:
07.12.2021, 21:19
on_time
Hier wird ja ein regulärer Datenpunkt des Schaltaktors beschrieben, sollte immer funktionieren.
BDO hat geschrieben:
06.12.2021, 18:33
Oder mache ich mit dem: string aktorkanalname = "HM-LC-Sw1-Pl-2 LEQ0875257:1"; einen Fehler?
Das wäre jetzt das einzige was in deiner Hand liegt, der Rest ist funktional.
Ich nutze immer den Namen des Kanals, keine Seriennummern oder sowas.
Mein Beispiel nutzt den Standardnamen der nach dem anlernen vergeben wurde, sieht dann so aus:
Aktorkanalname.JPG
Grüße, Baxxy

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

Re: CUx-D Timer

Beitrag von BDO » 07.12.2021, 23:29

Hallo nochmal,
der letzte Vorschlag läuft!
Vielen Dank!
Gruß Boris

Antworten

Zurück zu „CUxD“