danielwippermann / resol-vbus

A JavaScript library for processing RESOL VBus data
MIT License
67 stars 34 forks source link

Resol Adapter #32

Closed dm82m closed 4 years ago

dm82m commented 4 years ago

Hey Daniel,

ich bin aktuell nicht sicher welchen Resol Adapter ich mir sinnvollerweise kaufen sollte. Ich schwanke zwischen dem VBus LAN und KM2.

Mein Szenario sieht so aus, dass ich Home Assistant einsetze und dort gerne meinen Regler auslesen würde im in Erfahrung zu bringen, wie viel Energie meine Anlage z.B. heute abgegriffen hat. Ich möchte diese Information nutzen um die Warmwasser Aufbereitung meiner Heizanlage ein- bzw. ausschalten zu können.

Ich vermute aktuell, dass ich den LAN Adapter irgendwie per curl/wget ansprechen kann und dann ein JSON zurückbekomme in dem ich verschiedene Werte (ggf. einen den ich auch brauchen kann) zurück bekomme. Was ich aber nicht finden konnte war eine Schnittstellenbeschreibung. Grundsätzlich glaube ich, dass dieser LAN Adapter auch das ist was ich brauche.

Den KM2 interpretiere ich eher als Gerät, dass mir die Daten dann ins VBus Portal schickt und mir dort eben eine Auswertung u.s.w. ermöglicht. Auch da bin ich nicht sicher ob und wie ich die dann von mir benötigten Daten sinnvoll und automatisiert wieder auslesen könnte.

Ich hoffe Du kannst mir da etwas unter die Arme greifen.

Danke und Gruß Dirk

danielwippermann commented 4 years ago

Huhu Dirk!

Ich vermute aktuell, dass ich den LAN Adapter irgendwie per curl/wget ansprechen kann und dann ein JSON zurückbekomme in dem ich verschiedene Werte (ggf. einen den ich auch brauchen kann) zurück bekomme.

Nein, der VBus/LAN-Adapter ist ein reiner Signalwandler ohne eigene Protokolllogik. Um Daten aus dem VBus/LAN-Adapter zu bekommen, müsstest Du Dich jedes mal damit verbinden, für gewisse Zeit die eintreffenden Daten aufzeichnen und dekodieren und dann selber JSON erzeugen.

Das KM2 wiederum hat ein solches API, das wird auch vom Web-Interface benutzt, um das aktuell angeschlossene Gerät anzuzeigen. Und Du kannst du VBus.net-Portal-Funktionalität deaktivieren, wenn Du es nur im LAN einsetzen möchtest.

Wenn Du es aber mit VBus.net verbunden lässt, gibt es auch dafür eine API-Dokumentation, mit der man die dort abgelegten Daten wieder auslesen kann. Die Doku gibt es auf Anfrage bei RESOL.

Wenn Du noch weitere Fragen hast, immer her damit :)

Bis dann, Daniel

dm82m commented 4 years ago

Top Danke für die Antwort.

Dann bestelle ich mal den KM2. Wo genau bekomme ich dir API Dokumentation für den KM2 bzw. die fürs VBus Portal her?

Primär würde mich interessieren, wie und welche Daten der KM2 im LAN und ohne VBus Portal zur Verfügung stellt.

danielwippermann commented 4 years ago

Das KM2 stellt eine maschinenlesbare Version der aktuell empfangenen Daten unter einem Webservice zur Verfügung. Weiter unten findest Du einen gekürzten Mitschnitt aus meinem KM2.

Die authId aus der Anfrage bekommst Du durch Einloggen. Dafür musst Du eine ähnliche Anfrage wie unten dargestellt absenden, die aber als method den Wert sessionLogin und als Parameter username und password enthält. Als Antwort bekommst Du dann die authId.

Die authId ist einige Zeit gültig, aber spätestens beim Neustart von KM2 wird die ungültig und das Einloggen muss wiederholt werden.

Ich hoffe, das hilft Dir beim Umgang mit dem KM2 schon mal weiter. Die Doku zum VBus.net-API kannst Du über einen der unter https://www.vbus.net/#/help-support beschriebenen Kanälen anfordern.

Bis dann, Daniel


Anfrage

POST http://192.168.5.217/cgi-bin/resol-webservice HTTP/1.1
Content-Type: application/json

[{
    "id": "1",
    "jsonrpc": "2.0",
    "method": "dataGetCurrentData",
    "params": {
        "authId": "..."
    }
}]

Antwort

[{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "headers": [
            {
                "id": "00_0010_1221_10_0100",
                "description": "Regudis H-HT [Transm. station #1]",
                "channel": 0,
                "destination_address": 16,
                "source_address": 4641,
                "protocol_version": 16,
                "command": 256,
                "info": 0,
                "destination_name": "DFA",
                "source_name": "Regudis H-HT [Transm. station #1]",
                "fields": [
                    {
                        "id": "000_1_0",
                        "name": "Übergabestation Status",
                        "unit": "",
                        "unit_code": "None"
                    },
                    {
                        "id": "001_1_0",
                        "name": "Primärkreis Stellantrieb",
                        "unit": "%",
                        "unit_code": "Percent"
                    },
                    {
                        "id": "002_2_0",
                        "name": "Primärkreis Vorlauftemperatur",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "004_2_0",
                        "name": "Primärkreis Rücklauftemperatur",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "006_2_0",
                        "name": "Primärkreis Rücklaufmaximaltemperatur",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "008_2_0",
                        "name": "Sekundärkreis Vorlauftemperatur",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "010_2_0",
                        "name": "Sekundärkreis Vorlaufsolltemperatur",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "012_2_0",
                        "name": "Sekundärkreis Rücklauftemperatur",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    }
                ]
            },
            {
                "id": "00_0010_1230_10_0100",
                "description": "Regudis H-HT [DHW heating #0]",
                "channel": 0,
                "destination_address": 16,
                "source_address": 4656,
                "protocol_version": 16,
                "command": 256,
                "info": 0,
                "destination_name": "DFA",
                "source_name": "Regudis H-HT [DHW heating #0]",
                "fields": [
                    {
                        "id": "000_1_0",
                        "name": "Status",
                        "unit": "",
                        "unit_code": "None"
                    },
                    {
                        "id": "002_2_0",
                        "name": "NH1",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "004_2_0",
                        "name": "NH2",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "008_2_0",
                        "name": "TEin",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "010_2_0",
                        "name": "TAus",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    {
                        "id": "001_1_0",
                        "name": "Ladepumpe",
                        "unit": "%",
                        "unit_code": "Percent"
                    },
                    {
                        "id": "006_1_0",
                        "name": "Ventil",
                        "unit": "%",
                        "unit_code": "Percent"
                    },
                    {
                        "id": "007_1_0",
                        "name": "Anforderung",
                        "unit": "%",
                        "unit_code": "Percent"
                    }
                ]
            },
            {
                "id": "00_0010_5400_10_0100",
                "description": "DeltaTherm HC [Controller]",
                "channel": 0,
                "destination_address": 16,
                "source_address": 21504,
                "protocol_version": 16,
                "command": 256,
                "info": 0,
                "destination_name": "DFA",
                "source_name": "DeltaTherm HC [Controller]",
                "fields": [
                    {
                        "id": "000_2_0",
                        "name": "Temperature sensor 1",
                        "unit": " °C",
                        "unit_code": "DegreesCelsius"
                    },
                    ...
                ]
            },
            ...
        ],
        "headerset_stats": {
            "headerset_count": 1,
            "min_timestamp": 1579238367,
            "max_timestamp": 1579238367
        },
        "headersets": [
            {
                "timestamp": 1579238367,
                "packets": [
                    {
                        "header_index": 0,
                        "timestamp": 1579238361,
                        "field_values": [
                            {
                                "field_index": 0,
                                "raw_value": 2,
                                "value": "2"
                            },
                            {
                                "field_index": 1,
                                "raw_value": 0,
                                "value": "0"
                            },
                            {
                                "field_index": 2,
                                "raw_value": -28.8,
                                "value": "-28.8"
                            },
                            {
                                "field_index": 3,
                                "raw_value": -28.8,
                                "value": "-28.8"
                            },
                            {
                                "field_index": 4,
                                "raw_value": 50,
                                "value": "50.0"
                            },
                            {
                                "field_index": 5,
                                "raw_value": 20,
                                "value": "20.0"
                            },
                            {
                                "field_index": 6,
                                "raw_value": 0,
                                "value": "0.0"
                            },
                            {
                                "field_index": 7,
                                "raw_value": -28.8,
                                "value": "-28.8"
                            }
                        ]
                    },
                    {
                        "header_index": 1,
                        "timestamp": 1579238361,
                        "field_values": [
                            {
                                "field_index": 0,
                                "raw_value": 10,
                                "value": "10"
                            },
                            {
                                "field_index": 1,
                                "raw_value": 20,
                                "value": "20.0"
                            },
                            {
                                "field_index": 2,
                                "raw_value": 999.9,
                                "value": "999.9"
                            },
                            {
                                "field_index": 3,
                                "raw_value": 40,
                                "value": "40.0"
                            },
                            {
                                "field_index": 4,
                                "raw_value": 45,
                                "value": "45.0"
                            },
                            {
                                "field_index": 5,
                                "raw_value": 0,
                                "value": "0"
                            },
                            {
                                "field_index": 6,
                                "raw_value": 0,
                                "value": "0"
                            },
                            {
                                "field_index": 7,
                                "raw_value": 0,
                                "value": "0"
                            }
                        ]
                    },
                    {
                        "header_index": 2,
                        "timestamp": 1579238362,
                        "field_values": [
                            {
                                "field_index": 0,
                                "raw_value": 19.900000000000002,
                                "value": "19.9"
                            },
                            ...
                        ]
                    },
                    ...
                ]
            }
        ]
    }
}]
dm82m commented 4 years ago

danke soweit. ich hatte folgendes an den resol support geschieben:

Könnt ihr mir bitte die API Dokumentation zum KM2 für den Zugriff im Netzwerk sowie für den Zugriff aufs VBus Portal schicken?

Falls ihr noch extra etwas habt das beschreibt was für Daten man abgreifen kann wäre das perfekt.

die antwort hat mich dann etwas verwundert:

Leider bieten wir keine umfängliche Unterstützung, für eigene Visualisierungslösungen an. Jedoch stellt unser Softwareleiter Daniel Wippermann, privat entsprechende Informationen bereit. Unter nachfolgendem Link gelangen Sie zu den verfügbaren Informationen. Link: https://github.com/danielwippermann/resol-vbus

kannst du mir evtl. die noch offenen fragen beantworten bzw. mir die api doku schicken?

danke dir!

danielwippermann commented 4 years ago

Sorry für die späte Antwort. Ich habe versucht, an eine VBus.net-API-Doku zu kommen, ist mir aber bisher noch nicht gelungen.

dm82m commented 4 years ago

hey daniel, ich habe mir gerade den KM2 bestellt und würde mal beginnen ihn in vbus.net zu integrieren und zu schauen welche daten da so ankommen. danach überlege ich mir dann, was ich dann rausnehme bzw. in HomeAssistant anzeigen will und dann können wir ja noch mal sprechen ob vbus.net eine API hat oder ob ich den von dir oben beschrieben weg gehen muss. grüße dirk

dm82m commented 4 years ago

sessionLogin

die method heißt nur login

ich habe zwar bisher keine doku für vbus.net bekommen, ist aber auch nicht nötig, da das abgreifen des km2 über deinen weg von oben super funktioniert. ich habe jetzt die daten in HomeAssistant und bin erstmal happy! DANKE!

danielwippermann commented 4 years ago

Super, freut mich! Dann mach ich das Issue hier erst einmal zu, wenn Du noch Infos brauchst, öffne bitte einfach ein neues!

Happy coding!

chiefdeputy commented 2 years ago

Hallo, erst mal entschuldigung, dass ich hier ein altes Issue raus hole. Ich frage mich jedoch ob der Endpunkt resol-webservice auch mit einem DL2 funktioniert? Egal was ich für eine JSON Payload (+ Header) schicke, ich bekomme immer Text als Antwort und zwar:

product = "DL2"
serial = "xxx"
version = "2.2.4"
build = "201909120704"
name = "DL2-xxx"
features = "vbus,dl2,jobparam"

Die JSON Daten bekomme ich mit "/dlx/download/live" (und zwar ohne Anfrage Header+Payload). Jedoch hat dm82m schon ein HomeAssistant plugin geschrieben, welches ich auch nutzen möchte.

Danke!

dm82m commented 2 years ago

genau, aber mein plugin macht nichts anderes als den km2 auf der http schnittstelle über den endpunkt resol-webservice anzusprechen, sich einzuloggen und die daten abzugreifen und diese daten dann in home assistant zur verfügung zu stellen. ob und wie ein möglicher weg für den DL2 aussieht kann ich nicht sagen, da ich das gerät nicht habe. evtl. kann @danielwippermann da helfen.

hier ist mein plugin: https://github.com/dm82m/hass-Deltasol-KM2

chiefdeputy commented 2 years ago

Ja, das habe ich schon gefunden 😄 Es funktioniert nur nicht einem DL2, da der Endpunkt resol-webservice anscheinend meine JSON POSTs ignoriert:

Der Text der Antwort ist immer plain wie oben beschrieben.

dm82m commented 2 years ago

@chiefdeputy hat das inzwischen gelöst und in mein Plugin integriert. Wir können jetzt also in Home Assistant den KM2 und den DL2/DL3 einbinden! 🥳

ChR-iSz commented 2 years ago

Eine Kostenfrage, da mit der vbus controller ehrlich gesagt mit über 200€ zu teuer ist.

Bin selbst Entwickler. Reicht der USB Controller nicht aus ? Kostet 80€. Raspberry dran und ein Wrapper für Homeassist programmiert, bzw. Daniel seine Tools zur Datenaufbereitung nutzen... 🤷‍♂️

chiefdeputy commented 2 years ago

Jop, möglich. Hab einen Python Wrapper für die Tools angefangen (mangels Java Kenntnissen). Komme aus Zeitgründen nicht mehr wirklich weiter: https://github.com/chiefdeputy/Resol-EmSimulator Einfach forken und USB Capability dem Addon hinzufügen. Plan war das ganze via MQTT mit hass zu verbinden. Aber wie gesagt...

hoppel118 commented 1 year ago

Hallo Leute,

ich steige gerade von FHEM zu Home Assistant um. In FHEM konnte ich den Resol VBUS/LAN Adapter direkt einbinden.

Wenn ich euch jetzt hier richtig verstehe, müsste ich mir nun einen KM2 oder DL2/DL3 besorgen, damit es auch in Home Assistant funktioniert. DL2 bzw. DL3 sind mir für meinen Anwendungsfall etwas zu übertrieben (teuer).

Bevor ich jetzt bestelle... Kann bitte nochmal jemand folgendes bestätigen:

Ich bin leider kein Entwickler. Heißt, ich habe keine Ahnung, wie ich den VBUS/LAN Adapter zum Laufen bekomme, wenn es dafür noch kein Plugin gibt. Dem entsprechend würde ich in den Apfel beißen und den KM2 kaufen.

Danke euch und Gruß Hoppel

dm82m commented 1 year ago

Ja das ist der aktuelle Stand. @chiefdeputy hat zwar mal einen Prototyp gebaut aber der ist nicht fertig und wird aktuell auch nicht weiter entwickelt. Mit dem KM2 und meinem Plugin kommst du an Deine Daten in Home Assistant.

https://github.com/dm82m/hass-Deltasol-KM2

ChR-iSz commented 1 year ago

Hi @hoppel118,

ich habe den VBUS USB in Home Assistant am laufen. Da @danielwippermann eine nodejs API für die Live-Daten zur Verfügung stellt kannst du Dich selbstverständlich mit Home Assistant an die Daten anknüpfen.

Da ich die USB Variante habe habe ich einen Raspberry dazwischen geschaltet.

Link: https://www.amazon.de/Resol-Schnittstellenadapter-Adapter-Solarstation-Software/dp/B083SLYF72

dm82m commented 1 year ago

@ChR-iSz kannst du deinen Aufbau noch etwas detaillierter beschreiben?

dm82m commented 1 year ago

Das ist auch echt heftig. Im Mai 2020 hab icu 130€ für den KM2 bezahlt. Jetzt kostet der fast das doppelte…

ChR-iSz commented 1 year ago

Hi @dm82m,

Gerne.

Raspberry PI: 1) Den oben genannten Resol-Schnittstellenadaper per BUS Kabel (2 Adrig) an die Deltasol. 2) USB Kabel vom Resol-Schnittstellenadaper in einem Raspberry stecken. 3) @danielwippermann nodejs Server starten... ( USB Device korrekt setzen ).

Home Assistant fragt bei mir die API in Punkt 3 ab, und visualisiert die Daten. Siehe Screenshots...

IMG_6083

IMG_6064

IMG_6052

dm82m commented 1 year ago

Dann läuft Home Assistant und der nodejs Server bei dir auf unterschiedlicher Hardware?

Und mit welchem Plugin hast du die visu gemacht?

und wie hast du die datenabfrage von HA zur API gemacht?

hoppel118 commented 1 year ago

WOW!!! Habt ihr alle darauf gewartet, dass hier jemand eine Frage stellt. :D

Nein, im Ernst, super, dass das so schnell geht. ;)

Ja das ist der aktuelle Stand. @chiefdeputy hat zwar mal einen Prototyp gebaut aber der ist nicht fertig und wird aktuell auch nicht weiter entwickelt. Mit dem KM2 und meinem Plugin kommst du an Deine Daten in Home Assistant.

https://github.com/dm82m/hass-Deltasol-KM2

Danke für die Info. Dann habe ich schonmal die Bestätigung, dass ich mit dem KM2 auf der sicheren Seite bin.

ich habe den VBUS USB in Home Assistant am laufen. Da @danielwippermann eine nodejs API für die Live-Daten zur Verfügung stellt kannst du Dich selbstverständlich mit Home Assistant an die Daten anknüpfen.

Da ich die USB Variante habe habe ich einen Raspberry dazwischen geschaltet.

Einen Raspberry wollte ich jetzt ungern noch dazwischen hängen. Meinst du, dass die nodejs API auch mit dem VBUS/LAN Adapter funktioniert? Den hätte ich ja bereits hier und könnte das ausprobieren. Bin allerdings mit Home Assistant selbst noch nicht Mal ganz in Form.

Das ist auch echt heftig. Im Mai 2020 hab icu 130€ für den KM2 bezahlt. Jetzt kostet der fast das doppelte…

Ja, Wahnsinn. Die Teile sind alle ziemlich teuer geworden.

dm82m commented 1 year ago

Doch das geht genauso mit dem Vbus/LAN Adapter. Allerdings musst du halt alles manuell bauen analog @ChR-iSz

@chiefdeputy hatte ja angefangen mit einer Integration in Home Assistant. Dann wäre keine zusätzliche Hardware nötig.

ChR-iSz commented 1 year ago

Da ich einen Raspberry PI 4 nutze können Home Assistant und NodeJS auch auf der selben Hardware laufen. Dann werden die Daten halt von localhost geholt.

@hoppel118 VBUS/LAN passt doch. Sehe keinen Grund warum das nicht funktionieren sollte. Installier @danielwippermann seine nodejs Scripte (auf welcher Hardware auch immer, bzw. direkt auf Deinem HomeAssistant Server) und verbinde dich zu dem VBUS/LAN Adapter. Die IP trägst du in der node config ein...

Auf dem HomeAssistant brauchst du keine zusätzlichen Plugins. Ich kann Dir meine config nachher mal raussuchen, wie ich die Home Assistant Anbindung gemacht habe...

hoppel118 commented 1 year ago

OK, danke euch. Dann probiere ich das mit dem vorhandenen VBUS/LAN Adapter erstmal aus, bevor ich in neue Hardware investiere.

Da ich einen Raspberry PI 4 nutze können Home Assistant und NodeJS auch auf der selben Hardware laufen. Dann werden die Daten halt von localhost geholt.

Ich habe einen Openmediavault Server auf dem Docker und KVM laufen. Über KVM habe ich Home Assistant OS in einer virtuellen Maschine eingerichtet.

@hoppel118 VBUS/LAN passt doch. Sehe keinen Grund warum das nicht funktionieren sollte. Installier @danielwippermann seine nodejs Scripte (auf welcher Hardware auch immer, bzw. direkt auf Deinem HomeAssistant Server) und verbinde dich zu dem VBUS/LAN Adapter. Die IP trägst du in der node config ein...

Macht es deiner Ansicht nach Sinn diesen NodeJS Server direkt in HAOS aufzusetzen? Sorry, habe gerade noch keine Vorstellung, was nun genau zu tun ist... ;)

Kannst du mir nochmal einen Link zu @danielwippermann 's nodejs Scripte schicken?

Auf dem HomeAssistant brauchst du keine zusätzlichen Plugins. Ich kann Dir meine config nachher mal raussuchen, wie ich die Home Assistant Anbindung gemacht habe...

Darüber würde ich mich sehr freuen. Danke

hoppel118 commented 1 year ago

Kannst du mir nochmal einen Link zu @danielwippermann 's nodejs Scripte schicken?

@ChR-iSz Meinst du das hier?

https://github.com/danielwippermann/resol-vbus

Features Discovers LAN-enabled RESOL devices on the local network

Mit dem Feature sollte mein VBUS-LAN-Adapter dann automatisch erkannt werden. Hm..., wobei..., der Adapter befindet sich in einem separaten VLAN. Aber übergangsweise könnte ich das ändern und wenn alles läuft wieder zurückschieben.

ChR-iSz commented 1 year ago

Genau:

https://github.com/danielwippermann/resol-vbus/tree/master/examples/json-live-data-server

hoppel118 commented 1 year ago

Genau:

https://github.com/danielwippermann/resol-vbus/tree/master/examples/json-live-data-server

OK, damit kann ich etwas anfangen. Schick mir BITTE noch deine Home Assistant config. ;)

https://github.com/danielwippermann/resol-vbus/blob/master/examples/json-live-data-server/config.js.example

Verstehe ich es richtig, dass ich die Beispieldatei dann in die config.js übernehmen kann und lediglich die beiden folgenden Parameter zu meinem VBUS-Adapter anpassen muss?

host: '192.168.13.21', password: 'vbus',

Muss mal sehen, wann ich die Zeit dazu finde. Jetzt bin ich auf jeden Fall schonmal angefixt.

Danke euch erstmal.

Gruß Hoppel

chiefdeputy commented 1 year ago

Am das Ganze in HassOS zum Laufen zu bringe, müsste man es als AddOn einbinden. (AddOns in HassOS sind nichts anderes als Docker Container, welche mit dem Hass Core kommunzieren.)

Damit habe ich auch angefangen, schaffe es gerade aber zeitlich nicht weiter zu machen. (Letztes Jahr nochmal Nachwuchs bekommen). Wird also noch etwas auf Eis liegen.

Um es als Custom Component direkt hin zu bekommen, bräuchte man eine native Python API für den VBus. Das gibt's leider (noch) nicht.

hoppel118 commented 1 year ago

@chiefdeputy Oha, dann erstmal Glückwunsch zum Nachwuchs. Das kann ich nachvollziehen. Mein einer Racker reizt mich schon gut aus. Zwei oder mehr davon, kaum vorstellbar, wie man das hinbekommen kann. ;)

Tatsächlich habe ich mich dafür entschieden, dein Addon zu verwenden, allerdings komme ich jetzt nicht weiter. Ich stehe gerade hier:

https://github.com/chiefdeputy/Resol-EmSimulator/issues/2

Funktioniert dein Addon denn überhaupt? Nach deiner Nachricht im Post zuvor, bin ich mir nun unsicher.

Hier scheint dein Addon ja schon von jemandem erfolgreich genutzt worden zu sein, auch wenn er gerade einen Fehler hat:

https://github.com/chiefdeputy/Resol-EmSimulator/issues/1

Vielleicht kannst du oder jemand anderes hier mich nochmal unterstützen?

Danke und Gruß Hoppel

hoppel118 commented 1 year ago

@danielwippermann seine nodejs Scripte (auf welcher Hardware auch immer, bzw. direkt auf Deinem HomeAssistant Server) und verbinde dich zu dem VBUS/LAN Adapter. Die IP trägst du in der node config ein...

OK, ich denke, ich mache dann erstmal so weiter. Das klingt machbar.

@ChR-iSz Es wäre super, wenn du deine Home Assistant config teilen könntest.

Danke euch erstmal.

ChR-iSz commented 1 year ago

@hoppel118

Ich bin aktuelle nicht zuhause, kann Dir morgen aber die Infos senden.

Warum nutzt Ihr alle ein Addon ? Home Assistant kann doch per GET und interval (sagen wir mal alle 5 Minuten) das API json result anfordern. Wird dann geparst und ist als Entität auswertbar. Muss morgen noch genau schauen, wie ich das danals gemacht habe. Ist schon wieder über ein halbes Jahr her. Ich habe aber, soweit ich mich erinnere, kein zusätzliches Addon in Hass installiert...

dm82m commented 1 year ago

weil das json das wir vom km2/dl2/dl3 bekommen eine etwas komplexere struktur mit anzahl der geräte im bus, feld namen, feld daten, ... hat. jetzt musst du nur das plugin installieren und 3 zeilen config hinzufügen und sämtliche daten werden automatisch in home assistant zur verfügung gestellt.

hoppel118 commented 1 year ago

@hoppel118

Ich bin aktuelle nicht zuhause, kann Dir morgen aber die Infos senden.

Warum nutzt Ihr alle ein Addon ? Home Assistant kann doch per GET und interval (sagen wir mal alle 5 Minuten) das API json result anfordern. Wird dann geparst und ist als Entität auswertbar. Muss morgen noch genau schauen, wie ich das danals gemacht habe. Ist schon wieder über ein halbes Jahr her. Ich habe aber, soweit ich mich erinnere, kein zusätzliches Addon in Hass installiert...

Alles klar. Ich bin gespannt, ob ich das dann damit hinbekomme. Wenn nicht, kann ich mir ja immer noch ein KM2 holen.

ChR-iSz commented 1 year ago

Ahso, dann wertet das @danielwippermann schon schön auf. Bei mir siehts wie auf dem Screenshot aus. Die rote Markierung hat keine Bedeutung. Ist ne Pumpe. Bei value 100 ist die Pumpe an, bei 0 aus.

image

Habt Ihr interessehalber mal eine Beispielausgabe der Roh-Daten, die Ihr verarbeiten müsst ?

dm82m commented 1 year ago
image image

diese kombination(en) müssen wir mergen. und da hatte ich händisch keinen bock in home assistant. deshalb das plugin gebaut...

danielwippermann commented 1 year ago

Huhu Ihr!

Und frohes neues Jahr in die Runde!

Würde es Euch helfen, wenn das von @ChR-iSz oben dargestelllte JSON-Format direkt aus dem "json-live-data-server" abrufbar wäre?

Bis dann, Daniel

danielwippermann commented 1 year ago

Beziehungsweise: welches Format müsste der json-live-data-server ausgeben, damit HomeAssistant da unkompliziert mit weiterarbeiten könnte?

dm82m commented 1 year ago

frohes neues @danielwippermann und dem rest der mannschaft hier!

das format von @ChR-iSz hat er ja per custom abfragen in home assistant bereits realisiert. so wie ich das verstehe kommt das aus dem json-live-data-server.

was für die bestehende home assistant integration helfen würde wäre, wenn der json-live-data-server das format 1:1 so ausgibt wie es aus dem km2/dl2/dl3 kommt. dann müssten wir für das plugin gar nichts anpassen. wobei voraussetzung wäre, dass wir das add-on von @chiefdeputy soweit fit bekommen, das es 'normale user' nutzen können.

danielwippermann commented 1 year ago

Hmmm, okay, den Code dafür könnte ich aus https://github.com/danielwippermann/resol-vbus/blob/6d23fdbbefb9b2b125e731253cb6d306a4d44afa/examples/vbustouch-proxy/index.js#L267 rüberportieren, da haben wir es ja schon mal so gemacht, dass der Webserver das API eines DL2 imitiert. Ich bereite das am Wochenende mal vor

dm82m commented 1 year ago

ja warte mal noch auf die rückmeldungen vom rest. die frage ist halt jetzt was sinnvoller ist. ich habe keinen vbus/usb bzw. vbus/lan adapter hier. d.h. ich kann die sachen lokal auch nicht testen. die primäre frage für mich lautet gerade: was wird der weg sein den wir aus home assistant empfehlen den vbus/lan bzw. vbus/usb zu betreiben, also mit welchem deiner projekte. und die zweite frage lautet dann: stellst du in diesem projekt eine schnittstelle zur verfügung, damit wir die daten ohne veränderung meines plugins nutzen können oder nutzen wir die daten so wie sie aktuell schon da sind und erweitern dafür mein plugin. möglich wäre beides. ich kann gerade noch nicht einschätzen was sinnvoller ist.

hoppel118 commented 1 year ago

Zitat @danielwippermann

Ich bereite das am Wochenende mal vor

Coole Sache!

was für die bestehende home assistant integration helfen würde wäre, wenn der json-live-data-server das format 1:1 so ausgibt wie es aus dem km2/dl2/dl3 kommt. dann müssten wir für das plugin gar nichts anpassen. wobei voraussetzung wäre, dass wir das add-on von @chiefdeputy soweit fit bekommen, das es 'normale user' nutzen können.

Da bin ich mir nicht so sicher, ob das was wird... Dann müsste wohl jemand anderes die Entwicklung des Addons fortsetzen:

Zitat @chiefdeputy

Damit habe ich auch angefangen, schaffe es gerade aber zeitlich nicht weiter zu machen. (Letztes Jahr nochmal Nachwuchs bekommen). Wird also noch etwas auf Eis liegen.

Zitat @dm82m

ich habe keinen vbus/usb bzw. vbus/lan adapter hier. d.h. ich kann die sachen lokal auch nicht testen.

vbus/lan habe ich hier. Aber ich bin erstens kein Entwickler und zweitens gänzlich neu in Home Assistant. Keine Ahnung, ob ich ein guter Tester sein kann. ;)

ChR-iSz commented 1 year ago

Beziehungsweise: welches Format müsste der json-live-data-server ausgeben, damit HomeAssistant da unkompliziert mit weiterarbeiten könnte?

Aus meiner Sicht genau so, wie es jetzt ist 😀

dm82m commented 1 year ago

@ChR-iSz kannst du mal ganz genau den Aufbau beschreiben. Also:

1) was hast du von Daniel auf den raspberry installiert? 2) wie sieht die Konfiguration aus? 3) wie sieht ein komplettes Beispiel json aus das du bekommst? 4) wie bindest du dieses json dann in Home Assistant ein?

meine Idee wäre gerade:

Die Idee von @chiefdeputy würde ich nicht weiter verfolgen weil er ja den Weg andersrum geht: er bringt die Home Assistant entities in den vbus. das scheint mir komplizierter als den von @ChR-iSz skizzierten weg.

dm82m commented 1 year ago

@hoppel118 sodele, ich hab mal kurz ein home assistant add-on gebaut um den von @ChR-iSz genutzten json-live-data-server zu starten. könntest du als testkandidat mal folgendes tun:

1) Mit dem Browser hierher navigieren und über den Button 'ADD REPOSITORY' hinzufügen: https://github.com/dm82m/hassio-addons 2) In Deinem Home Assistant in Addons das Addon 'Resol-VBus' installieren 3) Die config.js in Deinem Home Assistant in /config/addons/config.js erstellen entsprechend mit den relevanten Parametern (IP, Passwort, ...) füllen, siehe: https://github.com/danielwippermann/resol-vbus/tree/master/examples/json-live-data-server (WICHTIG: natürlich muss der Home Assistant und der vbus/lan im gleichen VLAN sein!) 4) Das Addon 'Resol-VBus' starten 5) Folgenden Befehl auf einem Rechner im Netzwerk starten: curl -s http://homeassistant.local:3333/api/v1/live-data und hier posten

Edit:

hoppel118 commented 1 year ago

WOW! Danke dir! 👍

OK, ich bin bei Schritt 4. Die Installation an sich lief reibungslos. Allerdings sehe ich Im Reiter "Log" des Addons folgendes:

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
internal/modules/cjs/loader.js:818
  throw err;
  ^
Error: Cannot find module 'fs/promises'
Require stack:
- /bin/resol-vbus/src/file-list-reader.js
- /bin/resol-vbus/src/index.js
- /bin/resol-vbus/examples/resol-vbus.js
- /bin/resol-vbus/examples/json-live-data-server/index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
    at Function.Module._load (internal/modules/cjs/loader.js:667:27)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/bin/resol-vbus/src/file-list-reader.js:2:12)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/bin/resol-vbus/src/file-list-reader.js',
    '/bin/resol-vbus/src/index.js',
    '/bin/resol-vbus/examples/resol-vbus.js',
    '/bin/resol-vbus/examples/json-live-data-server/index.js'
  ]
}
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped 

Dies führt dann wohl auch dazu, dass der curl Befehl zwar kurz ausgeführt, aber sofort fertig ist. Es erfolgt keine weitere Ausgabe:

hoppel@macbook ~ % curl -s http://homeassistant.home.arpa:3333/api/v1/live-data
hoppel@macbook ~ % 

Hier ist das vollständige Supervisor Log:

23-01-04 13:33:13 INFO (MainThread) [supervisor.host.info] Updating local host information
23-01-04 13:33:13 INFO (MainThread) [supervisor.host.services] Updating service information
23-01-04 13:33:13 INFO (MainThread) [supervisor.host.network] Updating local network information
23-01-04 13:33:13 INFO (MainThread) [supervisor.host.sound] Updating PulseAudio information
23-01-04 13:33:13 INFO (MainThread) [supervisor.host.manager] Host information reload completed
23-01-04 13:43:21 INFO (MainThread) [supervisor.homeassistant.api] Updated Home Assistant API token
23-01-04 13:44:42 INFO (MainThread) [supervisor.store.git] Cloning add-on https://github.com/dm82m/hassio-addons repository
23-01-04 13:44:42 WARNING (SyncWorker_3) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:44:42 INFO (MainThread) [supervisor.store] Loading add-ons from store: 84 all - 2 new - 0 remove
23-01-04 13:44:58 INFO (SyncWorker_4) [supervisor.docker.interface] Restarting ghcr.io/home-assistant/qemux86-64-homeassistant
23-01-04 13:45:06 INFO (MainThread) [supervisor.homeassistant.core] Wait until Home Assistant is ready
23-01-04 13:45:08 INFO (MainThread) [supervisor.resolution.evaluate] Starting system evaluation with state CoreState.RUNNING
23-01-04 13:45:08 INFO (MainThread) [supervisor.resolution.evaluate] System evaluation complete
23-01-04 13:45:09 INFO (MainThread) [supervisor.updater] Fetching update data from https://version.home-assistant.io/stable.json
23-01-04 13:45:09 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/adamoutler/Addons repository
23-01-04 13:45:09 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/hassio-addons/repository repository
23-01-04 13:45:09 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/dm82m/hassio-addons repository
23-01-04 13:45:09 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/home-assistant/addons repository
23-01-04 13:45:09 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/esphome/home-assistant-addon repository
23-01-04 13:45:10 WARNING (SyncWorker_0) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:45:11 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
    resp = await request_handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
  File "/usr/src/supervisor/supervisor/api/middleware/security.py", line 138, in system_validation
    return await handler(request)
  File "/usr/src/supervisor/supervisor/api/middleware/security.py", line 204, in token_validation
    return await handler(request)
  File "/usr/src/supervisor/supervisor/api/utils.py", line 62, in wrap_api
    answer = await method(api, *args, **kwargs)
  File "/usr/src/supervisor/supervisor/api/store.py", line 178, in store_info
    ATTR_ADDONS: [
  File "/usr/src/supervisor/supervisor/api/store.py", line 179, in <listcomp>
    self._generate_addon_information(self.sys_addons.store[addon])
  File "/usr/src/supervisor/supervisor/api/store.py", line 114, in _generate_addon_information
    ATTR_ADVANCED: addon.advanced,
  File "/usr/src/supervisor/supervisor/addons/model.py", line 221, in advanced
    return self.data[ATTR_ADVANCED]
  File "/usr/src/supervisor/supervisor/store/addon.py", line 19, in data
    return self.sys_store.data.addons[self.slug]
KeyError: '2ad4c73a_hassos_ssh_configurator_addon'
23-01-04 13:45:11 WARNING (SyncWorker_2) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:45:11 INFO (MainThread) [supervisor.store] Loading add-ons from store: 84 all - 0 new - 0 remove
23-01-04 13:45:11 INFO (MainThread) [supervisor.store] Loading add-ons from store: 84 all - 0 new - 0 remove
23-01-04 13:45:15 INFO (MainThread) [supervisor.auth] Auth request from 'core_mosquitto' for 'mqtt'
23-01-04 13:45:15 INFO (MainThread) [supervisor.auth] Home Assistant not running, checking cache
23-01-04 13:45:22 INFO (MainThread) [supervisor.homeassistant.core] Detect a running Home Assistant instance
23-01-04 13:47:23 INFO (SyncWorker_2) [supervisor.docker.interface] Removing image local/amd64-addon-resol_vbus with latest and 0.0.1
23-01-04 13:47:24 INFO (MainThread) [supervisor.addons.addon] Removing add-on data folder /data/addons/data/local_resol_vbus
23-01-04 13:47:24 INFO (MainThread) [supervisor.addons] Add-on 'local_resol_vbus' successfully removed
23-01-04 13:48:01 INFO (MainThread) [supervisor.api.middleware.security] /network/info access from core_ssh
23-01-04 13:48:01 INFO (MainThread) [supervisor.api.middleware.security] /network/info access from core_ssh
23-01-04 13:48:01 INFO (MainThread) [supervisor.api.middleware.security] /host/info access from core_ssh
23-01-04 13:48:01 INFO (MainThread) [supervisor.api.middleware.security] /core/info access from core_ssh
23-01-04 13:50:30 INFO (SyncWorker_3) [supervisor.docker.interface] Restarting ghcr.io/home-assistant/qemux86-64-homeassistant
23-01-04 13:50:37 INFO (MainThread) [supervisor.homeassistant.core] Wait until Home Assistant is ready
23-01-04 13:50:39 INFO (MainThread) [supervisor.resolution.evaluate] Starting system evaluation with state CoreState.RUNNING
23-01-04 13:50:39 INFO (MainThread) [supervisor.resolution.evaluate] System evaluation complete
23-01-04 13:50:40 INFO (MainThread) [supervisor.updater] Fetching update data from https://version.home-assistant.io/stable.json
23-01-04 13:50:40 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/adamoutler/Addons repository
23-01-04 13:50:40 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/hassio-addons/repository repository
23-01-04 13:50:40 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/esphome/home-assistant-addon repository
23-01-04 13:50:40 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/home-assistant/addons repository
23-01-04 13:50:40 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/dm82m/hassio-addons repository
23-01-04 13:50:41 WARNING (SyncWorker_0) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:50:41 WARNING (SyncWorker_4) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:50:41 INFO (MainThread) [supervisor.store] Loading add-ons from store: 83 all - 0 new - 1 remove
23-01-04 13:50:41 INFO (MainThread) [supervisor.store] Loading add-ons from store: 83 all - 0 new - 0 remove
23-01-04 13:50:46 INFO (MainThread) [supervisor.auth] Auth request from 'core_mosquitto' for 'mqtt'
23-01-04 13:50:46 INFO (MainThread) [supervisor.auth] Home Assistant not running, checking cache
23-01-04 13:50:53 INFO (MainThread) [supervisor.homeassistant.core] Detect a running Home Assistant instance
23-01-04 13:51:21 INFO (MainThread) [supervisor.addons] Creating Home Assistant add-on data folder /data/addons/data/a14d3924_resol-vbus
23-01-04 13:51:21 INFO (SyncWorker_0) [supervisor.docker.addon] Starting build for a14d3924/amd64-addon-resol-vbus:0.0.1
23-01-04 13:54:38 INFO (SyncWorker_0) [supervisor.docker.addon] Build a14d3924/amd64-addon-resol-vbus:0.0.1 done
23-01-04 13:54:38 INFO (MainThread) [supervisor.addons] Add-on 'a14d3924_resol-vbus' successfully installed
23-01-04 13:55:46 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/adamoutler/Addons repository
23-01-04 13:55:46 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/home-assistant/addons repository
23-01-04 13:55:46 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/esphome/home-assistant-addon repository
23-01-04 13:55:46 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/dm82m/hassio-addons repository
23-01-04 13:55:46 INFO (MainThread) [supervisor.store.git] Update add-on https://github.com/hassio-addons/repository repository
23-01-04 13:55:46 INFO (MainThread) [supervisor.updater] Fetching update data from https://version.home-assistant.io/stable.json
23-01-04 13:55:48 WARNING (SyncWorker_1) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:55:48 WARNING (SyncWorker_2) [supervisor.addons.validate] Add-on have full device access, and selective device access in the configuration. Please report this to the maintainer of DeskPi Pro Active Cooling
23-01-04 13:55:48 INFO (MainThread) [supervisor.store] Loading add-ons from store: 83 all - 0 new - 0 remove
23-01-04 13:55:48 INFO (MainThread) [supervisor.store] Loading add-ons from store: 83 all - 0 new - 0 remove
23-01-04 14:02:51 INFO (SyncWorker_1) [supervisor.docker.addon] Starting Docker add-on a14d3924/amd64-addon-resol-vbus with version 0.0.1
23-01-04 14:04:01 ERROR (SyncWorker_4) [supervisor.docker.interface] Container addon_a14d3924_resol-vbus is not running

Danke dir. 👍

Gruß Hoppel

dm82m commented 1 year ago

ja das problem hab ich schon gesehen, hab aber keine ahnung da ich mich in der nodejs welt nicht auskenne. hab aber ein issue aufgemacht und hoffe, dass @danielwippermann was dazu sagen kann: https://github.com/danielwippermann/resol-vbus/issues/85

ChR-iSz commented 1 year ago

@ChR-iSz kannst du mal ganz genau den Aufbau beschreiben. Also:

  1. was hast du von Daniel auf den raspberry installiert?
  2. wie sieht die Konfiguration aus?
  3. wie sieht ein komplettes Beispiel json aus das du bekommst?
  4. wie bindest du dieses json dann in Home Assistant ein?

Hallo, ganz einfach:

1) KELLER

Hardware:

http://danielwippermann.github.io/resol-vbus/#/md/examples/json-live-data-server/README Dort ist auch eine example Ausgabe des resultierenden JSON's. Der Aufbau (die einzelnen Entitäten und Werte) der JSON-Ausgabe ändern sich nicht beim erneuten Abfragen der API, sodass wir in Home Assistant einfach die Entitäten in der Array sortierung einmalig eintragen können (json_attributes_path).

2) HOME ASSISTANT

configuration.yaml


rest:
  - resource: http://192.168.188.1:3333/api/v1/live-data
    scan_interval: 60
    sensor:
      - name: "Resol.Solarkollektor"
        value_template: '{{value_json[0].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[0]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Pufferspeicher_oben"
        value_template: '{{value_json[1].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[1]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Pufferspeicher_mitte"
        value_template: '{{value_json[2].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[2]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Pufferspeicher_unten"
        value_template: '{{value_json[3].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[3]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Pufferspeicher_brauchwasser"
        value_template: '{{value_json[4].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[4]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Zirkulation"
        value_template: '{{value_json[5].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[5]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Heizung_vorlauf"
        value_template: '{{value_json[6].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[6]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Aussentemperatur"
        value_template: '{{value_json[7].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[7]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Solar_vorlauf"
        value_template: '{{value_json[8].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[8]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Solar_ruecklauf"
        value_template: '{{value_json[9].rawValue | float|round(2) }}'
        unit_of_measurement: '°C' 
        json_attributes_path: "$[9]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Sonneneinstrahlung"
        value_template: '{{value_json[15].rawValue | int }}'
        json_attributes_path: "$[15]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais1.Solarpumpe"
        value_template: "{% if value_json[32].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[32]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais2.3_Wege_Mischer"
        value_template: "{% if value_json[33].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[33]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais3.Beladepumpe_Pufferspeicher"
        value_template: "{% if value_json[34].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[34]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais4.Zirkulationspumpe"
        value_template: "{% if value_json[35].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[35]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais6.HeizkreisUmwaelzpumpe"
        value_template: "{% if value_json[37].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[37]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais12.Unbekannt"
        value_template: "{% if value_json[43].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[43]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Relais14.Heizung"
        value_template: "{% if value_json[45].rawValue == 100 %} on {% else %} off {% endif %}"
        json_attributes_path: "$[45]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.Systemdate"
        value_template: '{{value_json[50].rawValue | int }}'
        json_attributes_path: "$[50]"
        json_attributes:
          - "name"
          - "rawValue"
      - name: "Resol.OperatingState"
        value_template: '{{value_json[72].rawValue | int }}'
        json_attributes_path: "$[72]"
        json_attributes:
          - "name"
          - "rawValue"
dm82m commented 1 year ago

@hoppel118 bitte Add-on updaten auf Version 0.0.2 und erneut testen, der Fehler ist gefixt.

hoppel118 commented 1 year ago

OK, die Installation hat problemlos geklappt. Das Log sieht gut aus:

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
v19.3.0
debug: Starting server...
debug: Connect to VBus data source...
info: Ready to serve from the following URLs:
info:     - http://127.0.0.1:3333/api/v1/live-data (internal)
info:     - http://172.30.33.4:3333/api/v1/live-data
debug: HeaderSet complete
debug: HeaderSet complete
debug: HeaderSet complete
debug: HeaderSet complete

und hier der API output:

curl -s http://homeassistant.home.arpa:3333/api/v1/live-data

[
    {
        "id": "00_0010_7321_10_0100_000_2_0",
        "name": "Temperature sensor 1",
        "rawValue": 13.4
    },
    {
        "id": "00_0010_7321_10_0100_002_2_0",
        "name": "Temperature sensor 2",
        "rawValue": 11.700000000000001
    },
    {
        "id": "00_0010_7321_10_0100_004_2_0",
        "name": "Temperature sensor 3",
        "rawValue": 18.8
    },
    {
        "id": "00_0010_7321_10_0100_006_2_0",
        "name": "Temperature sensor 4",
        "rawValue": 53.1
    },
    {
        "id": "00_0010_7321_10_0100_008_2_0",
        "name": "Temperature sensor 5",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_010_2_0",
        "name": "Temperature sensor 6",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_012_2_0",
        "name": "Temperature sensor 7",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_014_2_0",
        "name": "Temperature sensor 8",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_016_2_0",
        "name": "Temperature sensor 9",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_018_2_0",
        "name": "Temperature sensor 10",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_020_2_0",
        "name": "Temperature sensor 11",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_022_2_0",
        "name": "Temperature sensor 12",
        "rawValue": 888.8000000000001
    },
    {
        "id": "00_0010_7321_10_0100_024_2_0",
        "name": "Irradiation",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_028_4_0",
        "name": "Impulse input 1",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_032_4_0",
        "name": "Impulse input 2",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_036_2_0",
        "name": "Sensor line break mask",
        "rawValue": 4080
    },
    {
        "id": "00_0010_7321_10_0100_038_2_0",
        "name": "Sensor short-circuit mask",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_040_2_0",
        "name": "Sensor usage mask",
        "rawValue": 3
    },
    {
        "id": "00_0010_7321_10_0100_044_1_0",
        "name": "Pump speed relay 1",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_045_1_0",
        "name": "Pump speed relay 2",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_046_1_0",
        "name": "Pump speed relay 3",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_047_1_0",
        "name": "Pump speed relay 4",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_048_1_0",
        "name": "Pump speed relay 5",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_049_1_0",
        "name": "Pump speed relay 6",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_050_1_0",
        "name": "Pump speed relay 7",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_051_1_0",
        "name": "Pump speed relay 8",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_052_1_0",
        "name": "Pump speed relay 9",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_058_2_0",
        "name": "Relay usage mask",
        "rawValue": 1
    },
    {
        "id": "00_0010_7321_10_0100_060_2_0",
        "name": "Error mask",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_062_2_0",
        "name": "Warning mask",
        "rawValue": 0
    },
    {
        "id": "00_0010_7321_10_0100_064_2_0",
        "name": "Controller version",
        "rawValue": 258
    },
    {
        "id": "00_0010_7321_10_0100_066_2_0",
        "name": "System time",
        "rawValue": 940
    },
    {
        "id": "00_0010_7326_10_0100_000_2_0",
        "name": "Flow temperature",
        "rawValue": 13.4
    },
    {
        "id": "00_0010_7326_10_0100_002_2_0",
        "name": "Return temperature",
        "rawValue": 11.700000000000001
    },
    {
        "id": "00_0010_7326_10_0100_004_2_0",
        "name": "Flow rate",
        "rawValue": 0
    },
    {
        "id": "00_0010_7326_10_0100_006_2_0",
        "name": "Heat",
        "rawValue": 5378764
    }
]%