Ankündigung

Einklappen
Keine Ankündigung bisher.

Kostal Plugin - PIKO Wechselrichter

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

    #16
    ja in der etc/loggin.yaml
    kannst du für jedes plugin eine eigene datei definieren

    welchen read cycle nutzt du ? 300 ist default
    vl macht der Wechselrichter auch nicht mehr als 25 Werte pro Lesevorgang?

    Kommentar


      #17
      Hi,

      das Logging war der Schlüssel. Das mit der eigenen Datei hab ich zwar noch nicht hinbekommen, ist aber auch erstmal woascht.
      Deine letzte Vermutung trifft tatsächlich zu.

      Per Log hab ich mit die verschieden Variablen in der def _json(self) mal ausgeben lassen. Das ganze hab ich mit 29 definierten Items gemacht.

      self._items: alle 29 noch da
      kostalurl: alle 29 noch da (hatte hier kurzzeitig vermutet die URL sei evtl "zu lang", wird aber komplett ausgegeben und es fehlen Werte "aus der Mitte"

      Also URL mal im Browser aufgerufen und siehe da... 25 Rückgabewerte.
      Ich denke, genauer kann man es dann nicht mehr eingrenzen.
      Jetzt nur die Frage, wie kann ich aus der einen Abfrage möglichst einfach zwei machen, die am besten noch über einen timer oder ähnliches zeitlich weitgenug getrennt werden können, so dass der WR nachkommt.

      Mir schwebt da grob folgendes vor (hab aber keine Ahnung wie die korrekte Notation sein müsste).
      Sicherlich gibt es da auch einen eleganteren Weg...?

      aus:
      Code:
                  for item in self._items:
                      value = self._keytable[item]
                      kostalurl +='&dxsEntries=' + str(value)
                  with urllib.request.urlopen(kostalurl) as url:
                      data = json.loads(url.read().decode())
                      for values in data['dxsEntries']:
                          kostal_key = str(list(self._keytable.keys())[list(self._keytable.values()).index(values['dxsId'])])
                          value=values['value']
                          if kostal_key == "operation_status":
                              self.logger.debug("operation_status" + str(value))
                              if str(value) == "0":
                                  value = "off"
                              elif str(value) == "2":
                                  value = "startup"
                              elif str(value) == "3":
                                  value = "feed in (mpp)"
                              elif str(value) == "6":
                                  value = "dc voltage low"
                              else:
                                  value = "unknown"
                          if kostal_key == "yield_day_kwh":
                                  value = value / 1000
                          if kostal_key in self._items:
                              self._items[kostal_key](value)
                              self.logger.debug("items[" + str(kostal_key) +"] = " +str(value))
                              self.logger.debug(str(kostalurl))
      mach:
      Code:
      # die ersten 25 Werte holen
                  for item[1..25] in self._items:
                      value = self._keytable[item]
                      kostalurl +='&dxsEntries=' + str(value)
                  with urllib.request.urlopen(kostalurl) as url:
                      data = json.loads(url.read().decode())
                      for values in data['dxsEntries']:
                          kostal_key = str(list(self._keytable.keys())[list(self._keytable.values()).index(values['dxsId'])])
                          value=values['value']
                          if kostal_key == "operation_status":
                              self.logger.debug("operation_status" + str(value))
                              if str(value) == "0":
                                  value = "off"
                              elif str(value) == "2":
                                  value = "startup"
                              elif str(value) == "3":
                                  value = "feed in (mpp)"
                              elif str(value) == "6":
                                  value = "dc voltage low"
                              else:
                                  value = "unknown"
                          if kostal_key == "yield_day_kwh":
                                  value = value / 1000
                          if kostal_key in self._items:
                              self._items[kostal_key](value)
                              self.logger.debug("items[" + str(kostal_key) +"] = " +str(value))
                              self.logger.debug(str(kostalurl))
      
      #die nächsten 17 Werte holen
                  for item[26..42] in self._items:
                      value = self._keytable[item]
                      kostalurl +='&dxsEntries=' + str(value)
                  with urllib.request.urlopen(kostalurl) as url:
                      data = json.loads(url.read().decode())
                      for values in data['dxsEntries']:
                          kostal_key = str(list(self._keytable.keys())[list(self._keytable.values()).index(values['dxsId'])])
                          value=values['value']
                          if kostal_key == "operation_status":
                              self.logger.debug("operation_status" + str(value))
                              if str(value) == "0":
                                  value = "off"
                              elif str(value) == "2":
                                  value = "startup"
                              elif str(value) == "3":
                                  value = "feed in (mpp)"
                              elif str(value) == "6":
                                  value = "dc voltage low"
                              else:
                                  value = "unknown"
                          if kostal_key == "yield_day_kwh":
                                  value = value / 1000
                          if kostal_key in self._items:
                              self._items[kostal_key](value)
                              self.logger.debug("items[" + str(kostal_key) +"] = " +str(value))
                              self.logger.debug(str(kostalurl))

      Kommentar


        #18
        Mh sieht doch ned so schlimm aus

        Kommentar


          #19
          Hallo zusammen,
          ist es korrekt, dass das Kostal Plugin per Json/HTML an den Wechselrichter angebunden wird?
          Ich fände ModBus charmant, auch für meinen Wechselrichter. Gibt's da schon was? Ansonsten würde ich mich um ein KostalModbus-Plugin kümmern.
          Ich ziehe gerade einige Daten per Logik und könnte auch gleich ein Plugin draus machen...

          Kommentar


            #20
            Hi, mein Plenticore geht auch bald ans Netz, ich wäre also gerne Tester für dein Plugin. Aber Frage: Warum genau möchtest Du nicht per Json auslesen?

            Kommentar


              #21
              Kann der Plenticore überhaupt json? Hab's noch nicht probiert.
              Es geht ja weniger darum die Daten irgendwie auszulesen, sondern viel mehr um den Spaß am Plugin bauen. Und da es für ModBus offenbar nichts gibt, bietet sich das ja an... ;-)

              Kommentar


                #22
                Der Plenticore spricht Json soweit ich informiert bin.
                Plugin für Modbus klingt auf jeden Fall gut :-)

                Kommentar


                  #23
                  Ich selber habe auch ein Kostal Plenticore und würde gerne auch die Daten auslesen aber bin komplett ein Neuling was das Auslesen betrifft.

                  grüße

                  Kommentar


                    #24
                    Ohje, reichlich Rückmeldungen. Dann werde ich das mal angehen und ein ModBus Plugin bauen. Gebt mir mal 7-10 Tage Zeit, melde mich dann wieder hier...

                    Kommentar


                      #25
                      Hallo zusammen,
                      ich habe eine erste Version des "Kostalmodbus" - Plugins fertig. Erstmal nur in meinem Fork verfügbar, da sicher noch die ein oder andere Fehlerbehebung folgt:
                      https://github.com/thengsty/plugins/...p/kostalmodbus

                      Heute hab ich's an meinem Plenticore 8.5 mit Kostal Smart Energy Meter erfolgreich testen können. Leider war dann irgendwann die Sonne weg und der Wechselrichter liefert keine Daten mehr vom Dach. ;-)

                      Würde mich über Tester freuen.
                      Sonnige Grüße, Thomas

                      Kommentar


                        #26
                        Zitat von thengsty Beitrag anzeigen
                        Würde mich über Tester freuen.
                        Erfolgreich mit einem Plenticore 7.0 und SH 1.6 in Betrieb genommen. Schaut auf den ersten Blick gut aus. Danke dafür!
                        Ich werds mal beobachten...

                        Kommentar


                          #27
                          Prima, danke für die Rückmeldung und das Testen.
                          Lass mich wissen wenn was fehlt und/oder Fehler auftreten.

                          Kommentar


                            #28
                            Ich habe das Plugin auch störungsfrei und stabil im Einsatz mit meinem Plenticore 7. Die Einrichtung des Plugins war ein Kinderspiel. Besten Dank für die Erstellung des Plugins!
                            Ich denke in der README.md kann beim Plenticore 7 auch tested = yes eingetragen werden.

                            Kommentar


                              #29
                              Sehr cool und vielen Dank an euch fürs testen.
                              Ich habe noch zwei Kleinigkeiten angepasst und eben einen PR erstellt zur Aufnahme des Plugins ins Dev Repo: https://github.com/smarthomeNG/plugins/pull/313

                              Hier gehts weiter mit dem Plugin: https://knx-user-forum.de/forum/supp...n-kostalmodbus


                              Grüße,
                              Thomas
                              Zuletzt geändert von thengsty; 29.12.2019, 22:06.

                              Kommentar


                                #30
                                Habe mich übrigens auch an ein Plugin für den SmartMeter von Kostal gemacht: https://shop.kostal-solar-electric.c...rgy-meter.html
                                Das Plugin(KsemModbus) ist im gleichen PR zu finden und kann ebenfalls schon getestet werden.

                                Kommentar

                                Lädt...
                                X