Ankündigung

Einklappen
Keine Ankündigung bisher.

Smarthome NG - Plugin um Kaco Blueplanet Hybrid 10.0 tl3 auszulesen

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

    #16
    Hi nusserdt,

    mein Fehler
    Im Script die erste Zeile (
    from scapy.all import * ) einfach löschen oder mit # auskommentieren.
    Wie weiter oben beschrieben, habe ich die Funktionalität mit der Socket-Lib umgesetzt. Scapy braucht es nicht mehr.

    Gerne wieder melden.

    Noch mal Sorry und Viele Grüße
    Ebsele

    Kommentar


      #17
      Hey bmx danke für die Rückmeldung. Hab NPCAP mal installiert. Führt leider zur selben Fehlermeldung. :/

      Kommentar


        #18
        Zitat von Ebsele Beitrag anzeigen

        2. StaLex hat meinen Weg bei seinem Kaco kürzlich getestet und - anders als ich mit einem SHNG-Plugin- das Skrpt um einen MQTT-Broker ergänzt. Soweit ich verstanden habe, nurtzt er seine Lösung nicht mit SHNG.
        Auf der Suche meine beiden Kaco Blueplanet Hybrid 10.0 tl3 Wechselrichter auszulesen bin ich auf dieses Forum gestoßen. Das Skript läuft bei mir und gibt die Wechselrichter Werte korrekt zurück. Ich bin eigentlich auf der Suche nach einer Möglichkeit die Kacos in Homeassistant zu integrieren. Leider bin ich blutiger Anfänger was Homeassistant und Programmierung betrifft. Dieses Skript scheint schon mal ein erster Ansatz zu sein.
        @StaLex wie sieht deine Lösung aus? MQTT wäre vermutlich eine Möglichkeit, die Daten an Homeassistant weiterzureichen.

        Viele Grüße
        Arno

        Kommentar


          #19
          Hallo arnonuem,

          es freut mich schon mal sehr, dass das Skript bei Dir läuft.
          SmarthomeNG ist besser als HA Wenn Du das Plugin für SmarthomeNG nutzen willst, dann melde Dich. Ich habe es zwar noch nicht geschafft, es hier ins Repo zu transferieren, aber bei mir läuft es.

          Du kannst gerne mein Skript nehmen und bei HomeAssistant nutzen, bestimmt findest Du in deren Forum jemanden, der Dir hilft.


          Zuletzt geändert von Ebsele; 10.08.2024, 22:39.

          Kommentar


            #20
            Hallo Ebsele
            vielen Dank für das Skript und die Erlaubnis dieses weiterzuverwenden. Ich habe mittlerweile ziemlich viel in Homeassistant eingerichtet, und würde gerne erst mal dabei bleiben. Ich werde mir SmarthomeNG aber mal anschauen.
            Ich hoffe jemanden zu finden, der mir hilft eine Homeassistant-Integration für die KACO blueplanet hybrid 10 Wechselrichter zu erstellen. Ich habe 2 Kacos parallel im Einsatz und das Monitoring dieser WR ist ein Krampf. Leider habe ich nur wenig Ahnung von Programmierung und zu wenig Zeit mich tiefer einzuarbeiten. Aber vielleicht komme ich nach und nach dem Ziel ein Schritt näher...

            Viele Grüße
            Arno
            Zuletzt geändert von arnonuem; 10.08.2024, 11:35.

            Kommentar


              #21
              arnonuem ich habe bereits den KACO in HomeAssistant eingebunden. Der Ansatz ist dabei ein komplett anderer als der von Ebsele. Ich finde die hier vorgestellte Lösung aber sehr interessant, weshalb ich mir mal eine Alternative anschauen wollte.

              image.png
              Wenn du den weg weiter gehen möchtest, da wäre es aus meiner Sicht das einfachste die Daten vom Script in eine Web Api zu packen. Da bietet Phyton mehr als genug Möglichkeiten. In HA kannst du anschließend über folgende rest Konfiguration die Daten der Web Api als Sensor in HA anlegen:

              Code:
              rest:
              - resource: "http://192.168.178.XX:PORT/something"
                scan_interval: 30
                timeout: 15
                sensor:
                  - name: "YOUR_SENSOR_NAME"
                    unique_id: "YOUR_SENSOR_ID"
                    device_class: "power"
                    unit_of_measurement: "W"
                    value_template: "{{ value_json['YOUR_API_PROPERTY'] | round(0) }}"
              ​
              ----

              Ebsele das Skript gibt nun folgenden Fehler aus:

              Code:
              data_stream nr.: data_1
              data_stream nr.: data_2
              data_stream nr.: data_3
              Traceback (most recent call last):
              File ".\send_request_V16_ socket_int\send_request_V16_socket_int.py", line 194, in <module>
              combined_bytes_1 = client.recv(BUFFER_SIZE)
              socket.timeout: timed out
              ​
              image.png​​

              src_ip = IP meiner Client Maschine
              dst_ip = IP meines Kaco's
              den Rest, insbesondere die Ports, habe ich so gelassen.

              Mir ist aufgefallen das mein KACO trotz offener Verbindung keine dauerhaft aktive Verbindung mit meiner Fritzbox eingeht. Dennoch läuft Hy-Sys usw. Ich habe die MAC Adresse aus der Hy-Sys Verbindung mit meiner Fritzbox Eintrag abgeglichen. Dieser stimmt überein.

              Hast du eine Idee? Bei arnonuem scheint es jetzt problemlos geklappt zu haben.

              Kommentar


                #22
                Hallöchen nusserdt,

                hmm, ich kann nur Vermutungen anstellen:
                - der Timeout weißt ganz banal darauf hin, dass Du keine Verbindung zum Kaco aufbaust oder, dass die Verbindung zu langsam ist. Du kannst im Code mal versuchsweise die Timeout-Zeit erhöhen. kaco_response_timeout=1 mal auf 1,5 oder 2 erhöhen.
                - src und dest scheint aber schon mal richtig herum zu sein. Mir ist es schon mal passiert, dass ich die verdreht habe. Dann passiert natürlich auch Nix ;-)
                - Da Du die IPs nicht gepostet hast, die Frage, ob die im gleichen sub-Netz liegen. Falls nein, könnte es schon ein Hinweis darauf sein, dass es vielleicht daran liegen könnte.
                - hast Du mal per „ping-Befehl“ geschaut, ob sich darauf der Kaco ansprechen lässt? Die Response Zeiten, die der Befehl zurückgibt, könnten einen Hinweis geben.
                - falls Du einen Notebook zur Hand hast, könntest Du versuchen, das Problem nachweisbar auf die Fritz zurück zu führen. Du könntest Dich Peer to Peer mit dem Notebook direkt an den Kaco hängen. Wenn Du es dann zum Laufen bringst, dann wüsstest Du zumindest, dass Du Dich mit der FritzBox oder den LAN-Kabeln in Deinem Netzwerk befassen musst.
                - der Kaco kann zwar eigentlich mehrere Verbindungen aufbauen, aber wenn Du HA parallel laufen hast, könnte ich mir auch vorstellen, dass der Kaco die Verbindung zu Deiner HA-Anwendung fleißig bedient, aber die Anfragen via des Python Codes ablehnt - das könnte zum Timeout-Fehler passen. Also die HA-Anwendung mal abklemmen und nur singulär zwischen Deinem Host und dem Kaco die Verbindung aufbauen.

                Mehr fällt mir gerade nicht ein. Ich hoffe, dass vielleicht ein paar Anregungen für Dich dabei sind. Ich drücke dir die Daumen, dass Du den Fehler findest.

                Gerne wieder melden.
                viele Grüße
                Ebsele

                Kommentar


                  #23
                  Hey Ebsele ich habe den Buffer und das Timeout deutlich erhöht und komme nun zu folgendem Output:

                  Code:
                  data_stream nr.:  data_1
                  data_stream nr.:  data_2
                  data_stream nr.:  data_3
                  data_stream nr.:  data_4
                  data_stream nr.:  data_5
                  data_stream nr.:  data_6
                  data_stream nr.:  data_7
                  data_stream nr.:  data_8
                  data_stream nr.:  data_9
                  data_stream nr.:  data_10
                  data_stream nr.:  data_11
                  data_stream nr.:  data_12
                  data_stream nr.:  data_13
                  data_stream nr.:  data_14
                  data_stream nr.:  data_15
                  data_stream nr.:  data_16
                  
                  
                  Traceback (most recent call last):
                    File ".\send_request_V16_socket_int\send_request_V16_socket_int.py", line 217, in <module>
                      print("Power Inverter L3 = ", power_inverter_L3, " W \n")
                  NameError: name 'power_inverter_L3' is not defined​
                  Kannst du daran bereits erkennen, ob eine Verbindung zu dem Kaco aufgebaut werden konnte? Ein Ping zum Kaco funktioniert in jeden Fall ohne Probleme in normaler Geschwindigkeit. By the way, ich nutze die folgenden Versionen:

                  image.png
                  Zuletzt geändert von nusserdt; 17.08.2024, 21:00.

                  Kommentar


                    #24
                    Hi nusserdt,

                    es scheint so, dass eine Verbindung aufgebaut wird und die „payloads“ an den WR geschickt werden. Die payloads erhalten nichts anderes als gezielte Abfragen von Adressen auf die der WR seinerseits mit einem payload antwortet. Diese Antwort sind dann die Werte, die uns interessieren.
                    Soweit so gut.

                    Was ich nicht sehen kann, ist, ob in der Antwort deines WR auch die richtigen Daten auf die Anfragen enthalten sind. Es scheint mir so, als würde der sich „verschlucken“ und nur einen Teil , oder im worst case, sogar nichts zurück schicken.

                    Bitte kommentiere mal folgende Zeile im Script wieder ein : #print("Combined Hex", string)
                    (einfach das # entfernen )
                    Wenn Dein WR auf die Anfragen was schickt, dann müsste der Print-Befehl in der Ausgabe eine (hoffentlich) lange Folge eines hex-Strings ausgeben.
                    Wenn da was kommt, dann bitte hier einfach mal die Ausgabe posten. Oder auch gerne per PN ( dann langweilen wir die anderen im Forum nicht mit unserer Fehlersuche ).

                    Hast Du mal den Ping-Befehl im Lnx oder Win-command-Fenster eingegeben? Hat Dein WR darauf reagiert?

                    Nachtrag: Ich habe mir gerade noch mal von Unterwegs den Python code angeschaut - wenn ich das hier auf dem Handy richtig sehe, dann ist da was seltsam-kann aber auch an meinem viewer liegen:
                    Wenn die 2 folgenden Zeilen bei Dir so aussehen, dann muss die zweite Zeile auf jeden Fall noch eingerückt werden.
                    power_inverter_L3 = round(extract_32bit_float(string, "04009a7c"))
                    print("Power Inverter L3 = ", power_inverter_L3, " W \n")​

                    Viele Grüße
                    Ebsele
                    Zuletzt geändert von Ebsele; 18.08.2024, 07:49.

                    Kommentar


                      #25
                      Ebsele ja du hattest recht. Die Zeile war falsch eingerückt.
                      Code:
                      print("Power Inverter L3 = ", power_inverter_L3, " W \n")
                      Das Skript lief jetzt ohne Fehler durch und hat folgenden Output produziert (BUFFER_SIZE = 1024):

                      Code:
                      data_stream nr.:  data_1
                      data_stream nr.:  data_2
                      data_stream nr.:  data_3
                      data_stream nr.:  data_4
                      data_stream nr.:  data_5
                      data_stream nr.:  data_6
                      data_stream nr.:  data_7
                      data_stream nr.:  data_8
                      data_stream nr.:  data_9
                      data_stream nr.:  data_10
                      data_stream nr.:  data_11
                      data_stream nr.:  data_12
                      data_stream nr.:  data_13
                      data_stream nr.:  data_14
                      data_stream nr.:  data_15
                      data_stream nr.:  data_16
                      Combined Hex
                      eddece79c0b876a962765ac0d19f9cb78405080c5791df87031722075fbe383f871fee73079220301b38b77873073660aa9278eb3bd0cb6fd024ef9dec68eec1ee8b68c61e7fca8476a0f04d16c1d457cc701c019b5eb6eda8d87459e286d3f95e88bfe3c8ba74907aa843c0aa2f1c469930bde8b8d119f9982342c1b93ef46528e90ac29b49b07ded952d2d1b08​
                      Der Ping zum KACO klappt ohne Problem und wird korrekt beantwortet.

                      Liebe Grüße!
                      Zuletzt geändert von nusserdt; 20.08.2024, 11:39.

                      Kommentar


                        #26
                        Top!
                        Dann muss ich aber unbedingt den Code noch korrigieren und hier wieder einstellen (DANKE Dir für das Testen!)

                        Kommentar


                          #27
                          Ebsele vielen Dank für das zur Verfügung stellen. Kannst du mir noch helfen den Output zu interpretieren? Was sagen mir die Ergebnisse, das war alles was ich in der Konsole erhalten habe. Was stelle ich nun damit an?

                          Kommentar


                            #28
                            Hi nusserdt,

                            ein bisschen wundert es mich, denn wenn Du den hex-String in der Ausgabe hast, dann sollten in der Folge die Werte per Print ebenfalls in der Console zu sehen sein.
                            Ich helfe sehr gerne, aber ich bräuchte von Dir die komplette Ausgabe, damit ich zusammen mit Dir (hoffentlich) das Problem finde.
                            Ich schaue mir auf jeden Fall auch noch mal den Code an und baue ein paar sinnvolle breakpoints ein. Dann schicke ich’s Dir. Kann aber sein, dass es erst nächste Woche klappt :-(

                            Viele Grüße
                            Ebsele

                            Kommentar


                              #29
                              Hallo nusserdt,

                              Ich habe es inzwischen geschafft, mithilfe von Ebsele 's Skript und ChatGPT direkt eine HA Custom Integration zu erstellen, die die Kaco Werte als Sensoren in HA zur Verfügung stellt. Falls du Interesse hast, diese zu testen, und weiterzuentwickeln, sag Bescheid. Mir fehlt leider die Erfahrung und die Zeit, diese weiter zu optimieren. Ich würde aber zukünftig gerne damit zwei parallele WR unterstützen und die Energieflüsse beider WR vernünftig darstellen wollen. Dies geht mit der Hy-Sys Software enttäuschenderweise überhaupt nicht.


                              Viele Grüße
                              Arno

                              Kommentar


                                #30
                                Hallo Ebsele,

                                Mir ist aufgefallen, daß dein Skript bei meinem Kaco nur Werte bis "Consumption from Grid Month" ausgibt. Die Werte für "Temp WR" und "Battery Cycles" fehlen.
                                Dein Code bricht dann auch scheinbar ab. Die letzten beiden Zeilen sind auskommentiert:

                                Code:
                                if "0c00c27c" in string and "0c003454" in string:
                                    real_grid_feed_in_today =   round(today_cons_from_grid - today_grid_feed_in,1)
                                    real_grid_feed_in_month =   round(this_month_cons_from_grid - this_month_grid_feed_in,1)
                                    print("Consumption from Grid Today = ", real_grid_feed_in_today, " kWh")
                                    print("Consumption from Grid Month = ",  real_grid_feed_in_month, " kWh \n")          
                                  
                                if "04007dfe" in string:
                                    temp_inverter =  round(extract_32bit_float(string, "04007dfe"))
                                    print("Temp WR = ",  temp_inverter, " % \n")
                                if "040073e3" in string:
                                    bat_cycles =  round(extract_32bit_float(string, "040073e3"))
                                    print("Battery Cycles = ",  bat_cycles, " % \n")    
                                #tem wechselrichter 04 00 7dfe    
                                #04 00 73 e3 5a 26 e7 42 = 115.57490539550781 (Battery Cycles)​
                                Ist das Absicht, oder ist dein Skript nicht vollständig? Woran könnte es liegen, daß kein String für bat_cycles und temp_inverter extrahiert wird?

                                Edit:
                                Habe die Antwort in deinem Post #11 gefunden. Man muß wohl als Manager angemeldet sein, um an diese Daten zu kommen. Gibt es dafür schon eine Lösung?


                                Viele Grüße
                                Arno
                                Zuletzt geändert von arnonuem; 22.08.2024, 11:52.

                                Kommentar

                                Lädt...
                                X