NEWS
Script zum Steuern von Blauberg Wohnrauzmlüftern
-
Servus zusammen,
ich arbeite gerade an einem Script mit dem ich meine Wohnraumlüfter von Blauberg steuern kann. Ich habe in jedem Raum in meinem Haus so einen Lüfter. Jeder dieser Lüfter hängt über WLAN im Netzwerk und kann über eine (absolut gruselige) App gesteuert werden. Die Lüfter lassen sich aber auch über UDP steuern und abfragen.
Ich habe das Script soweit, dass ich die Funktionen schreibend steuern kann, also ich kann jedem Lüfter sagen, auf welcher Lüftungsstufe er laufen soll und in welchem Modus (Wärmerückgewinnung, Abluft, Zuluft).
Bis jetzt hatte ich das alles in Node Red, aber ich ziehe gerade alles was ich in Node Red hatte nach IOBroker um.
Mein größtes Problem ist die UDP Kommunikation an sich. Wie gesagt habe ich es schon hinbekommen einen UDP Socket zu öffnen und darüber eine Nachricht an den Lüfter zu schicken. Nun kann ich die Lüfter aber auch über die App steuern oder mit den Knöpfen die sich direkt am Lüfter befinden. Wenn ich das tue, dann sind meine Datenpunkte im IOBroker aber nicht mehr synchron mit dem Lüfterstatus. Nun ist es so, dass der Lüfter auch jedesmal über UDP eine Nachricht schickt, wenn sich was am Lüfter ändert und genau darum geht es mir: Wie fange ich diese UDP Nachrichten ab? Ich habe mal mit Wireshark auf meinem WLAN gelauscht um zu schauen was der Lüfter so treibt. Das sieht dann so aus:
Die 192.168.10.60 ist die IP des Lüfters. Scheinbar pollt der Lüfter einmal pro Sekunde seinen Status per UDP. Ich versuche das mit folgendem Script abzufangen:
var PORT = 4001; var dgram = require('dgram'); var client = dgram.createSocket({ type: 'udp4', reuseAddr: true }) client.on('listening', function () { var address = client.address(); console.log('UDP Client listening on ' + address.address + ":" + address.port); client.setBroadcast(true) client.setMulticastTTL(128); client.addMembership('0.0.0.0'); }); client.on('message', function (message, remote) { console.log('From: ' + remote.address + ':' + remote.port + ' - ' + message); }); client.bind(PORT);
Ich bekomme aber einen Fehler:
Wie mache ich es richtig?
Falls es eine Rolle spielt: Mein IOBroker läuft in einer UbuntuVM. Der Host ist eine Synology Diskstation RS1221.
-
@diplinge Warum nutzt Du nicht den NodeRed Adapter im iobroker? NodeRed ist sogut in den iobroker integriert, dass ich dies als Logikmaschine nutze bevor ich Programmcode schreibe.
-
@mickym Ich habe über 20 Jahre Java entwickelt und sehe es genau anders herum. Ich schreibe lieber gut dokumentierten Code statt hunderte Kästchen zusammenzuklicken über die ich wenig Kontrolle habe und bei denen dann keiner mehr richtig durchblickt. Aus dem gleichen Grund nutze ich im IOBroker auch kein Blockly.
-
OK, mal ne blöde Frage: Wird der UDP Traffic der über WLAN von den Lüftern kommt überhaupt ins LAN weitergeleitet? Bei meinem Wireshark musste ich dafür nämlich erst mein Notebook über WLAN verbinden, damit er den WLAN Traffic mithören konnte. Über den LAN Adapter kam nämlich nichts. Ist doch eigentlich alles in einem Netzwerk oder? Mit Netzwerken kenne ich mich leider nicht so gut aus.
-
Hi @diplinge!
Da ich nun auch ein paar Blauberg reversierende Einzelraumlüftungsanlagen Vento Expert A50-1 S10 W V.2 und Expert DUO A30-1 S10 W V.2 eingebaut habe, bin ich auch an einer Integration in iobroker interessiert.Ich möchte Dir ein paar Links geben, die Dir evtl. weiterhelfen oder in die richtige Richtung schubsen könnten.
Ich bin gerne bereit, Entwicklungsstände zu testen. Kleinere Anpassungen zu Skripts traue ich mir auch zu.Es gibt eine Adapteranfrage bei den Adapter-Requests auf github.
Da werden schon einige Dinge genannt. Die Links funktionieren aber nicht alle...Kennst Du das blaubergventojs? Vielleicht kannst Du was damit anfangen.
Auch hier wurde schonmal was mit JS gemacht, aber wohl leider nicht bis zum Ende?!?
Es ist kein Adapter für iobroker, auch wenn es so scheint.Wenn Du mit JS nicht weiterkommst, könnte man es mit Python probieren: pyEcoventV2
Mit Java wurde auch schon was umgesetzt. vento-remote-arm32v6
Und zum Schluss noch was für mqtt vent_to_mqtt
Viele Grüße,
insect -
Servus,
ich habe nun einen funktionierenden Adapter gebaut, bzw. aktuell bin ich noch an der Entwicklung. Ihr findet es in meinem Github Repository: https://github.com/intellicasa/ioBroker.blauberg-ventilation
Es können bereits einzelne Werte geändert werden und der Adapter fragt alle konfigurierten Lüfter alle x Sekunden nach den aktuellen Werten.
Ich werde das in den nächsten Tagen noch vervollständigen und hoffe, dass ich spätestens bis nächste Woche eine Releaseversion im IOBroker Repo habe
Grüße,
Daniel -
@diplinge
Hi,
Ich habe mir den Adapter installiert, alles eingetragen aber die Lüfter werden nicht gefunden. Im Debug kommt auch kein Fehler.Ich habe diesen Lüfter:
VENTO Expert A50-1 S10 W V.2 -
ich habe den Adapter mittlerweile schon einige Zeit in Betrieb und immer beim schalten erhalte ich einen Fehler mit "Parameter:1".
Ebenfalls scheint es so als wäre der Typ einiger States nicht (mehr) richtig. Wenn man bspw. ON/OFF auf 1 setzt, geht der Lüfter wie gewünscht an, kurz darauf steht aber true im Datenpunkt. Ich gehe davon aus dass der Adapter mit dem Gerät synct und dort dann true steht was wiederum ausgelesen wird.
Der State boolean erzeugt dann einen Fehler, gleiches habe ich bei RMP des ersten Lüfters.Hier mal ein Log-Auszug:
2024-05-29 09:11:50.749 - silly: blauberg-ventilation.0 (202429) States user redis pmessage blauberg-ventilation.0.vents.*/blauberg-ventilation.0.vents.wohnzimmer.control.On/Off:{"val":1,"ack":false,"ts":1716966710747,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1716966710747} 2024-05-29 09:11:50.749 - debug: blauberg-ventilation.0 (202429) ID: vents.wohnzimmer.control.On/Off 2024-05-29 09:11:50.749 - error: blauberg-ventilation.0 (202429) Parameter: 1 2024-05-29 09:11:55.314 - info: blauberg-ventilation.0 (202429) State value to set for "blauberg-ventilation.0.vents.wohnzimmer.control.On/Off" has to be type "number" but received type "boolean"
Issue auf Git ist erstellt
Zu Letzt noch die Frage ob du den Adapter noch erweitern wirst, um die Funktionen die du in der "main.js" auf Git aus kommentiert hast?