Ankündigung

Einklappen
Keine Ankündigung bisher.

Alternative Firmware für das 1-Wire Gateway von Masifi

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

    Alternative Firmware für das 1-Wire Gateway von Masifi

    Hi,

    ich hab mal wieder ein neues Projekt, dass ich euch vorstellen wollte.

    Durch die guten Erfahrungen, die ich mit meinem Sensormodul-Projekt (https://knx-user-forum.de/forum/%C3%...dul-von-masifi) gemacht habe und durch die Hardware-Spende von Masifi (https://knx-user-forum.de/forum/proj...1-wire-gateway) habe ich beschlossen, für sein 1-Wire-Gateway (vom mir nur kurz WireGateway genannt) eine alternative Firmware zu schreiben.

    Wie schon beim Sensormodul-Projekt, basiert das Ganze auf dem KNX-Stack von thesing (https://knx-user-forum.de/forum/%C3%...6-knx-mit-ets). Dadurch kann ich auch eine ETS-Applikation (ETS5 und ETS6) für die Konfiguration des Moduls anbieten.

    Zusätzlich gib es (wie beim Sensormodul) ein integriertes Logikmodul mit 80 Logikkanälen.

    Das 1-Wire Modul bietet pro verfügbaren Busmaster bis zu 30 1-Wire-Kanäle. Im Maximalausbau bietet das WireGateway von Masifi 3 Busmaster, dann stehen bis zu 90 1-Wire-Kanäle zur Verfügung.

    Was bedeutet ein 1-Wire-Kanal? Bitte auf keinen Fall mit einem 1-Wire-Gerät verwechseln! Die einfachste (aber sehr technische) Erklärung: Alles, was auf der KNX-Seite ein KO braucht, ist ein 1-Wire-Kanal. Ein Temperatursensor (DS18B20) braucht nur einen Kanal, da er über ein KO seine Temperaturen verschicken kann. Ein 8-fach 1-Wire-I/O (DS2408) braucht acht 1-Wire-Kanäle, pro In- oder Output einen Kanal. Die Zuordnung ist sehr flexibel, wenn man von einem DS2408 nur 4 Inputs braucht, kostet das auch nur vier 1-Wire-Kanäle.

    Wichtig: Ich liste hier Maximalwerte auf! Ich kann nicht wirklich 30 Kanäle pro Busmaster garantieren, da 1-Wire sehr empfindlich auf Timing, Leitungsläge und externe Störungen reagiert. Ich habe erfolgreich 17 DS18B20 an einem Busmaster getestet (mehr Sensoren habe ich nicht), das hat funktioniert.

    Was unterstützt die 1-Wire-Firmware derzeit:
    • 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, funktioniert aber nicht so berauschend)
    • DS2413 (I/O, 2 Kanal) - nicht für Taster (kurzzeitige Tastendrücke) geeignet, eher für Fensterkontakte
    • DS2408 (I/O, 8 Kanal) - nicht für Taster (kurzzeitige Tastendrücke) geeignet, eher für Fensterkontakte
    Für die DS2438 kann man benutzerdefinierte Umrechnungsformeln im Coding hinterlegen, damit diese Sensoren vernünftige Werte ausgeben.

    Das Logikmodul bietet das gleiche wie im Sensormodul, bis auf das Schreiben von GA ins EEPROM und die damit verbundenen Funktionen. Pro Logikkanal wird folgendes unterstützt:
    • 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)
    • 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
    ETS-Seitig unterstützen die Applikationen die partielle Programmierung und die Programmierung mit Longframes (sofern es die Schnittstelle und alle Koppler "auf dem Weg" unterstützen). Getestet wurde mit ETS 5.6 (minimalvoraussetzung), ETS 5.7 und ETS 6.0.

    Die Firmware ist schon längere Zeit im Testbetrieb, die Version mit bis zu 30 1-Wire-Kanälen auch schon seit längerem im Sensormodul verfügbar. Es läuft einigermaßen Stabil, aber es gibt noch Hänger, für die ich reproduzierbare Beispiele suche. Insofern muss klar sein, dass man das auf "eigenes Risiko" installiert und nutzt. Die Software ist so, wie sie ist - ich übernehme keine Garantien. Ich helfe aber gerne, um Probleme zu lösen. Trotzdem möchte ich betonen, dass ich 1-Wire nicht (mehr) produktiv einsetze. Ich werde dieses Gateway allerdings ab kommenden Sommer mit ein paar DS18B20 bei meiner Heizung zur Messung von ein paar Werten einsetzen. Alleine damit ich etwas habe, das produktiv läuft und mir erlaubt, Fehler nachzuvollziehen und Verbesserungen zu implementieren.

    Falls das jemand ausprobieren möchte:Für die ETS-Applikation gibt es 2 Applikationsbeschreibungen:Ich möchte mich bei thesing und Bernator für den knx-Stack bedanken sowie bei Masifi für die Hardware und den regen Gedankenaustausch.

    Falls es Fragen oder Verbesserungsvorschläge gibt, beantworte ich diese gerne in diesem Thread. Für das Logikmodul gibt es einen eigenen Diskussionsthread: https://knx-user-forum.de/forum/%C3%...-l%C3%B6sungen.

    Im 2. Beitrag werde ich immer Aktualisierungen (mit Verweis auf die jeweilige Beschreibung) ankündigen.

    Gruß, Waldemar










    OpenKNX www.openknx.de

    #2
    Reserviert für Updates...
    OpenKNX www.openknx.de

    Kommentar


      #3
      Falls es hierzu noch Interesse an einer HW gibt, dann lasst es mich wissen, dann könnte man davon wieder welche aufbauen lassen.
      www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

      Kommentar


        #4
        Dank Covid hatte ich jetzt mal Zeit die Nano BCUs, die schon ewig rumliegen, zu löten. Deine Firmware habe ich sofort auf dem ItsyBitsy M0 kompiliert bekommen und ich sehe auch erst mal das Teil am Bus. Tolle Sache. So richtig haut es noch nicht hin, da es sich nach dem Adresse zuweisen erst mal tot stellt. Muss mich da mal einfuchsen aber auf jeden Fall mein Dank an mumpf für die Software und die Doku.

        Auch Dank an Masifi. Ich haben deinen Threat zur Hardware gelesen. Hab ich da was übersehen, oder gab es am Ende nie eine Hardware Doku?

        Kommentar


          #5
          Es gab einfach nur nie eine offizielle HW. Das lief alles damals nur nebenher daher habe ich das Thema nie angegangen.
          www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

          Kommentar


            #6
            dhb2002 Das wird spannend... Ich hab hier bisher nur 2 User, die das Gateway nutzen: Mich (noch nicht produktiv, nur als devel Board) und noch einen anderen User. Und wir beide haben unterschiedliche Hardware-Versionen Es gibt somit noch keine Massen-Tests. Wir können gerne mal schauen, wie wir das zum Laufen bekommen, hängt aber von Deinen Fähigkeiten ab. Hast Du einen Debugger? Kannst Du C++? Können wir eine Remote-Session machen? Wobei das schwer wird mit dem Zeitfenster nach NZ .

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #7
              Moin zusammen,
              ich habe auch das 1Wire Gateway und bisher mit Masifis Firmware verwendet. Jetzt wollte ich mal das Update auf deine ETS Firmware probieren.
              Ich habe, da ich ein extra Board auf dem Mainboard habe, vermutlich die ItsyBitsy M0 Version der Hardware und habe das entsprechend in der platform.ini konfiguriert.
              Beim Befolgen deiner Anleitung ist mir ein Punkt aufgefallen:
              Press Ctrl-Shift-B, select the "Build PlatformIO knx-sensor" build task and press enter.
              Hier gibt es bei mir nur "knx-logic", "knx-wire" und "knx-wire". Ich bin jetzt erstmal von Wire ausgegangen, weil das auch beim Upload beschrieben ist.
              Beim Upload hatte ich erst das Problem, dass das Gateway sich nicht mehr als serielles Gerät an Windows angemeldet hat.
              Nachdem ich die Busversorgung und 12V getrennt habe, war es als Serial Gerät da. Beim Upload kam dann der Fehler:
              Looking for upload port…
              Auto-detected: COM4
              Forcing reset using 1200bps open/close on port COM4
              Waiting for the new upload port…
              Error: Couldn't find a board on the selected port. ….
              ItsyBitsy LED oben am USB-Anschluss war zu diesem Zeitpunkt violett.

              Mit einem 2 fachen drücken der Reset Taste lies sich das auch beheben. LED war dann rot oben beim USB-Anschluss.
              Und er hat augenscheinlich geflasht.
              Danach war die LED wieder violett.
              Jetzt habe ich den KNX und die 12V wieder angeschlossen.
              Nach drücken der PROG-Taste würde ich jetzt erwarten, dass die PROG-LED am Gateway leuchtet, tut sie aber nicht.
              Über die ETS lässt sich die physikalische Adresse auch nicht programmieren (Erstellen und Importieren der knxprod hat problemlos funktioniert).

              Jetzt zur Frage, wie kann ich weiter vorgehen?
              Grüße
              Matze

              Kommentar


                #8
                Hi Matze,

                schön dass Du Dich meldest.

                Zitat von fisch3009 Beitrag anzeigen
                Ich bin jetzt erstmal von Wire ausgegangen, weil das auch beim Upload beschrieben ist.
                Das war genau richtig! Das mit knx-sensor hab ich versehentlich drin gelassen, ich hatte die Anleitung vom kns-sensor als Vorlage genutzt.

                Die Auto-Erkennung von Ports der Hardware ist leider nicht sehr zuverlässig.Dein Vorgehen mit 2xRESET ist genau richtig gewesen.

                Ich gehe auch davon aus, dass die Firmware geflashed ist. Der häufigste Grund, dass es danach nicht weiter läuft, liegt daran, dass die Pin-Belegung nicht stimmt. Das ist deswegen möglich, weil Matthias keine reguläre Serie aufgelegt hatte und sich somit die Geräte womöglich noch stark unterscheiden.

                Hast Du noch die Firmware von Matthias, mit der es lief? Und vor allem: Hast Du die Sourcen davon? Dann pack die mal in einen ZIP und häng sie hier an, dann kann ich mal die PIN-Belegung vergleichen.

                Was Du machen kannst: Verbinde das Gateway über USB mit dem Rechner, mach einen Reset am Gateway und click bei PlatformIO in der unteren blauen Statusleiste auf den kleinen Stecker (tooltip: Serial Monitor). Schauen wir mal, ob da Ausgaben kommen. Vor allem, wenn Du die Prog-Taste drückst, sollten da "progon" und "progoff" kommen.

                Hast Du ne Chance, die nächsten Tage mal abends eine Online-Session zu machen? Dann könnten wir vielleicht schneller vorankommen und ich sehe vielleicht was.

                Beste Chance wäre derzeit die Firmware von Matthias, die zu Deinem Modul passt.

                Gruß, Waldemar

                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Hallo Waldemar,
                  Danke für die schnelle Antwort!
                  Anbei die Firmware die vorher drauf war. Ich hoffe das ist für Matthias ok, dass ich die hier hochlade.
                  Wenn ich den Quellcode richtig gelesen habe:
                  #ifdef ItsyBitsyM0
                  #define PROG_LED_PIN 9
                  #define PROG_BUTTON_PIN A1
                  #define LED_YELLOW 13
                  müssten das die von dir angesprochene PIN-Belegung sein, die mit deiner PIN-Belegung übereinstimmt:
                  #ifdef BOARD_MASIFI_ONEWIRE_ITSYBITSY_M0
                  #define PROG_LED_PIN 9
                  #define PROG_LED_PIN_ACTIVE_ON HIGH
                  #define PROG_BUTTON_PIN A1
                  #define PROG_BUTTON_PIN_INTERRUPT_ON FALLING
                  #define INFO_LED_PIN 13
                  Richtig?

                  Per USB an den Rechner angschlossen habe ich gerade getestet.
                  Mit Reset meinst du wieder doppelt auf Reset, bis die rote LED auf dem ItsyBitsyM0 an ist und sich das Gerät wieder als serielles Gerät meldet?
                  Das habe ich gemacht (dafür muss ich immer die BCU entfernen, sonst komme ich nicht an den Reset Knopf).

                  Wenn ich dann den Serial Monitor in VisualStudio Code öffne verbindet er sich auch mit COM5 (das müsste der ItsyBitsy sein, zumindest ist das das neue Serial Device, was nach Reset auftaucht), aber mehr passiert nicht.
                  Executing task in folder knx-wire: C:\Users\matth\.platformio\penv\Scripts\platformio .exe device monitor

                  --- Terminal on COM5 | 115200 8-N-1
                  --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
                  --- More details at https://bit.ly/pio-monitor-filters
                  --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
                  Die nächsten Tage bin ich Abends unterwegs, frühestens Montag hätte ich Zeit, die nächste Woche abends aber auch immer flexibel verfügbar, da könnten wir gerne eine Online-Session machen.

                  Danke im Voraus für deine Hilfe!
                  Angehängte Dateien
                  Grüße
                  Matze

                  Kommentar


                    #10
                    Es gibt zwischen dem SAMD native und dem ItsybitsyM0 noch den Unterschied, das der SerialUSB beim ItsybitsyM0 anders heißt, nur Serial oder Serial1
                    www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

                    Kommentar


                      #11
                      Danke für den Tipp. Ich schau nochmal, ich dachte aber, das hab ich schon drin. Kannst Du Dir erklären, warum Matze nicht über USB flashen kann, wenn 12V dran sind?

                      Zitat von fisch3009 Beitrag anzeigen
                      Mit Reset meinst du wieder doppelt auf Reset, bis die rote LED auf dem ItsyBitsyM0 an ist und sich das Gerät wieder als serielles Gerät meldet?
                      Nein, ich meinte nur einmalig reset drücken, damit die Firmware neu gestartet wird. Aber das können wir dann auch in dern Online-Session klären. Schreib mir mal per PM Deine Mailadresse und wann Du kommende Woche kannst. Ich bin auch abends immer verfügbar, so ab 21 Uhr.

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Zitat von mumpf Beitrag anzeigen
                        Danke für den Tipp. Ich schau nochmal, ich dachte aber, das hab ich schon drin. Kannst Du Dir erklären, warum Matze nicht über USB flashen kann, wenn 12V dran sind?
                        Nein, die 12V dürfen theoretisch eigentlich nichts ausmachen beim Flashen. Wenn man zwei mal Reset drückt erst recht nicht.
                        www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

                        Kommentar


                          #13
                          So, nach einer langen Online-Session haben wir es gestern zum Laufen bekommen.
                          Vielen Dank nochmal Waldemar, super Support und die umfangreichen Erklärungen, auch zu den wirklich umfrangreichen Möglichkeiten seiner "kleinen" Logik-Engine in der Firmware.

                          Lösung war, dass für den ItsyBitsy hier noch die Board Definition einkommentiert werden muss (so soll es aussehen):
                          PHP-Code:
                          board zeroUSB
                          board 
                          adafruit_itsybitsy_m0 
                          Was bei mir leider nicht funktioniert ist die ProgLED. Mit Pin 9 tut sich da nichts, obwohl der Progmode eingeschaltet ist (physikalische Adresse lässt sich programmieren und ist auch im Serial Monitor zu sehen: "progmode on").
                          Behelfsweise haben wir jetzt bei mir den Pin der Info-LED für Prog LED genommen (das auskommentierte ist jeweils die Original-Konfiguration):
                          PHP-Code:
                          //#define PROG_LED_PIN 9
                          #define PROG_LED_PIN 13
                          #define PROG_LED_PIN_ACTIVE_ON HIGH
                          #define PROG_BUTTON_PIN A1
                          #define PROG_BUTTON_PIN_INTERRUPT_ON FALLING
                          //#define INFO_LED_PIN 13
                          #define INFO_LED_PIN 9 
                          Die Info LED ist bei mir auf dem ItsyBitsy und leider nicht gut zu sehen, aber als Workarround OK.
                          Grüße
                          Matze

                          Kommentar


                            #14
                            Hi Matze,

                            auch ich fand das sehr nett gestern. Das mit der Prog-LED hab ich nochmal bei Sisamiwe per PM angefragt.

                            Zitat von fisch3009 Beitrag anzeigen
                            So, nach einer langen Online-Session haben wir es gestern zum Laufen bekommen.
                            Damit hier kein falscher Eindruck entsteht: Die Fehlerfindung waren ungefähr 5 Minuten der instgesamt 2-Stunden Session, 10 Minuten hat dann der Test gedauert und die restliche Zeit haben wir uns eigentlich nur nett unterhalten.

                            Viel Erfolg bei weiteren Tests,
                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              #15
                              mumpf
                              fisch3009

                              Ich habe im Code der FW nachgeschaut:

                              platformio.ini:
                              Code:
                              [env]
                              platform = atmelsam
                              board = adafruit_itsybitsy_m0
                              framework = arduino
                              build_type = debug
                              build_flags =
                                -DDEBUG_DELAY=10000
                                -Wno-unknown-pragmas
                                -Wno-switch
                                -Wno-write-strings
                                -Wno-format-overflow
                                ; select correct hardware to compile for
                                -D BOARD_MASIFI_ONEWIRE_ITSYBITSY_M0
                                ; optimize knx stack
                                -D SMALL_GROUPOBJECT
                                ; use correct generated header file logic
                                -D WIREGATEWAY
                                ; trace logic execution in logicmodule
                                ;-DLOGIC_TRACE
                                ; debug timing in knx stack
                                ; -DDEBUG_TIMING
                                ; debug timing in 1-Wire-Search
                                ;-DDebugInfoBM
                                ;-DDebugInfoSearch
                                ; watchdog support, deactivate for debugging
                                ;-DWATCHDOG
                                ; should be always deactivated
                                ;-DCRYSTALLESS
                              Hardware.h
                              Code:
                              #ifdef BOARD_MASIFI_ONEWIRE_ITSYBITSY_M0
                              #define PROG_LED_PIN 9
                              #define PROG_LED_PIN_ACTIVE_ON HIGH
                              #define PROG_BUTTON_PIN A1
                              #define PROG_BUTTON_PIN_INTERRUPT_ON FALLING
                              #define INFO_LED_PIN 13
                              #define INFO_LED_PIN_ACTIVE_ON HIGH
                              #define COUNT_1WIRE_BUSMASTER 3
                              #define COUNT_1WIRE_CHANNEL 90
                              #define COUNT_LOG_CHANNEL 80
                              #define I2C_1WIRE_DEVICE_ADDRESSS 0x18 // Address of first DS2482 1-Wire-Busmaster chip, used are 0x19, 0x1A, 0x1B
                              #define I2C_EEPROM_DEVICE_ADDRESSS 0x50 // Address of 24LC256 eeprom chip
                              #endif
                              Prog-LED funktioniert so auch.

                              Hilft das?

                              Kommentar

                              Lädt...
                              X