Just a very simple question with regards to the relay protocol: I think it would make sense to add a "inversed" option to the protocol configuration. Which should set the pin of the gpio to the inversed value.
The reason is this: if you drive your relay trough an common transistor chip like the ULN2803, your output will be "inverted" in the sense that a high signal, results in a low state on your relay and vice versa.
By allowing the gpio pin to be inversed, the on-off states match the actual situation. The point is that if all power is off (relay without power, pi without power) you want your heating system to be connected to the "Normally Closed" side of the relay. And as the transistors will sink current rather than sourcing it, you will end up with an inversed signal...
The reason is this: if you drive your relay trough an common transistor chip like the ULN2803, your output will be "inverted" in the sense that a high signal, results in a low state on your relay and vice versa.
By allowing the gpio pin to be inversed, the on-off states match the actual situation. The point is that if all power is off (relay without power, pi without power) you want your heating system to be connected to the "Normally Closed" side of the relay. And as the transistors will sink current rather than sourcing it, you will end up with an inversed signal...