NEWS
Test ViessmannAPI v2.0.0
-
@wmendelin was sagt v2.4.0 oder die github version
-
@ilovegym
Die Idee ist naheliegend, bringt allerdings keine Änderung.
Problem an der Sache ist, dass das Feld
viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue
offenbar ein object sein muss. Setzte ich da [string String] beschwert er sich lautstark im Log:"{"viErrorId":"|00-df1620f45a6c415286355551f42a7806-5c26a61706d64cad-01.baf6ebd4_","statusCode":400,"errorType":"DEVICE_COMMUNICATION_ERROR","message":"","extendedPayload":{"httpStatusCode":"BadRequest","code":"400","reason":"VALIDATION_ERROR","details":"The parameter newSchedule="[string String]" does not meet the constraints {"type":"Schedule","modes":["5/25-cycles","5/10-cycles","on"],"maxEntries":8,"resolution":10,"defaultMode":"off","overlapAllowed":true}: The parameter should be an object."}}"
-
Nach einem kurzen Blick über die verfügbaren Datenpunkte, die man setzen kann, gibt es wohl keinen, mit dem man die Primärpumpe einer Wasser/Wasser-Wärmepumpe (oder wahlweise die ganze Anlage) abschalten kann. Sehe ich das richtig?
Ich möchte vermeiden, dass die Primärpumpe (Grundwasserpumpe) bei einer Leckage im Keller mir denselben flutet. Habe deshalb einen Tuya-Wassersensor angeschafft, mit dessen Hilfe ich über die Viessmann-API in jedem Fall eine zuverlässige Abschaltung erreichen will. Erst mal egal, ob nur die Primärpumpe deaktiviert wird, oder gleich die ganze Wärmepumpe abgeschalten wird. Hauptsache, die Primärpumpe fördert dann nicht mehr.
Alarm würde ja über die Tuya "Smart Home" App kommen. Aber was ist, wenn das Smartphone nachts aus ist oder ich nicht zuhause?Hat einer von euch eine Idee, wie man das realisieren könnte?
Wenn sonst keine Möglichkeit besteht, das über die API zu machen, habe ich mir schon überlegt, einen Smart Switch zusätzlich anzuschaffen, der im Fehlerfall die Sicherheitskeitskette (Klemmen X3.8 / 3.9) unterbricht. Aber möglicherweise geht's ja doch über die API ??? -
ich schalte die Zirkulationspumpe so (das Skript hat hier auch schon einer mal gepostet):
// schedule zum einschalten, allerdings nur zwischen 6 und 21 uhr var pump_on = '{"mon":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"tue":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"wed":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"thu":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"fri":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"sat":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"sun":[{"start":"06:00","end":"21:00","mode":"on","position":0}]}' // schedule leeren - pumpe ausschalten var pump_off = '{"mon":[], "tue":[],"wed":[],"thu":[],"fri":[],"sat":[],"sun":[]}' on({id: '0_userdata.0.Schalter.Zirkulationspumpe'/*Zirkulationspumpe*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "")) { setState('viessmannapi.0.84605.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue', JSON.parse(pump_on)); // oder pump_off } else { setState('viessmannapi.0.84605.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue', JSON.parse(pump_off)); // oder pump_off } });
Da gibts keine Fehlermeldungen bei mir..
-
Also sowas wuerde ich nicht ueber die Api im Netzwerk machen, wenn Viessman Wartungsarbeiten haben oder so, dann funktioniert das nicht.
Mit dem tuya-Adapter holst du dir den Wassermelder auch lokal in den iobroker, sofern er nicht mit Batterien betrieben ist..
und dann ne Schaltsteckdose oder n Sonoff Basic oder Shelly PM zwischen die Pumpe, damit du abschalten kannst.. -
@ilovegym
Das von dir gepostete Script hatte ich als Basis für die Weiterentwicklung genommen und dahingehend verbessert, dass die an der Wärmepumpensteuerung eingestellten Werte vorher ausgelesen und zwischengespeichert werden, dann die Zirkulationspumpe eingeschaltet wird
(bei mir ganztägig - 0 bis 24 Uhr) für ein paar Minuten. Am Ende wird der vorher zwischengespeicherte Wert wieder zurück geschrieben.
Heißt: Ändert man an der Wärmepumpensteuerung den Zeitplan für die Zirkulation, bleibt dieser nach dem Scriptlauf auch so erhalten.Das Script selbst funktioniert einwandfrei:
async function start_zirk() { // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}' schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.properties.entries.value'/*value*/).val; setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule',JSON.parse(JSON.stringify(schedule_sichern))); setState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue', JSON.parse(pump_on)); // oder pump_off } async function stop_zirk() { // Der urspüngliche Schedule wird zurückgeschrieben. //schedule_wiederherstellen = getState("0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule").val; schedule_wiederherstellen = schedule_sichern; setState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue', JSON.parse(schedule_wiederherstellen)); } on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == true) { await start_zirk(); log ("Zirkulationspumpe läuft für zwei Minuten"); await wait(120000); setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn */, false, true); await stop_zirk(); } });
es kommt lediglich beim Starten und Stoppen die Meldung im Log
State value to set for "viessmannapi.0.133007.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue" has to be one of type "string", "number", "boolean" but received type "object"
Diese Meldung müsste im übrigen bei dir genauso auftauchen, in deinem Script ist das Zeile 10. Kommt bei dir kein Logeintrag im iobroker-Log? -
@ilovegym
Na ja, ein Restrisiko besteht natürlich weiterhin. Solange man sein Gerät nicht aus der Tuya-Cloud befreit, ist man mit einer Steckdose aber weiterhin von einem Provider abhängig.
Über die Viessmann API hätte halt den Charme, dass man nicht noch ein weiteres Gerät haben muss und wäre somit meine favorisierte Lösung.Der Wassermelder läuft im Übrigen mit einer Batterie (vermutlich alle haben eine)
==========================
Update: Dank eines Hinweises auf "rustimation.eu" habe ich es jetzt für mich zufriedenstellend hinbekommen. Die Abschaltung ist zwar nicht 100%ig, da zumindest bei Frostgefahr in der Anlage diese sich wieder aktivieren würde. Aber eine Zeitlang wäre zumindest "aus" und somit ausreichend Gelegenheit, zu reagieren.
Script hierzu://Bei Wasser am Sensor neben dem Primärwärmetauscher wird die //Wärmepumpe abgeschalten. Zum Einschalten in der Steuerung der WP //die Betriebsart "Warmwasser, Heizen und Kühlen" einstellen oder Datenpunkt //"viessmannapi.0.133000.0.features.heating.circuits.1.operating.modes.active.commands.setMode.setValue" //auf "dhwAndHeatingCooling" setzen on({ id: [].concat(['tuya.0.bf709929d1fb102bc7am0v.1'/*watersensor state*/]), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") == false) { setState('viessmannapi.0.133000.0.features.heating.circuits.1.operating.modes.active.commands.setMode.setValue', "standby"); sendTo("email", "send", { text: 'Heizung Alarm. Leckage an Primärpumpe oder Heizung?', to: '<deineMailAdresse>@<provider.com>', subject: 'Alarm Heizung Leckage', from: '<deineMailAdresse>@<provider.com>' }); } });
-
Danke fuer die Infos und das Update, ich finds immer gut, wenn andere auch Ihre Scripte teilen, und wissen lassen, woran es gelegen hat...
-
@io2345 said in Test ViessmannAPI v2.0.0:
Zur Info, nicht dass andere sich wundern: Das Zirkulationspumpenscript (fünf Posts weiter oben) bringt mittlerweile nicht mehr den gewünschten Effekt, warum auch immer.
Mit
pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}' setState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue', JSON.parse(pump_on));
kann ich den setValue-Datenpunkt zwar beschreiben, die Zirkulationspumpe startet jedoch nicht (zumindest bei mir). Den Grund hierfür kenne ich noch nicht, wollte aber die Info weitergeben.
-
@io2345 sagte in Test ViessmannAPI v2.0.0:
@io2345 said in Test ViessmannAPI v2.0.0:
Zur Info, nicht dass andere sich wundern: Das Zirkulationspumpenscript (fünf Posts weiter oben) bringt mittlerweile nicht mehr den gewünschten Effekt, warum auch immer.
Danke, hat das bei dir immer zuverlässig funktioniert? Bei mir nicht, daher bin ich auf ein Kabel mit Schaltsteckdose umgestiegen…
-
@mading
Danke für deine Info. Das kann ich, ehrlich gesagt, gar nicht beurteilen. Bei der Einrichtung damals hatte es funktioniert, ich hatte die Hand an der Pumpe. Kann aber natürlich sein, dass es zwischendurch auch schon nicht funktionierte. Merkt man ja nicht unmittelbar, da nach einer gewissen Zeit ja ohnehin warmes Wasser kommt.
Sobald ich Zeit finde, schaue ich mir das nochmal an.Eine API die nicht zuverlässig funktioniert, ist jedenfalls nicht zu gebrauchen, da gebe ich die vollumfänglich recht.
-
@io2345
Wenn ich mir die Doku der API auf
Viessmann Developers
so ansehe, kann doch da ohnehin was nicht stimmen. Da steht:heating.circuits.N.dhw.pumps.circulation.schedule
Shows the schedule of the domestic hot water (DHW) pump circulation for heating circuit N and provides a command to set a new scheduleAber den Pfad gibt es im Viessmann-Adapter des ioBroker gar nicht. Unter
...heating -> circuits -> 1 ->
gibt's bei mir kein "dhw."
Der naheliegendste Eintrag heißt bei mir "circulation". Das passt aber mit der Doku nicht zusammen.Kann es sein, dass es daran liegt, dass es nicht funktioniert?
Die oben genannten Pfade liegen alle unterhalb von
viessmannapi.0.<Anlagen-ID>.0.features. -
@io2345 Der Adapter scheint nicht alle Datenpunkte aus der Viessmann Developers Beschreibung zu liefern. Es gibt zwar eine aktuellere Version des Adapters auf Github (2.4.0), aber auch da sind nicht alle Datenpunkte drin (hab sie gerade mal testweise installiert). Am besten, du machst auf Github mal ein Issue auf und fragst mal nach - wenn ich es richtig sehe, wird an dem Adapter gerade aktiv gearbeitet.
-
@io2345 Nicht alle Datenpunkte sind für alle Geräte verfügbar (hierfür gab es mindestens letztes Jahr auch keine Matrix seitens Viessmann) und dann gibt es noch Datenpunkte, die man käuflich erwerben muss (hier war der "Tipp" von Viessmann an mich mal den kostenlosen Testmonat dafür zu nutzen , um rauszufinden, welche Datenpunkte für meine Anlage gegen Geld zusätzlich zur Verfügung stehen würden)...
Meine Erfahrung mit dem Adapter: Wenn er was nicht als Datenpunkt anbietet, dann liefert Viessmann die Werte gar nicht erst... -
@tomracoon der Adapter liefert laut Entwickler alle verfügbaren Datenpunkte. Die API-Doku ist für die Katz. Bekomme für meine Wärmepumpe z.B. keine Stromverbrauchsdaten, auch nicht wenn ich die API direkt Anfrage ohne den Adapter zu nutzen. Laut Doku soll es den Endpunkt jedoch geben.
-
@sentiq Das entscheidende Wort ist verfügbar im Sinne des Gerätes und des Abomodels...
Die Stromdaten haben mich auch Interessiert, dafür benötige ich aber das Paket für 19,90 im Monat und das ist es mir einfach nicht Wert (mal abgesehen davon, dass ich es Unverschämt finde, dass ich für meine eigenen Daten zahlen soll...) -
@io2345 Kann ich mich einfach auf der Vissmann-Seite anmelden (um da schon zu lesen) obwohl ich noch keine Vissmann-Heizung habe - die kommt erst im Juni.
-
@rene55
Denke schon, das hat mit einer Viessmann-Anlage erst mal ja nichts zu tun. -
@tomracoon
Ja, weiß schon. Allerdings ist dieser Datenpunkt als "Basic" gekennzeichnet. Der kost' also nix. Jetzt müsste es ihn nur noch geben -
Ich find es ehrlich gesagt auch eine Unverschämtheit von Viessmann, dass man für seine eigenen Daten zahlen soll. Eigentlich müsste ich von Viessmann dafür bezahlt werden, dass sie anhand meiner Daten ihre Produkte optimieren und verbessern dürfen. Aber seitdem die Amerikaner dort das Sagen haben scheint das üblich zu werden.