Ankündigung

Einklappen
Keine Ankündigung bisher.

Trovis 557x Heizungsregler Plugin

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

    #61
    Du könntest in der __init__.py des Trovis Plugins das Logging aktivieren (Zeile 236 und 313). Nach kurzer Durchsicht des Sourcecodes bin ich der gleichen Meinung wie Tom. Die Daten werden nicht eingelesen. Dadurch steht in der Variable "_ids_mit_werten" nur die Fehlermeldung aus der Exception, die natürlich keine Array-Form hat, also nicht "iterable" ist. Das führt zu dem Fehler in Zeile 238.

    Gruß
    Wolfram
    Zuletzt geändert von wvhn; 27.08.2021, 22:44.

    Kommentar


      #62
      Danke euch weiterhin. Der Sniffer zeigt folgendes:
      2021-08-28 07_50_12-USR-VCOM Virtual Serial Port Server V3.7.2.525.png

      Dann muss ich wohl (wieder) die Verkabelung anschauen. Wobei so viel kann selbst ich da ja eigentlich nicht falsch machen...Logging wird jetzt mal aktiviert!

      Wobei ich bei jedem Restart immer noch das Problem der fehlenden Rechte auf /dev/trovis habe...boah...
      Angehängte Dateien
      Zuletzt geändert von TheStig; 28.08.2021, 06:58.

      Kommentar


        #63
        Für das Problem mit den Rechten des /dev/ttytrovis findest Du in #12 dieses Threads einen Hinweis.

        Kommentar


          #64

          Ok, dem Rechte-Problem widme ich mich später. Ich bekomme es zumindest hin, dass der Fehler bis zu einem Neustart nicht auftritt.

          Helft mal bitte mit mit der Verkabelung. Ich werde da irre. Hier ein möglichst gutes Foto vom Stecker:

          2021-08-28 12_20_37-IMG_1883 (002).jpg ‎- Fotos.png

          Ist ja spiegelverkehrt zu hier: https://github.com/Tom-Bom-badil/sam...ie-beschaltung

          Fangen wir mit dem leichten an:
          5V = Braun/Weiß (Kabel neben dem Braunen)
          Grd = Orange

          Wenn das korrekt ist müsste TXD und RXD wie folgt sein:
          RXD = Grün
          TXD = Schwer zu erkennen von der Farbe. Entweder Grün/Weiß oder Blau/Weiß mit Tendenz zu Grün/Weiß (allerdings waren im Kabel die Adern Blau und Blau/Weiß miteinander verdrillt)

          RXD vom Kabel dann an TXT vom Adapter und umgekehrt.

          Wo liegt mein Denkfehler?

          EDIT: Aktueller Fehler im Log (etwas anders als vorher):
          Code:
          2021-08-28 12:30:29 ERROR plugins.trovis557x.poll_device Method plugins.trovis557x.poll_device exception: 'AttributeError' object is not subscriptable
          > Traceback (most recent call last):
          > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
          > obj()
          > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 84, in poll_device
          > self.verarbeiteWerte(ids_mit_werten, 'register')
          > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 236, in verarbeiteWerte
          > self.logger.debug('Verarbeite ' + _datentyp + ' ' + str(_ids_mit_werten[0][0]) + '-' + str(_ids_mit_werten[len(_ids_mit_werten)-1][0]) + ':')
          > TypeError: 'AttributeError' object is not subscriptable
          Zuletzt geändert von TheStig; 28.08.2021, 11:33.

          Kommentar


            #65
            Du hast die Zeile 236 für das debug-Log aktiviert, oder? Dann tritt derselbe Fehler ('_ids_mit_werten' enthält vermutlich die Fehlermeldung bzw. Exception) einfach nur früher auf. Ich hatte gehofft, dass man trotzdem etwas mehr über den Fehler erfährt, aber dazu müsste man das Logging nochmal ändern. Beispielsweise statt Zeilen 228 / 229 folgendes einsetzen:

            Code:
                    except Exception as e:
                        if hasattr(e, 'message'):
                            self.logger.debug('Fehlermeldung von Schnittstelle: ' + e.message)
                        else:
                            self.logger.debug('Fehlerobjekt von Schnittstelle: ' + e)
                        _ids_mit_werten = e
            Ich weiß aber nicht, ob Dich das wirklich weiter bringt. Ich würde eher versuchen, die Kette von der Schnittstelle her Schritt für Schritt zu verifizieren. (Pinbelegung sieht für mich OK aus.)

            Wenn Du das Debug-Logging aktiviert hast, müsstest Du schon sehen können, ob der Verbindungsaufbau zum Trovis geklappt hat. Das kannst Du im Admin-Interface von shNG einstellen und einsehen.
            Zuletzt geändert von wvhn; 28.08.2021, 12:59.

            Kommentar


              #66
              Zitat von TheStig Beitrag anzeigen
              Ok, dem Rechte-Problem widme ich mich später. Ich bekomme es zumindest hin, dass der Fehler bis zu einem Neustart nicht auftritt.

              Helft mal bitte mit mit der Verkabelung. Ich werde da irre. Hier ein möglichst gutes Foto vom Stecker:

              2021-08-28 12_20_37-IMG_1883 (002).jpg ‎- Fotos.png

              Ist ja spiegelverkehrt zu hier: https://github.com/Tom-Bom-badil/sam...ie-beschaltung

              Fangen wir mit dem leichten an:
              5V = Braun/Weiß (Kabel neben dem Braunen)
              Grd = Orange

              Wenn das korrekt ist müsste TXD und RXD wie folgt sein:
              RXD = Grün
              TXD = Schwer zu erkennen von der Farbe. Entweder Grün/Weiß oder Blau/Weiß mit Tendenz zu Grün/Weiß (allerdings waren im Kabel die Adern Blau und Blau/Weiß miteinander verdrillt)

              RXD vom Kabel dann an TXT vom Adapter und umgekehrt.

              Wo liegt mein Denkfehler?

              EDIT: Aktueller Fehler im Log (etwas anders als vorher):
              Code:
              2021-08-28 12:30:29 ERROR plugins.trovis557x.poll_device Method plugins.o.poll_device exception: 'AttributeError' object is not subscriptable
              > Traceback (most recent call last):
              > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
              > obj()
              > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 84, in poll_device
              > self.verarbeiteWerte(ids_mit_werten, 'register')
              > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 236, in verarbeiteWerte
              > self.logger.debug('Verarbeite ' + _datentyp + ' ' + str(_ids_mit_werten[0][0]) + '-' + str(_ids_mit_werten[len(_ids_mit_werten)-1][0]) + ':')
              > TypeError: 'AttributeError' object is not subscriptable
              Oder Klok

              Kommentar


                #67
                Zitat von wvhn Beitrag anzeigen
                Du hast die Zeile 236 für das debug-Log aktiviert, oder? Dann tritt derselbe Fehler ('_ids_mit_werten' enthält vermutlich die Fehlermeldung bzw. Exception) einfach nur früher auf. Ich hatte gehofft, dass man trotzdem etwas mehr über den Fehler erfährt, aber dazu müsste man das Logging nochmal ändern. Beispielsweise statt Zeilen 228 / 229 folgendes einsetzen:

                Code:
                except Exception as e:
                if hasattr(e, 'message'):
                self.logger.debug('Fehlermeldung von Schnittstelle: ' + e.message)
                else:
                self.logger.debug('Fehlerobjekt von Schnittstelle: ' + e)
                _ids_mit_werten = e
                Ich weiß aber nicht, ob Dich das wirklich weiter bringt. Ich würde eher versuchen, die Kette von der Schnittstelle her Schritt für Schritt zu verifizieren. (Pinbelegung sieht für mich OK aus.)

                Wenn Du das Debug-Logging aktiviert hast, müsstest Du schon sehen können, ob der Verbindungsaufbau zum Trovis geklappt hat. Das kannst Du im Admin-Interface von shNG einstellen und einsehen.
                Ja, ich hatte die # an den beiden von dir genannten Stellen auskommentiert. Werde das mit dem zusätzlichen Code zum Logging mal testen...bin ja verzweifelt und teste alles!

                Debug-Logging im Trovis-Plugin oder in den Admin-Interface shNG allgemein?

                Kommentar


                  #68
                  Zitat von mza Beitrag anzeigen

                  Oder Klok
                  Ich kenne nur PEBKAC ;-) Was ist Klok?

                  Kommentar


                    #69
                    Wohl ein Fehler im neuen Error-Logging:
                    Code:
                    2021-08-28 14:43:50 ERROR lib.plugin Plugin 'trovis557x' exception during import of __init__.py: inconsistent use of tabs and spaces in indentation (__init__.py, line 229)
                    > Traceback (most recent call last):
                    > File "/usr/local/smarthome/lib/plugin.py", line 547, in __init__
                    > exec("import {0}".format(classpath))
                    > File "<string>", line 1, in <module>
                    > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 229
                    > if hasattr(e, 'message'):
                    > ^

                    Kommentar


                      #70
                      Da die Foren-Software keine Tabs akzeptiert, habe ich den Code mit Leerzeichen aufgefüllt, damit die Einrückungen stimmen. Das musst Du in Deinem Editor konsistent zu den anderen Eindrücken machen.

                      Kommentar


                        #71
                        Danke. Habe da mein Glück versucht. Hilft der etwas ausführlichere Fehler weiter?

                        Code:
                        2021-08-28 16:53:24 ERROR plugins.trovis557x.poll_device Method plugins.trovis557x.poll_device exception: can only concatenate str (not "AttributeError") to str
                        > Traceback (most recent call last):
                        > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 213, in leseTrovis
                        > for wert in werte.registers:
                        > AttributeError: 'ModbusIOException' object has no attribute 'registers'
                        
                        During handling of the above exception, another exception occurred:
                        
                        > Traceback (most recent call last):
                        > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                        > obj()
                        > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 81, in poll_device
                        > ids_mit_werten = self.leseTrovis(bereich, 'register')
                        > File "/usr/local/smarthome/plugins/trovis557x/__init__.py", line 232, in leseTrovis
                        > self.logger.debug('Fehlerobjekt von Schnittstelle: ' + e)
                        > TypeError: can only concatenate str (not "AttributeError") to str

                        Kommentar


                          #72
                          Es ist und bleibt die Schnittstelle bzw. der Adapter. Solange das nicht läuft, wird auch dieser konkrete Fehler nicht verschwinden. Da kann man an den Linux- und Plugin-Einstellungen biegen, wie man will - läuft die Schnittstelle physisch nicht oder mit falschen Einstellungen, bringt Dir die tollste socat-Schnittstelle und das tollste Logging nichts. Weiteres Indiz dafür: Dein Windows-PC kann ja mit Trovis View auch nicht connecten ....

                          Wie die Datenpakete im Sniffer korrekt aussehen müssen, findest Du auf Seite 1 dieses Threads - das sieht bei Dir komplett anders aus, und es sendet auch nur eine Adresse (vermutlich shNG, denn ohne Anforderung schickt die Trovis keine Daten).

                          Ich schließe mittlerweile nicht mal mehr aus, dass Du Dir mit dem "Try and Error" bei der Verkabelung die RS232-Seite des Adapters zerlegt hast. Masse an Tx und 5V konstante Gleichspannung an Rx kann die tollsten Effekte zaubern.

                          Ansonsten: Nochmal 19200 probieren (obwohl die Datenpakete bei Dir zumindest strukturiert aussehen, das wäre bei falscher Geschwindkeit meist nicht so), andere Schnittstelleneinstellungen im Adapter probieren (7N1 usw - wäre aber ungewöhnlich), Verkabelung prüfen (sitzt der Stecker überhaupt richtig drin in der Trovis drin - 'klick' muss es machen).

                          Schwierig ...

                          /tom
                          Zuletzt geändert von Tom Bombadil; 28.08.2021, 16:50.

                          Kommentar


                            #73
                            Danke dir erneut Tom. Schwierig ist der richtige Ausdruck. Dass ich mit Trial & Error das Adapter zerschossen habe, schließe ich ausdrücklich nicht aus. Allerdings ist ja immerhin noch die Seite komplett erreichbar usw.

                            Verkabelung habe ich jetzt x-mal geprüft. Das sollte richtig sein.

                            19200 hatte ich ja eingangs probiert, mache ich jetzt nochmal. Auch die anderen Schnittstelleneinstellungen (meinst du das wo der Standard rtu ist).

                            Die TTL-Adapter sind ja nicht sehr teuer. Vielleicht bestelle ich einfach noch einen und teste mit dem. Oder halt das mit USB alternativ (aber da habe ich gelesen, dass sich da ja manchmal die Namen ändern).

                            Kommentar


                              #74
                              Zitat von wvhn Beitrag anzeigen
                              Du hast die Zeile 236 für das debug-Log aktiviert, oder?
                              Man muss dafür nicht mal in den Quellcode gehen - ist schon alles vorbereitet. Einfach diese Zeilen in etc/logging.yaml aufnehmen, die # Kommentarzeichen rausnehmen, und schon kommen Unmengen an Daten.

                              Hab ich damals beim Entwickeln sowieso gebraucht - und es gibt im Tools-Verzeichnis sogar noch etliches mehr, z.B. einen eigenen Register- und Coils-Sniffer, der prüft, welche der tausenden *möglichen* Daten am konkreten Regler überhaupt zu Verfügung stehen.

                              Bringt aber alles nix, wenn die Schnittstelle nicht läuft ...

                              /tom

                              Kommentar


                                #75
                                Ich hab mal Quick-and-Dirty darzustellen versucht, wo ich zu 99.9% (Period!) Dein Problem sehe. Das kann an falscher Verkabelung, falschen Einstellungen (Baudrate etc) oder defekten Komponenten liegen:

                                uebersicht.png

                                Das Web-Interface des TTL-Adapters kannst Du ja sauber erreichen, und der Sniffer auf dem PC sieht auch, das der Raspi versucht, Datenpakete zu senden. Das heißt, Port 8234 geht bis zum TTL-Adapter durch. Daher schließe ich alles bis zur seriellen Leitung als Hauptfehlerquelle aus.

                                Sowohl TrovisView als auch shNG+Trovis-Plugin benötigen eine feste Punkt-zu-Punkt-Verbindung. Das LAN mit Port 8234 ist nur Mittel zum Zweck; am Ende wird direkt aus dem Plugin bzw. TrovisView mit dem Regler kommuniziert. Steht diese Verbindung nicht, knallt es im Plugin, und TrovisView mault auch.

                                /tom

                                Edit: p.s. Was nicht heissen muss, dass Du nicht auch noch zusätzliche Probleme mit der virtuellen socat-Schnittstelle hast - aber das ist eine andere Baustelle und hat mit shNG und dem Plugin erstmal nix zu tun ...
                                Zuletzt geändert von Tom Bombadil; 28.08.2021, 17:50.

                                Kommentar

                                Lädt...
                                X