"Licht aus"-Varianten mit variablem Delay?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

"Licht aus"-Varianten mit variablem Delay?

Beitrag von Roland M. » 25.04.2021, 15:41

Hallo!

Jahreszeit und Arbeitszeit erlauben mir wieder an die "Homematisierung" des Wochenendhauses zu denken... ;)

Eine "Licht aus"-Steuerung beim Verlassen des Hauses soll implementiert werden, Aktoren sind bunt gemischt HM und HmIP, Schaltaktoren und Dimmer. Derzeit so ca. 10 Stück, im gedachten Vollausbau vielleicht das doppelte. Eine CCU2 (!) verrichtet ihren Dienst.

Ausgelöst soll es über einen Tastendruck oder über die Anwesenheits-SV werden.

1. Ansatz, quick&dirty:

Code: Alles auswählen

WENN Tastendruck
DANN Licht1 sofort aus
     Licht2 verzögert um 2 s aus
     Licht3 verzögert um 4 s aus
...
     Licht9 verzögert um 16 s aus
     Licht10 verzögert um 18 s aus
Wie gesagt quick&dirty, funktioniert sicher, belastet den Funk möglicherweise unnötig, aber vor allem, wenn nur das letzte Licht noch brennt, wartet man unnötige 18 Sekunden, in denen man vielleicht glaubt, dass der Befehl gar nicht angekommen sei.


2. Ansatz, mit nicht existierendem "Delay":

Wenn es so einen Befehl geben würde, wäre es mit einem Script auch einfach (bitte die Syntax nur sinngemäß auffassen!):

Code: Alles auswählen

if (Licht1 = ein) { Licht1 = aus; delay(2000); }
if (Licht2 = ein) { Licht2 = aus; delay(2000); }
...
if (Licht9 = ein) { Licht9 = aus; delay(2000); }
if (Licht10 = ein) { Licht10 = aus; }
Gibt es leider auch nicht, delay als Kanalparameter gibts soviel ich weiß ja nur bei Raspberrymatic, eventuell auch auf der CCU3.
[EDIT: Änderungen wegen neuer Erkenntnisse! :) ]

Nebenbemerkung: natürlich ginge hier auch ein foreach(), durch die Vielzahl der verschiedenen Aktoren und unterschiedliche Verwendung der virtuellen Kanäle sehe ich darin aber keine wirkliche Erleichterung.


3. Ansatz, Ausflug zur CCU3 (?) bzw. Raspberrymatic delay als Kanalparameter:

Code: Alles auswählen

x=0;
if (Licht1 = ein) { Licht1.State(0,x); x=x+2000; } 
if (Licht2 = ein) { Licht2.State(0,x); x=x+2000; }
...
if (Licht10 = ein) { Licht10.State(0,x); }
Wie gesagt nur Raspberrymatic...

Also zurück zum...

4. Ansatz, mit WebUI-Programmierung

...und über eine Systemvariable, die ich hier Retrigger nenne:

Code: Alles auswählen

WENN Tastendruck
ODER Retrigger = wahr
UND  Licht1 = ein
DANN Licht1 = aus
     Retrigger sofort falsch
     Retrigger verzögert um 2 s wahr
SONSTWENN Licht2 = ein
DANN Licht2 = aus
     Retrigger sofort falsch
     Retrigger verzögert um 2 s wahr
...
SONSTWENN Licht10 = ein
DANN Licht10 = aus
     Retrigger sofort falsch
     Retrigger verzögert um 2 s wahr
SONST Retrigger sofort falsch
Bei dieser Variante wird das Programm im Extremfall zwar 10 Mal im 2-Sekunden-Abstand aufgerufen und es wird bei jedem Durchgang nur ein Aktor geschaltet, aber auch die 10. Leuchte wird bei Bedarf sofort ausgeschaltet.


Frage in die Runde:
Habe ich Denkfehler in meinen Ansätzen?
Habt ihr noch bessere Ideen?
Wie habt ihr das gelöst?

Wie gesagt, in einem komplett ausgestattetem Wohnhaus mit zig Leuchten wird man sicher andere Wege wählen, als bei 10 oder max. 20 Leuchten...


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

Benutzeravatar
robbi77
Beiträge: 13847
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 738 Mal

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von robbi77 » 25.04.2021, 15:51

Dein „ quick&dirty“ läuft bei mir schon ewig ... (wired).
Noch ein Gedanke: virtuelle Tasten und DV?
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Black » 25.04.2021, 15:52

für Nr5 hätte ich vllt noch eien Vorschlag, mein altes TCL Script:

viewtopic.php?f=31&t=42056]Script.

das sollte eigentlich schon deinen useCase abbilden können und läuft auch noch auf einer alten CCU2. (Kann automatisch durch ENUMs iterieren und zeitverzögert aktionen auslösen)


Black
Zuletzt geändert von Black am 25.04.2021, 15:53, insgesamt 1-mal geändert.
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

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von MichaelN » 25.04.2021, 15:52

Ist der state Befehl mit Verzögerung wirklich nicht auf der CCU 2 umgesetzt? Schon probiert?

Ansonsten wäre meine Idee eine DV für HM und eine für hmip zur virtuellen Fernbedienung anzulegen. Dann werden 2 Broadcast gesendet und gut ist.
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
Roland M.
Beiträge: 9784
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1373 Mal

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Roland M. » 25.04.2021, 16:33

Hallo!

Danke für die schnellen Antworten, virtuelle Taster sind sicher auch eine gute Idee, fraglich ist da nur, wie viele Verknüpfungen man pro VT anlegen kann.

@Black: danke auch für deinen Input, muss ich mir in einer ruhigen Stunde zu Gemüte führen.

MichaelN hat geschrieben:
25.04.2021, 15:52
Ist der state Befehl mit Verzögerung wirklich nicht auf der CCU 2 umgesetzt? Schon probiert?
:shock: :shock: :shock:
Bis vor drei Minuten war ich der felsenfesten Überzeugung, dass das nur auf Raspberrymatic, allenfalls auch auf der originalen CCU3 funktioniert.
Aber was soll ich sagen... Es funktioniert auch auf der CCU2! Wow!
Statt weniger werden es jetzt mehr Möglichkeiten... ;)


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

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Xel66 » 25.04.2021, 18:35

Ich benutze für diese "Mamutaufgabe" eine einzige virtuelle Taste sowie ein einziges (zugegeben langes) Programm, welches in den (SONST) WENN's alle auszuschaltenden Aktoren zur Prüfung auf EIN und den virtuellen Taster bei Tastendruck getriggert wird (egal ob HM, HmIP, oder Hue/CUxD). Im jeweiligen DANN wird neben den Ausschalt- bzw. Runterdimmbefehl dann der Taster wiederum gedrückt und das Programm wieder aufgerufen, bis die Prüfung aller aufgeführten Leuchtmittel auf Schaltzustand ein oder Dimmstufe größer 0% kein WAHR ergibt.

Im letzten SONST WENN darf natürlich die Taste nicht wieder "gedrückt" werden (sonst läuft das Programm in Dauerschleife und das Licht bleibt nirgends mehr an). Ich habe mein Programm mal gescreenshottet und einige Lampen dazwischen rausretuschiert, so dass der Ablauf klar wird. Das Programm folgt meinem KISS-Prinzip. Man muss nicht per Script durch zugewiesene Gewerke iterieren und alle möglichen und unmöglichen Aktoren, Protokolle und Gateways berücksichtigen, sondern es werden die ganz normalen Standard-WebUI-Funktionen für Statusabfrage und Ansteuerung genutzt.

Gruß Xel66
Dateianhänge
Licht-AUS.jpg
-------------------------------------------------------------------------------------------
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

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Roland M. » 25.04.2021, 18:44

Hallo!
Xel66 hat geschrieben:
25.04.2021, 18:35
Ich benutze für diese "Mamutaufgabe" eine einzige virtuelle Taste sowie ein einziges (zugegeben langes) Programm,
Danke auch für diesen Ansatz, der ja fast gleich zu meinem 4. Ansatz ist, nur dass du für das Retriggern eine virtuelle Taste nimmst, ich aber eine SV.

Man muss nicht per Script durch zugewiesene Gewerke iterieren und alle möglichen und unmöglichen Aktoren, Protokolle und Gateways berücksichtigen, sondern es werden die ganz normalen Standard-WebUI-Funktionen für Statusabfrage und Ansteuerung genutzt.
Ja, genau so sehe ich das auch.
Ich versuche auch Scripts nur dort einzusetzen, wo ich an die Grenzen der WebUI gelange.


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

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Roland M. » 27.05.2021, 17:44

Hallo!

Je nach Sichtweise spät, aber doch, oder einfach nach rund einem Monat positiver Erfahrung möchte ich noch hier eine Rückmeldung geben.

Ich habe mich für die Lösung mit einem Script und variabler Verzögerung entschieden.
Die Gründe sind einfach erklärt:
- WebUI-Programm zu unflexibel, Änderungen/Erweiterungen können nur am Ende hinzugefügt werden. Mit dem Script kann ich neue Aktoren so einfügen, dass z.B. raumweise abgeschaltet wird.
- Ich kann und will auch nicht durch ganze Gewerke iterieren, da die virtuellen Kanäle unterschiedlich verwendet werden (z.B. Licht vs. Waschmaschine). Auch müssen teilweise zwei Kanäle (z.B. Bewegungsmelder und manuelle Betätigung mit Priorität) geschaltet werden. Genau so sollen gewisse Aktoren von diesem "Licht aus" ausgeschlossen werden (z.B. Wegbeleuchtung/Carport).
- Das leichte Editieren bleibt erhalten, vor allem nach einigen Jahren sollte noch klar sein, was bei Bedarf zu ändern ist.


Und so sieht das Script auszugsweise aus, getriggert wird es über die Abwesenheit:

Code: Alles auswählen

var d = 0; ! delay
var x;	! Kanalname
var dp;	! Datenpunkt des Kanals

! #### Keller ####
! ---- Werkstatt ----

x = "Steckdosen Werkstatt:3";
dp = dom.GetObject(x).DPByHssDP("STATE");
if (dp.Value() > 0)
  { dp.State(0,d); d=d+1000; }

x = "Licht Werkstatt Decke:3";
dp = dom.GetObject(x).DPByHssDP("LEVEL");
if (dp.Value() > 0)
  { dp.State(0,d); d=d+1000; }


! ---- Vorraum Keller / Dusche / WC ----

x = "Licht Dusche:1";
dp = dom.GetObject(x).DPByHssDP("STATE");
if (dp.Value() > 0)
  { dp.State(0,d); d=d+1000; }

x = "Licht WC Keller:1";
dp = dom.GetObject(x).DPByHssDP("STATE");
if (dp.Value() > 0)
  { dp.State(0,d); d=d+1000; }

x = "Waschmaschine:3";
dp = dom.GetObject(x).DPByHssDP("STATE");
if (dp.Value() > 0)
  { dp.State(0,d); d=d+1000; }

x = "Wäschetrockner:3";
dp = dom.GetObject(x).DPByHssDP("STATE");
if (dp.Value() > 0)
  { dp.State(0,d); d=d+1000; }
Bei Erweiterungen muss ich nur einen Block an der gewünschten Stelle kopieren, den Namen ändern und gegebenenfalls STATE (Schaltaktoren) oder LEVEL (Dimmer) anpassen.

Nach gleichem Muster schalte ich auch bei Anwesenheit (bzw. unter weiteren Bedingungen) wieder einige Geräte ein.


Danke nochmals an alle, die Ideen eingebracht haben!


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

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Tyfys » 28.05.2021, 22:03

Hallo Roland

Vielleicht etwas spät.
Mein Vorschlag basiert auf deinem Script.

Code: Alles auswählen

var d = 0; ! delay
var x;	! Kanalname/
var dp;	! Datenpunkt des Kanals

string channels="";
! #### Keller ####
! ---- Werkstatt ----
channels = channels # "Steckdosen Werkstatt:3]STATE";
channels = channels # "[Licht Werkstatt Decke:3]LEVEL";
! ---- Vorraum Keller / Dusche / WC ----
channels = channels # "[Licht Dusche:1]STATE";
channels = channels # "[Licht WC Keller:1]STATE";
channels = channels # "[Waschmaschine:3]STATE";
channels = channels # "[Wäschetrockner:3]STATE";

foreach(x, channels.Split("["))
{
    dp = dom.GetObject(x.StrValueByIndex("]", 0)).DPByHssDP(x.StrValueByIndex("]", 1));
    if (dp.Value() > 0)
    {
        dp.State(0, d);
        d = d + 1000;
    }
}

Da müßte für weitere Geräte einfach ein Statement channels = channels # "[xxxxxxxxxr:n]STATE bzw LEVEL"
an der gewünschten Stelle eingefügt werden.

Was hälts Du davon ?

Gruß
Harry
Gruß
Harry

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

Re: "Licht aus"-Varianten mit variablem Delay?

Beitrag von Roland M. » 28.05.2021, 23:26

Hallo Harry!
Tyfys hat geschrieben:
28.05.2021, 22:03
Vielleicht etwas spät.
Es ist nie zu spät! ;)

Was hälts Du davon ?
Sehr viel! :D

Da werde ich mein Script wohl auf dieses Schema umstellen!


Nur statt der Definition als "string" werde ich mich mit einem schlichten "var" begnügen, solange
boolean x = 0.0 / "hello world";
ein valider Ausdruck und als Ergebnis x real ist. Aber das ist eine andere Geschichte... ;)


Danke für deinen Input!


Roland
(noch immer Script-Rookie)
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,...

Antworten

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