Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin für KWL Pluggit AP310

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

  • Holoman5
    antwortet
    Hi
    hab mir die _ini_ nochmal angekuckt! und ein Fehler entdeckt

    'prmRamIdxRh3Corrected': 196, # 40197: Luftfeuchte
    'prmVOC': 430, # 40431: VOC sensor value (read from VOC); ppm. If VOC is not installed, then 0.

    Hatte die falsche ID's, jetzt geht alles!!

    Aber danke dir trotzdem!

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Holoman5 Beitrag anzeigen
    Bekomm aber keine Werte.
    Was heißt keine Werte? Was steht denn im Log?

    Meiner Meinung nach hast du den oberen Teil auch zu hoch im Code eingetragen, da die Werte noch gar nicht ausgelesen sind. Schau mal bei mir. Allerdings bin ich noch am bearbeiten des Ganzen, was leider viel zu lange dauert. Aber deshalb gibt es bei mir viel mehr Einträge. Aber erst nach dem Auslesen der Werte wird das gehen.

    Code:
     #================================================= ======#
    # read values from pluggit via modbus client registers
    #================================================= ======#
    
    self.logger.debug("Pluggit: ------------------------------------------> Wir sind vor dem Auslesen der Werte")
    registerValue = None
    registerValue = self._Pluggit.read_holding_registers(values, read_qty = 1).getRegister(0)
    self.logger.debug("Pluggit: Read parameter '{0}' with register '{1}': Value is '{2}'".format(pluggit_key, values, registerValue))
    
    -> HIER EINSETZEN!
    
    # system id
    if values == self._modbusRegisterDic['prmSystemID']:
    sid = self._Pluggit.read_holding_registers(values, 2)
    decodersid = BinaryPayloadDecoder.fromRegisters(sid.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    sid = decodersid.decode_32bit_int()
    item(sid, 'Pluggit')
    self.logger.debug("Pluggit: System ID: {0}".format(sid))
    
    # system serial num
    if values == self._modbusRegisterDic['prmSystemSerialNum']:
    serialvalues = self._Pluggit.read_holding_registers(values, 4)
    decodersv = BinaryPayloadDecoder.fromRegisters(serialvalues.re gisters, byteorder=Endian.Big, wordorder=Endian.Little)
    serialnum = decodersv.decode_64bit_uint()
    self.logger.debug("Pluggit: System serial number: {0}".format(serialnum))
    item(serialnum, 'Pluggit')
    
    # Firmware version
    if values == self._modbusRegisterDic['prmFWVersion']:
    fw = '{}.{}'.format(registerValue >> 8, registerValue & 255)
    self.logger.debug("Pluggit: Firmware version: {0}".format(fw))
    item(fw, 'Pluggit')
    
    # DHCP enabled
    if values == self._modbusRegisterDic['prmDHCPEN']:
    if registerValue == 1:
    self.logger.debug("Pluggit: DHCP enabled")
    item(True, 'Pluggit')
    else:
    self.logger.debug("Pluggit: DHCP disabled")
    item(False, 'Pluggit')
    
    # current IP adress
    if values == self._modbusRegisterDic['prmCurrentIPAddress']:
    ipvalues = self._Pluggit.read_holding_registers(values, 2)
    ipadress = '{}.{}.{}.{}'.format(ipvalues.registers[1] >> 8, ipvalues.registers[1] & 255, ipvalues.registers[0] >> 8, ipvalues.registers[0] & 255)
    self.logger.debug("Pluggit: current IP adress: {0}".format(ipadress))
    item(ipadress, 'Pluggit')
    
    # current IP mask
    if values == self._modbusRegisterDic['prmCurrentIPMask']:
    ipvalues = self._Pluggit.read_holding_registers(values, 2)
    ipmask = '{}.{}.{}.{}'.format(ipvalues.registers[1] >> 8, ipvalues.registers[1] & 255, ipvalues.registers[0] >> 8, ipvalues.registers[0] & 255)
    self.logger.debug("Pluggit: current IP mask: {0}".format(ipmask))
    item(ipmask, 'Pluggit')
    
    # current IP gateway
    if values == self._modbusRegisterDic['prmCurrentIPGateway']:
    ipvalues = self._Pluggit.read_holding_registers(values, 2)
    ipgateway = '{}.{}.{}.{}'.format(ipvalues.registers[1] >> 8, ipvalues.registers[1] & 255, ipvalues.registers[0] >> 8, ipvalues.registers[0] & 255)
    self.logger.debug("Pluggit: current IP adress: {0}".format(ipgateway))
    item(ipgateway, 'Pluggit')
    
    # MAC adress
    if values == self._modbusRegisterDic['prmMACAddr']:
    macvalues = self._Pluggit.read_holding_registers(values, 4)
    macadress = '{:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}'.format (macvalues.registers[0] >> 8, macvalues.registers[0] & 255, macvalues.registers[3] >> 8, macvalues.registers[3] & 255, macvalues.registers[2] >> 8, macvalues.registers[2] & 255)
    self.logger.debug("Pluggit: MAC adress: {0}".format(macadress))
    item(macadress, 'Pluggit')
    
    # date time in UNIX format
    if values == self._modbusRegisterDic['prmDateTime']:
    dt1 = self._Pluggit.read_holding_registers(values, 2)
    decoderdt1 = BinaryPayloadDecoder.fromRegisters(dt1.registers, byteorder=Endian.Big, wordorder=Endian.Little)
    dt1 = decoderdt1.decode_32bit_int()
    self.logger.debug("Pluggit: DateTime: {0}".format(dt1))
    item(dt1, 'Pluggit')

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Hallo.

    Ich habe das Plugin am Laufen alles gut bis auf die Luftfeuchte und VOC Sensor. Und ja ich habe den Sensor verbaut.

    Ich hab in der _init_.py Paar Zeilen ergänzt unterhalb von:

    def _refresh(self):
    start_time = time.time()
    try:
    myCounter = 1
    for pluggit_key in self._myTempReadDict:

    # Luftfeuchte
    if values == self._modbusRegisterDic['prmRamIdxRh3Corrected']:
    self.logger.debug("Pluggit: Value of RH sensor: {0}".format(registerValue))
    item(registerValue, 'Pluggit')


    # VOC
    if values == self._modbusRegisterDic['prmVOC']:
    self.logger.debug("Pluggit: VOC: {0}".format(registerValue))
    item(registerValue, 'Pluggit')

    und hab oben:

    'prmRamIdxRh3Corrected': 197, # 40197: Luftfeuchte
    'prmVOC': 431, # 40431: VOC sensor value (read from VOC); ppm. If VOC is not installed, then 0.

    eingetragen.

    Bekomm aber keine Werte.

    Hat jemand eine Idee was ich noch machen könnte?

    Einen Kommentar schreiben:


  • Gue0411
    antwortet
    Ich hatte die Fehler E3 und E11 leider schon direkt im 1. Jahr.
    Dabei hat sich die Lüftung dann leider nur in Standby geschaltet und blinkte... Mehr nicht...
    Sowas würde ich gerne mit der Visu mitbekommen bzw. mir eine Mail schicken lassen.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Gue0411 Beitrag anzeigen
    Ein Auslesen der Fehlermeldungen
    Gerade das habe ich nie benötigt und deshalb nicht gemacht. ;-) Ich muss mir die Struktur noch mal überlegen, das Plugin quasi neu starten und dann kann ich das sicherlich auch häppchenweise zur Verfügung stellen. Welche Fehlermeldungen meinst du genau? Gib mir mal eine Bezeichnung oder Adressnummer, dann kann ich das eher einplanen ... :-)

    Im Winter habe ich ja weniger Möglichkeit,w as im Garten zu machen,d ann wird dafür mehr Zeit sein...:-)

    Einen Kommentar schreiben:


  • Gue0411
    antwortet
    Freut mich zu hören, dass du da noch dran bist

    Ein Auslesen der Fehlermeldungen kannst du mir aber noch nicht vorab zur Verfügung stellen, oder?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Gue0411 Beitrag anzeigen
    Darf ich mal nachfragen, wie hier der Stand ist?
    Kommt eine "aufgebohrte" Version des plugins noch?
    Das Auslesen eines Fehlerstatus wäre für mich immer noch sehr wichtig...
    Ich habe ein noch ein paar Sachen eingebaut, aber nur für mich zum Testen. Da einige der Flags aber oft in einem ganzen Paremeter versteckt sind, denke ich darüber nach das Ganze überhaupt komplett umzubauen. Beispiel wäre hier:

    prmRamIdxHac1Components: Dieser Paremeter gibt wieder, welche Komponenten installiert sind. Besser wären sicherlich Items, die dann die einzelne Kompontente wiedergeben (CO2 Sensor, PreHeater, PreCooler, AfterHeater, AfterCooler, Hygrostat). Die Idee dann eben direkt nach prmRamIdxHac1Components_PreHeater zu prüfen. Das wäre die Idee. Wenn man das nämlich nicht so machen würde, hätte man zu viel Code in der yaml, was da meiner Meinung nach nicht rein gehört.

    Da ich aber nicht so viel Zeit habe, zieht sich das hin. Der Plan ist aber, dass dann wirklich alles abgefragt werden kann.

    Einen Kommentar schreiben:


  • Gue0411
    antwortet
    Darf ich mal nachfragen, wie hier der Stand ist?
    Kommt eine "aufgebohrte" Version des plugins noch?
    Das Auslesen eines Fehlerstatus wäre für mich immer noch sehr wichtig...

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von jonsson Beitrag anzeigen
    Jetzt habe ich gesehen, dass am image von onkelandy bereits "minimalmodbus" installiert ist und läuft.
    könnte man das pluggit plugin dazu bewegen dieses zu verwenden?
    Die Frage ist doch, wo der Unterschied zwischen dem normalen und dem Minimal-Modbus liegt? Bzw. Was ist denn, wenn du den nicht installierst, läuft dann das plugin noch? Muss man einfach mal testen.

    Ich bin jetzt auch ein ganzes Stück weiter, weil ich mich mal wieder ran gesetzt habe. Inzwischen kann ich viel mehr auslesen und ändern. Allerdings muss man auch erst einmal die Funktionsweise verstehen. Ich werde das Ganze auch etwas mehr struktieren. Beispiel der Bypass:

    Code:
        pluggit:
            Bypass:
                State:
                    type: bool
                    visu_acl: ro
                    pluggit_listen: prmRamIdxBypassActualState
                    Text:
                        type: str
                        visu_acl: ro
                        eval: str('geöffnet') if value else str('geschlossen')
                        eval_trigger: ..self
    
                Tmin:
                    type: num
                    visu_acl: ro
                    pluggit_listen: prmBypassTmin
    
                Tmax:
                    type: num
                    visu_acl: ro
                    pluggit_listen: prmBypassTmax
    
                ManualMode:
                    type: bool
                    visu_acl: ro
                    eval: False if sh....UnitMode() & 32896 == 32896 else True if sh....UnitMode() & 128 == 128 else False
                    eval_trigger: ...UnitMode
                    Set:
                        type: bool
                        visu_acl: rw
                        enforce_updates: yes
                        on_update: ....UnitMode.Set = 128 if value else 32896
                    Text:
                        type: str
                        visu_acl: ro
                        eval: str('manuell') if value else str('automatisch')
                        eval_trigger: ..self
    
                # manual bypass timout in minutes
                ManualTimeout:
                    type: num
                    visu_acl: ro
                    pluggit_listen: prmRamIdxBypassManualTimeout
    Allerdings bin ich mir nicht so sicher, ob das so sinnvoll ist, da eine eigene "Set"-Funktion zu basteln. Aners kriege ich das aber mit dem trigger so nicht hin. ;-)
    Zuletzt geändert von Cannon; 15.09.2019, 11:03.

    Einen Kommentar schreiben:


  • jonsson
    antwortet
    Zitat von Cannon Beitrag anzeigen
    Bypass der Sommermodus
    Sommermodus ist meines Wissens nur wenn du keinen Bypass verbaut hast. Dann wird wie du schreibst ein Unterdruck erzeugt, damit kühle Luft über die geöffneten Fenster ins Haus strömt. Mit verbautem Bypassmodul erübrigt sich das.

    noch einmal auf den modbus zurückzukommen. ich habe in den letzten 4 Jahren sicherlich 4-5 mal SHNG neu installiert. Konfig kopieren geht alles einfach, ich würde mir einfach gerne das pymodbus installieren ersparen. Jetzt habe ich gesehen, dass am image von onkelandy bereits "minimalmodbus" installiert ist und läuft.
    könnte man das pluggit plugin dazu bewegen dieses zu verwenden?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von jonsson Beitrag anzeigen
    wie gesagt, dann würde ich mir das modbus pluggin sparen - je weniger Umwege desto besser.
    Den modbus brauchst du ja nur, wenn du das mit SmartHomeNG machen willst. Die App wird auch den modbus ansprechen, nehme ich mal an. Ich habe das mit dem bypass in der App geprüft. Das mit den Temperaturen scheint der Fall zu sein, wenn beim Bypass der Sommermodus aktiviert wird. Dann wird nicht mehr zugelüftet, sondern nur die Lauft abgezogen.

    Einen Kommentar schreiben:


  • jonsson
    antwortet
    wie gesagt, dann würde ich mir das modbus pluggin sparen - je weniger Umwege desto besser.
    Temperatur mit bypass aktiv wenn ich mich richtig erinnere ist dann nur mehr T1 (Abluft) und T4 (Frischluft) gültig

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von jonsson Beitrag anzeigen
    noch eine Idee zur Pluggit. Gibt ja eine app dafür, die ist mittlerweile wieder gratis.
    Ich würde davon ausgehen, dass die Kommunikation dort auch über den modbus läuft. Was sollte der Mitschnitt bringen? Es ist ja alles beschrieben in der Doku. Nur ist mir nicht klar, wie die Temperaturen mit oder ohne Bypass zu beurteilen sind.

    Einen Kommentar schreiben:


  • jonsson
    antwortet
    noch eine Idee zur Pluggit. Gibt ja eine app dafür, die ist mittlerweile wieder gratis.
    Wäre es möglich den http traffic zwischen KWL und App mitzuschneiden denkt ihr?
    Dann könnte man sich den Umweg über Modbus etc. sparen.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von jonsson Beitrag anzeigen
    soweit ich mich erinnern kann, sind bei aktiviertem bypass nur mehr 2 temperaturen gültig, denn die anderen beiden Sensoren sind nicht mehr beströmt und zeigen irgenwas an. Muss nachsehen, ob ich das noch wo finde....
    Das erscheint dann logisch. Wobei nicht ganz klar sind, wo die dann verbaut sein sollen.

    Zitat von jonsson Beitrag anzeigen
    Warum meint ihr bringt der Automatik Modus des Bypasses nichts?
    Das war nur meine Aussage. Nichts bringen würde ich so nicht sagen. Wir haben aber hier in Deutschland sehr stark schwankende Temperaturen. Und ich versuche mit meiner Heizung und der Lüftung ein wenig in die Zukunft zu schauen und die meisten System nutzen eben nur die IST-Werte. Denn wenn ich weiß, dass es am nächsten Tag heiß wird und nachts ist es kalt, möchte ich den Bypass ja an haben.

    Einen Kommentar schreiben:

Lädt...
X