X
-
Ich war der Annahme dass das KO nichts sendet, wenn der Wert intern AUS ist und auch auf "AUS nicht senden" steht. Weil dann hätte das auch geklappt. Aber wenn der internen AUS-Status trotz "AUS nicht senden" sendet hast du natürlich recht.
Einen Kommentar schreiben:
-
Nein, die anderen Ausgänge behalten Ihren Wert und wenn dieser nicht über das S-Flag synchronisiert ist, wird auf ein GroupValueRead von allen ggf. etwas unterschiedliches gesendet. Auch die gerade nicht aktiven Logiken behalten wie gesagt Ihren Wert und senden diese bei gesetztem L-Flag.
Siehe auch hierZuletzt geändert von willisurf; 14.11.2022, 20:57.
Einen Kommentar schreiben:
-
Ähm, wenn du sicherstellst dass es immer nur einen aktiven gibt, dann müsste das gehen.
Einen Kommentar schreiben:
-
Nein, das kann nicht zuverlässig funktionieren (Ausnahme s.u.). Falls es im Moment geht, ist es Zufall, weil einige Ausgänge noch nicht initialisiert sind oder Du zufällig als letzte Antwort das erwartete Ergebnis bekommst.
Du darfs bei der Gruppe von KOs, die (auch wenn diese disjunkt sind) auf die gleiche GA senden (oh, oh, wenn Göran das liest…) nur bei einen KO das L-Flag gesetzt haben. Bei diesem KO sollte auch das S-Flag gesetzt sein (damit der Wert von den anderen KOs übernommen wird). Alle anderen KOs haben nur K und Ü-Flag gesetzt.
Eine theoretisch andere Variante ist bei allen KOs L und S-Flag gesetzt zu haben. Das ist aber unnötig und unüblich. Da dann auf ein ReadRequest immer mehrere (allerdings über das S-Flag synchronisierte) Antworten kommen. Ich würde so etwas nicht machen.Zuletzt geändert von willisurf; 14.11.2022, 20:50.
Einen Kommentar schreiben:
-
Ich hab geschaut, dass die Schaltuhren disjunkte Schaltzeiträume auf EIN haben und nur bei EIN auf den Bus schreiben. Das scheint auch bei GroupReadRequsts zu funktionieren.Zitat von mumpf Beitrag anzeigenWenn man Szenen lesbar haben will, muss man immer aufpassen. Wenn die alle auf die gleiche GA senden sollen, dann kann man bei einem der KO das S-Flag setzen und bei den anderen das L-Flag entfernen, und schon hat man nur einen, der antwortet.
Einen Kommentar schreiben:
-
Danke, das hatte ich überlesen. Hab die Urlaubsregelung erst einmal rausgenommen - damit bekomme ich gerade in einer Phase häufiger Änderungen zuverlässig einen Zustand auf den Bus bekommen.Zitat von mumpf Beitrag anzeigenIch versuch mal das einzukreisen:
Wenn Du die Einstellung "Urlaub wie Sonntag behandeln" entfernst, wirst Du (hoffentlich) das gewünschte Ergebnis erhalten. Oder Du wartest einfach, bis die nächste Schaltzeit erreicht ist.
Noch eine blöde Frage: Ich würde gerne ein externes potenzialfreies Klingelrelais via GPIO auf den Bus bringen. Ich vermute, dazu muss ich Code schreiben. Hast du (oder ein anderer Wissender ;-) ) einen Tipp, ob es dazu schon ein Beispiel oder ähnlichen Code gibt, von dem ich mich inspirieren lassen kann?
Einen Kommentar schreiben:
-
Wenn man Szenen lesbar haben will, muss man immer aufpassen. Wenn die alle auf die gleiche GA senden sollen, dann kann man bei einem der KO das S-Flag setzen und bei den anderen das L-Flag entfernen, und schon hat man nur einen, der antwortet.
Gruß, Waldemar
Einen Kommentar schreiben:
-
Dann läufst du aber Gefahr, falls du die Szene per LESEN Abfragen möchtest, das du verschiedene Antworten bekommst. Oder du musst darauf achten das kein Lesen möglich ist und das Flag entfernen.Zitat von mumpf Beitrag anzeigenJa, ist prima so. Mach ich auch. Man könnte natürlich auch bei AUS noch was senden lassen und so vielleicht eine Zeitschaltuhr sparen.
Einen Kommentar schreiben:
-
Ich versuch mal das einzukreisen:
Zitat von thilog Beitrag anzeigenCode:
#define SCHEDULE_MAX_CALLBACKS 10
Bedeutet das, dass ich nur maximal 10 Zeitschaltuhren definieren darf oder hab ich die Abstraktion noch nicht ganz verstanden? ;-)
Das ist intern und für callbacks von Hardware (üblicherweise Sensoren) zu unserem Hardwarelayer verantwortlich und hab nichts mit dem Logikmodul zu tun.
Jeder Kanal kann eine Zeitschaltuhr sein.
Ja, ist prima so. Mach ich auch. Man könnte natürlich auch bei AUS noch was senden lassen und so vielleicht eine Zeitschaltuhr sparen. Aber grundsätzlich sollte man Zeitschaltuhren so verwenden können, wie man Lust dazu hat.Zitat von thilog Beitrag anzeigenIst die Definition eines dreiphasigen Tagesverlaufs über drei disjunkte Zeitschaltuhren korrekt oder hat sich der Autor das anders gedacht? ;-)
Das ist insofern korrekt, als dass das Logikmodul intern 3 Zustände verwaltet: true, false und init. Uns solange etwas auf init steht, hat es KEINEN Wert. Und das heißt für ein KO, KEINE Antwort beim lesen.Zitat von thilog Beitrag anzeigenauch ein Read-Request auf der GA wird nicht beantwortet.
Da muss ich gestehen, dass ich bei den Zeitschaltuhren nicht sicher bin, ob ich diese Debug-Info versorge. Ich hab die sehr viel beim Debugging von "normalen" Logiken verwendet, aber bei den Zeitschaltuhren fürchte ich ist da nichts programmiert. Aber es ist eine gute Anregung, da was zu machen. Bin sehr für Hilfe zur Selbsthilfe, sorry dass ich da noch nichts habe.Zitat von thilog Beitrag anzeigenSende ich "l10" an das Debug-KO erhalte ich als Ergebnis "Ax Bx Cx Dx Qx".
Ich gehe davon aus, dass Du gleich nach dem Neustart erwartest, dass die Tagesphase gesendet wird, wegen "Bei Neustart letzte Schaltzeit nachholen".Zitat von thilog Beitrag anzeigenIdeen? Was mache ich falsch?
Du hast aber auch Urlaubsbehandlung aktiviert. In der Anleitung steht (https://github.com/OpenKNX/OAM-Logic...zeit-nachholen):
Wenn Du die Einstellung "Urlaub wie Sonntag behandeln" entfernst, wirst Du (hoffentlich) das gewünschte Ergebnis erhalten. Oder Du wartest einfach, bis die nächste Schaltzeit erreicht ist.Achtung: Zeitschaltuhren, die Urlaubstage berücksichtigen, können bei der Nachberechnung der Zeitschaltpunkte nicht mit einbezogen werden, da die Information "Urlaubstag" per KO von extern dem Modul über den Bus gemeldet wird und somit nicht für die (historische) Nachberechnung zur Verfügung steht. Somit werden bei der Nachberechnung alle Zeitschaltuhren mit einer anderen Angabe als "Urlaub nicht beachten" ignoriert.
Gruß, Waldemar
Einen Kommentar schreiben:
-
Ich sehe gerade im Quellcode des Moduls:
Bedeutet das, dass ich nur maximal 10 Zeitschaltuhren definieren darf oder hab ich die Abstraktion noch nicht ganz verstanden? ;-)Code:#define SCHEDULE_MAX_CALLBACKS 10
Einen Kommentar schreiben:
-
Nö, das ist ein Bug. Korrektur hilft aber nicht. Aktuell sollte die Tagesphase "Abend" sein, Parametrierung wie folgt:
image.png
Ausgang (bis auf EIN = Szene 2) identisch mit "Tag".
Verdrahtung der KO auch unverfänglich:
image.png
Zustand auch hier "Ax Bx Cx Dx Qx".
Edit: Ist die Definition eines dreiphasigen Tagesverlaufs über drei disjunkte Zeitschaltuhren korrekt oder hat sich der Autor das anders gedacht? ;-)Zuletzt geändert von thilog; 13.11.2022, 19:41.
Einen Kommentar schreiben:
-
Ist beim Ausschalten in Zeile 8 Sonnenaufgang richtig?
Einen Kommentar schreiben:
-
Ja, wenn ich "t" an das Debug-KO sende, bekomme ich auch den aktuellen Timestamp zurück. Sollte also im Logikmodul ankommen.Zitat von willisurf Beitrag anzeigenUhrzeit und Datum sind verknüpft, reagieren auf ReadRequest und werden auch nach dem Start eingelesen?
Einen Kommentar schreiben:
-
Uhrzeit und Datum sind verknüpft, reagieren auf ReadRequest und werden auch nach dem Start eingelesen?
Einen Kommentar schreiben:


Einen Kommentar schreiben: