Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenKNX-Logikmodul release

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    Zitat von mumpf Beitrag anzeigen
    komplexe Projektstruktur, mit eigentständigen Projekten [...]. PlatformIO kann hier nicht immer automatisch alle include finden. Deswegen gibt es immer wieder rote Markierungen. Und der QuickFix kann da nicht helfen. IMO sollte aber das Logikmodu-Projekt keine roten Markierungen enthalten, Subprojekte schon.
    Habe nun noch mal genauer hingeschaut. Sieht so aus als würde das Phänomen tatsächlich nur in den anderen Projekten (knx und OGM-Common) auftreten.

    Das Logikmodul baut auch für SAMD und RP2040. Weiter habe ich den Prozess aber noch nicht ausprobiert.

    Btw.: In der Dokumentation war auch noch das Projekt OGM-SensorDevices genannt, wobei das ja inzwischen auch keine formelle Abhängigkeit vom Logikmodul ist (anders heraum wahrscheinlich schon, könnte also in Gesamtbetrachtung doch wieder sinnvoll sein die gemeinsam im selben Verzeichnis liegen zu habe.)

    Kommentar


      #47
      Also... PIO ist etwas schwierig, auch nach 2 Jahren verstehe ich immer noch nicht alles, was da passiert. Und zudem sind wir in OpenKNX auch noch auf der Suche nach der richtigen Projektstruktur, um sowohl unsere Entwicklung reibungslos zu gestalten wie auch andere möglichst reibungslos zu unterstützen. So weit sind wir aber noch nicht. Deswegen gibt es immer wieder Projektänderungen. Und die Doku ist nach einer Umstellung sicherlich nicht auf dem neusten Stand, sorry. Soweit zum Hintergrund.

      Zu den Fehlermeldungen: In PIO gibt es immer nur ein Projekt, dessen Symbole analysiert und verfolgt werden. Im Logikmodul sind das alle Dateien, die im src-Verzeichnis liegen und alles, was im lib-Verzeichnis liegt. Auch wenn im lib-Verzeichnis nur Links auf die Projekte im Hauptverzeichnis stehen, ist es für PIO immer noch eine Datei mit ihrem kompletten Pfad, die Zählt.
      Wenn Du also OpenKNX/OGM-Common/src/Helper.h anguckst, wirst Du Fehler gemeldet bekommen, weil es hier kein Projekt und keine gesetzten Pfade gibt.
      Wenn Du auf die SELBE Datei über OpenKNX/OAM-LogicModule/lib/OGM-Common/src/Helper.h zugreifst, bekommst Du keine Fehler, weil das Projekt gültig ist und PIO weiß, wo es alles zu finden hat.
      An welcher Datei was geändert wird, ist aber egal, da die ja verlinkt sind und somit wirklich die SELBE Datei sind.
      Die Projekte liegen im Hauptverzeichnis, damit sie entsprechend in Git verwaltet werden können und in mehreren anderen Projekten verwendet werden können.

      Und zu OGM-SensorDevices: Im Rahmen unserer Projektänderungen versuchen wir auch, die Projekte immer mehr zu kapseln und unabhängiger zu machen. Inzwischen benötigt das Logikmodul kein OGM-SensorDevices nicht mehr. Deswegen habe ich den Link entfernt.

      Ich hoffe, so etwas Licht ins Dunkel gebracht zu haben.
      Gruß, Waldemar

      OpenKNX www.openknx.de

      Kommentar


        #48
        eine Anregung für das Logikmodul:
        es wäre natürlich seeehr bequem, wenn man die Schaltzeiten im Betrieb ändern könnte ohne jedes Mal die ETS zu starten...
        Dazu wäre ein KO für jede aktive Schaltuhr notwendig wo man die Schaltzeiten abfragen / setzen kann.


        Alternativ könnte man über die Debug-KO die Schaltzeiten ändern.

        Ich habe natürlich keine Ahnung wie aufwändig die Umsetzung ist, bzw ob das Ganze in die Grundidee des Logikmoduls passt - ist nur ein Gedanke...
        EPIX
        ...und möge der Saft mit euch sein...
        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

        Kommentar


          #49
          Tja... einerseits nicht abwegig, andererseits leider kein "easy win". Die Logik kann noch kein DPT10 und DPT11 verarbeiten und ich wüsste nicht, wie man menschenwürdig die Schaltzeiten adressiert und neue Schaltzeiten vergibt. Ich hab pro Kanal nur 2 Eingänge und leider kaum noch Platz in den Paramtern.
          Ich sag mal so: Es kommt auf jeden Fall in die Sammlung meiner Sachen für die Zukunft und ich schaue mit bei der nächsten intenen Feature-Runde für die Logik (etwas im Januar) an, was man mit dem Logikmodul noch reißen kann. Ansonsten wird es irgendwann eines geben, dass nur auf dem RP2040 läuft, da hab ich dann mehr Speicher und mehr freiheiten, aber da reden wir von >2 Jahren!

          Da man viele Schaltkanäle hat, kann man derzeit natürlich mehrere Zeitschaltuhren definieren und passend zur externen Situation über eine Logik nur die Schaltuhr zum Eingang durchschalten, die man gerade haben möchte. Das erlaubt zumindest einige Freiheitsgrade...

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #50
            Danke für die Rückmeldung - ich dachte mir schon, dass es aufwändig ist....

            Lösbar wäre es eventuell wenn man den Schaltuhren-Teil in ein eigenes Modul auslagert - also ein Standalone-Schaltuhr-Modul, da wäre dann das Platzproblem gelöst.

            Von "außen" müsste man halt die gewünschte Zeit als Zeit-DP10 an das jeweilige KO senden, das Verhalten definiert (Ein, AUs, Szene,...) definiert man über die ETS und braucht zur Laufzeit ja nicht geändert werden.

            Mir gefällt euer Ansatz der getrennten Geräte auf einer "Einheits-Platform" sehr gut und ich würde bei Gelegenheit gerne noch ein paar bestückte Sensormodule beziehen. Für das feine Löten sehe ich mittlerweile einfach nicht mehr gut genug
            (...aber das ist eine andere Geschichte)
            Aber wie eingangs geschrieben: es war nur eine Anregung...
            Zuletzt geändert von EPIX; 24.10.2022, 08:05.
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #51
              Hi, ab sofort gibt es eine neue Version 0.12.3 mit reinen Bugfixes:
              • FIX: Treppenlicht konnte erst über KNX wieder abgeschaltet werden, sobald das Logikmodul länger lief als die eingestellte Treppenlichtzeit.
              • FIX: "Einschaltverzögerung -> beim 2. EIN sofort schalten" wurde auch erst geschaltet, wenn das Logikmodul länger lief als die eingestellte Verzögerungszeit.
              • FIX: "Ausschaltverzögerung -> beim 2. AUS sofort schalten" wurde auch erst geschaltet, wenn das Logikmodul länger lief als die eingestellte Verzögerungszeit.
              • FIX: Konvertierung von DPT 9 nach DPT != 9 war um Faktor 10 zu groß. 9.0 wurde auf 90 Konvertiert statt auf 9.
              Es ist ein reines Firmware-Update, die ETS-Applikation muss nicht akualisiert werden.

              ​Download-Links wie immer in ersten Beitrag in diesem Thread.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                #52
                Moin,

                erstmal danke für das Logikmodul. Ich habe es gestern auf Basis des OpenKNX PiPico-BCU-Connector mit VPM-Modul in Betrieb genommen. An einer Stelle hänge ich jedoch: Ich würde gerne eine Tagesphase generieren, um sie u.a. im VPM zu nutzen. Vorgesehen sind drei Szenen: Tag (Szene 1), Abend (Szene 2) und Nacht (Szene 3). Idee war, dafür drei Zeitschaltuhren zu verwenden, je eine pro Tagesphase. Bei EIN sendet sie die passende Szene, bei AUS passiert nichts. Hier ein Auszug aus der Parametrierung:


                image.png

                image.png

                image.png

                Dummerweise kann ich nicht feststellen, dass das KO gesendet wird, auch ein Read-Request auf der GA wird nicht beantwortet.

                Sende ich "l10" an das Debug-KO erhalte ich als Ergebnis "Ax Bx Cx Dx Qx"​.

                Ideen? Was mache ich falsch?

                Danke & viele Grüße
                Thilo
                Angehängte Dateien

                Kommentar


                  #53
                  Uhrzeit und Datum sind verknüpft, reagieren auf ReadRequest und werden auch nach dem Start eingelesen?
                  Gruß Bernhard

                  Kommentar


                    #54
                    Zitat von willisurf Beitrag anzeigen
                    Uhrzeit und Datum sind verknüpft, reagieren auf ReadRequest und werden auch nach dem Start eingelesen?
                    Ja, wenn ich "t" an das Debug-KO sende, bekomme ich auch den aktuellen Timestamp zurück. Sollte also im Logikmodul ankommen.

                    Kommentar


                      #55
                      Ist beim Ausschalten in Zeile 8 Sonnenaufgang richtig?
                      Gruß Bernhard

                      Kommentar


                        #56
                        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.

                        Kommentar


                          #57
                          Ich sehe gerade im Quellcode des Moduls:

                          Code:
                          #define SCHEDULE_MAX_CALLBACKS 10​
                          Bedeutet das, dass ich nur maximal 10 Zeitschaltuhren definieren darf oder hab ich die Abstraktion noch nicht ganz verstanden? ;-)

                          Kommentar


                            #58
                            Ich versuch mal das einzukreisen:

                            Zitat von thilog Beitrag anzeigen
                            Code:

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

                            Zitat von thilog Beitrag anzeigen
                            Ist die Definition eines dreiphasigen Tagesverlaufs über drei disjunkte Zeitschaltuhren korrekt oder hat sich der Autor das anders gedacht? ;-)
                            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 anzeigen
                            auch ein Read-Request auf der GA wird nicht beantwortet.
                            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 anzeigen
                            Sende ich "l10" an das Debug-KO erhalte ich als Ergebnis "Ax Bx Cx Dx Qx"​.
                            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 anzeigen
                            Ideen? Was mache ich falsch?
                            Ich gehe davon aus, dass Du gleich nach dem Neustart erwartest, dass die Tagesphase gesendet wird, wegen "Bei Neustart letzte Schaltzeit nachholen".
                            Du hast aber auch Urlaubsbehandlung aktiviert. In der Anleitung steht (https://github.com/OpenKNX/OAM-Logic...zeit-nachholen):
                            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.
                            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.

                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              #59
                              Zitat von mumpf Beitrag anzeigen
                              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.
                              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.
                              OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                              Kommentar


                                #60
                                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
                                OpenKNX www.openknx.de

                                Kommentar

                                Lädt...
                                X