hier noch mal mein Beitrag aus 'Internet der Dinge', dem Offenen Brief an Max Viessmann, als neuer Thread - Diskussionen, Fragen etc. bitte hier 🙂
Moin Freunde!
Da Viessmann zwar ein wunderschöne Schnittstelle (UDS, ISO-TP oder DoIP) eingebaut hat, das aber nur eingeschränkt und für eine 4-stellige Summe (per WAGO Gateway) zur Verfügung stellt, haben wir uns bekanntlich dran gemacht, das selber offen zu legen. 🙂
Stand der Dinge ist:
- Wir haben eine MQTT fähige Lösung zum Anschluss an den externen CAN Bus ("Stecker 91"), die es erlaubt, E3 Geräte (Wärmepumpen, Gasgeräte, (PV Speicher gerade in der Testphase, BSZ brauchen wir noch Kandidaten)) in Home Automation Systeme einzubinden. ioBroker, mosquitto, Home Assistant, Node-RED und so weiter also alles einfach machbar und bei uns schon im dauerhaften Einsatz.
- Das Ganze läuft lokal, also ohne irgendeine Hersteller oder sonstwelche Cloud, ohne Internet! Bei der CAN Bus Kopplung kann die gleichzeitige Verbindung mit dem Viessmann Server zwecks Wahrung der Gewährleistungs- und Garantieansprüche aufrechterhalten bleiben.
Eine Anbindung über den WLAN Access Point ist auch möglich, damit aber keine parallele Viesmann-Server-Verbindung mehr.
- Aktuell ist nur das Auslesen von Daten weitergehend erprobt. Bei den wichtigen Daten haben wir auch schon die Formate zur Interpretation geklärt, wir arbeiten an einer vollständigen Klärung.
Das Schreiben ist bei vielen Daten auch schon erprobt.
und last not least: das Ganze ist natürlich kostenfrei und open source! im Sinne eins besseren Miteinanders 😉
Der laufend aktualisiert werdende Stand der Linux Lösung ist auf
https://github.com/open3e/open3e
verfügbar. Einen guten 'Leitfaden' für den Einstieg hat @Hotzen-Plotz hier zur Verfügung gestellt:
https://github.com/open3e/open3e/discussions/5
Eine Sammlung von nützlichen Informationen hat @TSG initiert:
https://github.com/TheSmartGerman/open3e/wiki
(werden wir bald auch unter das open3e Projekt migrieren)
beste Grüße!
Phil
zur Beachtung: Der Zugriff auf das Zielgerät mittels dieser durch Viessmann nicht vorgesehenen Lösung zieht möglicherweise den Verlust von Gewährleistungs-/Garantieansprüchen nach sich und kann unter Umständen zu GEFAHREN FÜR LEIBLICHE UNVERSEHRTHEIT ODER SACHWERTE führen! Die Autoren schliessen jegliche Haftung aus.
Beispiele aktueller Home Assistant Integrationen von Wärmepumpen:
Vitocal 250 Kältekreisübersicht: View und Installationsanleitung gibt's hier: https://github.com/MyHomeMyData/iob.vis.vitocal250.git
Wer es ausprobieren möchte: Hier gibt es eine Anleitung.
Einen Adapter für ioBroker:
https://github.com/MyHomeMyData/ioBroker.e3oncan
und noch ein paar andre Sachen, die aber in dem Adapter integriert sind. Schaut einfach mal sein Repo an...
https://github.com/MyHomeMyData
ps. wer uns unterstützen will und kann ist herzlich willkommen!
pps. und wir freuen uns über jedes 'like' (👍) - damit zeigt ihr deutlich, dass ihr eine offene und lokale Kommunikation mit den 'One Base' Geräten eigentlich von Viessmann erwartet
vielen , vielen DANK euch beiden.
ich hatte den wert 005 bei 919
jetzt habe ich den wert b400 bei 919.
ich habe noch 2 probleme freigabe sparfunktion aussentemp . hk1 und hk2
adresse 2426 raw wert 01a6ff00ecff normaler wert soll 1 oder 0 sein ist aber -9 hk1
adresse 2427 raw wert 010a00000a00 normaler wert soll 1 oder 0 sein ist 1 hk2
beide hätte ich gere auf 0
@Juergen-B Der Default-Wert 1280 Minuten (= 21,3 Stunden) definiert die Zeitkonstante für die interne Berechnung der ATgedämpft bzw. ATgemischt bzw. ATgemittelt. Die Begriffe benutzt Viessmann leider ziemlich durcheinander. Fakt ist, es wird der Mittelwert über die AT der vergangenen 21,3 Stunden gebildet (in 10 Minuten-Abstand) und dieser Mittelwert geht dann mit dem Faktor 0,7 in die Berechnung der im Display der Vitodens angezeigten 'gedämpften Aussentemperatur' ein, also:
gedämpfte Aussentemperatur = Mittelwert * 0,7 + aktuelle AT * 0.3
Und dieser berechnete AT-Wert wiederum ist dann die Regelgröße für die Bestimmung der Soll-Vorlauftemperatur entsprechend der eingestellten Heizkurve.
Meine bisher gemessenen Werte für den Parameter 2457 (CalculatedOutsideTemperatur) bestätigen obige Berechnung-Methode.
übernimmt der vitodens die werte sofort, oder muss er ausgeschatet werden ?
Die Werte werden sofort übernommen.
Ok, aber wenn der Rohwert 1280 dem umgerechneten Wert 1280 Minuten entspricht, ist der Umrechnungsfaktor 1 und nicht 10, wie aktuell in der Datenpunktliste hinterlegt (es ist kein Faktor angegeben, dann gilt Defaultwert 10).
D.h. wir müssen das in der Datenpunktliste ändern auf
919 : O3EInt16(2, "OutsideTemperatureDampingFactor", scale=1.0)
Richtig?
Lt. Datenpunktliste ist für
2426 : O3EInt16(6, "MixerOneCircuitRoomEcoFunctionSettings", signed=True, offset = 1),
2427 : O3EInt16(6, "MixerTwoCircuitRoomEcoFunctionSettings", signed=True, offset = 1),
die Struktur nicht (vollständig) geklärt.
Hat da jemand weitere Infos?
@Juergen-B Der Wert 128 kommt aus Unterlagen zu früheren Vitodens-Versionen, in denen die Zeitkonstante noch über Menü einstellbar war (cod 90) und das war nach meiner Kenntnis mit 128 bezeichnet (Einstell-Bereich 0 - 199). Da in den Unterlagen zu den neuen Versionen nichts mehr dokumentiert ist bezüglich der ATgedämpft: kann so oder so gemacht werden 😉.
Na gut, der (umgerechete) Wert hat also die Einheit "10 Minuten" und der interne Wert hat die Einheit "Minuten". Muss ich nicht verstehen, ist halt so.
@Juergen-B Meine Erkenntnisse (nachträglich geändert, angepasst an die aktuellste Version der Service Anleitung, ohne Gewähr):
2426 definiert HK1, 2427/2428/2429 entsprechen HK2/3/4. Die Werkseinstellung beträgt jeweils +1 °C. Vorsicht: 242x.1 und 242x.3 haben unterschiedliche Wertebereiche (siehe aktuellste Service Anleitung), man sollte also schon wissen, was man tut 😉.
Warum bei @har1 für HK1 die Werte 2426.1 = -9 °C und für 2426.3 = -2 °C stehen: keine Ahnung.
das sind Energiesparen Einstellungen bei meiner vitodens 300 w.
durch die Einstellung schaltet die vitodens ab , wenn die Außentemperatur bestimmte werte hat.
die Parameter sind mit der neuen hmu dazugekommen.
ich hätte sie gerne beide auf null , also aus.
das interessante ist nur der hk1 schlägt quer, hat den Wert - 9.
hk2 hat wert 1.
beide sollen wert 0 haben.
Danke für die Info. Ich baue die Datenpunktbeschreibung entsprechend um. Müsste ja so aussehen:
2426 : O3EComplexType(6, "MixerOneCircuitRoomEcoFunctionSettings",[O3EBool(1,"State1"), O3EInt16(2, "Temperature1", scale=10.0, signed=True),O3EBool(1,"State2"), O3EInt16(2, "Temperature2", scale=10.0, signed=True)]),
Was schreibe ich denn statt "State1/2" und "Temperature1/2" sinnvolerweise rein?
@Juergen-B Sorry Jürgen, hab die Byte-Definition oben nochmal geändert, entsprechend den Änderungen in der aktuellsten Service Anleitung.
@har1 ......ich hätte sie gerne beide auf null , also aus.
Ich verstehe den Sinn dahinter zwar nicht, aber dazu musst du nur jeweils das 1. Byte auf 00 setzen (statt 01). Nur zur Info: diese Schreibfunktionen sind von mir nicht getestet/überprüft.
@har1Würdest Du bitte einen Link zu obiger Anleitung posten? Mit den Screenshots komme ich nicht klar und Google findet das pdf nicht.
hier ist der Link mont-/serv......pdf ab Seite 81
@har1Danke für den Link. Ich habe die Codec für 2426 bis 2429 angepasst. Verfügbar im Branch develop.
Schreiben im JSON-Format ist auch möglich. Dabei darauf achten, dass die JSON-Daten in Hochkommata eingeschlossen sind, also did='{"json":"data"}'
Sieht nun z.B. für 2426 so aus (Lesen, Schreiben, Lesen):
open3e $ python3 Open3Eclient.py -c vcan0 -dev vdens -v -r 2426
vdens 2426 MixerOneCircuitRoomEcoFunctionSettings {"State": "on", "OutsideTemperatureLimit": -1.0, "Unkown": 0, "RoomTemperatureLimit": 1.0}
closing 0x680 - bye!
open3e $ python3 Open3Eclient.py -c vcan0 -dev vdens -v -w 2426='{"State": "on", "OutsideTemperatureLimit": 3.0, "U
nkown": 0, "RoomTemperatureLimit": 1.0}'
write: 1664.2426 = {'State': 'on', 'OutsideTemperatureLimit': 3.0, 'Unkown': 0, 'RoomTemperatureLimit': 1.0}
success: True, code: 0
closing 0x680 - bye!
open3e $ python3 Open3Eclient.py -c vcan0 -dev vdens -v -r 2426
vdens 2426 MixerOneCircuitRoomEcoFunctionSettings {"State": "on", "OutsideTemperatureLimit": 3.0, "Unkown": 0, "RoomTemperatureLimit": 1.0}
closing 0x680 - bye!
Hat jemand schon die Parameter gefunden, die einmal den aktuellen Heizzustand anzeigt (Normal, reduziert, comfort oder aus) und mit welchen Parameter ich den Zustand umstellen kann? Ich schalte nämlich die Heizung über die Cloud api nachts ab und nur bei Bedarf ein. Das würde ich gerne auch lokal machen
ich würde mal vermuten es sind diese hier:
1415 : O3EComplexType(2, "MixerOneCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1416 : O3EComplexType(2, "MixerTwoCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1417 : O3EComplexType(2, "MixerThreeCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1418 : O3EComplexType(2, "MixerFourCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1419 : O3EComplexType(2, "MixerFiveCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1420 : O3EComplexType(2, "MixerSixCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1421 : O3EComplexType(2, "MixerSevenCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
1422 : O3EComplexType(2, "MixerEightCircuitOperationState",[O3EByteVal(1,"Mode"),O3EByteVal(1,"State")]),
die zugehörigen Werte sind vermutlich diese:
"OpModes" : {
0: "Off",
1: "Heating",
2: "Parallel Operation: Heating HotWater",
3: "Parallel Operation: Heating Cooling",
4: "TestMode",
5: "Cooling",
255: "Automatic",
},
"OpStates" : {
0: "Current", <-- ?? Wert doppelt vergeben?
0: "ShutDown",
1: "Reduced",
2: "Normal",
3: "Comfort",
5: "Fixed Value",
6: "Antifreeze protection",
7: "Energy Save: reduced",
8: "Energy Save: normal",
9: "Energy Save: comfort",
10: "Cooling: normal",
11: "Cooling: comfort",
12: "No request",
},
(# Source: Datenpunktliste Modbus und KNX Betriebsprogramm HK, s. Open3Eenums.py)
Du müsstest es mal über die App ein wenig umschalten und dabei auslesen.
Wäre schön, wenn du Rückmeldung gibst, ob es passt, dann arbeiten wir es ein.
apropos Rückmeldung... bezüglich der geforderten Abschaltung des Home Assistant Plugins und der angedrohten Rechtsmittel hat Haier bei ca.1.700 Forks und wahrscheinlich ähnlich vielen eMails einen Rückzieher gemacht und behauptet, es wäre ein Versehen gewesen bzw. automatisiert geschehen (wer's glaubt...). Jetzt schleimen sie rum sie suchen die Zusammenarbeit mit dem Entwicker und wollen den Service für die Community noch besser machen. Hier der org. Text.
Also ein 'Sieg' des open Source Gedankens innerhalb von gut einem Tag und ein Beleg, dass wir nicht machtlos sind gegenüber Konzernen, wenn wir nur zusammen an einem Strang ziehen.
Was bleibt ist ein richtig fetter Image Schaden für Haier und jede Menge schlechte Presse / Social Media. Haier US hat sich übrigens von vornherein von der Sache distanziert und gesagt, dass sie die HA Integration und OPEN IOT weiterhin unterstützen.
Grüsse!
Phil
Ja, stimmt. Den hatte ich wohl auch in Fokus, aber da habe ich mich von der OneBase Serviceanleitung in die Irre leiten lassen.
Bei abgeschalter Heizung kriege ich den Staus: Modes 0 und States 5
Reduziert: M 1 S 1
Normal: M 1 S 2
Bei aktiver WW Erwärmung ändert sich der Status auch nicht. Wenn du noch mehr Infos brauchst, dann melde dich einfach.
Aber den Modus umschalten klappt noch nicht über Iobroker. Liegt es am Iobroker Adapter oder wohl an dem Parameter?
@jokermicWas meldet denn der Adapter beim Schreibversuch im Log?
@jokermic Wenn du die Vitodens meinst, bei mir funktioniert 1415 so:
Abfragen (read) von Mode (Heizung Ein/Aus) und Status (reduziert, normal, comfort):
Schreiben (write 1415) funktioniert identisch, wobei der mitgeschriebene Status (Byte 2) nur kurz Einfluss auf den Status hat, der wird sofort durch den aktuellen Status des eingestellten Zeitprogramms überschrieben.
Dreman Guru, Juergen-B Experte II
Noch mal vielen Dank für eurere Hilfe und Unterstützung.
ich habe probiert den Parameter 2426 01a6ff00ecff die 01(am Anfang) in 00 zu ändern und damit den Sparmodus auszuschalten.
python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -raw -w 2426=00a6ff00ecff
write 1664.2426 = 00a6ff00ecff
success: True, code: 0
python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -raw -w 2426=000a00000a00
write 1664.2426 = 000a00000a00
success: True, code: 0
Das ging nicht.
Dann habe ich Parameter 2426 einfach den wert vom Parameter 2427 010a00000a00 gegeben.
Das hat funktioniert.
Jetzt kann ich wieder wie vorher meine Raum Temperatur Werte einstellen, ohne dass der Sparmodus immer die Anlage ausschaltet. Das habe ich getestet.
Ich kriege die folgende Meldung:
User command UDS WriteByDid on VC252A_HPMUMASTER_0x680.1415: Writing not allowed on this did. Pls. refer to README for further informations.
Danke für den Hinweis. Ich habe eine Vitocal 252-A und bei mir ist es ja fast gleich. Nur Heizung aus verhält sich anders