Ankündigung

Einklappen
Keine Ankündigung bisher.

Helios_TCP-Plugin - bei Item mit Manuell-Eintrag geht Lüftung auf manuellen Modus

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

    Helios_TCP-Plugin - bei Item mit Manuell-Eintrag geht Lüftung auf manuellen Modus

    Hallo Zusammen,

    zuerst - viiiieeelen Dank an alle "Aktiven", welche die letzten Jahre SmarthomeNG weiterentwickelt und zu Dem gemacht haben, was es jetzt ist. SmarthomeNG 1.7.1 ist richtig klasse!

    Aktuell habe ich mein Projekt auf SmarthomeNG 1.7.1 und SmartVISU 2.9 aktualisiert, um einige neu Plugins einzusetzen...

    Leider habe ich momentan ein Problem mit dem Helios_TCP Plugin. Nach mehreren Versuchen habe ich den Fehler einschränken können.

    Ich habe ein Item angelegt für Helios, das wie folgt aussieht:

    Code:
    Lueftung:
        name: "Helios KWL EC 500 W ET R"
        sv_page: category
        sv_img: vent_ventilation.svg
    
        Temperatur:
            Frischluft:
                name: Lueftung - Aussentemperatur in °C
                type: num
                visu_acl: r
                helios_tcp: outside_temp
                telegram_info: Lueftung
                cache: on
            Zuluft:
                name: Lueftung - Zulufttemperatur in °C
                type: num
                visu_acl: r
                helios_tcp: incoming_temp
                telegram_info: Lueftung
                cache: on
            Abluft:
                name: Lueftung - Ablufttemperatur in °C
                type: num
                visu_acl: r
                helios_tcp: inside_temp
                telegram_info: Lueftung
                cache: on
            Fortluft:
                name: Lueftung - Fortlufttemperatur in °C
                type: num
                visu_acl: r
                helios_tcp: exhaust_temp
                telegram_info: Lueftung
                cache: on
    
        Manuell:
            name: "Automatik/Manuell"
            type: bool
            value: false
            visu_acl: rw
            helios_tcp: manual_mode
            cache: on
            enforce_updates: on
    Das Plugin ist in PLUGIN.YAML richtig eingetragen, das Anzeigen der Werte für Frischluft, Zuluft, Abluft und Fortluft, sowie die Lüfterstufe und die prozentuale Lüfterstufe funktionieren in SmartVISU einwandfrei. Die Aktualisierung der Werte erfolgt alle 120 Sekunden (d.h. alle 2 Minuten).

    Immer wenn nun das Programm die Daten für das Item "Lueftung" aktualisiert, wird der Wert von "Lueftung.Manuell" auf "TRUE" gesetzt (kann in der Admin-Konsole nachvollzogen werden). Im Webinterface der Helios-Lüftung ist ersichtlich, dass die KWL in den manuellen Modus geht...

    Der Wert für Lueftung.Manuell wurde weder in SmarthomeNG noch in SmartVISU "angefasst". Ich habe in der Item-Konfiguration auch schon den Wert von Manuell auf TRUE gesetzt und visu_acl auf "r" - keine Änderung am Verhalten

    Hat einer von Euch eine Helios-KWL mit Webserver (Software-Stand: 2.26) und kann das nachvollziehen, oder habe ich da irgendwo einen Denkfehler drin?

    Gruß
    Uwe


    Ergänzung:
    Es scheint, dass alle Schreibzugriffe nicht funktionieren. Ein Test mit einem Inputfeld für die Lüfterstufe funktioniert ebenfalls nicht. Eine Änderung der Lüfterstufe in Smartvisu hat keine Auswirkung auf die Lüfterstufe in der KWL...
    Zuletzt geändert von UBeiMa; 29.04.2020, 11:36.

    #2
    Moin,

    ich kenne das HELIOS Plugin zwar nicht, habe aber allgemeine Tipps die Dir bei der Suche vielleicht helfen können:

    Um Probleme zwischen SmartHomeNG und smartVISU auszuschließen: Kannst Du für Deine Tests die Werte mal direkt in der Admin GUI ändern?

    Bei dem Lueftung.Manuell wäre auch interessant in der Admin GUI zu schauen wer das Item zuletzt verändert hat.

    Viele Grüße
    Martin

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

    Kommentar


      #3
      Hallo Msinn,

      danke für Deinen Hinweis. Ich habe das bereits getestet. Der Wert für das Item wird richtig gesetzt (durch die Visu-Oberfläche), aber die Änderung wird nicht an die Lüftungsanlage übertragen. Ich habe den Wert auch schon im Admin GUI verändert, auch das blieb ohne Auswirkung bei der Helios-Lüftung...

      Es scheint so, als ob alle Write-Operationen nicht richtig ausgeführt werden (ausser beim Hochfahren von SmarthomeNG, da wird der Manuell-Wert IMMER auf TRUE gesetzt)...

      Kommentar


        #4
        Was zeigt Dir denn die Admin GUI als Veränderer des Wertes, wenn Du ihn an der Helios selbst verändert?

        Wird die Änderung in der Admin GUI richtig angezeigt und was steht bei Change durch?
        Viele Grüße
        Martin

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

        Kommentar


          #5
          Beim Start steht "INIT", beim Ändern über die SmartVISU "VISU:ip-adresse:55333" und nach der Aktualisierung vom Plugin "LOGIC".

          Ich habe so den Eindruck, dass die Funktion "update_item" im Plugin nicht durchlaufen wird...

          Wie kann ich das denn feststellen? Ich habe schon ein Log-Eintrag im Quellcode gemacht, bin aber mit dem neuen Logging nicht so vertraut (komme aus einer anderen Programmiersprache :-) )


          Code:
              def update_item(self, item, caller=None, source=None, dest=None):
                  try:
                      var = item.conf['helios_tcp']
                  except ValueError:
                      return
          
                  [I][B]self.logger.debug("HELIOS_TCP - in update_item Variable '{0}'".format(var))[/B][/I]
          Wie müsste ich denn das Logging in LOGGING.YAML einschalten, dass ich im Logfile einen Eintrag bekommen, wenn die Funktion durchlaufen wird?

          Hier mein aktueller Eintrag:

          Code:
              items.Lueftung:
              #     # Logging items with configuration: log_change: temperatures
              #     #
                   handlers: [shng_details_file]
                   level: DEBUG

          Kommentar


            #6
            Zitat von UBeiMa Beitrag anzeigen
            Aktualisierung vom Plugin "LOGIC".
            Ok, dann gibt das Plugin nicht mit, dass es den Wert ändert (LOGIC wird als Standard angenommen)

            Zitat von UBeiMa Beitrag anzeigen
            Ich habe so den Eindruck, dass die Funktion "update_item" im Plugin nicht durchlaufen wird...
            Ich habe eher den Eindruck, dass update_item zuoft durchlaufen wird (Feedback Schleife)

            Ich schau mir mal den Source Code des Plugins an.

            Das Logging für das Plugin kannst Du einschalten/den Level erhöhen kannst Du indem Du einen Logger entsprechend definierst:
            Code:
            logger:
                plugins.helios_tcp:
                    # handlers: [shng_details_file]
                    level: INFO
            Als Level könntest Du auch DEBUG angeben.

            Was dann geloggt wird, kann ich Dir nicht sagen, das hängt vom Plugin Autor ab.
            Viele Grüße
            Martin

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

            Kommentar


              #7
              So, jetzt habe ich Folgendes probiert:
              1. Im Item das Manuell rausgenommen. KWL funktioniert normal. Im manuellen Modus kann ich auch über SmartVisu die Lüfterstufen verstellen
              2. Manuell wieder eingetragen
                Code:
                    Manuell:
                	       name: "Automatik/Manuell"
                	       type: bool
                	       visu_acl: rw
                	       helios_tcp: manual_mode
              3. Schalte ich in der Lüftung die Betriebsart auf Manuell, wird mir das in der SmartVisu angezeigt (Wert ist TRUE) (Änderung durch LOGIK.)
              4. Schalte ich in der VISU die Betriebsart auf Automatisch, wird mir das in der Lüftung angezeigt (Wert ist FALSE). (Änderung durch VISU:192...:55333)
              5. Nach der im PLUGIN eingestellten Refresh-Zeit schaltet die VISU den Wert wieder auf Manuell (Änderung durch LOGIC)
              6. Gleicher Effekt OHNE VISU nur mit Admin GUI
              7. Entfernen von "Manuell" aus Item-Definition - Spuk hat ein Ende...
              Sobald im Lüftungs-Item "Manuell" aufgenommen ist steht, wird der Wert nach der Zeit von "update_cycle" durch das Plugin immer auf TRUE gesetzt...
              Zuletzt geändert von UBeiMa; 29.04.2020, 17:17.

              Kommentar


                #8
                Wenn nach dem Update Cycle das Item immer auf True gesetzt wird, drängt sich mir der Verdacht auf, dass nicht der richtige Parameter aus der Helios abgefragt wird... Könnte das sein?

                Im Plugin steht
                Code:
                    "manual_mode"               : {"var": "v00101", "length": 5, "type": bool,  "read": True, "write": True, "min": 0, "max": 1},
                v00101 halte ich für ein abzufragendes/zu setzendes Register in der Steuerung. Um das sicher zu sagen, fehlt mir die Doku zur Steuerung.
                Kannst Du sagen ob v00101 stimmt?

                Außerdem habe ich gesehen, dass das Plugin einen Fehler hat, der eine Feedback Schleife erzeugen kann. Ich kann das heute Abend mal ändern und eine neue Version des Plugins auf Develop pushen.
                Viele Grüße
                Martin

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

                Kommentar


                  #9
                  ModBusHeliosBetriebsart.jpg Sieht ganz danach aus. "Betriebsart" ist das Umschalten von Automatisch auf Manuell. Der Wert für var stimmt (v00101)...

                  Damit erklärt sich für mich auch das Verhalten, dass nach dem Update-Zyklus die Steuerung automatisch immer auf "Manuell" geht.

                  Ich kann das heute Abend mal ändern und eine neue Version des Plugins auf Develop pushen.
                  Das wäre Klasse. Ich kann dann heute Nacht oder morgen früh das ganze mal testen...
                  Im Voraus schon mal vielen Dank...

                  Muss mal schauen, ob ich die Datei mit den ModBus-Parametern teilen kann, dann kann ich sie Dir hier zur Verfügung stellen. Ist aktuell 2,6 MB groß...
                  Zuletzt geändert von UBeiMa; 29.04.2020, 17:45.

                  Kommentar


                    #10
                    ...und hier die Doku auf deutsch...
                    Angehängte Dateien

                    Kommentar


                      #11
                      Ich habe die Korrekturen auf github gepusht (in den develop branch). Du kannst das ja mal testen, ob das Dein Problem beseitigt.
                      Viele Grüße
                      Martin

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

                      Kommentar


                        #12
                        Mach ich und gebe hier wieder bescheid...
                        Danke!

                        Kommentar


                          #13
                          So, Download von Developp, Einspielen von den beiden geänderten Dateien, Neustart.
                          Ergebnis:
                          Die KWL bekommt keine Schreiboperationen mehr mit, es wird auch nichts bei den Warnings oder bei den Details gelogged...

                          In der Version 1.0 konnte ich die Lüfterstufe über SmarthomeNG noch anpassen, wenn ich die KWL im Webinterface der KWL auf Manuell geschaltet habe. Dies funktioniert jetzt auch nicht mehr...

                          Kommentar


                            #14
                            Werden denn Änderungen in der Helios Steuerung an SmartHomeNG übertragen? Falls ja, was steht bei changed by in den Item Details?
                            Viele Grüße
                            Martin

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

                            Kommentar


                              #15
                              Ich habe in Deiner geänderten Funktion

                              Code:
                                      if self.alive and caller != self.get_shortname():
                              die ELSE-Anweisung
                              Code:
                                      else:
                                          self.logger.error("HELIOS TCP: entweder self.alive = false (aktuell = '{0}' oder caller (aktuell = '{1}') nicht self.get_shortname() = '{2}'".format(self.alive, caller, self.get_shortname()))
                              eingefügt.

                              Ausgabe im Log-File, egal ob ich Änderungen im Admin-GUI oder in SmartVISU vornehme:
                              Code:
                              2020-04-30 12:01:39 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:01:39 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:01:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:01:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:02:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:03:39 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:03:39 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:03:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:03:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:04:41 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:04:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:05:38 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:05:41 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:05:42 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:05:42 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:05:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:06:38 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:06:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:06:41 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:06:42 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:07:41 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:07:41 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:07:42 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:08:41 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:08:42 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:08:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:09:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:09:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:10:38 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:10:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:10:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:10:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:11:38 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:11:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:11:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:11:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:12:40 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              2020-04-30 12:12:43 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
                              Die Aktualisierungszeit im Plugin habe ich auf 60 Sec. gesetzt. Es wird als caller immer helios_tcp gesetzt!

                              Kommentar

                              Lädt...
                              X