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

  • UBeiMa
    antwortet
    Fehler gefunden!

    Zeile 97 in __init__.py

    Ich habe den Typ in der VARLIST von bool auf int geändert

    "manual_mode" : {"var": "v00101", "length": 5, "type": int, "read": True, "write": True, "min": 0, "max": 1},
    Im Item den Typ von "bool" auf "num" geändert.
    Jetzt erfolgt ein Update (nach xx-Sekunden, wie in der Einstellung beim Plugin) vom Item und der Betriebsmodus, welcher in der Helios-KWL geändert wird, wird auch im Item geändert. Somit gehen jetzt beide Richtungen...

    Vielen Dank für Deine Hilfe!!!

    Grüße vom Bodensee
    Uwe

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    Nachdem ich jetzt einige weitere Zeilen mit Logger-Einträgen eingefügt habe, funktioniert das Schreiben auf den Bus auch wieder...

    Die Werte für die Temperaturen werden alle aktualisiert. Lediglich das Aktualisieren von dem Smartvisu-Betriebsartenumschalter funktioniert nicht, wenn die Helios-KWL die Betriebsart umschaltet...

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von UBeiMa Beitrag anzeigen
    Caller wird also richtig gesetzt, aber Funktion gibt den Wert nicht an die KWL weiter. Werde mal weitere logger-Einträge im Quellcode vornehmen...
    Das hilft erstmal nicht weiter. Beantwoerte einfach die Fragen die man Dir stellt.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von UBeiMa Beitrag anzeigen
    Die Aktualisierungszeit im Plugin habe ich auf 60 Sec. gesetzt. Es wird als caller immer helios_tcp gesetzt!
    Das ist klar und das If statement soll ja genau verhindern, dass Informationen die vom Helios kommen wieder als Kommando an helios versendet werden. Nur in den seltenen Fällen in denen das Item von anderen Plugins oder Lofiken verändert wird, soll der Code ausgeführt werden. Das ist also kein ERROR, sondern works as designed und in der Beschreibung zur Erstellung von Plungs beschrieben.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von UBeiMa Beitrag anzeigen
    Ausgabe im Log-File, egal ob ich Änderungen im Admin-GUI oder in SmartVISU vornehme:
    Ich hatte Dich gefragt was passiert, wenn man eine Äderung an der Helios Steuerung vornimmt nicht in der Admin GUI oder der smartVISU!

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    Hab zusätzlich noch eine Log-Ausgabe für die Funktions-Parameter eingefügt...
    Log-Ausgabe jetzt:

    2020-04-30 12:22:23 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:22:24 ERROR plugins.helios_tcp Helios TCP: caller= 'helios_tcp' source= 'None' dest= 'None'
    2020-04-30 12:22:24 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:22:41 ERROR plugins.helios_tcp Helios TCP: caller= 'Visu' source= '192.168.178.69:59298' dest= 'None'
    2020-04-30 12:23:16 ERROR plugins.helios_tcp Helios TCP: caller= 'Visu' source= '192.168.178.69:59298' dest= 'None'
    2020-04-30 12:23:17 ERROR plugins.helios_tcp Helios TCP: caller= 'Visu' source= '192.168.178.69:59298' dest= 'None'
    2020-04-30 12:23:21 ERROR plugins.helios_tcp Helios TCP: caller= 'helios_tcp' source= 'None' dest= 'None'
    2020-04-30 12:23:21 ERROR plugins.helios_tcp HELIOS TCP: entweder self.alive = false (aktuell = 'True' oder caller (aktuell = 'helios_tcp') nicht self.get_shortname() = 'helios_tcp'
    Caller wird also richtig gesetzt, aber Funktion gibt den Wert nicht an die KWL weiter. Werde mal weitere logger-Einträge im Quellcode vornehmen...

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    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!

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Werden denn Änderungen in der Helios Steuerung an SmartHomeNG übertragen? Falls ja, was steht bei changed by in den Item Details?

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    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...

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    Mach ich und gebe hier wieder bescheid...
    Danke!

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich habe die Korrekturen auf github gepusht (in den develop branch). Du kannst das ja mal testen, ob das Dein Problem beseitigt.

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    ...und hier die Doku auf deutsch...
    Angehängte Dateien

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    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.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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.

    Einen Kommentar schreiben:


  • UBeiMa
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X