Viessmann Vitodens über Homee steuern?

Hallo zusammen,

im Zuge dieser ganzen Diskussionen um Einsparungen beim Gas, bin ich ans überlegen gekommen ob ich meine Gasheizung Viessmann Vitodens über Vitoconnect 100 mit Homee steuern kann.
Ich denke dabei daran dass man z.B. bei längerer Abwesenheit das Aufheizen des Warmwasser absschaltet, Temperatur der Fussbodenheizungtemperatur in Nachtmodus umstellen beim Schlafen gehen, usw.

Mit der ViCare-App kann man ja schon einiges machen, und Viessmann stellt auch eine API zur Verfügung.
Ich weiss, mit Boardmitteln geht das nicht. Ich hatte auch schon mal ioBroker und HA auf einem Raspi rumgespielt, aber ich habe das System nicht wirklich verstanden. Da müsste ich mich dann nochmal mit beschäftigen.
Mit viel Lesen und den Videos von Micha hatte ich es aber schon geschafft aus HA ein virtuelles Gerät in Homee einzubinden. :slight_smile:

Bevor ich mir das antue, frage ich mich

  • ob es sich lohnt, also eine Einsparung bringt
  • wieviel Wissen man in ioBroker oder HA braucht um so etwas umzusetzen
  • und steuert schon jemand seine Vitodens über Homee mit der API (also nicht nur Werte auslesen)?

Bin gespannt auf eure Antworten.
Gruss Peter

Dass es zu den eh schon vorhandenen Einstellmöglichkeiten eine Einsparung bringen kann, bezweifle ich schon sehr. Was sollte da noch mehr optimiert werden können? Soweit ich weiß hat die Vitodens ja ua auch ein Ferienprogramm etc…

Ich bin gerade an einem ähnlichen Projekt dran. Allerdings hat mein Kessel eine Trimatik-Steuerung. Da geht gar nix über Fernsteuerung etc. Daher habe ich mir eine neue Steuerung, basierend auf einem ESP32, gebaut. Diese bildet die Funktionalität der Trimatik ab und lässt sich zusätzlich über MQTT auslesen und steuern.
Ich sehe Einsparpotential in einigen Punkten; z.B. springt häufiger paar Minuten vor der Nachtabsenkung nochmal der Brenner an. Der Kessel ist dann schön warm und die Zirkulationspumpe ist aus. Die Wärme verpufft dann über Nacht einfach.

1 „Gefällt mir“

Ich habe unsere Viessmann Therme dahingehend optimiert, daß sie nur noch morgens und abends in je einem kurzen Zeitfenster Warmwasser erzeugt, abgestimmt auf unseren normalen Tagesablauf.
Um auch außerhalb dieser Zeiten die Warmwassererzeugung und die Umwälzpumpe anzustoßen, gibt es ja in der ViCare App die Schnellauswahl „Ich möchte Warmwasser“.
Und wenn man die Viessmann Therme per API an ioBroker anbindet, kann man diese Schnellauswahl auch per Script anstoßen.

Also habe ich einen Node Red Flow gebastelt: wenn eine Taste vom FT55 im Bad (an homee) gedrückt wird, dann wird das Script in ioB aufgerufen, das wiederum die WW Einmalladung für max. 15 Minuten startet (inkl. Alexa-Ansage „Dein Warmwasser wird jetzt aufgewärmt“) bzw. wenn das Warmwasser noch warm genug ist das Script eben nicht aufruft (inkl. Alexa-Ansage „Dein Warmwasser ist bereits warm“).
Funktioniert seit vielen Monaten tadellos.

4 „Gefällt mir“

Wenn du eine FBH hast, wird alles wenig bringen. Deine Heizung kann zwar an homee via hih angeschlossen werden, aber die FBH ist so träge, das erst tagelange abwesenheit einen unterschied bringen. Du bist ja schon suf nieder-temperatur heizkreisläufe :wink:

Danke für euer Feedback.
Sorry das ich mich jetzt melde, aber ich bin meist die Woche über weg.

@Jensen78/@Poolcat: Das Einsparpotential ist mir auch nicht klar, deswegen habe ich ja mal nach euren Erfahrungen gefragt.
Ich habe da auch keine bestimmte Ersparnisim Kopf, es soll aber auch nicht uneffizienter werden wie vorher. Spass am Basteln ist ja auch ein Argument. :slight_smile:
Wir haben einen ziemlich unregelmässigen Tagesablauf. Mal ist vormittags niemand zuhause, mal nachmittags, mal den ganzen Tag. Die Zeitprogramme laufen aber den ganzen Tag. Also könnte man ja Warmwasser an-/abschalten wenn man geht oder kommt.
Bei der FBH sehe ich das auch so, dafür ist sie wohl zu träge. Aber vielleicht würde ja z.B. eine Absenkung von 1 Grad bei Abwesenheit etwas bringen.
Für Abwesenheiten länger als 1 Tag nehmen wir das Ferienprogramm, aber das könnte man ja auch mit Homee schalten. :slight_smile:

@SteffenTM: Das muss ich mir bei meiner Viessmann ansehen ob die auch dieses Verhalten hat.

@pino73: Das probiere ich direkt mal aus. Ich habe jetzt das WW mal ausgeschalten, mal sehen wie lange man damit auskommt.
Die Scripte in ioB sind in Java, oder? Da habe ich gar keine Ahnung.Könnte man die Einmalladung auch über NoteRed anstossen? Würdest du mir so ein Script mal zur Verfügung stellen? Mal sehen ob ich damit klar komme.

Die Syntax und möglichen Befehle sind hier beschrieben:

Du kannst Java Script auch in NR aufrufen. Da man aber eh ioB davor braucht für die Schnittstelle zur Viessmann, habe ich die Scripte auch in ioB laufen.
Wenn ich mal wieder am Rechner sitze, kann ich die Scripte und den Flow mal schicken, am Micky-Maus-Kino ist das etwas frickelig.

Super, das schaue ich mir mal an. Danke!

Kennst du eigentlich für ioB eine einfache Anleitung? Was ich gefunden hatte war entweder zu oberflächlich, oder dann shcon zu weit fortgeschritten für mich.

Keine Eile mit dem schicken, ich fange damit nicht sofort an. Ich muss sowieso ioB nochmal neu aufsetzen.

Einfach mal loslegen (hatte ich auch so gemacht). Im iob-Forum findet man auch reichlich Input. Sonst gerne hier fragen, es gibt einige iob-Nutzer. Den homee-Adapter für iob finde ich wirklich brauchbar.

2 „Gefällt mir“

Ich habe viel aus den YouTube Videos von Micha abgeschaut.
Der homee Node für Node Red ist mittlerweile deutlich komfortabler als in den ersten Videos, aber um etwas über ioBroker und Node Red zu lernen sind die Videos super.

https://www.youtube.com/channel/UCUJyR-uK4m3KtLLRrKfUPwg/videos?view=0&sort=da&flow=grid

2 „Gefällt mir“

Ja das könnte ich wirklich mal neu gestalten :wink:.

3 „Gefällt mir“

Die Videos von Micha kenne ich. Damit habe ich es auch geschafft mein erstes virtuelles Gerät in Homee zu erstellen. :slight_smile: Auf dem Niveau bin ich aber stehen geblieben.
Aber ich werde das Thema nochmal angehen.

Hier ist das Script zum Aktivieren der WW Einmalladung,
abgelegt in ioB Scripts unter common → Heizung → heating_dhw_oneTimeCharge_activate

setState('viessmannapi.0.123456.0.features.heating.dhw.oneTimeCharge.commands.activate.setValue','true')

und zum Deaktivieren (common → Heizung → heating_dhw_oneTimeCharge_deactivate)

setState('viessmannapi.0.123456.0.features.heating.dhw.oneTimeCharge.commands.deactivate.setValue','true')

Und hier ist der Node Red Flow:

[
    {
        "id": "98ef4cf5.1a8f38",
        "type": "tab",
        "label": "WW Einmal-Ladung",
        "disabled": false,
        "info": ""
    },
    {
        "id": "b040757b.411cc8",
        "type": "ioBroker in",
        "z": "98ef4cf5.1a8f38",
        "name": "Bad | Taster Spiegel.ButtonState",
        "topic": "homee.0.TwoButtonRemote-162.ButtonState-862",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "true",
        "x": 150,
        "y": 140,
        "wires": [
            [
                "79dc92cb.710e24"
            ]
        ]
    },
    {
        "id": "86d115e0.24f11",
        "type": "trigger",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "op1": "true",
        "op2": "false",
        "op1type": "bool",
        "op2type": "bool",
        "duration": "2",
        "extend": false,
        "units": "s",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 650,
        "y": 260,
        "wires": [
            [
                "ece39c92.787cc8"
            ]
        ]
    },
    {
        "id": "196309df.38782e",
        "type": "ioBroker in",
        "z": "98ef4cf5.1a8f38",
        "name": "WW Temperatur IST",
        "topic": "viessmannapi.0.123456.0.features.heating.dhw.sensors.temperature.hotWaterStorage.properties.value.value",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "true",
        "x": 110,
        "y": 200,
        "wires": [
            [
                "889259cb.eec9c"
            ]
        ]
    },
    {
        "id": "82f94369.fd9fc",
        "type": "ioBroker in",
        "z": "98ef4cf5.1a8f38",
        "name": "WW Zirkulations-Pumpe",
        "topic": "viessmannapi.0.123456.0.features.heating.dhw.pumps.circulation.properties.status.value",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "true",
        "x": 130,
        "y": 280,
        "wires": [
            [
                "6b1a584b.f03688"
            ]
        ]
    },
    {
        "id": "79dc92cb.710e24",
        "type": "function",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "func": "var circulation = flow.get(\"circulation\");\nvar hotWaterStorage = flow.get(\"hotWaterStorage\");\n\nif (msg.payload === \"1\" && hotWaterStorage >= 47.0 && circulation ===\"on\"){\n    return [{payload:(\"Dein Warmwasser ist bereits warm.\")},null];}\nelse if (msg.payload === \"1\" && hotWaterStorage < 47.0 || circulation ===\"off\"){\n    return [null,msg];}",
        "outputs": 2,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 420,
        "y": 140,
        "wires": [
            [
                "4fee0204.132e04"
            ],
            [
                "30ac84df.e65664",
                "db08420b.f96",
                "db63097e.628898"
            ]
        ]
    },
    {
        "id": "4fee0204.132e04",
        "type": "ioBroker out",
        "z": "98ef4cf5.1a8f38",
        "name": "speak \"WW ist bereits warm\" auf Echo Dot Bad",
        "topic": "alexa2.0.Echo-Devices.G0xxXX0xx5xxxXxx.Commands.speak",
        "ack": "false",
        "autoCreate": "false",
        "x": 940,
        "y": 140,
        "wires": []
    },
    {
        "id": "2da41389.ba21b4",
        "type": "ioBroker in",
        "z": "98ef4cf5.1a8f38",
        "name": "heating.dhw.oneTimeCharge.active",
        "topic": "viessmannapi.0.123456.0.features.heating.dhw.oneTimeCharge.properties.active.value",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "true",
        "x": 160,
        "y": 360,
        "wires": [
            [
                "911a988b.925b68"
            ]
        ]
    },
    {
        "id": "dbabcbdb.95fe58",
        "type": "ioBroker out",
        "z": "98ef4cf5.1a8f38",
        "name": "trigger heating_dhw_oneTimeCharge_deactivate",
        "topic": "javascript.0.scriptEnabled.common.Heizung.heating_dhw_oneTimeCharge_deactivate",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 950,
        "y": 360,
        "wires": []
    },
    {
        "id": "f1c64f6d.c05168",
        "type": "function",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "func": "var oTCactive = flow.get(\"oTCactive\");\n\nif (msg.payload === \"1\" && oTCactive === \"true\"){\n    return msg;}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 440,
        "y": 360,
        "wires": [
            [
                "8f0001dd.ad1578",
                "c52a2844.b45818"
            ]
        ]
    },
    {
        "id": "e752a478.75298",
        "type": "ioBroker out",
        "z": "98ef4cf5.1a8f38",
        "name": "speak \"WW wird jetzt aufgeheizt\" auf Echo Dot Bad",
        "topic": "alexa2.0.Echo-Devices.G0xxXX0xx5xxxXxx.Commands.speak",
        "ack": "false",
        "autoCreate": "false",
        "x": 950,
        "y": 200,
        "wires": []
    },
    {
        "id": "30ac84df.e65664",
        "type": "delay",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "pauseType": "delay",
        "timeout": "5",
        "timeoutUnits": "minutes",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 440,
        "y": 320,
        "wires": [
            [
                "f1c64f6d.c05168"
            ]
        ]
    },
    {
        "id": "8f0001dd.ad1578",
        "type": "trigger",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "op1": "true",
        "op2": "false",
        "op1type": "bool",
        "op2type": "bool",
        "duration": "2",
        "extend": false,
        "units": "s",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 650,
        "y": 360,
        "wires": [
            [
                "dbabcbdb.95fe58"
            ]
        ]
    },
    {
        "id": "ece39c92.787cc8",
        "type": "ioBroker out",
        "z": "98ef4cf5.1a8f38",
        "name": "trigger heating_dhw_oneTimeCharge_activate",
        "topic": "javascript.0.scriptEnabled.common.Heizung.heating_dhw_oneTimeCharge_activate",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 940,
        "y": 260,
        "wires": []
    },
    {
        "id": "db08420b.f96",
        "type": "function",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "func": "if (msg.payload === \"1\"){\n    return [{payload:\"Dein Warmwasser wird jetzt aufgeheizt.\"}]}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 640,
        "y": 200,
        "wires": [
            [
                "e752a478.75298"
            ]
        ]
    },
    {
        "id": "6b1a584b.f03688",
        "type": "change",
        "z": "98ef4cf5.1a8f38",
        "name": "circulation",
        "rules": [
            {
                "t": "set",
                "p": "circulation",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 230,
        "y": 320,
        "wires": [
            []
        ]
    },
    {
        "id": "889259cb.eec9c",
        "type": "change",
        "z": "98ef4cf5.1a8f38",
        "name": "hotWater",
        "rules": [
            {
                "t": "set",
                "p": "hotWaterStorage",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 220,
        "y": 240,
        "wires": [
            []
        ]
    },
    {
        "id": "911a988b.925b68",
        "type": "change",
        "z": "98ef4cf5.1a8f38",
        "name": "oTCactive",
        "rules": [
            {
                "t": "set",
                "p": "oTCactive",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 230,
        "y": 400,
        "wires": [
            []
        ]
    },
    {
        "id": "db63097e.628898",
        "type": "function",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "func": "if (msg.payload === \"1\"){\n    return msg;}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 500,
        "y": 260,
        "wires": [
            [
                "86d115e0.24f11",
                "5e8686fa.12d88"
            ]
        ]
    },
    {
        "id": "5e8686fa.12d88",
        "type": "change",
        "z": "98ef4cf5.1a8f38",
        "name": "already_active",
        "rules": [
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "1",
                "fromt": "str",
                "to": "true",
                "tot": "bool"
            },
            {
                "t": "set",
                "p": "already_active",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 660,
        "y": 300,
        "wires": [
            [
                "d063f1ea.709ef8"
            ]
        ]
    },
    {
        "id": "c52a2844.b45818",
        "type": "change",
        "z": "98ef4cf5.1a8f38",
        "name": "change 1=false",
        "rules": [
            {
                "t": "change",
                "p": "payload",
                "pt": "msg",
                "from": "1",
                "fromt": "str",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 460,
        "y": 400,
        "wires": [
            [
                "5e8686fa.12d88"
            ]
        ]
    },
    {
        "id": "d063f1ea.709ef8",
        "type": "debug",
        "z": "98ef4cf5.1a8f38",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 830,
        "y": 320,
        "wires": []
    }
]
1 „Gefällt mir“

Super, vielen Dank @pino73 .
Da habe ich mal etwas mit dem ich anfangen kann.