Ankündigung

Einklappen
Keine Ankündigung bisher.

Trovis 557x Heizungsregler Plugin

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

    Trovis 557x Heizungsregler Plugin

    Die erste Alpha des Trovis-Plugins für Regler mit Modbus-Schnittstelle (5571, 5573, 5576, 5578, 5579) ist fertig: <Klick>. Bei mir läuft diese seit knapp einer Woche und liefert im Minutentakt Daten.

    Die Dokumentation ist im Git unter 'Wiki' zu finden, aber noch im Aufbau. Unter anderem wird dort auch beschrieben, wie man ein passendes serielles Kabel für den Regleranschluss fertigt - dieses funktioniert dann übrigens auch prima mit dem originalen Trovis View von Samson (erklärt werden sowohl USB- als auch LAN-Kabel). Der Erwerb des teuren "USB Converter 3" ist für den Betrieb des Plugins also nicht erforderlich.

    Das Plugin ist vorerst nur zum Lesen und Überwachen gedacht; den Regler programmieren kann man jederzeit direkt oder mit Trovis View.

    Am Plugin selbst wird es zeitnah noch einige Änderungen geben. Sobald diese implementiert und getestet sind, pushe ich das Plugin in Richtung Develop-Zweig.

    Über Rückmeldungen von Testern würde ich mich freuen!

    /tom
    Zuletzt geändert von Tom Bombadil; 06.08.2019, 10:32.

    #2
    Kurzes Update: Die Doku des Plugins wurde erweitert und ist jetzt annähernd komplett (der Abschnitt zur smartVISU wird später nachgereicht). Insbesondere die Anfertigung des Datenkabels ist jetzt detailliert und mit Bildern beschrieben.
    /tom

    Kommentar


      #3
      Das erste Release ist hiermit offiziell erstellt: https://github.com/Tom-Bom-badil/sam...eases/tag/v1.0

      Kommentar


        #4
        Stellst Du noch einen PR?
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Da waren sie wieder, meine 3 Github-Probleme.
          Ist gestellt!

          /tom

          Kommentar


            #6
            Waren das die drei Probleme:
            1. Pull
            2. Request
            3. stellen
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #7
              Jup. Ein komplettes Repo in die Struktur eines anderen, größeren Repos 'hineinzuclonen' braucht halt etwas Übung und ist (zumindest für mich) nicht so ganz trivial.
              Aber Google ist mein Freund ...

              /tom

              Kommentar


                #8
                Zitat von Tom Bombadil Beitrag anzeigen
                Die erste Alpha des Trovis-Plugins für Regler mit Modbus-Schnittstelle (5571, 5573, 5576, 5578, 5579) ist fertig: <Klick>. Bei mir läuft diese seit knapp einer Woche und liefert im Minutentakt Daten.
                [...]
                /tom
                Hallo Tom,

                ich habe dein SmartHomeNG Plugin für die Regler der Samson Trovis 557x Reihe entdeckt und würde es gerne bei mir in Betrieb nehmen. Meine Fernwärmeübergabestation hat einen Samson Trovis 5573-1003 verbaut.

                Ein serielles Kabel habe ich mir schon gebastelt und mit Trovis View 4.51 und einem Windows Rechner auch verifiziert, dass es funktioniert.

                SmartHomeNG und dein Plugin habe ich auch auf einem Raspi 3B+ installiert und könnte im Prinzip loslegen. Jetzt hast du ja aber das Plugin für den Trovis 5576 Regler geschrieben. Deshalb wollte ich vor der ersten Verbindung mit deinem Plugin noch die Register-Templates aus deinem Plugin für meinen 5573 Regler anpassen.

                Ich habe die Daten, die ich mit TrovisView auslesen konnte, im XML format gespeichert und dann zur besseren Lesbarkeit in CSV konvertiert (siehe Anhang).

                Beim Vergleich mit den Inhalten aus den 3 Python-Files aus dem templates directory (5576-003_coils.py / 5576-003_listen.py / 5576-003_registers.py) sind mir dann aber deutliche Unterschiede aufgefallen, so dass ich mich frage, ob solche Unterschiede bei Reglern der gleichen Baureihen-Familie wirklich wahrscheinlich sind, oder ob ich das Format der Dateien und die Schritte, die zur Anpassung deines Plugins an meinen 5573 Regler erforderlich sind, evtl. nicht richtig verstanden habe.

                Nach meinem bisherigen Verständnis müssten für die Unterstützung des 5573 Reglers durch dein Plugin die drei Dateien aus dem templates directory angepasst werden und zum Lookup dort abgelegt werden (z.B. unter den Namen 5573-1003_coils.py / 5573-1003_listen.py / 5573-1003_registers.py). Wahrscheinlich sind aber noch weitere Schritte für die korrekte Referenzierung der neuen Lookup-Tables erforderlich...

                Ich wollte dich um deine Unterstützung bitten, da meine bisherige Erfahrung mit der SmartHomeNG Platform nahezu gleich Null ist 🙄

                Grüße,
                sancho679
                Angehängte Dateien

                Kommentar


                  #9
                  Hallo sancho,

                  willkommen im Forum!

                  Das Trovis-Plugin liest ohnehin nur Daten aus, Schreibroutinen hat bisher noch niemand gebraucht. Den Regler programmiert man ja eher selten um, wenn er einmal eingestellt ist - und wenn doch, verbindet man kurz Trovis View auf den RS485-Adapter, wie hier im Wiki beschrieben. Somit kann nichts kaputtgehen oder verstellt werden - also einfach mal das Plugin aktivieren und ausprobieren.

                  Ich halte es nach allem, was ich in den letzten Jahren darüber gelesen habe, für extrem unwahrscheinlich, dass die Register bei der 5573 andere sind als bei der 5576. Zumindest in diesem Thread zur 5578 waren die Coils und Register identisch, und die Handbücher sind es auch (so wie auch das der 5573); es ist halt nur je nach Regler etwas mehr oder weniger Funktionalität vorhanden. Wenn Dein Regler z.B. nur einen Heizkreis hat, macht es keinen Sinn, auf die Daten des zweiten Heizkreises zugreifen zu wollen (siehe unten, wie Du die Dich interessierenden Werte definierst).

                  Die XLS mit den Coils/Registern in den Unterverzeichnissen, die Du gefunden hast, dienen eigentlich nur der Übersicht, wenn man mal was vergleichen will. Die eigentliche Definition der auszulesenden Werte erfolgt so:
                  • Die Dateien _coils.py und _register.py im Plugin-Verzeichnis plugins/trovis557x enthalten alle bisher bekannten Speicherplätze des Heizungsreglers, deren Einheiten, Umrechnungsfaktoren sowie weitere Angaben. Diese Dateien werden beim Start eingelesen. Vom Regler werden über den RS485 nur ganze Zahlen im Bereich 0...65535 empfangen, die entsprechend aufbereitet werden müssen, z.B. das Komma an der richtigen Stelle setzen, damit aus der empfangenen Zahl 12345 dann wahlweise 123,45 °C oder 1,2345 m³/h wird, je nach Register).
                  • In diesen beiden Dateien wird auch ein eindeutiger "Spitzname" (Variablenname, auchtrovis557x_var genannt) für jedes Register/Coil definiert, der später in shNG für den Zugriff auf diesen Speicherplatz des Reglers verwendet werden kann. Bekannt sind bisher einige 1.000 Speicherplätze, die ausgelesen werden können - Du wirst vermutlich davon nicht mehr als 20 oder 30 brauchen.
                  • Ich gehe zu 99.9% davon aus, dass Du diese Dateien im Plugin-Verzeichnis NICHT modifizieren musst.
                    .
                  • In der Datei items/trovis.yaml stehen die Werte, mit denen Du tatsächlich arbeiten möchtest. Hier werden sogenannte "Items" definiert (siehe shNG Doku), mit denen shNG dann arbeitet. Über die oben vergebenen "Spitznamen" verbindest Du shNG-Items mit den im Plugin definierten Variablen aus _coils.py und _registeres.py.
                  Hier ein Beispiel der shNG-Items, die standardmäßig nach Aktivierung des Plugins konfiguriert sind (Screenshot aus dem Admin-Interface von shNG):

                  1.png


                  Nach dem Aktivieren des Plugins kannst Du im Item "heizung.regler.modell" prüfen, ob alles grundsätzlich funktioniert - dort müsste bei Dir als Wert 5573 drinstehen.

                  Hoffe, das hilft erstmal weiter - viel Erfolg!

                  /tom
                  Zuletzt geändert von Tom Bombadil; 10.01.2021, 16:34.

                  Kommentar


                    #10
                    Hallo Tom,

                    vielen Dank für deine schnelle Antwort. Leider hab ich es erst heute geschafft an dem Thema weiter zu machen.

                    Ich hab das Plugin installiert und konfiguriert

                    20210117-1_plugin_config.png
                    und es scheint auf den ersten Blick wie von dir vermutet auch ohne weitere Änderungen an meinem Samson Trovis 5573 Regler zu funktionieren:

                    20210117-2_item_baum.png

                    Nur scheint es noch ein Problem mit dem Kabel-Setup und dem von mir verwendeten Prolific-USB-2-RS232-TTL-Converter zu geben. Ich weiss nicht ob es an dem Converter selbst liegt, denn ich habe diesen über eine USB-2-RJ45 Verlängerung am Regler angeschlossen, aber die Verbindung zu dem Converter scheint nicht stabil zu sein, der USB-Converter wird im Mittel alle 1h neu von meinem Raspberry detektiert. Teilweise ändert sich dabei der device name von /dev/ttyUSB0 zu /dev/ttyUSB1 und dann ist er ja nicht mehr für das Plugin verfügbar. Ich plane jetzt auf den USR-TCP232-T2 umzustellen, aber es wird noch eine Weile dauern bis alle Teile bei mir sind.

                    Wenn ich das wirklich stabil zum laufen kriegen sollte, würde ich im nächsten Schritt gerne auch das SmartVISU Widget zur Visualisierung der Reglerdaten bei mir installieren, dass du ja schon angefangen hast zu entwickeln:

                    smartVISU_Widget_screenshot_example.png

                    Leider ist der Widget-Code ja noch nicht released und es gibt auch noch keine öffentliche Doku dazu. Daher werde ich es ohne deine Unterstützung wahrscheinlich nicht schaffen es bei mir zu installieren. Aber vielleicht könntest du mir dabei helfen und wenn gewünscht, könnte ich dann gerne bei der weiteren Entwicklung und dem Test des Widgets mithelfen.

                    Grüße,
                    sancho679

                    Kommentar


                      #11
                      Hallo Sancho,

                      helfe Dir gern, das zum Laufen zu bekommen - sag Bescheid, wenn Du soweit bist und es losgehen soll.

                      Ob ich aus der Visu-Seite jemals ein 'echtes' sV-Widget machen werde, wage ich zu bezweifeln. Erstens scheint die Anzahl der Trovis-User sehr überschaubar, zweitens ist mein gesamtes Visu-Layout (siehe Screenshot) komplett modifiziert und basiert nicht auf Standardtemplates. Und drittens ist meine Freizeit momentan derart knapp, dass ich ohnehin nur alle paar Wochen den Kopf freibekomme, um die Sache ein wenig weiterzutreiben - und ich mich dann auf meine eigene Visu 'für mich' konzentriere.

                      Du findest aber den kompletten Code der sV-Page hier. Sobald Du also soweit bist, können wir das gern so zusammentüfteln, dass es auch für ein Standard-sV-Layout irgendwie passen sollte (oder Du übernimmst das Layout und entwickelst es für Dich selbst oder die Allgemeinheit weiter ) ...

                      /tom

                      Kommentar


                        #12
                        Hallo Tom,

                        ich wollte mich nochmal kurz mit einem kleinen Update zurückmelden. Mittlerweile hab ich nämlich den USR-TCP232-T2 Adpater erfolgreich im Einsatz. Allerdings betreibe ich ihn an meinem Trovis 5573-1 Regler mit separater externer Stromversorgung. Hatte zunächst versucht auch am RJ45 TTL port des Reglers die 5 Volt abzugreifen (sehr elegante Lösung btw.), aber das klappte bei mir auf Anhieb nicht, und da hab ich es bleiben lassen...

                        Bei der Software für das Auslesen und Protokollieren der Regler-Daten bin ich von deiner smartHomeNG / smartVISU Lösung weggekommen, weil ich mich da wie gesagt nicht so gut auskenne und dieses Framework auch sonst für keine andere Anwendung im Einsatz hab. Ich hab dann folgende vereinfachte eigene Lösung gebastelt:

                        Die interessanten Registerwerte des Reglers lese ich mit einem Python script via minimalmodbus Library aus, und rufe dieses Script regelmäßig über einen cron-Job auf. Die ausgelesenen Werte speichere ich dann anschließend mit dem selben Python Script in einer influxdb Datenbank und visualisiere die Daten über ein Grafana frontend. Ich bin dabei für die Installation diversen Tutorials aus dem Internet gefolgt, wie z.B. diesem hier.

                        Das klappt soweit ganz gut und zuverlässig. Deine Tipps von deinem Wiki zur Einbindung des USR-TCP232-T2 Adapters as Virtual Com Port systemd Service unter Linux haben mir dabei sehr geholfen!

                        Für das dort erwähnte Problem mit den Zugriffsrechten für nicht-root-user habe ich sogar eine Lösung gefunden:

                        Das Problem liegt wohl darin, dass das Virtual Com port device /dev/ttytrovis, das von socat angelegt wird, auf ein pseudoterminal unter /dev/pts/? zeigt, welchen mit den Einstellungen aus deinem Wiki

                        Code:
                        /usr/bin/socat -s -ly pty,link=/dev/ttytrovis,setuid=root,raw tcp:192.168.178.8:8234
                        standardmäßig mit den chmod-Rechten 620 (rw--w----) für den user root und die Gruppe tty angelegt wird. Es gibt aber die Möglichkeit über eine Erweiterung der commandline Optionen von socat eine Änderung der Gruppen-Ownership (z.B. auf die Gruppe dialout) und Gruppenrechte (z.B. auf die chmod-Rechte 660 / rw-rw----) zu bewirken, so dass z.B. auf einem RaspberryPi durch Hinzufügen des users pi zur Gruppe dialout der Zugriff auf den Adapter nach dem Starten des Services ohne Vorheriges

                        Code:
                        sudo chmod 777 /dev/ttytrovis
                        gelingt. Dazu muss die obige Einstellung im trovis.service file aus deiner Anleitung z.B. wie folgt geändert werden:

                        Code:
                        /usr/bin/socat -s -ly pty,link=/dev/ttytrovis,setuid=root,raw,group-late=dialout,mode=660 tcp:192.168.178.8:8234
                        Das ist vor allem dann hilfreich, wenn der Linux Host bzw. RaspberryPi neu gestartet wurde oder die Verbindung zum Adapter aus anderen Gründen zeitweise nicht zur Verfügung stand, da dann bei Wiederherstellung der Verbindung das
                        Code:
                         /dev/ttytrovis
                        device jedes Mal mit Standardrechten angelegt wird.

                        Zur Veranschaulichung meiner Lösung für die Visualisierung der Regler-Daten schicke ich mal noch ein Screenshot meines Grafana Dashboards mit, falls jemand Interesse hat auch so eine Lösung umzusetzen:

                        20210508_Trovis_5573-1_Dashboard_Grafana.png

                        Ich wollte mich nochmal für deine Unterstützung und die wertvollen Tipps bedanken 👍, die du in deinem Wiki veröffentlicht hast. Die habe mir die Umsetzung meines Projekts sehr erleichtert.

                        Grüße,
                        sancho679

                        Kommentar


                          #13
                          Hallo Sancho,
                          schön, dass es läuft, und dass Dir meine Vorarbeit helfen konnte!
                          Danke auch für das Feedback und die Tips und Ergänzungen!
                          Viele Grüße,
                          /tom

                          Kommentar


                            #14
                            Hallo,

                            ich hatte Schwierigkeiten eine virtuelle Schnittstelle mit socat zu erstellen um das modbus-gateway (https://github.com/3cky/mbusd) anzusprechen an dem der Trovis-Regler angeschlossen ist. Ich habe dann die Funktion ModbusTcpClient in die "__init__.py" Datei vom trovis-plugin eingebaut. Dann ist kein Umweg notwendig:


                            ...
                            from pymodbus.client.sync import ModbusTcpClient
                            ...

                            ...
                            # self._modbus_mode = self.get_parameter_value('modbus_mode')
                            # self._modbus_port = self.get_parameter_value('modbus_port')
                            # self._modbus_speed = self.get_parameter_value('modbus_speed')
                            ...
                            # connection = ModbusClient(method=self._modbus_mode, port=self._modbus_port, timeout=self._modbus_timeout, baudrate=self._modbus_speed)
                            connection = ModbusTcpClient('192.168.5.50', 502)
                            ...


                            Jetzt funktioniert es :-)




                            Kommentar

                            Lädt...
                            X