gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
robbi77
Beiträge: 13876
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 744 Mal

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von robbi77 » 06.12.2023, 20:43

Ist für mich auch logisch, denn die Triggerbedingung "bei Änderung", die das Programm startet, gilt sowohl für "ein" als auch "aus".
Jetzt wo du es schreibst …

Wenn das wirklich 3sec. dauert ist es kein Wunder das dein DC 10% hoch geht. Wahrscheinlich wenn du 10x drückst bist du bei 100% …

Willy_Elv
Beiträge: 70
Registriert: 08.12.2016, 21:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 11 Mal

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von Willy_Elv » 06.12.2023, 21:36

Naja, ich drück vielleicht einmal pro Stunde 😉
In Ernst, ich hab durch wiederholtes Drücken (was ja sowieso praktisch nicht vorkommt) den DC von ca. 10% auf 30% erhöht … das ist für mich auch noch akzeptabel.
Und die 3sek … mei, das wär jetzt eine Mammutaufgabe um rauszufinden, wo die herkommen. Das kann ich vom Know How her nicht (wann und in welchem Schedule laufen überhaupt HM Programme?) und ist mir ehrlich gesagt auch nicht wichtig genug.

Grüße

Willy_elv
Zentrale "Charly" mit Raspberry Pi 3
RaspberryMatic 3.57.4.20210320 - oder neuer
jede Menge Sensoren und Aktoren (Rolladensteuerung, Wetter- / Helligkeitssensoren, Heizungssteuerung, etc..)

Benutzeravatar
robbi77
Beiträge: 13876
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 744 Mal

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von robbi77 » 06.12.2023, 21:50

wann und in welchem Schedule laufen überhaupt HM Programme?
???
das wär jetzt eine Mammutaufgabe um rauszufinden, wo die herkommen.
Vermutlich von dem ganzen Funkchaos …

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

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von Xel66 » 07.12.2023, 08:56

Willy_Elv hat geschrieben:
06.12.2023, 21:36
(wann und in welchem Schedule laufen überhaupt HM Programme?)
Das System ist ereignisgetriggert konzipiert. Heißt, es gibt ein Ereignis und die mit diesem Ereignis (Tastendruck, Grenzwertüber/-unterschreitung, Zeitpunkt, Statuswechsel) verknüpften Aktionen werden durchgeführt, bzw. wenn es noch zusätzliche Bedingungen gibt (UND/ODER), werden diese ebenfalls noch bei der Bedingungsprüfung mit berücksichtigt. Es gibt keinen Scheduler. Darum sind eben auch für manuelle Betätigungen die Direktverknüpfungen vorzuziehen, da hierbei die Reaktion prompter ist und eher der menschlichen Erwartung entspricht.

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

Willy_Elv
Beiträge: 70
Registriert: 08.12.2016, 21:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 11 Mal

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von Willy_Elv » 07.12.2023, 12:02

Vielen Dank für die Infos (das wusste ich sicher vor einigen Jahren mal, hatte es aber mangels Aktivität meinerseits vergessen 🙄).

Ok, also ich drücke auf die Taste, der Re-8, Kanal 8 im B-Zimmer signalisiert der CCU „Änderung“ (ob auf ein oder aus ist erstmal egal)
Das CCU Programm legt los, und prüft zusätzlich Re-8, Kanal 1 im A-Zimmer ob aktuell auf ein oder aus.
Dann wird Re-8, Kanal 1 im AZ auf ein oder aus gesetzt … that‘s it.

Ich kann eigentlich keinen Grund für ein evtl. „Funkchaos“ oder die 3sek Verzögerung erkennen … vorausgesetzt, dass „nur prüfem“ nicht noch zusätzliche Kommunikation anstösst.

Wenn doch, wäre die Lösung wohl eine Systemvariable und zwei Programme, wie weiter oben im Thread schon angedeutet. Oder aber ein HM-script, da hat man die Kommunikation eh besser in der Hand, wenn ich mich recht erinnere 😉😅
Zentrale "Charly" mit Raspberry Pi 3
RaspberryMatic 3.57.4.20210320 - oder neuer
jede Menge Sensoren und Aktoren (Rolladensteuerung, Wetter- / Helligkeitssensoren, Heizungssteuerung, etc..)

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

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von Xel66 » 07.12.2023, 12:22

Willy_Elv hat geschrieben:
07.12.2023, 12:02
… that‘s it.
Ja.
Willy_Elv hat geschrieben:
07.12.2023, 12:02
... dass „nur prüfem“ nicht noch zusätzliche Kommunikation anstösst.
Nein, die CCU arbeitet bei Bedingungsprüfungen ausschließlich mit in der CCU bereits bekannten Status und fragt aktiv keine weiteren ab.
Willy_Elv hat geschrieben:
07.12.2023, 12:02
Oder aber ein HM-script, da hat man die Kommunikation eh besser in der Hand, wenn ich mich recht erinnere 😉😅
Kommt auf den Betrachtungswinkel an. Meiner Meinung nach nicht. Wenn man in einem Script den .State()-Datenpunkt eines netzversorgten HM-Gerätes prüft, dann wird dieser aktiv abgefragt (sprich, man kann sich das System auch damit vorzüglich auf den Bauch legen, ohne auch nur eine Aktion auszuführen). Bei Prüfung auf .Value() wird so wie auch bei der normalen Bedingungsprüfung per Programm mit dem auf der CCU hinterlegten Status gearbeitet. Und dieser wird ja durch das Gerät selbst entweder beim Ausführen von Aktionen und/oder per zyklischer Statusmeldung gesetzt, und sollte demnach dem realen Status entsprechen (wenn keine Kommunikationsstörungen vorhanden sind). Es gibt einige batterieversorgte Aktoren, die man auch per .State() ansprechen kann. Häufig wird dabei noch geburstet (Burst = Aufwecktelegramme mit "Überlänge"), was dann den Duty Cycle massiv treiben kann.

Reaktionsverzögerungen können auch aus den Eventverzögerungen resultieren und sich aufsummieren, wobei Tastereignisse eigentlich unverzögert gesendet werden (sonst gäbe es die Verzögerungen ja auch bei Direktverknüpfungen). Auch arbeitet die CCU Programme mit einem gewissen Delay ab, vermutlich damit sie sich nicht totrennt und race conditions bei der Abarbeitung von Programmen vermieden werden. Kann man schön sehen, wenn man sich mal (versehendlich) eine Schleife baut und das Log dann analysiert. Aber das ist jetzt Spekulation auf Basis von Beobachtungen und für mich nicht belegbar. Vielleicht liegt die Ursache auch in der Tatsache, wie sie intern Programme abarbeitet (ein Trigger kann ja durchaus die Bedingungsprüfung mehrerer Programme starten). Da habe ich vor langem mal eine sehr schöne bildliche Beschreibung ("klebt einen Notizzettel an den Datenpunkt" u.ä.) gelesen.

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

Willy_Elv
Beiträge: 70
Registriert: 08.12.2016, 21:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 11 Mal

Re: gelöst: Togglen mit einer Taste? (Programmierung in klickibunti)

Beitrag von Willy_Elv » 07.12.2023, 19:58

OK. Dann werden mir die 3-4 sek immer rätselhafter ...

Vielen Dank für die detaillierten Ausführungen - sehr interessant!
Ist doch schön, wenn man das nach mehreren Jahren wieder so gut aufgedröselt bekommt! :D

Ich habe jetzt mal testweise nur eine Systemvariable "X" in der CCU getoggelt durch den Druck auf die Taste "Re-8 Kanal 8 im B-Zimmer".

Alle anderen in diesem Zusammenhang relevanten Programme sind inaktiv.
Ich habe überprüft, daß das Device "Re-8 im B-Zimmer" auch von keinem anderem Programm / Direktverknüpfung genutzt wird.
Desweiteren ist diese Systemvariable auch nicht im iobroker bekannt.

Auch hier sehe ich das delay von 3 sek zwischen dem Tastendruck und dem Umkippen des Zustandes von "X" (angeschaut mit der Homematic WebUI)!

Der DC ändert sich aber in diesem Szenario nur unwesentlich von 7 auf 8%

-> die 3 sek kommen entweder von einem internen delay im "HM-MOD-Re-8" oder einem unbekannten delay in der CCU, da auf der Luftschnitstelle ja nix mehr los sein dürfte und daher wahrscheinlich auch keine Kollisionen sind.

Jetzt bin ich mit meinem Latein echt am Ende, macht aber nix, denn das, was ich ursprünglich wollte, funktioniert ja. :wink:

Grüße

Willy_elv
Zentrale "Charly" mit Raspberry Pi 3
RaspberryMatic 3.57.4.20210320 - oder neuer
jede Menge Sensoren und Aktoren (Rolladensteuerung, Wetter- / Helligkeitssensoren, Heizungssteuerung, etc..)

Antworten

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