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

    #61
    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?

    Kommentar


      #62
      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))
      
      [B]-> HIER EINSETZEN![/B]
      
      # 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')

      Kommentar


        #63
        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!

        Kommentar


          #64
          da ich gerade mit 1.7.1 neu aufgesetzt habe - es läuft nun perfekt mit dem minimalmodbus, somit ist keine Installation von pymodbus mehr nötig!

          Super Sache, falls jemand bei Gelegenheit die 4x endian Fehler ausbessern und im GIT einchecken könnte, wäre das ein Hit!

          Danke
          Johannes

          Kommentar


            #65
            Wer immer sich dazu berufen fühlt, möge einen PR stellen. Ich habe das als Issue mal auf Github erfasst.

            Kommentar


              #66
              Hier ist der Fix in GitHub: https://github.com/CannonRS/smarthomeng_pluggit

              Allerdings bin ich jetzt dabei das plugin komplett neu zu schreiben. Ich weiß ich habe das mehrfach angekündigt, aber ich habe jetzt endlich begonnen und es läuft jetzt bei mir in der ersten Testphase. Ziel dabei ist es ALLE Werte zu lesen und die Werte die geschrieben werden sollen auch schreiben zu können. Am Wochenende habe ich alle Register ins neue plugin eingetippt. Und das neue plugin wird structs benutzen, sodass sich das Anlegen der einzelnen Items erledigt. :-)

              Ich werde demnächst Tester benötigen!

              Kommentar


                #67
                Zitat von jonsson Beitrag anzeigen
                da ich gerade mit 1.7.1 neu aufgesetzt habe - es läuft nun perfekt mit dem minimalmodbus, somit ist keine Installation von pymodbus mehr nötig!
                Das ist gut zu wissen. Das kann ich dann mal testen. Dann müsste ich den Standard-Modbus ja einfach nur deinstallieren und schauen, ob es läuft.

                Kommentar


                  #68
                  Kurze Frage, ich möchte den Bypass selber auf/zu machen (später Logik nachts kühle Luft ins Haus)

                  In der pluggit uvc controller pdf steh folgendes drin:


                  4.12.3 Select/de-select manual bypass


                  Select manual bypass: Write 0x0080 (128) to 40169 prmRamIdxUnitMode.


                  Deselect Manual bypass: Write 0x8080 (32896) to 40169 prmRamIdxUnitMode.

                  Wie sollte mein Item auskucken um die Werte zu schreiben?

                  mein Item:
                  bypass_manuell:
                  type: str
                  visu_acl: rw
                  enforce_updates: 'true'
                  pluggit_send: prmRamIdxUnitMode

                  Kommentar


                    #69
                    Zitat von Holoman5 Beitrag anzeigen
                    Kurze Frage, ich möchte den Bypass selber auf/zu machen (später Logik nachts kühle Luft ins Haus)

                    In der pluggit uvc controller pdf steh folgendes drin:
                    Ich habe mal auf github ein Update der "alten" Version gepostet. Damit geht das schon. Ich mache das auch so, wie du das planst. Setze einfach

                    Code:
                    pluggit.Bypass.ManualMode.Set
                    auf True und der Bypass ist im manuellen Modus. Das bedeutet aber auch nur, dass die untere Grenztemperatur noch weiter nach unten geht. Diese Grenztemperatur ist in der Anlage einprogrammiert. Sprich die muss man erstmal einstellen. Das ist nicht ganz so trivial, wie das erscheint.

                    Sonst beachte bitte, dass das nur eine Version ist, die bei mir so läuft, aber nicht weiter getestet ist.

                    Derzeit arbeite ich an einer neuen, viel umfangreicheren Version und komme damit auch recht gut voran. Da die derzeit aber nur lesen aber nicht schreiben kann, ist das noch keine Alternative zum testen.

                    Kommentar


                      #70
                      Hi danke für die Rückmeldung.

                      Hab deine Sache übernommen, aber er schaltet nicht. Hab die Tmin und Tmax noch nicht angepasst. Momentan zeigt er im Item Tmin 13 und Tmax 23 an, in der APP hat T1 grad 13 Grad und T3 14. Das heisst ich muss was jetzt runtersetzen?

                      Kommentar


                        #71
                        Hier meine Item:


                        UnitMode:
                        type: num
                        visu_acl: ro
                        pluggit_listen: prmRamIdxUnitMode
                        Set:
                        type: num
                        visu_acl: rw
                        pluggit_send: prmRamIdxUnitMode
                        Text:
                        type: str
                        visu_acl: ro
                        eval: str('Demand') if sh...self() & 2 == 2 else str('Manuell') if sh...self() & 4 == 4 else str('Woche') if sh...self() & 8 == 8 else str('')
                        eval_trigger: ..self


                        Bypass:
                        State:
                        type: bool
                        visu_acl: ro
                        enforce_updates: yes
                        pluggit_listen: prmRamIdxBypassActualState
                        Text:
                        type: str
                        visu_acl: ro
                        eval: str('geoffnet') 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
                        enforce_updates: yes
                        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

                        Kommentar


                          #72
                          wenn ich den manuell öffne steht auch im
                          pluggit.Bypass.State.Text

                          geöffnet

                          Kommentar


                            #73
                            Geöffnet ist doch das, was du wolltest. Mich verwirrt das auch immer etwas, ob der Bypass offen oder geschlossen ist. Weil mir nicht ganz klar ist was das bedeutet. Ich überlege auch schon in kommenden Versionen anstatt offen oder geschlossen lieber rein zu schreiben, Bypass Sommer oder Winterbetrieb. Was dann allerdings nicht konform mit den Datenblättern und der App gehen würde.

                            Auch der manuelle Modus hat eine Untergrenze der Außentemperatur. Am besten siehst du das, wenn du die App öffnest und oben rechts auf ? klickst. Da siehst du sämtliche Konditionen des Bypasses in Bezug auf die Temperaturen. Auch die Innentemperatur ist für den automatischen Modus relevant.

                            Kommentar


                              #74
                              OK bin weiter wenn ich den wert von pluggit.Bypass.ManualMode.Set ändere ändert sich der wert in der Handy APP, aber schaltet dann auf automatik zurück.
                              Welchen wert würdest du mir raten?

                              Kommentar


                                #75
                                Also ich hab 3 Modis in der ap310

                                Manuell-- Wärmerückgewinnung aus also kalte Luft rein warme raus

                                Automatisch-- Wärmerückgewinnungssystem ein und die Zuluft wird durch die Abluft erwärmt

                                Sommer-- nur Abluft! wobei da ein Fenster gekippt sein muss wegen unterdruck!

                                Kommentar

                                Lädt...
                                X