Ankündigung

Einklappen
Keine Ankündigung bisher.

Viessmann Plugin Neuentwicklung Python Hilfe

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

    Hi Morg,

    ich habe das gerade getestet. Jetzt bekomme ich Werte für Aussentemperatur(9.1), Kesselsolltemperatur(64.1) und Warmwasser_Temperatur(44.7).

    Der Rest funktioniert immer noch nicht (war auf 0). Warmwasser_Solltemperatur stimmt glaub so nicht, obwohl das WW wird nicht rund um die Uhr geheizt, sondern nur zu vordefinierten Zeiten. Evtl setzt er die SollTemp dann runter... ansonsten ist WWsoll glaube so 51.

    Merkwürdig ist, dass immer eine Lücke bei den ermittelten Item-Werten war (9.1, dann 0, 64.1, dann wieder 0, 44.7 dann wieder 0), deswegen hab ich mal das erste Item auskommentiert um die Reihenfolge der Lücke mal zu beeinflussen (da ich ein Protokollproblem vermutet habe).

    Dann kommt das dabei raus: Er Zeigt einen Wert für Kesseltemperatur(128.5), Kesselsolltemperatur(128.5), Warmwasser_Solltemperatur(5) und Warmwasser_Temperatur ist wieder 0

    Die Werte stimmen aber alle nicht mehr.

    debug1 ist der erste start (mit allen Items), dann debug2 der zweite (ohne Aussentemperatur).

    Ok, in einem dritten durchlauf - wieder mit Aussentemperatur sieht es plötzlich auch wieder anders aus. Da hat er Werte für alles, aber es stimmt immer noch keiner davon
    Angehängte Dateien
    Zuletzt geändert von TCr82; 13.12.2020, 13:11.

    Kommentar


      Zitat von Morg Beitrag anzeigen
      Bitte testet das Plugin wie gehabt
      - in eurer Standardkonfiguration (keine neuen Fehler)
      Läuft im Moment.

      Kommentar


        Also, ich erkenne ein gewisses Muster. Wenn er "zu lange" (über 1 Sekunde) auf die Antwort wartet, dann kommt von der Heizung das Sync-Signal (0x05). In vielen Fällen "liest" er dann ein oder zwei Bytes 0x05, was in den meisten Fällen ein Fehler sein dürfte.

        Also muss ich mir das Timing von Anfrage und Antwort nochmal genauer ansehen...

        Kommentar


          Michael: danke, das hatte ich gehofft dabei geht es auch nur darum, dass ich mit den "alternativen Codezweigen" für KW keine Fehler in den ja sonst problemlos laufenden Code gebracht habe.

          Da es bei mir jetzt aber auch die ganze Zeit sauber lief, erwarte ich in der Hinsicht keine Probleme.

          Du kannst ja spaßeshalber mal schauen was passiert, wenn du in der plugin.yaml auf protocol: 'KW' umstellt. Im Idealfall läuft es problemlos weiter...

          Kommentar


            Zitat von Morg Beitrag anzeigen
            Also muss ich mir das Timing von Anfrage und Antwort nochmal genauer ansehen...
            Hast Du das KW Protokoll so umgesetzt?
            Code:
            Kommunikation (alle Werte in Hex)
            
            Vitotronic sendet periodisch 0x05
            Sofort (xx msec) nach dem Empfang von 0x05 kann ein Telegramm gesendet werden und wird sofort beantwortet.
            Ehe ein weiteres Telegramm gesendet werden kann, muss erst auf das nächste 0x05 gewartet werden.
            Anstatt auf das nächste 0x05 zu warten, kann auch direkt nach dem Empfang einer Antwort das nächste Telegramm geschickt werden. Dabei darf das Telegramm nicht mit 0x01 eingeleitet werden (Somit ist das 0x01 logisch gesehen nicht ein Telegram-Start-Byte sondern ein ACK auf die 0x05).
            Telegrammdetails:
            
            01 Telegramm-Start-Byte (ACK auf 0x05)
            F7 Type F7= Lesen F4=Schreiben
            XX XX Adresse
            XX Anzahl der angefragten Bytes
            Beispiel Abfrage Außentemperatur (V200KW2)
            
            TX: 01
            TX: F7 55 25 02
            RX: 5B 00 > Außentemperatur 9,1°C
            Beispiel Geräte Kennung abfragen
            
            TX: 01
            TX: F7 00 F8 02
            RX: 20 98
            0x2098 = V200KW2
            Beispiel Heizkreis A1 auf Sparbetrieb setzen (V200KW2)
            
            TX: 01
            TX: F4 23 02 01 01
            RX: 00 = Bestätigung OK

            Kommentar


              Sicher.

              Das Problem ist, den Zeitpunkt zu finden, wenn die 0x05 gesendet wird, und dann möglichst sofort weiterzumachen. Da muss ich nochmal reinschauen, möglicherweise wird das read_bytes dann doch geteilt je nach Protokoll.

              Wenn ich das hinbekommen habe, sollte hoffentlich der Rest "von allein" laufen. Das mögliche Problem mit nicht bekannten Adressen müssen wir dann mal prüfen

              Wenn ich es schaffe, mache ich das heute abend. Gleich gibts erstmal zwei Stunden Küche und dann schönes Lammcurry... ganz ohne Python

              Kommentar


                Guten Appetit

                Zitat von Morg Beitrag anzeigen
                Das mögliche Problem mit nicht bekannten Adressen müssen wir dann mal prüfen
                Die Adressen von den paar Items die ich Abfrage habe ich nochmal geprüft, die stimmen mit meiner vito.xml überein.

                Kommentar


                  Ich habe den Code für die Synchronisation mit den KW-0x05-Paketen komplett überarbeitet:

                  - das ganze passiert (schon vorher) in einer threading-lock-Klammer, damit sich "reguläre" und "cycle"-Kommandos nicht in die Quere kommen. De facto blockieren die sich gegenseitig.
                  - erstmal die Empfangsschlage löschen, damit nur aktuelle Daten genutzt werden.
                  - ein Byte lesen -> hier hat die pyserial-Lib einen Timeout von 1 Sek.
                  - wenn das Byte 0x05 ist -> weiter zum "alten" Code (Kommando senden, Antwort lesen)
                  - wenn nicht 0x05 - 1 Sekunde warten, nochmal probieren
                  - wenn nach dem 5. Versuch kein Sync, dann Verbindung trennen und Kommando ignorieren

                  Das läuft im Großen und Ganzen ... "ganz ok", ich bekomme in den meisten Fällen alle Daten aus dem Cycle (21 Datenpunkte). Nach einigem Tüfteln mit den Timeouts in pyserial und in get_KW_sync klappt das ganz gut.

                  _Bei mir_ liest er alle Daten problemlos - aber meine Steuerung "kann" auch P300, insofern weiß ich nicht, ob die sich anders verhält als z.B. eine ältere, die das nicht kann.

                  Speziell TCr82: bitte teste mal die neue Version:

                  - ob sie überhaupt läuft
                  - ob sie im Log "zuverlässig" den Sync bekommt und danach Werte liest
                  - ob die gelesenen Werte plausibel sind
                  - ob jetzt noch Adresspunkte da sind, wo es keine Werte gibt.

                  Wenn bei Punkt 2 Probleme auftauchen, dann kannst du mal etwas mit dem timeout-Wert in get_KW_sync() (in time.sleep(...)) und mit dem timeout in connect() rumspielen. Ohne den sleep-Timeout habe ich überhaupt keine Verbindung bekommen, egal ob der serial-Timeout bei 0.5 oder 1.5 Sekunden lag. Im worst-cast brauchte er für 21 items fast 90 Sekunden, und da waren nicht alle Werte zuverlässig gelesen...

                  Ich nehme auch gern wieder Logs und schau sie durch

                  Kommentar


                    Hi, Morg! Vielen dank, teste es gleich.

                    das erste was jetzt mal kam ist:
                    Code:
                    [FONT=monospace][COLOR=#000000]2020-12-15  16:03:52 ERROR    lib.plugin          Plugin 'viessmann' exception in run() method: 'NoneType' object has no attribute 'strftime' [/COLOR]
                    Traceback (most recent call last):
                     File "/usr/local/smarthome/lib/plugin.py", line 675, in run
                       self.plugin.run()
                     File "/usr/local/smarthome/plugins/viessmann/__init__.py", line 140, in run
                       self._read_timers()
                     File "/usr/local/smarthome/plugins/viessmann/__init__.py", line 519, in _read_timers
                       self._viess_dict_to_uzsu_dict()
                     File "/usr/local/smarthome/plugins/viessmann/__init__.py", line 1120, in _viess_dict_to_uzsu_dict
                       sunset = shitems.return_item('env.location.sunset')().strft ime("%H:%M")
                    AttributeError: 'NoneType' object has no attribute 'strftime'[/FONT]
                    Habe ich aber in glaube in den Griff bekommen, als ich noch uzsu nachinstalliert habe. Und ich hatte auch noch vergessen die systemschemes für V200KW2 wieder zu ergänzen.

                    Auf jeden Fall scheint es jetzt alle Daten richtig abzufragen. Dann kann ich ja mal anfangen Adressen zu ergänzen und das nochmal weiter zu testen (auch mal schreiben).

                    Kann man die Abhängigkeit zu uzsu irgendwie in der plugin.yaml festlegen (ist eher an Msinn / Onkelandy gerichtet)?

                    Gruß
                    Zuletzt geändert von TCr82; 15.12.2020, 17:27.

                    Kommentar


                      Die Frage müsstest du an Michael richten, der hat das eingebaut ich nutze es UZSU selbst nicht, könnte aber nicht sagen, ob es installiert ist oder nicht...

                      Ansonsten - freut mich, dass es erstmal läuft.

                      Der erste Fehler ist trivial und den habe ich verursacht. Ich habe an ein paar Stellen "except: " in "except <Ausnahme>:" geändert, und an der Stelle habe ich den AttributeError nicht abgefangen. Update ist online.

                      Achso, hast du UZSU nur wegen des Fehlers installiert? Dann hat sich die Abhängigkeit erledigt...

                      Kommentar


                        Zitat von TCr82 Beitrag anzeigen
                        Habe ich aber in glaube in den Griff bekommen, als ich noch uzsu nachinstalliert habe.
                        Zitat von Morg Beitrag anzeigen
                        Achso, hast du UZSU nur wegen des Fehlers installiert? Dann hat sich die Abhängigkeit erledigt...

                        Das hat nur indirekt mit der UZSU zu tun.
                        Die von mir eingebaute Funktion wandelt den Inhalt der Viessmann Timer Datenpunkte welches das UZSU-Format um.
                        Dafür muss aber das UZSU-Plugin nicht installiert sein.

                        Morg

                        Müssen wir ggf. nur das pyhton time "module" noch laden?

                        Kommentar


                          Du meinst wegen "import time"? Ne, das gehört zu Python dazu.

                          Den Fehler hab ich verursacht, habe ich ja oben geschrieben. Die aktuelle Version sollte den nicht mehr haben.

                          Kommentar


                            Zitat von TCr82 Beitrag anzeigen
                            File "/usr/local/smarthome/plugins/viessmann/__init__.py", line 1120, in _viess_dict_to_uzsu_dict sunset = shitems.return_item('env.location.sunset')().strft ime("%H:%M") AttributeError: 'NoneType' object has no attribute 'strftime'
                            Morg


                            Den meinte ich. Es scheint strftime zu fehlen

                            Kommentar


                              Das macht aber nix. Vorher hat er das mit try/except abgefangen, und ich hatte das except: durch except ValueError: ersetzt, damit der AttributeError-Fehler nicht mehr abgefangen worden.

                              Jetzt habe ich den mit aufgenommen, da tritt der Fehler nicht mehr auf.

                              Es fehlt nicht strftime, sondern das zurückgegebene Item ist kein Objekt, und hat deshalb keine Methode strftime. Warum das sunset() nicht ausgewertet wird, weiß ich nicht. Bei mir ist der Fehler so oder so nicht aufgetaucht. Vielleicht stimmt bei ihm irgendwas anderes nicht in der Umgebung...

                              Kommentar


                                Hi,
                                hier mal ein kleines Update:

                                Es kommt immer wieder folgendes im Logfile:
                                2020-12-17 16:44:32 ERROR plugins.viessmann Sync not acquired after 5 attempts.
                                2020-12-17 16:44:32 ERROR plugins.viessmann Not connected, trying to reconnect.
                                2020-12-17 16:44:32 WARNING plugins.viessmann Triggered cyclic command read, but previous cyclic run is still active. Check device and cyclic configuration (too much/too short?)
                                2020-12-17 16:47:43 ERROR plugins.viessmann Sync not acquired after 5 attempts.
                                2020-12-17 16:47:43 ERROR plugins.viessmann Not connected, trying to reconnect.
                                2020-12-17 16:47:43 WARNING plugins.viessmann Triggered cyclic command read, but previous cyclic run is still active. Check device and cyclic configuration (too much/too short?)
                                2020-12-17 17:02:54 ERROR plugins.viessmann Sync not acquired after 5 attempts.
                                2020-12-17 17:02:54 ERROR plugins.viessmann Not connected, trying to reconnect.
                                2020-12-17 17:02:54 WARNING plugins.viessmann Triggered cyclic command read, but previous cyclic run is still active. Check device and cyclic configuration (too much/too short?)
                                2020-12-17 17:06:05 ERROR plugins.viessmann Sync not acquired after 5 attempts.
                                2020-12-17 17:06:05 ERROR plugins.viessmann Not connected, trying to reconnect.
                                2020-12-17 17:06:05 WARNING plugins.viessmann Triggered cyclic command read, but previous cyclic run is still active. Check device and cyclic configuration (too much/too short?)
                                2020-12-17 17:31:46 ERROR plugins.viessmann Sync not acquired after 5 attempts.
                                2020-12-17 17:31:46 ERROR plugins.viessmann Not connected, trying to reconnect.
                                2020-12-17 17:31:46 WARNING plugins.viessmann Triggered cyclic command read, but previous cyclic run is still active. Check device and cyclic configuration (too much/too short?)
                                Ich habe jetzt meine Items wie folgt ergänzt:

                                Code:
                                technik:
                                    heizung:
                                        last_read:
                                            type: str
                                        ATyp:
                                            type: str
                                            viess_read: Anlagentyp
                                            viess_init: true
                                        BetriebsartM1:
                                            type: str
                                            viess_read: BetriebsartM1
                                            viess_init: true
                                            viess_read_cycle: 300
                                        BetriebsartM2:
                                            type: str
                                            viess_read: BetriebsartM2
                                            viess_init: true
                                            viess_read_cycle: 300
                                        Brennerstufe:
                                            type: bool
                                            viess_read: Brennerstufe
                                            viess_read_cycle: 180
                                            viess_init: true
                                        Brennerstarts:
                                            type: num
                                            viess_read: Brennerstarts
                                            viess_read_cycle: 180
                                            viess_init: true
                                        Brennerstoerung:
                                            type: bool
                                            viess_read: Brennerstoerung
                                            viess_read_cycle: 180
                                            viess_init: true
                                        ATemp:
                                            type: num
                                            viess_read: Aussentemperatur
                                            viess_read_cycle: 300
                                            viess_init: true
                                        KIstTemp:
                                            type: num
                                            viess_read: Kesseltemperatur
                                            viess_read_cycle: 180
                                            viess_init: true
                                        KsollTemp:
                                            type: num
                                            viess_read: Kesselsolltemperatur
                                            viess_read_cycle: 300
                                            viess_init: true
                                        WWIstTemp:
                                            type: num
                                            viess_read: Warmwasser_Temperatur
                                            viess_read_cycle: 180
                                            viess_init: true
                                        WWSollTemp:
                                            type: num
                                            viess_read: Warmwasser_Solltemperatur
                                            viess_read_cycle: 300
                                            viess_init: true
                                        HK2VLIstTemp:
                                            type: num
                                            viess_read: Vorlauftemperatur_M2
                                            viess_read_cycle: 180
                                            viess_init: true
                                        HK2VLSollTemp:
                                            type: num
                                            viess_read: Vorlauftemperatur_Soll_M2
                                            viess_read_cycle: 300
                                            viess_init: true
                                        WWPumpe:
                                            type: bool
                                            viess_read: Speicherladepumpe
                                            viess_read_cycle: 180
                                            viess_init: true
                                        HK1Pumpe:
                                            type: bool
                                            viess_read: Heizkreispumpe_A1M1
                                            viess_read_cycle: 180
                                            viess_init: true
                                        HK2Pumpe:
                                            type: bool
                                            viess_read: Heizkreispumpe_M2
                                            viess_read_cycle: 180
                                            viess_init: true
                                        HK2Mischer:
                                            type: num
                                            viess_read: MischerM2
                                            viess_read_cycle: 180
                                            viess_init: true
                                        StatusKlemme2:
                                            type: num
                                            viess_read: StatusKlemme2
                                            viess_read_cycle: 300
                                            viess_init: true
                                Und die commands.py
                                Code:
                                diff --git a/commands.py b/commands.py
                                index 2b1f251..39d430e 100755
                                --- a/commands.py
                                +++ b/commands.py
                                @@ -290,9 +290,11 @@ commandset = {
                                         # Allgemein
                                         'Anlagentyp':                      {'addr': '00f8', 'len': 2, 'unit': 'DT',     'set': False},                                        # Ermittle Device Typ der Anlage
                                         'Aussentemperatur':                {'addr': '0800', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Aussentemperatur_tiefpass
                                +        'Aussentemperatur_TP':             {'addr': '2053', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Aussentemperatur_tiefpass
                                +        'Aussentemperatur_Dp':             {'addr': '5527', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Aussentemperatur in Grad C (Gedaempft)
                                         # Kessel
                                -        'Kesseltemperatur':                {'addr': '0802', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Kesseltemperatur_tiefpass
                                -        'Kesselsolltemperatur':            {'addr': '5502', 'len': 2, 'unit': 'IU10',   'set': True},                                        # Kesselsolltemperatur
                                +        'Kesseltemperatur':                {'addr': '0802', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Kesseltemperatur
                                +        'Kesselsolltemperatur':            {'addr': '5502', 'len': 2, 'unit': 'IU10',   'set': True},                                         # Kesselsolltemperatur
                                         # Fehler
                                         'Sammelstoerung':                  {'addr': '0847', 'len': 1, 'unit': 'RT',     'set': False},                                        # Sammelstörung
                                         'Brennerstoerung':                 {'addr': '0883', 'len': 1, 'unit': 'RT',     'set': False},
                                @@ -312,12 +314,22 @@ commandset = {
                                         'Heizkreispumpe_A1M1':             {'addr': '2906', 'len': 1, 'unit': 'IUBOOL', 'set': False},                                        # Heizkreispumpe A1
                                         'Heizkreispumpe_M2':               {'addr': '3906', 'len': 1, 'unit': 'IUINT',  'set': False},                                        # Heizkreispumpe M2
                                         # Brenner
                                +        'Brennerstarts':                   {'addr': '088A', 'len': 2, 'unit': 'ISNON',  'set': True, 'min_value': 0, 'max_value': 1193045},   # Brennerstarts
                                +        'Brennerstatus_1':                 {'addr': '55D3', 'len': 1, 'unit': 'IUBOOL', 'set': False},                                        # Brennerstatus Stufe1
                                +        'Brennerstatus_2':                 {'addr': '0849', 'len': 1, 'unit': 'IUBOOL', 'set': False},                                        # Brennerstatus Stufe2
                                +        'Brenner_BetriebsstundenStufe1':   {'addr': '0886', 'len': 4, 'unit': 'IU3600', 'set': True, 'min_value': 0, 'max_value': 1193045},   # Brenner-Betriebsstunden
                                         'BrennerStufe':                    {'addr': '551e', 'len': 1, 'unit': 'RT',     'set': False},                                        # Ermittle den Brennerstatus aktuelle Stufe
                                -        'Heizleistung':                    {'addr': '55e3', 'len': 1, 'unit': 'IU2',    'set': False},                                        
                                +#      'Brennertyp':                      {'addr': 'A30B', 'len': 1, 'unit': 'BT',     'set': True},                                        # Brennertyp: 1=Einstufig, 2=Zweistufig, 3=Modulierend
                                +        'Heizleistung':                    {'addr': '55e3', 'len': 1, 'unit': 'IU2',    'set': False},
                                         # Heizkreis M2
                                -        'MischerM2':                       {'addr': '354c', 'len': 2, 'unit': 'IUINT',  'set': False},                                        # Ermittle Mischerposition M2
                                +        'Betriebsart':                     {'addr': '2301', 'len': 1, 'unit': 'BA',     'set': True},                                         # Betriebsart A1M1
                                +        'BetriebsartA1':                   {'addr': '2301', 'len': 1, 'unit': 'BA',     'set': True},                                         # Betriebsart A1
                                +        'BetriebsartM2':                   {'addr': '3301', 'len': 1, 'unit': 'BA',     'set': True},                                         # Betriebsart M2
                                +        'MischerM2':                       {'addr': '354C', 'len': 1, 'unit': 'IU100',  'set': False},                                        # Ermittle Mischerposition M2
                                         'Vorlauftemperatur_Soll_M2':       {'addr': '3544', 'len': 2, 'unit': 'IU10',   'set': True, 'min_value': 10, 'max_value': 80},       # Vorlauftemperatur Soll
                                         'Vorlauftemperatur_M2':            {'addr': '080c', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Vorlauftemperatur Ist
                                +       'StatusKlemme2':                   {'addr': '3904', 'len': 1, 'unit': 'IUINT',  'set': False},
                                +       'StatusKlemme17':                  {'addr': '3905', 'len': 1, 'unit': 'IUINT',  'set': False},
                                         # Warmwasser
                                         'Warmwasser_Temperatur':           {'addr': '0804', 'len': 2, 'unit': 'IU10',   'set': False},                                        # Warmwassertemperatur in Grad C
                                         'Warmwasser_Solltemperatur':       {'addr': '6300', 'len': 1, 'unit': 'ISNON',  'set': True, 'min_value': 10, 'max_value': 80},       # Warmwasser-Solltemperatur
                                @@ -425,6 +437,7 @@ unitset = {
                                         'IS1000':  {'unit_de': 'INT signed 1000',   'type': 'integer',  'signed': True,  'read_value_transform': '1000'},       # vito unit:
                                         'ISNON':   {'unit_de': 'INT signed non',    'type': 'integer',  'signed': True,  'read_value_transform': 'non'},        # vito unit:
                                         'RT':      {'unit_de': 'ReturnStatus',      'type': 'list',     'signed': False, 'read_value_transform': 'non'},        # vito unit: ST, RT
                                +        'BT':      {'unit_de': 'Brennertyp',        'type': 'list',     'signed': False, 'read_value_transform': 'non'},        # vito unit:
                                         'SC':      {'unit_de': 'SystemScheme',      'type': 'list',     'signed': False, 'read_value_transform': 'non'},        # vito unit:
                                         'SN':      {'unit_de': 'Sachnummer',        'type': 'serial',   'signed': False, 'read_value_transform': 'non'},        # vito unit:
                                         'SR':      {'unit_de': 'SetReturnStatus',   'type': 'list',     'signed': False, 'read_value_transform': 'non'},        # vito unit:
                                @@ -636,11 +649,12 @@ errorset = {
                                 
                                 operatingmodes = {
                                     'V200KW2': {
                                -        '0': 'Abschaltbetrieb',
                                -        '1': 'Warmwasserbetrieb',
                                -        '2': 'Heiz- und Warmwasserbetrieb',
                                -        '4': 'Dauerbetrieb, reduziert',
                                -        '5': 'Dauerbetrieb, normal',
                                +        '00': 'Warmwasser (Schaltzeiten)',
                                +        '01': 'reduziert Heizen (dauernd)',
                                +        '02': 'normal Heizen (dauernd)',
                                +        '04': 'Heizen und Warmwasser (FS)',
                                +        '03': 'Heizen und Warmwasser (Schaltzeiten)',
                                +        '05': 'Standby',
                                     },
                                     'V200KO1B': {
                                         '00': 'Warmwasser (Schaltzeiten)',
                                @@ -676,6 +690,14 @@ operatingmodes = {
                                 }
                                 
                                 systemschemes = {
                                +    'V200KW2': {
                                +        '01': 'A1',
                                +        '02': 'A1 + WW',
                                +        '04': 'M2',
                                +        '03': 'M2 + WW',
                                +        '05': 'A1 + M2',
                                +        '06': 'A1 + M2 + WW'
                                +    },
                                     'V200KO1B': {
                                         '01': 'A1',
                                         '02': 'A1 + WW',
                                Problem ist aber leider immer noch, dass der Wert für Vorlauftemperatur_Soll_M2 und MischerM2 nicht nicht richtig raus kommen, obwohl ich die Adressen auch gegen die DB von Viessman gegengeprüft habe. Ich denke die Berechnung für % fehlt noch komplett.

                                Hab mal die Daten aus meiner DB Abfrage hier als CSV ran gehängt. Das ist nur von den zwei fehlerhaften Adressen, kann gerne auch mehr liefern. Hab mir da ne spezial Abfrage zusammen gebaut.

                                Hab jetzt auch schon die zwei shNG Instanzen per mqtt miteinander verbunden. Aber bis jetzt auch nur lesend...
                                Naja, leider bin ich bis jetzt wegen Zeitmangel noch nicht weiter gekommen.
                                Angehängte Dateien
                                Zuletzt geändert von TCr82; 17.12.2020, 19:21.

                                Kommentar

                                Lädt...
                                X