Seite 1 von 2

CUx-D Timer

Verfasst: 05.12.2021, 16:05
von BDO
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?

Re: CUx-D Timer

Verfasst: 05.12.2021, 16:22
von Baxxy
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

Re: CUx-D Timer

Verfasst: 06.12.2021, 12:05
von dtp
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.

Re: CUx-D Timer

Verfasst: 06.12.2021, 18:33
von BDO
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?

Re: CUx-D Timer

Verfasst: 06.12.2021, 18:50
von MichaelN
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

Re: CUx-D Timer

Verfasst: 07.12.2021, 20:42
von Tyfys
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 );

Re: CUx-D Timer

Verfasst: 07.12.2021, 21:19
von BDO
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.

Re: CUx-D Timer

Verfasst: 07.12.2021, 21:29
von MichaelN
Das geht auch auf einer halbwegs aktuellen CCU.

Re: CUx-D Timer

Verfasst: 07.12.2021, 22:59
von Baxxy
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

Re: CUx-D Timer

Verfasst: 07.12.2021, 23:29
von BDO
Hallo nochmal,
der letzte Vorschlag läuft!
Vielen Dank!