Seite 1 von 1

[GELÖST] Verzögerte Schaltung per Programm funktioniert nicht immer

Verfasst: 21.12.2018, 12:58
von srunschke
Hallo zusammen,

ich habe ein seltsames Phänomen, welches ich mir ehrlich gesagt nicht erklären kann.

Betroffene Komponenten:

RM 3.37.8.20180929 auf RBP3
HMIP-BSM (Kronleuchter)
HMIP-SWDO (K_Wohnungstuer)

Szenario:

Ich schalte über eine Kreuzschaltung mit 3 Schaltern unser Licht im Eingangsflur. Einen davon habe ich mit einem HMIP-BSM ersetzt und es funktioniert auch soweit alles seit längerer Zeit.
Da meine bessere Hälfte die Angewohnheit hat ständig und überall Licht anzulassen ( :roll: ), habe ich kurz danach einfach ein kleines Programm geschrieben, welches das Licht immer nach 5 Minuten von alleine wieder ausschaltet. Das Ganze ist ein bisschen Quick&Dirty und sicherlich könnte man die beiden Programme auch in eines zusammenfassen, aber "eigentlich" fast schon zu simpel und so völlig ausreichend für den Einsatzzweck.

Dennoch habe ich folgendes Problem:
Hin und wieder und leider nicht reproduzierbar funktioniert das Ausschalt Programm (sp_Kronleuchter_AutoAus) nicht sauber - sprich das Licht wird nicht ausgeschaltet und bleibt dauerhaft an. Leider passiert das nur sporadisch und ich finde nicht heraus welche Konstellation dafür verantwortlich ist.

Es gibt 3 Wege, wie das Licht eingeschaltet werden kann:
- Betätigung des HMIP-BSM (Factory Default Direktverknüpfung des Schalters)
- Betätigung einer der zwei normalen Schalter in der Kreuzschaltung (Strom halt an... fange das dann über den Messaktor im BSM und triggert sp_Kronleuchter_AutoAus)
- Einschaltung über ein anderes Programm bei Öffnung der Wohnungstür (Gerätestatus = Ein durch Auslösung von sp_Kronleuchter_AutoAn durch K_Wohnungstuer)

Programm, welches das Licht bei Öffnung der Tür einschaltet:
2018-12-21 12_29_50-Window.png
Kronleuchter AutoAn
Programm, welches das Licht nach 5 Minuten wieder ausschaltet:
2018-12-21 12_30_21-Window.png
Kronleuchter AutoAus
Ich weiß, dass das Thema "Einschalten für X Minuten" (aka Treppenhauslichtfunktion) für solche Zwecke gedacht war, aber leider ist es in meinem Fall wohl nicht wirklich sinnvoll, da das Licht über die Kreuzschaltung auch außerhalb der Homematic Welt eingeschaltet werden kann und ich dies nur über den Messaktor im HMIP-BSM mitbekomme und abfange.

Sieht hier irgendjemand einen Grund warum das Licht bei bestimmten Konstellation nicht ausgehen würde?

Ich könnte natürlich auch einfach mal die Treppenlichtfunktion testen und schauen, ob ich auch über die Kreuzschaltung damit "drüberschalten" kann, allerdings würde das nur das Symptom beheben und die Ursache für mich immer noch im Unklaren lassen - was für mich als Pedant natürlich nicht akzeptabel ist ;)

Danke
S

Re: Verzögerte Schaltung per Programm funktioniert nicht immer

Verfasst: 24.12.2018, 04:10
von Hütte
Wie triggerst du denn dein Programm "sp_Kronleuchter_AutoAus" über den HmIP-BSM und wie sieht dieses Programm aus? Ein Screenshot fehlt noch an dieser Stelle.

Hast du eventuell Nachrichten über Komminikationsprobleme? Könnte ja sein, dass sich da Datentelegramme vom Programm mit denen aus der Direktverknüpfung überschneiden.

Eventuell schafft auch schon ein verzögerters Ausschalten von z.B 5 Sekunden über das Programm "sp_Kronleuchter_AutoAus" Abhilfe, da dadurch die Wahrscheinlichkeit, sich mit mit anderen Programmen oder Direktverknüpfungen vom Timing her zu überschneiden, wesentlich geringer wird.

--- Nachtrag:

Sehe gerade, dass du ja ein verzögertes Auschalten schon implementiert hast. Dann kannst du ja mal in deinem Programm, dass über den "HmIP-BSM" das Programm "sp_Kronleuchter_AutoAus" triggert, zusätzlich in eine Systemvariable schreiben, wann dieses Programm getriggert wurde.

Also eine zusätzliche Systemvariable anlegen, die auf "Protokolliert" setzen und diese Sytemvariable dann in dem entsprechenden Programm über ein Script auf aktuells Datum und Uhrzeit setzen und dann beobachten.

Dadurch erscheinen alle Änderungen am Inhalt der Systemvariable im Systemlog. Leider kann man im Moment nicht Datum/Uhrzeit, wann ein Programm gestartet wurde, sich im Systemlog protokollieren lassen.

Re: Verzögerte Schaltung per Programm funktioniert nicht immer

Verfasst: 26.12.2018, 10:44
von beckerpa
Guten Morgen,

also ich könnte mir vorstellen, dass das Licht nicht nach 5 min ausgeht, wenn zwischenzeitlich die Wohnungstür geöffnet wurde. In diesem Programm wird durch Änderung des Zustandes der Wohnungstür auf geöffnet der Kronleuchter eingeschaltet. Somit ist vermutlich die vorher eingeschaltete Verzögerung ausgeschaltet.

Meiner Meinung nach könnte folgendes Abhilfe schaffen, bzw. folgende Möglichkeiten würde ich ausprobieren:

- Zusatz im Prg sp_Auto_Kronleuchter in der "Wenn-Bedingung": UND Geräteauswahl Kronleuchter:4 bei Aus nur prüfen.
--> Das Programm wird nur ausgeführt wenn der Kronleuchter auch aus ist.

- Evtl. Zustätzlich im Prg sp_AutoAus_Kronleuchter in der Wenn Bedingung auf "bei Aktualisierung auslösen" stellen.
--> Die 5 Minuten werden dann bei jedem erneuten Einschalten, wenn das Licht also schon an war, erneut ausgelöst (sinnvoll wenn du oben das nicht änderst).

- weiterhin könntest du probieren eine Direktverknüpfung zwischen dem SWDO und dem BSM herzustellen, der nur einschaltet für x Minuten
(weiß nicht genau, ob diese Option möglich ist).

Wünsche noch nen schönen Weihnachtsfeiertag.

Gruß
beckerpa

Re: Verzögerte Schaltung per Programm funktioniert nicht immer

Verfasst: 26.12.2018, 12:38
von trevyn
Falls es die Tür sein sollte, könnte man das damit abfangen, dass direkt hinter dem Einschaltbefehl ein um 5 Minuten verzögertes Ausschalten kommt (damit wäre das Ausschaltprogramm in diesem Fall schonmal nicht mehr notwendig).

Ich vermute aber eher, dass es mit der Kreuzschaltung zu tun hat, dass das nicht sauber funktioniert.
Von den regulären Aktoren kenne ich es nur so, dass auch eq-3 in der Anleitung schreibt, dass nicht erkannt werden kann, ob das Licht nun an oder aus ist (mit dem hier verwendeten soll das ja aber angeblich gehen).

Evtl. müsste man sich einfach mal vor die Anzeige der CCU setzen und beobachten, wie sich der Schaltzustand des Aktors bei diversen Tests verhält (evtl. zusätzlich noch die eine oder andere Protokollierung aktivieren).

Re: Verzögerte Schaltung per Programm funktioniert nicht immer

Verfasst: 28.12.2018, 20:28
von srunschke
Danke schon mal an alle, die sich mit dem Problem befasst haben.

@Hütte:
Das Ausschalten wird einfach durch das Einschalten getriggert. Sobald sich der Schaltzustand auf Ein ändert, kickt das Ausschalten Script ein. Das habe ich extra so gebaut, damit es auf alle möglichen Varianten des Einschaltens reagiert - also betätigen vom BSM, betätigen eines der normalen Schalter oder schalten per Programm (wie ich es mit dem Türkontakt mache)

@beckerpa:
Das mit dem bei Aktualisieren hatte ich auch schon überlegt, allerdings verstehe ich nicht, warum es dann funktionieren sollte. Ich würde nicht erwarten, dass ein Timer gelöscht wird, wenn es nirgendwo dazu einen Retrigger gibt. Aber ich werde es testen, sobald ich wieder zu Hause bin.

@trevyn:
Die Einschalterkennung funktioniert einwandfrei - wie bei jedem Messaktor. Im Endeffekt macht der BSM nichts anderes als den Strom zu messen und man kann den Schwellwert angeben, ab wie viel Strom er den Status als "Eingeschaltet" erkennt.

Re: [GELÖST] Verzögerte Schaltung per Programm funktioniert nicht immer

Verfasst: 09.01.2019, 13:06
von srunschke
So, kleines Update:

Die Umstellung der Prüfung des Einschaltzustandes von "bei Änderung" auf "bei Aktualisierung" im AutoAus Script hat das Problem gelöst.

Beim genaueren Nachdenken des Problems ist mir dann auch mein Denkfehler aufgefallen:

Ich bin davon ausgegangen, dass ein Timer zu einem exakten Vorgang gehört - hier in meinem Fall "Einschaltzustand = Aus" bei Gerät "Kronleuchter:4". Das ein Setzen von "Einschaltzustand = Ein" mit "beenden aller aktiven Trigger" auch den Trigger auf "Einschaltzustand = Aus" beendet, war mir ehrlich gesagt nicht klar. Dadurch wurde dann durch das AutoAn Script ein bereits vorhandener Timer gelöscht, aber kein neuer Timer angelegt, weil das AutoAus Script nicht getriggert wurde, da es auf "bei Änderung" stand.

Scheinbar hängt der Timer am "gesamten" Gerät und wenn man bei dem Gerät irgendwo bestehende Trigger löscht oder retriggert, dann gilt das für alle laufenden Timer des Gerätes.