I’d really like to be able to log when my boiler fires, and when each zone is calling for heat.
I have an oil boiler with a 3-zone controller, so there’s 24VAC available for the duration of each event I’d like to log. That 24V could power a relay, or be measured directly. Either would be a foolproof way to gather the data I want.
I’m looking for the best way to collect it and send it off the the Pi. I have power, wired and wireless Ethernet available near the zone controller. I have the Zigbee/Z-Wave hub on the Pi.
I’m a beginner, so be gentle. I’ve muddled through getting HA/Hassio working on a RPi 3+B. Got a remote temperature sensor (MCT-340 E) and a Sylvania SmartPlug working, both over Zigbee via a HUSBZB hub.
I made the mistake last year of buying three Honeywell smart WiFi thermostats, and they work fine, so much as I’d like to, I can’t justify replacing them with something which communicates locally to the Pi. Honeywell’s communication protocol is proprietary.
No, hadn’t tried that, thank you! The “Honeywell Thermostat” component might give me 75% of what I’m looking for.
So, I did what it said: “To set it up, add the following information to your configuration.yaml file”, putting in my honeywell ID and password, along with my region (us.)
Now here’s the dumb question: What next? I validated the config file and restarted. I don’t see any evidence that it did anything. Where should I be looking?
And then two bigger questions: (1) is this a cloud-to-cloud thing? I wasn’t planning on using the HA cloud, but I know the Honeywell thermostats only talk to the Honeywell servers. I was hoping my HA install could talk directly to the Honeywell servers, so at least there’s only one “cloud” in the process.
(2) Is the 600 second interval the lowest I can get away with before Honeywell blocks me? I’m not sure that’s granular enough.
Finally, the other 25% of my question is how to log when and for how long the boiler is actually firing, not just when the thermostats are calling for heat.
Big question first. No it’s not a HA cloud thing. Your HA does have to directly talk with the Honeywell servers though.
Have a look in your Lovelace unused entities list or in the developer tools states page. There should be a new climate component. You can add this to a Lovelace thermostat card.
No idea what minimum scan interval is before Honeywell rate limit you.
As you already have zigbee that’s probably the best option for your furnace sensor. I’ll let someone who actually uses it recommend something.
Thanks, that’s great it’s a direct connect to the Honeywell cloud servers!
However, I’m still drawing a blank on getting it working. There’s nothing like climate or honeywell in unused entities, or on the states page. I don’t see anything in the Hass.io system log, even searching for words like “climate” or “honeywell.”
All I’ve really done is that one step; adding the appropriate lines to the config file and restarting. Is there some other step that should be painfully obvious to all? If so, that’s probably the one I missed.
It works! I went back to the basics, and checked out my config. Turns out I’d botched the Honeywell password. I’m really surprised there were no error messages in the log.
Thanks for walking me through this!!!
Two new questions: (1) I can create a “badge” for the thermostat, but all it shows is the state of the system (“heat” or "idle.) I’d really like it to show the temperature. Ideas?
(2) I still would like to hear from someone on a zigbee, Z-wave or IP way to send an oil burner on/off signal to HA (see original post.)
I set up a thermostat card for each stat. What I was talking about was the little round “badges” at the top of the UI page. I can create one for climate.thermostat_name, but it only shows the status (e.g.; “idle” or “heat”), not (for example) the current temperature in the room.
I’m obviously going to have to get into defining templates and more advanced stuff, but I’m trying to learn to walk before I run. More on that later…
In Developer Tools / States, I have entries like this one for “climate.guest_room”:
current_temperature: 56
min_temp: 45
max_temp: 95
temperature: 56
operation_mode: heat
away_mode: off
fan: idle
fan_mode: null
fan_list: auto,on,circulate,follow schedule
operation_list: emheat,heat,off,cool,auto,auto
friendly_name: GUEST ROOM
supported_features: 1153
No. Two separate functions. When any of the thermostats call for heat, the zone controller (1) opens the zone valve for that zone, (2) starts the circulator, and (3) calls for the boiler to come up to it’s high setting. Once the boiler reaches it’s high set point, it shuts off. Water can still be circulating through the radiators, but the burner stops firing until the low set point is reached.
On the coldest days, the heat could be “on” for hours, but the boiler will only fire intermittently, to keep the circulating water within a set temperature range. Even with no heat called for, the boiler fires occasionally to keep warm for the domestic hot water loop.
The boiler burns a set amount of fuel per hour. Obviously, knowing how many hours it’s been running would give a fairly accurate indication of how much fuel it’s used.
Which brings me back to why I’ll probably have to learn how to code custom stuff.
The goal of all of this was to have an easy way to know when, and for how long, each zone, and the boiler, were running. The Thermostat card doesn’t give me that. It tells me current state, and graphs the temperatures over time. But what I really need to know is total run time, and how it’s cycling.
For example, I turn the heat down in the guest room, but when it’s really cold out, I want to be sure it cycles on once in a while to keep the pipes which run through an outside wall from freezing. I don’t really care what the temperature of the room is. I want to know that the heat is coming on occasionally.
It seems I’m going to be that annoying user with the odd-ball requirements. Payback, I suppose, for all those times I was the IT guy and grumbled about those annoying users!
For the boiler sensor, the common solution seems to be to hook a 24v relay coil in parallel with the burner and wire any zigbee door/window sensor’s reed switch to the relay contacts. None of the sensors I looked at could be powered from 24V directly. They all used 3V batteries. You could either use the battery or use a cheap ebay buck converter module to lower the 24V to 3V for the sensor power supply.
Edit: also to track the actual on time of the burner this component should suit your needs:
Be aware though, if you want to track a month’s worth of use you will have to set up the recorder component to store that length of data.
It would be very prudent to make extensive use of the ‘exclude’ option to prevent your database growing to an unwieldy size.
Also I would recommend the MariaDB addon instead of the default SQLite database. Much less prone to corruption.
Yes! Thanks! I figured out that it needs to be in the configuration.yaml, under the existing “sensor:” section. I found I was able to use the line: unit_of_measurement: ‘degrees’ instead of ‘°F’, which it didn’t seem to like.And, of course, it has to be properly indented.
Next I went into Configure UI / Raw Config Editor and added a new line sensor.guest_room_temperature
in the “badges:” section. I repeated this for the other two thermostats.
Now I have badges for my room temperatures along with the thermostat status. And I learned a tiny bit more about templates, badges and how HA works. I know this is long-winded but I’m trying to be complete for any future clueless poor saps like me.
Moving on to the rest of your recommendations next…
What a great idea! I took the case off a Visonic MCT-340 E window/door/temp sensor and it looks like a little careful soldering will do the trick. And since I mostly bought these sensors for temperature monitoring, I haven’t lost anything if I mess up the reed switch sensor. I also found some 24VAC relays at Amazon which I should be able to hook the wires to.
OK, it took two months to get around to it, but I took a Visonic MCT-340 E Zigbee door/temperature sensor, de-soldered the reed switch and soldered on a couple of wires. Ran those to the normally-closed terminals on a relay whose coil is powered from the boiler’s burner terminals. Now whenever the burner is powered, the switch is “open,” which the MCT-340 E interprets as the door being “closed.”
Since it’s not a door sensor anymore, I went into customizations for this entity, changed the device class to “power” and the icon to “mdi:fire.” So now in my customize.yaml I have this:
binary_sensor.visonic_mct_340_e_0b1243b6_1_1280:
device_class: power
icon: mdi:fire
Reminder: the whole point of all this was to find out when the burner on the boiler was actually firing, not just when the thermostats were calling for heat. Two very different things.
As an added bonus, the MCT-340 E also gives me temperature. I found a convenient place to mount it over the boiler, so it shows the temperature of the boiler area. This provides confirmation that not only is the burner getting power, but it’s actually firing and warming the area. If I was away from home, I could diagnose a tripped burner pretty quickly. It would be getting power but the area would never warm up.
Tip for anyone trying this: use the smallest wires you can get away with on the MCT-340 E. There’s not much room in the case, but there are a few holes on the back you can feed them through before soldering, and you’ll be able to close the case without making any more holes in it. The case needs to be closed to depress the tamper/paring switch inside.