Problems with Homematic Thermostats - solved, now includes individual heating system :)

Hi all,

I have a weired problem. I had this problem before but so few times that I didn’t mind about it. I am automating my radiators using Node RED now and during testing, th eproblem occured quite often, maybe just because I alter the thermostats more often…

Sometimes my thermostats just stop working with HA completely. No matter where I adjust them, it is just ignored. In the logs I find this:

HMGeneric.setValue: SET_TEMPERATURE on OEQ2421xxx Exception: <Fault -1: 'Failure'>
13:55 components/homematic/climate.py (ERROR) - message first occurred at 13:32 and shows up 8 times
HMGeneric.setValue: SET_TEMPERATURE on OEQ18xxx:4 Exception: <Fault -1: 'Failure'>
13:55 components/homematic/climate.py (ERROR) - message first occurred at 13:32 and shows up 8 times
HMGeneric.setValue: SET_TEMPERATURE on OEQ2xxx4 Exception: <Fault -1: 'Failure'>
13:55 components/homematic/climate.py (ERROR) - message first occurred at 13:32 and shows up 8 times
HMGeneric.setValue: SET_TEMPERATURE on OEQ24xxx Exception: <Fault -1: 'Failure'>
13:55 components/homematic/climate.py (ERROR) - message first occurred at 13:32 and shows up 9 times
HMGeneric.setValue: SET_TEMPERATURE on OEQ1xxxx Exception: <Fault -1: 'Failure'>
13:55 components/homematic/climate.py (ERROR) - message first occurred at 13:32 and shows up 6 times
HMGeneric.setValue: SET_TEMPERATURE on OEQ18xxx Exception: <Fault -1: 'Failure'>
13:55 components/homematic/climate.py (ERROR) - message first occurred at 13:32 and shows up 6 times
HMGeneric.setValue: SET_TEMPERATURE on OEQ24xxxx Exception: <Fault -1: 'Failure'>
13:53 components/homematic/climate.py (ERROR)

The only way to mitigate the issue is to restart my whole Hass.io instance. And with that I mean to reboot Hass.io NOT restarting the Home Assistant service.

Any idea?

Hmmm this time the Hass.io reboot did not fully recover functionality, too :frowning:

Weired.

Next thing I notice: After letting a considerable amount of time pass, they are working again.

I came to the conclusion that this may have to do with the duty cycle of the components. On the frequency band they use, they are only allowed to operate a maximum amount of time per hour and when I do heavy testing this might be exceeded and I have to wait for them to be available again.

If you are using a CCU, you can monitor the duty cycle. My RaspberryMatic CCU3 usually sits around 1 - 2%.
If you are sending temperature changes from Node Red to the TRVs, that probably isn’t the best way to do it. Normally, you control their set temperature using a schedule on the CCU which is sent to each device once.
You then monitor the TRV valve position as it will open to call for heat if the room temperature is below the set temperature. Once the valve opens beyond say 10% you turn on the heating for that zone.

Hi sota,

thank you for the input :slight_smile:

I prefer to not use the CCU to set schedules as I find it is uncomfortable and not suiting all my needs. I created everything Node-RED, even boost mode, linked it with armed_away status to save heating energy etc.

I don’t send regular temperature changes to the TRV (I guess that means the thermostats), I only set the temperature once at defined times / events while they stay in Manu Mode, the valve is controlled by thermostat itself.

It is working great so far, the problem only occured when I changed the states and temps often to test the UI and so on.

Your flow looks very good - would you mind sharing the code? I’m using RaspberryMatic programs to control my heating, but only at a very basic level as I haven’t the energy to learn another programming language! Most of my automations run in HA or Node-Red.
You should be able to monitor and graph the duty cycle in Node Red, in fact I think there is a flow included with RedMatic to do this. The only time I had a problem with duty cycle was when I did a firmware update on all of my TRVs.
I find that if I reboot the CCU, it looses it’s connection to HA and I have to restart it as well. Just doing a homematic service reconnect does not work. Is is possible that your CCU is rebooting intermittently?

Hi sota,

no, the CCU is quite stable. However, the problem didn’t reoccur during normal operation, so it is ok to me now. If it reoccurs, I will check on the duty cycle in detail. But even the manual says that during periods of heavy testing or installation that might be exceeded so I think that was the reason.

I can share the code but please note that it is heavily individualised. For example:

  • Wenn my wife activates the “Früh” button it means she has early shift and will fire up the radiators very early (around 4:30) otherwise 105mins later.

  • For the bedroom there is a timer that heats to ~17 degreed for a few hours before we go to bed but only if teh window is closed.

  • Generel strategy: ECO during defined times (BigTimer), but only when armed_away is not active. Otherwise nightheat (here in germany we prefer to always keep the rooms around 13 - 15° degrees in winter to protect water pipes from freezing and prevent mold - so I use nightheat in the night as well as when being away). “Aus” really turns everything off. “Boost” will lift from 19 to 21° for one hour, then back to eco. This will also work outside of the Eco heating hours.

  • armed_away activates nightheat mode, disarming boosts for the defined time and then switches to Eco.

  • When I say “Boost” “Eco” and so on these are the names I have chosen, it is NOT related to the boost mode in CCU. That means the thermostats are always in “Manu” mode from a CCU perspective and all schedules and automations should be disabled there or might interfere.

We generally don’t heat that much downstairs as we live mostly upstairs which is also reflected in the settings for “Schlafen” (bedroom) and “Ankleide” (dressing room).

Also my bathrooms are still missing as I did not exchange thermostats there yet :slight_smile:

I think the flow contains everything you need to fit it to your personal needs.

So be sure to check everything if it fits your needs and check for <removed> parts in the code as I will remove the sensor names where they still contain the serial and geolocations of course :slight_smile:

Edit: I have to split this as it is too long for one post. So first the HA YAML parts:

Buttons in Lovelace:

    cards:
      - type: vertical-stack
        cards:
          - type: horizontal-stack
            cards:
              - type: custom:button-card
                entity: input_boolean.mode_fruehschicht
              - type: conditional
                conditions:
                  - entity: input_boolean.mode_nightheat
                    state: "off"
                card:
                  type: custom:button-card
                  entity: input_boolean.mode_eco
              - type: conditional
                conditions:
                  - entity: input_boolean.mode_nightheat
                    state: "on"
                card:
                  type: custom:button-card
                  entity: input_boolean.mode_nightheat
              - type: custom:button-card
                entity: input_boolean.mode_boost
              - type: custom:button-card
                entity: input_boolean.mode_zeroheat

And of course you have to create the inputs in configuration.yaml:

input_boolean:
  mode_fruehschicht:
    name: Früh
    initial: off
    icon: mdi:white-balance-sunny
  mode_boost:
    name: Boost
    initial: off
    icon: mdi:car-turbocharger
  mode_eco:
    name: Eco
    initial: on
    icon: mdi:leaf
  mode_nightheat:
    name: zzZZzz
    initial: off
    icon: mdi:weather-night
  mode_zeroheat:
    name: Aus
    initial: off
    icon: mdi:radiator-off

Node-RED part one (glue together with part two :D):

[
    {
        "id": "fc4f5435.54ad18",
        "type": "tab",
        "label": "Heizen",
        "disabled": false,
        "info": ""
    },
    {
        "id": "a45c0b26.c3d988",
        "type": "bigtimer",
        "z": "fc4f5435.54ad18",
        "outtopic": "",
        "outpayload1": "On",
        "outpayload2": "Off",
        "name": "Big Timer",
        "comment": "",
        "lat": "<removed>",
        "lon": "<removed>",
        "starttime": "240",
        "endtime": "1320",
        "starttime2": 0,
        "endtime2": 0,
        "startoff": 0,
        "endoff": 0,
        "startoff2": 0,
        "endoff2": 0,
        "offs": 0,
        "outtext1": "",
        "outtext2": "",
        "timeout": 1440,
        "sun": true,
        "mon": true,
        "tue": true,
        "wed": true,
        "thu": true,
        "fri": true,
        "sat": true,
        "jan": true,
        "feb": true,
        "mar": true,
        "apr": true,
        "may": true,
        "jun": true,
        "jul": true,
        "aug": true,
        "sep": true,
        "oct": true,
        "nov": true,
        "dec": true,
        "day1": 0,
        "month1": 0,
        "day2": 0,
        "month2": 0,
        "day3": 0,
        "month3": 0,
        "day4": 0,
        "month4": 0,
        "day5": 0,
        "month5": 0,
        "day6": 0,
        "month6": 0,
        "d1": 0,
        "w1": 0,
        "d2": 0,
        "w2": 0,
        "d3": 0,
        "w3": 0,
        "d4": 0,
        "w4": 0,
        "d5": 0,
        "w5": 0,
        "d6": 0,
        "w6": 0,
        "xday1": 0,
        "xmonth1": 0,
        "xday2": 0,
        "xmonth2": 0,
        "xday3": 0,
        "xmonth3": 0,
        "xday4": 0,
        "xmonth4": 0,
        "xday5": 0,
        "xmonth5": 0,
        "xday6": 0,
        "xmonth6": 0,
        "xd1": 0,
        "xw1": 0,
        "xd2": 0,
        "xw2": 0,
        "xd3": 0,
        "xw3": 0,
        "xd4": 0,
        "xw4": 0,
        "xd5": 0,
        "xw5": 0,
        "xd6": 0,
        "xw6": 0,
        "suspend": false,
        "random": false,
        "repeat": false,
        "atstart": false,
        "odd": false,
        "even": false,
        "x": 1165.000087738037,
        "y": 1083.4843893051147,
        "wires": [
            [
                "4197e583.0c272c"
            ],
            [],
            []
        ]
    },
    {
        "id": "b62b2e69.0b2af",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "Fruehdienst?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "input_boolean.mode_fruehschicht",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1250.1667594909668,
        "y": 938.6983785629272,
        "wires": [
            [
                "e5f599d.8c9f368"
            ],
            [
                "3d7e2154.dd5ade"
            ]
        ]
    },
    {
        "id": "e5f599d.8c9f368",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "Away?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "armed_away",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "alarm_control_panel.sunny_alarm",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1327.6112251281738,
        "y": 889.2817506790161,
        "wires": [
            [
                "217a022f.542ace"
            ],
            [
                "18494e77.6edc62"
            ]
        ]
    },
    {
        "id": "4197e583.0c272c",
        "type": "switch",
        "z": "fc4f5435.54ad18",
        "name": "On / Off",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "On",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "Off",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 1193.6032600402832,
        "y": 1029.3175191879272,
        "wires": [
            [
                "ee7ef27b.460ab"
            ],
            [
                "32ed9988.e2eac6"
            ]
        ],
        "outputLabels": [
            "on",
            "off"
        ]
    },
    {
        "id": "863714c.53173e8",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "BOOST Wohn",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.wohnzimmer",
        "data": "{\"temperature\":\"21\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 772.6627426147461,
        "y": 634.5317504405975,
        "wires": [
            [
                "cc236849.705f28"
            ]
        ]
    },
    {
        "id": "1a96c06b.b3394",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "BOOST Kueche",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.kueche",
        "data": "{\"temperature\":\"21\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 772.1627426147461,
        "y": 668.5317504405975,
        "wires": [
            [
                "cc236849.705f28"
            ]
        ]
    },
    {
        "id": "dcaf29c8.ad64d8",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "BOOST Buero",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.buero",
        "data": "{\"temperature\":\"21\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 773.1627426147461,
        "y": 703.5317504405975,
        "wires": [
            [
                "cc236849.705f28"
            ]
        ]
    },
    {
        "id": "3d7e2154.dd5ade",
        "type": "stoptimer",
        "z": "fc4f5435.54ad18",
        "duration": "105",
        "units": "Minute",
        "payloadtype": "num",
        "payloadval": "0",
        "name": "",
        "x": 1450.9445915222168,
        "y": 935.7816905975342,
        "wires": [
            [
                "18494e77.6edc62"
            ],
            []
        ]
    },
    {
        "id": "cc236849.705f28",
        "type": "stoptimer",
        "z": "fc4f5435.54ad18",
        "duration": "60",
        "units": "Minute",
        "payloadtype": "num",
        "payloadval": "0",
        "name": "",
        "x": 774.6867218017578,
        "y": 750.563535451889,
        "wires": [
            [
                "b1406cf7.0bac9"
            ],
            []
        ]
    },
    {
        "id": "b1851e36.d5f8c",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "ECO Wohn",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.wohnzimmer",
        "data": "{\"temperature\":\"19\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 769.3214244842529,
        "y": 981.7420194149017,
        "wires": [
            []
        ]
    },
    {
        "id": "1dd334c1.cd254b",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "ECO Kueche",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.kueche",
        "data": "{\"temperature\":\"19\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 768.8214244842529,
        "y": 1016.7420194149017,
        "wires": [
            []
        ]
    },
    {
        "id": "9007ae79.139d9",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "ECO Buero",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.buero",
        "data": "{\"temperature\":\"18\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 769.8214244842529,
        "y": 1051.7420194149017,
        "wires": [
            []
        ]
    },
    {
        "id": "e4d45ad2.1c38e8",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "ECO Ankleide",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.ankleide",
        "data": "{\"temperature\":\"13.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 780.8214244842529,
        "y": 1088.7420194149017,
        "wires": [
            []
        ]
    },
    {
        "id": "f62050f4.f2515",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "Away?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "alarm_control_panel.sunny_alarm",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "armed_away",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 1158.7223625183105,
        "y": 498.14284014701843,
        "wires": [
            [
                "6fa77614.5e1018"
            ],
            [
                "74e6a1f7.ec73d"
            ]
        ]
    },
    {
        "id": "3438856e.5559da",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Low Wohn",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.wohnzimmer",
        "data": "{\"temperature\":\"15\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 764.3055419921875,
        "y": 421.23011088371277,
        "wires": [
            []
        ]
    },
    {
        "id": "4de728fd.a67c78",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Low Kueche",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.kueche",
        "data": "{\"temperature\":\"15\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 763.8055419921875,
        "y": 455.23011088371277,
        "wires": [
            []
        ]
    },
    {
        "id": "897397e1.ce9978",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Low Buero",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.buero",
        "data": "{\"temperature\":\"15\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 764.8055419921875,
        "y": 490.23011088371277,
        "wires": [
            []
        ]
    },
    {
        "id": "1f7445b8.a1bd3a",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Low Ankleide",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.ankleide",
        "data": "{\"temperature\":\"13.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 765.8055419921875,
        "y": 527.2301108837128,
        "wires": [
            []
        ]
    },
    {
        "id": "8c7f6561.e12f18",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "Away?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "armed_away",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "alarm_control_panel.sunny_alarm",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 751.2738456726074,
        "y": 902.297684431076,
        "wires": [
            [
                "b6a49330.fc895"
            ],
            [
                "b1851e36.d5f8c",
                "1dd334c1.cd254b",
                "9007ae79.139d9",
                "e4d45ad2.1c38e8",
                "972bcd4d.1675c"
            ]
        ]
    },
    {
        "id": "a74ef764.3c67a8",
        "type": "time-range-switch",
        "z": "fc4f5435.54ad18",
        "name": "Heizzeit?",
        "lat": "<removed>",
        "lon": "<removed>",
        "startTime": "04:15",
        "endTime": "22:00",
        "startOffset": 0,
        "endOffset": 0,
        "x": 1288.6668090820312,
        "y": 337.0317485332489,
        "wires": [
            [
                "92554339.70dda"
            ],
            [
                "6fa77614.5e1018"
            ]
        ]
    },
    {
        "id": "74e6a1f7.ec73d",
        "type": "switch",
        "z": "fc4f5435.54ad18",
        "name": "Disarmed?",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "disarmed",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 1208.2222900390625,
        "y": 441.8094787597656,
        "wires": [
            [
                "97a5694a.5b6618"
            ]
        ],
        "outputLabels": [
            "on"
        ]
    },
    {
        "id": "b54bdc51.e6b5e",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "Boost on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "input_boolean.mode_boost",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 81.08351516723633,
        "y": 660.3730199337006,
        "wires": [
            [
                "3397cace.2a4d96",
                "863714c.53173e8",
                "1a96c06b.b3394",
                "dcaf29c8.ad64d8",
                "8612e9db.ad0aa8",
                "e22e2d81.36e1d"
            ],
            []
        ]
    },
    {
        "id": "3397cace.2a4d96",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Eco off",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_off",
        "entityId": "input_boolean.mode_eco",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 303.87700271606445,
        "y": 661.3889057636261,
        "wires": [
            []
        ]
    },
    {
        "id": "ade688c.6e8cc78",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "Eco on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "input_boolean.mode_eco",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 73.01199340820312,
        "y": 612.515869140625,
        "wires": [
            [
                "c0c387b.bc22278",
                "8612e9db.ad0aa8",
                "e22e2d81.36e1d",
                "c7585fe6.47309"
            ],
            []
        ]
    },

Node-RED part two:

    {
        "id": "c0c387b.bc22278",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Boost off",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_off",
        "entityId": "input_boolean.mode_boost",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 313.23412704467773,
        "y": 608.1031782627106,
        "wires": [
            []
        ]
    },
    {
        "id": "b1406cf7.0bac9",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Eco on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_eco",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 829.6231231689453,
        "y": 790.5794627666473,
        "wires": [
            []
        ]
    },
    {
        "id": "18494e77.6edc62",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Boost on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_boost",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1530.7779693603516,
        "y": 891.4205474853516,
        "wires": [
            []
        ]
    },
    {
        "id": "e301a67f.1c6928",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Eco on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_eco",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1428.3493766784668,
        "y": 199.23807406425476,
        "wires": [
            []
        ]
    },
    {
        "id": "c7585fe6.47309",
        "type": "time-range-switch",
        "z": "fc4f5435.54ad18",
        "name": "Heizzeit?",
        "lat": "<removed>",
        "lon": "<removed>",
        "startTime": "04:15",
        "endTime": "22:00",
        "startOffset": 0,
        "endOffset": 0,
        "x": 760.2895603179932,
        "y": 945.3610541820526,
        "wires": [
            [
                "8c7f6561.e12f18"
            ],
            [
                "b6a49330.fc895"
            ]
        ]
    },
    {
        "id": "d22990b4.37dac",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "Boost off",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "input_boolean.mode_boost",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "off",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 83.58351135253906,
        "y": 721.3729858398438,
        "wires": [
            [
                "a8ba48ba.be5678"
            ],
            []
        ]
    },
    {
        "id": "74d225b8.5d2d1c",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Eco on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_eco",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 422.5556640625,
        "y": 773.424560546875,
        "wires": [
            []
        ]
    },
    {
        "id": "83f716d.09b19e8",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "zeroheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "input_boolean.mode_zeroheat",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 91.04785537719727,
        "y": 507.83728981018066,
        "wires": [
            [
                "48954764.25ddb8",
                "9b191d24.49fff",
                "5f4dcd1a.24afa4",
                "f3d9786f.27bb58",
                "c10c78db.702b38",
                "c0c387b.bc22278",
                "3397cace.2a4d96",
                "e22e2d81.36e1d"
            ],
            []
        ]
    },
    {
        "id": "48954764.25ddb8",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "OFF Wohn",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.wohnzimmer",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 761.1628570556641,
        "y": 148.65868067741394,
        "wires": [
            []
        ]
    },
    {
        "id": "9b191d24.49fff",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "OFF Kueche",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.kueche",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 760.6628570556641,
        "y": 182.65868067741394,
        "wires": [
            []
        ]
    },
    {
        "id": "5f4dcd1a.24afa4",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "OFF Buero",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.buero",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 761.6628570556641,
        "y": 217.65868067741394,
        "wires": [
            []
        ]
    },
    {
        "id": "f3d9786f.27bb58",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "OFF Ankleide",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.ankleide",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 772.6628570556641,
        "y": 254.65868067741394,
        "wires": [
            []
        ]
    },
    {
        "id": "c10c78db.702b38",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "OFF Schlafen",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.ankleide",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 773.1628570556641,
        "y": 290.65868067741394,
        "wires": [
            []
        ]
    },
    {
        "id": "8612e9db.ad0aa8",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "zeroheat off",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_off",
        "entityId": "input_boolean.mode_zeroheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 315.94844818115234,
        "y": 550.531717300415,
        "wires": [
            []
        ]
    },
    {
        "id": "796f125b.f6455c",
        "type": "stoptimer",
        "z": "fc4f5435.54ad18",
        "duration": "30",
        "units": "Minute",
        "payloadtype": "num",
        "payloadval": "0",
        "name": "",
        "x": 1373.2223472595215,
        "y": 245.20633959770203,
        "wires": [
            [
                "e301a67f.1c6928"
            ],
            []
        ]
    },
    {
        "id": "6fa77614.5e1018",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "nightheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_nightheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1477.2144241333008,
        "y": 336.15479159355164,
        "wires": [
            []
        ]
    },
    {
        "id": "7ff9190c.d3a688",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Low Schlafen",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.schlafzimmer",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 774.3055648803711,
        "y": 384.0872676372528,
        "wires": [
            []
        ]
    },
    {
        "id": "4418c08.689394",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "nightheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "input_boolean.mode_nightheat",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 91.80554962158203,
        "y": 556.309517621994,
        "wires": [
            [
                "8612e9db.ad0aa8",
                "c0c387b.bc22278",
                "3397cace.2a4d96",
                "7ff9190c.d3a688",
                "3438856e.5559da",
                "4de728fd.a67c78",
                "897397e1.ce9978",
                "1f7445b8.a1bd3a"
            ],
            []
        ]
    },
    {
        "id": "a8ba48ba.be5678",
        "type": "time-range-switch",
        "z": "fc4f5435.54ad18",
        "name": "Heizzeit?",
        "lat": "<removed>",
        "lon": "<removed>",
        "startTime": "04:15",
        "endTime": "22:00",
        "startOffset": 0,
        "endOffset": 0,
        "x": 249.80555725097656,
        "y": 744.5595092773438,
        "wires": [
            [
                "1a1ba3a6.d81c5c"
            ],
            [
                "e7e6d4da.f50da8"
            ]
        ]
    },
    {
        "id": "e7e6d4da.f50da8",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "nightheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_nightheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 432.3055114746094,
        "y": 822.5595092773438,
        "wires": [
            []
        ]
    },
    {
        "id": "217a022f.542ace",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "nightheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_nightheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1490.5001411437988,
        "y": 1029.6706104278564,
        "wires": [
            []
        ]
    },
    {
        "id": "e22e2d81.36e1d",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "nightheat off",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_off",
        "entityId": "input_boolean.mode_nightheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 319.3055305480957,
        "y": 501.30951499938965,
        "wires": [
            []
        ]
    },
    {
        "id": "b6a49330.fc895",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "nightheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_nightheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 971.7499923706055,
        "y": 924.6428210735321,
        "wires": [
            []
        ]
    },
    {
        "id": "97a5694a.5b6618",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "zero?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "input_boolean.mode_zeroheat",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1233.0001335144043,
        "y": 388.9206302165985,
        "wires": [
            [],
            [
                "a74ef764.3c67a8"
            ]
        ]
    },
    {
        "id": "ee7ef27b.460ab",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "zero?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "input_boolean.mode_zeroheat",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1209.000087738037,
        "y": 984.9206075668335,
        "wires": [
            [],
            [
                "b62b2e69.0b2af"
            ]
        ]
    },
    {
        "id": "32ed9988.e2eac6",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "zero?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "input_boolean.mode_zeroheat",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1344.000087738037,
        "y": 1028.9206075668335,
        "wires": [
            [],
            [
                "217a022f.542ace"
            ]
        ]
    },
    {
        "id": "9e628702.0ee1e8",
        "type": "server-state-changed",
        "z": "fc4f5435.54ad18",
        "name": "zeroheat off",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "entityidfilter": "input_boolean.mode_zeroheat",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "off",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 94,
        "y": 769,
        "wires": [
            [
                "a8ba48ba.be5678"
            ],
            []
        ]
    },
    {
        "id": "5040c875.8d9308",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "zeroheat on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_zeroheat",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 299,
        "y": 937,
        "wires": [
            []
        ]
    },
    {
        "id": "92554339.70dda",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Boost on",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.mode_boost",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1327,
        "y": 290,
        "wires": [
            [
                "796f125b.f6455c"
            ]
        ]
    },
    {
        "id": "4ab14609.99bd78",
        "type": "trigger-state",
        "z": "fc4f5435.54ad18",
        "name": "Eco / all off?",
        "server": "7e24b1f3.1fe48",
        "entityid": "input_boolean.mode_eco",
        "entityidfiltertype": "exact",
        "debugenabled": false,
        "constraints": [
            {
                "id": "6h6zsdd1v1b",
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "off"
            },
            {
                "id": "o3iclalfdzr",
                "targetType": "entity_id",
                "targetValue": "input_boolean.mode_boost",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "off"
            },
            {
                "id": "014tayfuy127o",
                "targetType": "entity_id",
                "targetValue": "input_boolean.mode_nightheat",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "off"
            }
        ],
        "constraintsmustmatch": "all",
        "outputs": 2,
        "customoutputs": [],
        "outputinitially": false,
        "state_type": "str",
        "x": 99.5,
        "y": 898,
        "wires": [
            [
                "5040c875.8d9308"
            ],
            []
        ]
    },
    {
        "id": "cefe753e.429f58",
        "type": "trigger-state",
        "z": "fc4f5435.54ad18",
        "name": "Night / all off?",
        "server": "7e24b1f3.1fe48",
        "entityid": "input_boolean.mode_nightheat",
        "entityidfiltertype": "exact",
        "debugenabled": false,
        "constraints": [
            {
                "id": "bhc39us8sit",
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "off"
            },
            {
                "id": "7i4ynh6d5hm",
                "targetType": "entity_id",
                "targetValue": "input_boolean.mode_eco",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "off"
            },
            {
                "id": "ywcwty7vms",
                "targetType": "entity_id",
                "targetValue": "input_boolean.mode_boost",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "off"
            }
        ],
        "constraintsmustmatch": "all",
        "outputs": 2,
        "customoutputs": [],
        "outputinitially": false,
        "state_type": "str",
        "x": 108,
        "y": 960,
        "wires": [
            [
                "5040c875.8d9308"
            ],
            []
        ]
    },
    {
        "id": "1a1ba3a6.d81c5c",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "Away?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "armed_away",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "alarm_control_panel.sunny_alarm",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 408,
        "y": 725,
        "wires": [
            [
                "e7e6d4da.f50da8"
            ],
            [
                "74d225b8.5d2d1c"
            ]
        ]
    },
    {
        "id": "899796f2.010d38",
        "type": "bigtimer",
        "z": "fc4f5435.54ad18",
        "outtopic": "",
        "outpayload1": "On",
        "outpayload2": "Off",
        "name": "Big Timer",
        "comment": "",
        "lat": "<removed>",
        "lon": "<removed>",
        "starttime": "1140",
        "endtime": "1320",
        "starttime2": 0,
        "endtime2": 0,
        "startoff": 0,
        "endoff": 0,
        "startoff2": 0,
        "endoff2": 0,
        "offs": 0,
        "outtext1": "",
        "outtext2": "",
        "timeout": 1440,
        "sun": true,
        "mon": true,
        "tue": true,
        "wed": true,
        "thu": true,
        "fri": true,
        "sat": true,
        "jan": true,
        "feb": true,
        "mar": true,
        "apr": true,
        "may": true,
        "jun": true,
        "jul": true,
        "aug": true,
        "sep": true,
        "oct": true,
        "nov": true,
        "dec": true,
        "day1": 0,
        "month1": 0,
        "day2": 0,
        "month2": 0,
        "day3": 0,
        "month3": 0,
        "day4": 0,
        "month4": 0,
        "day5": 0,
        "month5": 0,
        "day6": 0,
        "month6": 0,
        "d1": 0,
        "w1": 0,
        "d2": 0,
        "w2": 0,
        "d3": 0,
        "w3": 0,
        "d4": 0,
        "w4": 0,
        "d5": 0,
        "w5": 0,
        "d6": 0,
        "w6": 0,
        "xday1": 0,
        "xmonth1": 0,
        "xday2": 0,
        "xmonth2": 0,
        "xday3": 0,
        "xmonth3": 0,
        "xday4": 0,
        "xmonth4": 0,
        "xday5": 0,
        "xmonth5": 0,
        "xday6": 0,
        "xmonth6": 0,
        "xd1": 0,
        "xw1": 0,
        "xd2": 0,
        "xw2": 0,
        "xd3": 0,
        "xw3": 0,
        "xd4": 0,
        "xw4": 0,
        "xd5": 0,
        "xw5": 0,
        "xd6": 0,
        "xw6": 0,
        "suspend": false,
        "random": false,
        "repeat": false,
        "atstart": false,
        "odd": false,
        "even": false,
        "x": 1182.5000190734863,
        "y": 772.5000104904175,
        "wires": [
                "ce69a7c6.5f7a58"
            ],
            [],
            []
        ]
    },
    {
        "id": "1aee2af1.ebaad5",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "zero?",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "input_boolean.mode_zeroheat",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1291.2500190734863,
        "y": 678.7500095367432,
        "wires": [
            [],
            [
                "bed92a69.2e3608"
            ]
        ]
    },
    {
        "id": "41d4530a.38767c",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "Schlafzimmer 17.5",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.schlafzimmer",
        "data": "{\"temperature\":\"17.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1475.0000228881836,
        "y": 558.7500095367432,
        "wires": [
            []
        ]
    },
    {
        "id": "ce69a7c6.5f7a58",
        "type": "switch",
        "z": "fc4f5435.54ad18",
        "name": "On / Off",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "On",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "Off",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 1248.7500190734863,
        "y": 725.0000114440918,
        "wires": [
            [
                "1aee2af1.ebaad5"
            ],
            [
                "2bbf8155.ca667e"
            ]
        ],
        "outputLabels": [
            "on",
            "off"
        ]
    },
    {
        "id": "2bbf8155.ca667e",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "OFF Schlafen",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.ankleide",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 1450.000020980835,
        "y": 721.2500104904175,
        "wires": [
            []
        ]
    },
    {
        "id": "3b394a5.2efb2b6",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "Fenster",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "off",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "binary_sensor.<removed>_state",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1411.8750228881836,
        "y": 597.5000085830688,
        "wires": [
            [
                "41d4530a.38767c"
            ],
            []
        ]
    },
    {
        "id": "bed92a69.2e3608",
        "type": "api-current-state",
        "z": "fc4f5435.54ad18",
        "name": "Fenster",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "outputs": 2,
        "halt_if": "off",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "binary_sensor.<removed>_state",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 1380.0000228881836,
        "y": 636.2500076293945,
        "wires": [
            [
                "3b394a5.2efb2b6"
            ],
            []
        ]
    },
    {
        "id": "972bcd4d.1675c",
        "type": "api-call-service",
        "z": "fc4f5435.54ad18",
        "name": "ECO Schlafen",
        "server": "7e24b1f3.1fe48",
        "version": 1,
        "debugenabled": false,
        "service_domain": "climate",
        "service": "set_temperature",
        "entityId": "climate.ankleide",
        "data": "{\"temperature\":\"4.5\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "",
        "output_location_type": "none",
        "mustacheAltTags": false,
        "x": 781,
        "y": 1128,
        "wires": [
            []
        ]
    },
    {
        "id": "7e24b1f3.1fe48",
        "type": "server",
        "z": "",
        "name": "Home Assistant",
        "legacy": false,
        "hassio": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": true
    }
]

I still plan enhancements (shifts automatically with Google calendar,heating off when near window open and back to old temperature after, boost when leaving work zone…) when I find some time but for now I’m quite happy.

2 Likes

Thank you very much for this :+1:! Having something to modify is much easier than starting with a blank sheet. The “Früh” button will be useful for me when I have to get up at 05:30 for an early morning run.

Pat

1 Like

Forgot to add: For the buttons you need the custom button-card.

or through HACS.