Das macht Fenecon gerne. Ein SW-Update veröffentlichen (2024.1.1), aber keine Release Notes bringen. Oder die kommen dann erst nach dem SW-Update.

Das macht Fenecon gerne. Ein SW-Update veröffentlichen (2024.1.1), aber keine Release Notes bringen. Oder die kommen dann erst nach dem SW-Update.

Na danke. Da hat der Bitdefender eines der Nuclei-Pattern gefunden und weggeräumt:

Man kann sich wundern, daß er darauf anspringt. Und wieso eigentlich nur auf eines der Pattern? Ein Vulnerability Scanner ist doch voll von verdächtigen Pattern.
Home Assistant kann für Zigbee-Geräte Firmware-Updates verteilen, macht es aber nicht freiwillig. Die Funktion ist vorhanden, aber normalerweise abgeschaltet:
Und dann in die configuration.yaml :
# automatic OTA update for IKEA Trådfri devices
zha:
zigpy_config:
ota:
ikea_provider: true
Abwarten und Tee trinken: nach ein paar Stunden hatte er z.B. den einen meiner beiden Ikea Vindstyrkas auf eine neue Version gebracht.
ZHA Toolkit: Trigger Device's Firmware Update
service: zha_toolkit.ota_notify
data: { ieee: 84:b4:db:ff:fe:17:98:62}
Und es kann wirklich lange dauern, diese Ikea Symfonsik Fernbedienung Version 2 hat geschlagene zwei Stunden gebraucht:

Da konnte man den Bytes im Log einzeln zuschauen. Obwohl ich die Fernbedienung erst letzten Samstag gekauft habe, war da eine uralte Firmware drauf, die leider dazu führte, daß diese Punkt-Tasten im Home Assistant nicht funktionieren; mit der aktuellen Version laufen die einwandfrei.
Jetzt haben die Teufel Raumfelds wieder eine physische Fernbedienung. Die Teufel App ist ja ok, aber nur zum mal eben lauter oder leiser machen, da das Telefon klingelt, sind Knöpfe doch ganz praktisch. Hier ist ein gutes HA Blueprint. Danach kann man den Knöpfen einfach die Media-Aktionen der Teufels zuweisen. Total gut. Geht aber halt nur mit der aktuellen Firmware.
Wir haben keine Toonie-Box, aber wie die genau funktioniert habe ich mich im Laden auch schon gefragt:
Früher mochte ich die immer gerne, aber vielleicht ist das Konzept etwas ausgenudelt:
Und zum Staunen: Operation Triangulation
Bei den vielen Keys wird einem ja schwindelig. Hochachtung, wenn man da noch durchblickt. Full AACSess: Exposing and exploiting AACSv2 UHD DRM for your viewing pleasure:
Da man wenige Zahlen dazu findet: unsere Vaillant Recovair 275 hat im Schnitt der letzten 10 Jahre 4514,08 kWh pro Jahr an Energie rückgewonnen.

Im Schnitt liegt die Leistungsaufnahme bei 50 Watt, das schwankt zwischen Nachteinstellung (30 Watt) und 70 Watt am Tag.
Für die Steuerung der Vaillant Recovair 275 aus dem Home Assistant heraus, bietet sich eine Hardware-Lösung an. Die Recovair hat verschiedene Eingänge:

Leider ist die Auswahl an potential-freien Relais bei Shelly sehr begrenzt, nämlich genau eines: Shelly Plus 1.
Das Relais lässt sich dafür mit einem Steckernetzteil betreiben (praktisch und sicher):
Wenn man am Shelly die beiden Input + Output Anschlüsse benutzt um an der Recovair am Port X11 einen Kontakt zwischen 0 und H herzustellen, hat man schon alles was man braucht:

Na gut, es ist nur ein 2-Stufen-Schalter (offen und 0 auf H aber nicht 0 auf D). Dafür könnte man ein zweites Relais benutzen, dann muss man nur sicherstellen, daß nicht beide gleichzeitig aktiv sind. Aber die Lüftungsstufe High aktivierbar zu machen reicht mir. 0 auf D ist ja ohnehin das normale Tagesprogramm, welches die Automatik meistens ohnehin ansteuert.

Im Home Assistant geht das über die normale Shelly-Integration und sieht dann so aus:

Aktiviert man den Schalter, aktiviert man den High-Betrieb. Schaltet man ihn aus, geht das Gerät zurück in was auch immer man programmiert hat und sonst jetzt gerade aktiv wäre.
Damit der High-Modus nicht tagelang aktiv bleibt, gibt es noch eine Automatisierung im Home Assistant, die nach drei Stunden den Schalter wieder aufhebt:


Damit ein frisch gestarteter Shelly (Firmware Update, …) den High-Modus nicht versehentlich aktiviert, sollte man im Shelly noch die Action on power auf OFF setzen:

Die Vaillant Recovair 275 ist etwas eigenartig. An den Sensocomfort lässt sie sich nicht anbinden, obwohl die ein eBus-Gerät ist. Aus dem Installationshandbuch:

Das Sensocomfort-Display bleibt einfach dunkel, wenn man es trotzdem probiert. Schade, das original Bedienpanel ist schon ziemlich rudimentär.
Also muss wieder der eBus-Adapter ran, der vertragt sich nämlich mit der Recovair 275, auch parallel mit dem Bediengerät. Der Anschluss ist einfach, der eBus ist extern (rechts unten am Gerät) rausgeführt, dort wird auch die Fernbedienung angeschlossen:

Den Adapter kann man einfach parallel mit auflegen.
Das eBus Addon für den Home Assistant kann leider nicht mit zwei Adaptern umgehen, das ist wohl zu sehr Nische. Also kommt ein neuer eBusD auf den PiHole mit drauf und postet von dort auf dem Home Assistant MQTT-Broker. Angebunden wird der eBus-Adapter über Wifi.
Die Konfiguration sieht dann so aus:
# /etc/default/ebusd:
# config file for ebusd service.
# Options to pass to ebusd (run "ebusd -?" for more info):
EBUSD_OPTS="--latency=10 --scanconfig --port=8888 --device=ens:192.168.0.123:9999 --configpath=/home/bla/ebusd-configuration/ebusd-2.1.x/de --mqttint=/etc/ebusd/mqtt-hassio.cfg --mqttjson --mqtthost 192.168.0.999 --mqttport 1883 --mqtttopic=recovair --mqttvar='area=recovair' —mqttuser=user —mqttpass=password --mqttvar=filter-direction=r|u| --log=all:notice --log=update:error"
Der eBusD findet dann zwei Geräte auf dem Bus: die Recovair (ID=WTW04) und das Bedienpanel (ID=VAI00). Dafür brauchen wir zwei CSV-Dateien. Insbesondere das FHEM-und das Loxone-Forum war hier sehr hilfreich. Dort finden sich verschiedene Versionen für verschiedene Recovair-Modelle. Nach etwas basteln und testen sind diese beiden Dateien entstanden:
Fernbedienung 15.vai00.csv:
# Before constructing the variable replacements, the messages and fields can optionally be filtered in order to use
# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates,divider/values,unit,comment
#,recov,RecoVair 275,,,,,,,,,,,
# ##### Generell #####,,,,,,,,,,,,,
*r,,,,,,B509,0D,,,,,,
*w,,,,,,B509,0F,,,,,,
r;w,,Lueftungsstufe,Lueftungsstufe,,,,2400,,,UCH,1=Tag;2=Aus;3=Auto;5=Nacht,,
r;w,,Lueftung_HI,Lueftung_HI,,,,5800,,,BCD:2,,,
r,,Uhrzeit,Uhrzeit,,,,2C00,,,VTI,,,
#
Für die Recovair 275 c0.wtw04.csv:
# type (r[1-9] w u ),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates,divider/values,unit,comment
#,recov,RecoVair 275,,,,,,,,,,,
############ Luftvolumen################,,,,,,,,,,,,,
*r,,,,,,B509,0D,,,,,,
*w,,,,,,B509,0E,,,,,,
w,,Lueftung = 50m³/h,Lueftung = 50m³/h,,,,1500a600,,,,,,
w,,Lueftung = 55m³/h,Lueftung = 55m³/h,,,,1500b700,,,,,,
w,,Lueftung = 60m³/h,Lueftung = 60m³/h,,,,1500c800,,,,,,
w,,Lueftung = 65m³/h,Lueftung = 65m³/h,,,,1500d800,,,,,,
w,,Lueftung = 70m³/h,Lueftung = 70m³/h,,,,1500e900,,,,,,
w,,Lueftung = 75m³/h,Lueftung = 75m³/h,,,,1500fa00,,,,,,
w,,Lueftung = 80m³/h,Lueftung = 80m³/h,,,,15000a01,,,,,,
w,,Lueftung = 85m³/h,Lueftung = 85m³/h,,,,15001b01,,,,,,
w,,Lueftung = 90m³/h,Lueftung = 90m³/h,,,,15002c01,,,,,,
w,,Lueftung = 95m³/h,Lueftung = 95m³/h,,,,15003c01,,,,,,
w,,Lueftung = 100m³/h,Lueftung = 100m³/h,,,,15004d01,,,,,,
w,,Lueftung = 105m³/h,Lueftung = 105m³/h,,,,15005e01,,,,,,
w,,Lueftung = 110m³/h,Lueftung = 110m³/h,,,,15006e01,,,,,,
w,,Lueftung = 115m³/h,Lueftung = 115m³/h,,,,15007f01,,,,,,
w,,Lueftung = 120m³/h,Lueftung = 120m³/h,,,,15009001,,,,,,
w,,Lueftung = 125m³/h,Lueftung = 125m³/h,,,,1500a001,,,,,,
w,,Lueftung = 130m³/h,Lueftung = 130m³/h,,,,1500b101,,,,,,
w,,Lueftung = 135m³/h,Lueftung = 135m³/h,,,,1500c201,,,,,,
w,,Lueftung = 140m³/h,Lueftung = 140m³/h,,,,1500d201,,,,,,
w,,Lueftung = 145m³/h,Lueftung = 145m³/h,,,,1500e301,,,,,,
w,,Lueftung = 150m³/h,Lueftung = 150m³/h,,,,1500f401,,,,,,
w,,Lueftung = 155m³/h,Lueftung = 155m³/h,,,,15000402,,,,,,
w,,Lueftung = 160m³/h,Lueftung = 160m³/h,,,,15001502,,,,,,
w,,Lueftung = 165m³/h,Lueftung = 165m³/h,,,,15002602,,,,,,
w,,Lueftung = 170m³/h,Lueftung = 170m³/h,,,,15003602,,,,,,
w,,Lueftung = 175m³/h,Lueftung = 175m³/h,,,,15004702,,,,,,
w,,Lueftung = 180m³/h,Lueftung = 180m³/h,,,,15005802,,,,,,
w,,Lueftung = 185m³/h,Lueftung = 185m³/h,,,,15006802,,,,,,
w,,Lueftung = 190m³/h,Lueftung = 190m³/h,,,,15007902,,,,,,
w,,Lueftung = 195m³/h,Lueftung = 195m³/h,,,,15008a02,,,,,,
w,,Lueftung = 200m³/h,Lueftung = 200m³/h,,,,15009a02,,,,,,
w,,Lueftung = 205m³/h,Lueftung = 205m³/h,,,,1500ab02,,,,,,
w,,Lueftung = 210m³/h,Lueftung = 210m³/h,,,,1500bc02,,,,,,
w,,Lueftung = 215m³/h,Lueftung = 215m³/h,,,,1500cc02,,,,,,
w,,Lueftung = 220m³/h,Lueftung = 220m³/h,,,,1500dd02,,,,,,
w,,Lueftung = 225m³/h,Lueftung = 225m³/h,,,,1500ee02,,,,,,
w,,Lueftung = 230m³/h,Lueftung = 230m³/h,,,,1500fe02,,,,,,
w,,Lueftung = 235m³/h,Lueftung = 235m³/h,,,,15000f03,,,,,,
w,,Lueftung = 240m³/h,Lueftung = 240m³/h,,,,15002003,,,,,,
w,,Lueftung = 245m³/h,Lueftung = 245m³/h,,,,15003003,,,,,,
w,,Lueftung = 250m³/h,Lueftung = 250m³/h,,,,15004103,,,,,,
w,,Lueftung = 255m³/h,Lueftung = 255m³/h,,,,15005203,,,,,,
w,,Lueftung = 260m³/h,Lueftung = 260m³/h,,,,15006203,,,,,,
w,,Lueftung = 265m³/h,Lueftung = 265m³/h,,,,15007303,,,,,,
w,,Lueftung = 270m³/h,Lueftung = 270m³/h,,,,15008403,,,,,,
w,,Lueftung = 275m³/h,Lueftung = 275m³/h,,,,15009403,,,,,,
w,,Lueftung = 280m³/h,Lueftung = 280m³/h,,,,1500a503,,,,,,
w,,Lueftung = 285m³/h,Lueftung = 285m³/h,,,,1500b603,,,,,,
w,,Lueftung = 290m³/h,Lueftung = 290m³/h,,,,1500c603,,,,,,
w,,Lueftung = 295m³/h,Lueftung = 295m³/h,,,,1500d703,,,,,,
w,,Lueftung = 300m³/h,Lueftung = 300m³/h,,,,1500e803,,,,,,
r;w,,Soll-Volumenstromkorrektur,Soll-Volumenstromkorrektur,,,,2000,,,D1B,,,
r9;w,,Waermerueckgewinnung,Waermerueckgewinnung,,,,0a00,,,UCH,1=EIN;2=AUS,,
*r,,,,,,B509,29,,,IGN:2,,,
r1;w,,TempInletAir_SAI,Temperatur Zuluft,,,,0100,,,temp,,,
r1;w,,TempOutsideAir_SAO,Temperatur Aussenluft,,,,0200,,,temp,,,
r1;w,,TempWasteAir_EAI,Temperatur Abluft,,,,0300,,,temp,,,
r1;w,,TempOutgoingAir_EAO,Temperatur Fortluft,,,,0400,,,temp,,,
r1;w,,Roomtemp,Zimmertemperatur,,,,0000,,,temp,,,
r;w,,Unterdruckschutz,Unterdruckschutz,,,,4700,,,UCH,1=AN;0=AUS,,
r5;w,,Ertrag_Gesamt_kWh,Ertrag_Gesamt_kWh,,,,4d00,,,UIN,,,
r5;w,,Heatrecovery,Wärmerueckgewinnung,,,,8c03,,,UCH,0=auto;1=on;2=off,,Aktuelle Uhrzeit
r;w,,Desiredtemp,Wunschtemp,,,,140e,,,temp,,°C,
*r,,,,,,B509,29,,,,,,r9,,BypassStellung,BypassStellung,,,,0900,,,IGN:2;percent0,,,
Die Dateien:
Lässt man den eBusD eine Weile laufen, sammeln sich einige relevante Werte an:
$ebusctl -p 8888 find -d -r -w -p
broadcast queryexistence = (empty for 31fe07fe00 / )
broadcast signoflife = (empty for 10fe07ff00 / )
scan.15 = Vaillant;VAI00;0125;8901
scan.15 id = 21;11;24;0020015281;0907;005605;N3
scan.c0 = Vaillant;WTW04;0127;9001
scan.c0 id = 21;11;33;0010005354;0006;005593;N5
vai00 Lueftung_HI = 0
vai00 Lueftungsstufe = Auto
vai00 Uhrzeit = 19:59:11
wtw04 BypassStellung = 0
wtw04 Ertrag_Gesamt_kWh = 54160
wtw04 Lueftung = 70m³/h = (empty for 10c0b509050e1500e900 / 00)
wtw04 Roomtemp = 17.94
wtw04 Soll-Volumenstromkorrektur = 5
wtw04 TempInletAir_SAI = 7.50
wtw04 TempOutgoingAir_EAO = 11.88
wtw04 TempOutsideAir_SAO = 16.38
wtw04 TempWasteAir_EAI = 17.56
wtw04 Unterdruckschutz = AN
wtw04 Waermerueckgewinnung = EIN
Das kann dann in Home Assistant so aussehen:

Die Messwerte sind etwas daneben; die Thermometer sind halt im Gerät nahe am Wärmetauscher verbaut. Wenn die Frischluft bis dahin gekommen ist, hat sie sich ja schon erwärmt.

So richtig viel steuern kann man bei der Recovair 275 nicht, im Kern liefert sie einige interessante Temperatur-Messwerte. Die verfügbaren Informationen:
$ ebusctl -p 8888 find -F circuit,name,comment
broadcast,datetime,Datum/Uhrzeit
broadcast,error,Fehlernachricht
broadcast,hwcStatus,Status Warmwasser
broadcast,id,Identifikation
broadcast,id,Identifikation
broadcast,load,Quick - WW Speicherladung
broadcast,outsidetemp,Außentemperatur
broadcast,signoflife,Lebenszeichen
broadcast,vdatetime,Datum/Uhrzeit
general,valuerange,Register Wertebereich
memory,eeprom,EEPROM Daten lesen
memory,ram,RAM Daten lesen
scan,id,Scan ID
scan.15,,
scan.15,id,Scan ID
scan.c0,,
scan.c0,id,Scan ID
vai00,Lueftung_HI,Lueftung_HI
vai00,Lueftungsstufe,Lueftungsstufe
vai00,Uhrzeit,Uhrzeit
wtw04,BypassStellung,BypassStellung
wtw04,Desiredtemp,Wunschtemp
wtw04,Ertrag_Gesamt_kWh,Ertrag_Gesamt_kWh
wtw04,Heatrecovery,Wärmerueckgewinnung
wtw04,Roomtemp,Zimmertemperatur
wtw04,Soll-Volumenstromkorrektur,Soll-Volumenstromkorrektur
wtw04,TempInletAir_SAI,Temperatur Zuluft
wtw04,TempOutgoingAir_EAO,Temperatur Fortluft
wtw04,TempOutsideAir_SAO,Temperatur Aussenluft
wtw04,TempWasteAir_EAI,Temperatur Abluft
wtw04,Unterdruckschutz,Unterdruckschutz
wtw04,Waermerueckgewinnung,Waermerueckgewinnung
Eine Live-Anzeige des Wärmepumpen-Kreislaufes in Home Assistant:

Die Messwerte kommen über den eBusD und myPyllant aus der Vaillant ArothermPlus. Das Wärmekreislauf-Bild kann man als Picture Element einbinden, im Prinzip ist das nur ein Hintergrundbild. Und dann habe ich einfach die Temperaturen als State-Label Elemente darauf gelegt. Die Positionen der Temperaturen kann man sich über die Prozent-Angaben zurecht schieben.
Das Hintergrund-Bild kann Home Assistant selber hosten. Nach Anleitung lässt sich das integrierte Hosting aktivieren. Das SSH-Addon hat SCP-Support, damit kann man dann das Bild auf den Home Assistant raufschieben:
scp wp.png benutzer@192.168.0.999:/root/config/www/wp.png
Danach muss man HA einmal durchstarten.
Wenn man die State-Label (die Temperaturen) anklickt, bekommt man sogar noch die Detail-Seite zu dem jeweiligen Sensor angezeigt:

So sieht das im Home Assistant Editor dann aus:
type: picture-elements
title: Kreislauf
image: http://192.168.0.999:8123/local/wp.png
elements:
- type: state-label
entity: sensor.outdoor_temperature
style:
top: 51%
left: 10%
- type: state-label
entity: sensor.arotherm_hmu00_airintaketemp
style:
top: 30%
left: 9%
- type: state-label
entity: sensor.arotherm_hmu00_compressorinlettemp_temps2
style:
top: 12%
left: 40%
- type: state-label
entity: sensor.arotherm_hmu00_compressoroutlettemp_temps2
style:
top: 12%
left: 61%
- type: state-label
entity: sensor.arotherm_hmu00_condensationtemp_temps2
style:
top: 30%
left: 90%
- type: state-label
entity: sensor.arotherm_hmu00_setmode_flowtempdesired
style:
top: 51%
left: 90%
- type: state-label
entity: sensor.arotherm_hmu00_condensoroutlettemp_temps2
style:
top: 64%
left: 90%
- type: state-label
entity: sensor.arotherm_hmu00_electronicexpansionvalveoutlettemp_temps2
style:
top: 76%
left: 41%
- type: state-label
entity: sensor.arotherm_hmu00_evaporationtemp_temps2
style:
top: 64%
left: 9%
Endlich ein Haushälter mit Staubsauger für Home Assistant: Spook.

In meinem Home Assistant haben sich viele Karteileichen angesammelt, die endlich mal jemand wegräumt: Spook.
Kann neben Aufräumen noch mehr: Dashboards prüfen, Geräte an- und ausschalten, …
Bei den ganzen Experimenten mit eBusD, … hat sich eine Menge Schrott angesammelt. Und in Home Assistant muss man die Leichen sonst alle manuell raustragen. Ein sehr nützlicher Geist der Spook.
Und die Mac-Rechtschreibkontrolle will in diesem Artikel aus Spook ständig Spock machen; der hätte es mit Geistern bestimmt nicht so.