Ankündigung

Einklappen
Keine Ankündigung bisher.

Alternative Firmware für das Raum-Sensormodul von Masifi

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

    Alternative Firmware für das Raum-Sensormodul von Masifi

    Achtung:

    Änderungen und Updates kündige ich immer im 2. Beitrag an, den ersten Beitrag werde ich versuchen so weit aktuell zu halten, dass er die derzeitige Funktionalität repräsentiert.

    ---------------------------------------

    Hi allerseits,

    ich wollte euch hier mal mein Projekt vorstellen, was mich die letzten 2 Jahre beschäftigt hat. Aktuell ist die Version 3.1-beta.

    Angeregt durch den knx-Stack von thesing, beschrieben in dem Thread https://knx-user-forum.de/forum/%C3%...66-knx-mit-ets habe ich mit einem SAMD21-Board ein ETS-konfigurierbares Logikmodul mit 80 Logikkanälen entwickelt.

    Weiterhin angeregt durch das Raum-Sensormodul von Masifi. beschrieben in dem Thread https://knx-user-forum.de/forum/proj...98#post1460098 habe ich auch noch eine ETS-konfigurierbare Sensor-Applikation entwickelt. Diese unterstützt inzwischen auch 1-Wire-Sensoren. iButtons und 1-Wire-IO sind in Arbeit.

    Anschließend war es naheliegend, beides zusammenzuwerfen und so ein Raum-Sensormodul zu erhalten, dass ziemlich viel kann:
    • I2C-Sensoren:
      • CO2 (SCD30)
      • VOC (BME680, IAQCore)
      • Temperatur (BME680, BME280, SHT3x)
      • Luftfeuchte (BME680, BME280, SHT3x)
      • Luftdruck (BME680, BME280)
      • Helligkeit (OPT3001)
      • Entfernung (VL51L1X)
    • 1-Wire
      • DS18S20 (Temperatur, 0.5° Genauigkeit)
      • DS18B20 (Temperatur, 0.125° Genauigkeit)
      • DS2438 (Anlalogsensor, Basis für viele Anlaogbasierte Sensoren wie VOC, Luftfeuchte, Helligkeit usw.)
      • DS1990 (iButton, in Arbeit, funktioniert aktuell nur eingeschränkt)
      • DS2413 (I/O, 2 Kanal)
      • DS2408 (I/O, 8 Kanal)
    • Aktoren:
      • Buzzer (WT1201)
      • RGB-LED
    Die Logik kann 80 Logikkanäle, wobei jeder Logikkanal folgende Features kann:
    • Logikfunktionen mit bis zu 2 Eingängen
      • UND
      • ODER
      • EXOR
      • TOR/Sperre
      • Zeitschaltuhr
    • Einstellbare Ausgangstrigger
      • Bei Wertänderung am Ausgang
      • Bei jedem Eingangstelegramm
      • Nur beim Eingangstelegramm am Eingang 1 oder am Eingang 2
    • Mehrere Kanäle können zu größeren Logikblöcken zusammengefasst werden
    • Eingänge unterstützen DPT 1, 2, 5, 5.001, 6, 7, 8, 9, 17
    • Ausgänge unterstützen zusätzlich den DPT 16
    • Konvertierung zwischen Ein- und Ausgangs-DPT
    • Alle Ein- und Ausgänge können ihre Werte invertieren
    • Eingänge können aktiv Werte lesen
      • beim Startup
      • Zyklisch mit einstellbarer Zeit
      • Zyklisch bis die erste Antwort kommt
    • Wiederholfilter: Wenn mehrfach EIN- oder AUS-Telegramme hintereinander kommen, kann man
      • Alle Wiederholungen durchlassen
      • Nur EIN-Wiederholungen durchlassen, AUS nur einmal
      • Nur AUS-Wiederholungen durchlassen, EIN nur einmal
      • EIN- und AUS-Telegramm nur einmal durchlassen
    • Zeitglieder am Ausgang (Zeitbasis bis zu 1/10 Sekunde)
      • Treppenlicht mit Verlängerung und vorzeitigem Ausschalten (einstellbar)
      • Einschaltverzögerung mit einstellbarer Aktion bei vorzeitigem AUS/wiederholtem EIN
      • Ausschaltverzögerung mit einstellbarer Aktion bei vorzeitigem EIN/wiederholtem AUS
      • Blinken mit wählbarem Puls-Pausen-Verhältnis
    • Zyklisch senden getrennt einstellbar für EIN- und AUS-Telegramm
    • Ausgangsfilter: nur EIN-, nur AUS oder beides durchlassen
    • Ausgangskonverter
      • Für EIN oder AUS wird der Wert eines anderen DPT gesendet
      • Für EIN oder AUS wird der Wert eines Eingangs gesendet
    • Sonderfunktionen
      • Die Funktion "Gerät zurücksetzen" (sonst nur über die ETS machbar)
      • Speichern von Werten im EEPROM über Stromausfall hinweg
      • Akustische Signalisierung über einen Buzzer
      • Optische Signalisierung mittels einer RGB-LED
    • Zeitschaltuhren
      • Als Jahresschaltuhr mit 4 oder als Tages/Wochenschaltuhr mit 8 Schaltzeiten definiert werden
      • Feiertage berücksichtigen (oder ignorieren)
      • Urlaub berücksichtigen (oder ignorieren)
      • Tag/Monat berücksichtigen (bei Jahresschaltuhren)
      • Wochentag/Stunde/Minute berücksichtigen (bei allen Schaltuhren)
      • Sonnenstandsbezogene Schaltzeiten:
        • Sonnenauf-/-untergang +/- Stunden/Minuten
        • Sonnenauf-/-untergang, aber frühstens/spätestens um ...
      • Jede Stunde zu bestimmten Minuten schalten
      • Jeder Schaltvorgang kann dann wie bei jedem Logikkanal auch alle Ausgangsfunktionen haben
      • Beim Neustart des Logikmoduls den zeitlich letzten Schaltzeitpunkt berechnen und erneut ausgeben
    In der Zwischenzeit sind auch Verbesserungen eingeflossen, die die Zusammenarbeit mit der ETS stark vereinfachen, unter anderem kann man jetzt partiell programmieren und auch ein Long-Frame-Support ist eingebaut, falls es die Schnittstelle zum Bus unterstützt.

    Was alles genau geht, kann man in den Applikationsbeschreibungen nachlesen. Es gibt dieDa sich 1-Wire noch im Beta-Stadium befindet, ist diese Applikationsbeschreibung hier zu finden:Falls jemand das Ganze ausprobieren möchte, ich habe es auf github freigegeben, wie man es alles aufsetzt ist in https://github.com/mumpf/knx-sensor/...x-dev-setup.md beschrieben. Wie man die Beta-Version aufsetzt, steht hier drin: https://github.com/mumpf/knx-sensor/...beta-setup.pdf

    Out-of-the-Box funktioniert das mit der Hardware von Masifi, alternativ braucht man ein SAMD21 Board, eine KNX-Anbindung, ein EEPROM (min 4k) und einen der unterstützten Sensoren. Und dann muss man in der Firmware (Hardware.h in knx-common) ein paar defines anpassen, damit die Geräte und Pins gefunden werden. Getestet ist es aber nur auf der angegeben Hardware.

    Das läuft jetzt seit fast 2 Jahren (Zeitschaltuhren seit 1 Jahr) bei mir im Test, ich bin sehr zufrieden, aber ich garantiere trotzdem für nichts. Da die Logiken beliebig kombiniert und somit auch sehr komplex werden können, kann ich Fehler in dieser Phase sicherlich nicht ausschließen.

    Mein Ziel ist es mittelfristig in jedem Raum so ein Sensormodul zu haben und dann jegliche raumabhängige KNX-Logik darüber laufen zu lassen und so auf meinen zentralen Server zu verzichten. Mal schauen wie gut das klappt.

    Auf der Sensorseite werden noch 6 Inputs für Fensterkontakte dazukommen.

    Ich möchte mich speziell bei thesing und Bernator für den knx-Stack bedanken und für die tolle Unterstützung während meiner Entwicklungszeit. Auch den anderen, die am knx-Stack programmiert haben, gilt mein Dank. Gleichzeitig bitte ich um Entschuldigung, dass ich auf einem Fork des Stacks aufsetze. Ich werde in den nächsten Monaten auf jeden Fall zusehen, die beiden Varianten wieder zusammenzuführen. Leider sprechen einige Weiterentwicklungen im Original-Stack derzeit gegen eine Zusammenführung.

    Ferner möchte ich mich auch noch bei Masifi für die tolle Hardware bedanken und für den regen Ideenaustausch, dadurch konnte die Firmware immer besser werden. Und auch Danke für die Umsetzung meiner Vorschläge in Hardware!

    Falls es Fragen oder Vorschläge gibt, beantworte ich diese gerne in diesem Thread.

    Gruß, Waldemar
    Zuletzt geändert von mumpf; 19.10.2021, 14:39.
    OpenKNX www.openknx.de

    #2
    Ab sofort ist die Version 3.8 auf github verfügbar. Details gibt es hier: https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/1478390-alternative-firmware-für-das-raum-sensormodul-von-masifi?p=1734051#post1734051

    Die neue Version dient der Überführung von Beta zu Release und enthält ein paar kleinere Korrekturen und ein kleines neues Feature in der Logik.

    ---------------------------------

    Ab sofort ist die Version 3.6-beta auf github verfügbar. Details gibt es hier: https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/1478390-alternative-firmware-für-das-raum-sensormodul-von-masifi?p=1691464#post1691464

    Die neue Version unterstützt jetzt den SCD41 CO2-Sensor, hat ansonsten nur minimale Bugfixes.

    ---------------------------------

    Ab sofort ist Version 3.1-beta auf github verfügbar. Details dazu finden sich hier: https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/1478390-alternative-firmware-für-das-raum-sensormodul-von-masifi?p=1640770#post1640770

    Die neue Version unterstützt jetzt auch 1-Wire und partielles Programmieren von der ETS aus.

    ---------------------------------

    Ab sofort ist Version 2.0 auf github verfügbar, Details dazu finden sich hier: https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/1478390-alternative-firmware-für-das-raum-sensormodul-von-masifi?p=1609931#post1609931.

    --------------------------------


    Ab sofort ist Release 1.1 auf github verfügbar. Hauptsächlich Bugfixes und Abrundungen, aber folgendes ist zu beachten:

    Man muss auf jeden Fall ETS-Applikation und Firmware neu bauen. In einer neuen Anleitung https://github.com/mumpf/knx-sensor/...pdate-setup.md steht jetzt, wie man ein Update machen kann, ohne die gesamte Installationsanleitung erneut durchzugehen.

    Wie man die Applikation in der ETS aktualisiert, ohne dass alle Parameter verloren gehen, steht in der Applikationsbeschreibung Sensor im Kapitel: Update der Applikation.

    Es gibt 2 Inkompatibilitäten:
    1. Statt dem Sensor HDC1080 (Temp, Hum) wird jetzt der Sensor SHT3x (Temp, Hum) unterstützt.
    2. Beim Update der Applikation in der ETS werden für alle Logikkanäle die GA-Zuordnungen verloren gehen. Die Parameter bleiben erhalten.
    Ich möchte betonen, dass ich in Zukunft weiterhin versuchen werde, Inkompatibilitäten zu vermeiden. Die erste war technisch bedingt (HDC1080 hat das Timing gestört) und die zweite löst ein Problem beim Applikationsupdate von Applikationen mit 40 oder 80 Logikkanälen.

    Ein paar Kleinigkeiten sind auch neu (und alle in den Applikationsbeschreibungen beschrieben):
    • Offsets zum Anpassen der Sensorwerte (z.B. Temperatur oder Luftdruck) können jetzt in einem größeren Berech vergeben werden.
    • Logiken, die nur bei Änderung senden, können jetzt das erste Signal gesondert behandeln. Verbessert das Startup-Verhalten der Logik.
    • Man kann jetzt nach einem Neustart einen Eingang so lange zyklisch vom Bus lesen lassen, bis das erste Telegramm ankommt.
    • Der Buzzer hat jetzt 4 Lautstärken (laut, normal, leise und aus)
    Viel Spaß mit der neuen Version,
    Gruß, Waldemar
    Zuletzt geändert von mumpf; 23.01.2022, 23:47.
    OpenKNX www.openknx.de

    Kommentar


      #3
      Ich bin beeindruckt.
      Herzlichen Glückwunsch und danke fürs teilen.

      Kommentar


        #4
        Nach lesen der Dokumentation bin ich noch beeindruckter. Wow!

        Kommentar


          #5
          Hallo Hedrik,

          danke für die Blumen. Jetzt hat die Doku wenigstens einer gelesen . Du warst ja im Ursprungthread schon gespannt, was daraus wird. Das ist das aktuelle Zwischenergebnis.

          Falls es Dich noch interessiert: Im knx-common ist eine (hoffentlich einfach zu nutzende) Implementierung für den BME680. Die ist non-blocking und beachtet das Timing, dass die bsec-Library vorgibt. Ich hab das in eine eigenes Projekt ausgelagert, weil dieser Teil auch von Masifi in seiner KONNEKTING-Firmware genutzt wird. Ich erwähne das nur, weil Du auch mal mit dem BME680-Beispiel von Thomas "rumgespielt" hast.

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Sehr spannendes Projekt. Der Funktionsumfang hat mich nach dem Überfliegen der Dokumente beeindruckt.

            Zwei Kleinigkeiten sind mir in den Dokumenten spontan noch aufgefallen:
            • Die Anzahl der Logik-Bausteine ist teilweise mit 10/20/40/80 und teilweise mit 10/30/50/80 angegeben
            • Bei den Schulnoten sind mangelhaft und ungenügend vertauscht

            Kommentar


              #7
              Danke für den Hinweis. Ich hab die Texte alle angepasst. Auch in der Applikation sind jetzt mangelhaft und ungenügend korrekt, wobei ich aber nicht die Applikationsversion hochgesetzt habe. Für einen Text lohnt das nicht, Da warte ich mal auf funktionale Fehler.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                #8
                Ich habe mir mal etwas Zeit genommen und ein paar Informationen zur verwendet HW zusammengefasst:

                https://knx-user-forum.de/forum/%C3%...-1-wire-buzzer

                vielleicht hilft das dem ein oder anderen zu verstehen, was hierfür an HW benötigt wird, oder wie man sich die HW selber zusammenbauen kann.
                www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

                Kommentar


                  #9
                  mumpf

                  Großartige Arbeit! Hut ab!

                  Wäre es möglich, auch einen Raumtemperaturregler mit in den Firmware aufzunehmen?
                  Das könnte sich gut mit der restlichen Funktionen zu einem Raummodul ergänzen, die Ist-Raumtemp hätte man ja schon.

                  Kommentar


                    #10
                    Hi Sisamiwe,

                    danke erstmal für Dein positives Feedback. Eine einfache 2-Punkt-Regelung kannst Du jetzt schon haben, da das integrierte Logikmodul auch Schwellwertschalter hat, die Hysterese können. Damit kann man dann den Sollwert vorgeben und der Ist-Wert kommt vom Modul.

                    Oder Du nimmst Differenz-Hysterese, dann kannst Du den Sollwert sogar über den Bus einstellen (ist in der Applikationsbeschreibung Logik als Beispiel drin). Und mit der Glättungsfunktion kannst zumindest gegen starke Temperaturschwankungen was machen. Ich hab zwar diese Anwendung so noch nicht getestet, aber damit sollte sich was pragmatisches machen lassen.

                    Eine PI- oder gar PID-Regelung will ich ehrlich gesagt nicht einbauen:
                    1. Das können die Aktoren mit Regelung viel besser als ich es machen könnte
                    2. Solche Regler kosten Speicherplatz, der ist schon recht voll mit den vorhandenen Features
                    3. Mir sind Zeitschaltuhren viel wichtiger und deshalb würde ich die bevorzugen.
                    4. 1Wire ist auch ein angedachtes Feature, auch das ist noch nicht fertig (oder, genauer gesagt: Ich hab's gerade erst angefangen).
                    Was ich gerne in fernerer Zukunft machen würde, sind Zustandsautomaten. Das ersetzt zwar nicht ganz einen Regler, aber man würde schon einen großen Schritt näher sein. Glaube ich zumindest.

                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #11
                      So, nachdem Matthias auch seinen Hardware-Thread eröffnet hat, habe ich gelernt, dass es auch mal eine Version 1 von seinem Board gab (ich habe nur v2 und v3 gehabt). Ich habe die Setup-Beschreibung soweit angepasst, dass man jetzt auswählen kann, für welches Board man die Firmware bauen will (die ETS-Applikation ist davon unabhängig). Standardmäßig wird für BOARD_MASIFI_V3 gebaut.

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Zitat von mumpf Beitrag anzeigen
                        So, nachdem Matthias auch seinen Hardware-Thread eröffnet hat, habe ich gelernt, dass es auch mal eine Version 1 von seinem Board gab
                        ääääh ja die gab und gibt es noch in kleiner Stückzahl, sorry Waldemar :-)
                        Danke das du das direkt mal gemacht hast, da ein paar schon gerne mal damit ausprobieren wollten bevor die Version3 verfügbar ist.
                        Ist der Code schon in Git? dann würde ich mir den mal ziehen und es auf einer Version1 ausprobieren.
                        Das passt auch gut, da dieser Code auch für meinen "Kollegen" wäre, der jetzt schon seit etwa 2 Jahren die Version1 mit einer Stückzahl von 16stk bei sich für mich getestet hat (ohne HW-Ausfälle).
                        www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

                        Kommentar


                          #13
                          Hi Matthias,

                          ja, ist alles im release-branch, betrifft aber alle 4 projekte. Du musst Dir also knx, knx-common, knx-logic und knx-sensor ziehen. Dann im knx-sensor/platformio.ini das board mit -DBOARD_MASIFI_V1 einstellen und -DCRYSTALLESS auskommentieren. Du kannst Dir auch die relevanten Teile im Setup-Dokument ansehen (https://github.com/mumpf/knx-sensor/...-dev-setup.pdf).

                          Derzeit ist der einzige unterschied aber die Adresse vom 1-Wire-Chip, und da 1-Wire nicht unterstützt wird, sollte das klappen. Aber testen ist nie schlecht:-)

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            Zitat von Masifi Beitrag anzeigen
                            dann würde ich mir den mal ziehen und es auf einer Version1 ausprobieren.
                            Das habe ich gerade gemacht und es sieht gut aus. Der Code läuft auf einer Version1 mit einem BME680. Morgen werde ich noch etwas die Logiken testen, aber hier sollte es keinen Unterschied zwischen Version1 und Version2/3 geben.
                            www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

                            Kommentar


                              #15
                              Sehr schönes Projekt!
                              DIY-Hardware mit ETS-Unterstützung sagt mir zu.
                              1wire Anbindung geplant -> sehr schön.

                              Mir fehlt nur noch ein Feuchtigkeitssensor, der dauerhaft 70-99% Luftfeuchte "verträgt" bzw. in so einer Umgebung einsetzbar ist.
                              Gruß -mfd-
                              KNX-UF-IconSet since 2011

                              Kommentar

                              Lädt...
                              X