A collection of low-level routines for driving Conrad/ELV FHT8V radiator valve heads from an arbitrary "master" device (PC, Raspberry Pi, Linux router) equipped by serial interface (or USB).
Master computer | --- serial ---> | FHT8V_commander | --- radio ---> | FHT8V valve |
---|
| | |--- radio ---> | FHT8V valve
| | | ... |
Commands given on serial interface (USB may be used) are transmitted by radio to FHT8V valves.
HW is ATmega328 (Arduino [Pro Mini] may be used) equipped by RFM22/23B radio chip.
Implementation of FHT8V radio protocol is based on kind help of Mike Stirling and his code available under Apache 2.0 licence at http://www.mike-stirling.com/2013/02/implementing-the-elv-fht-protocol-with-an-rfm23/
Besides of commands to FHT8V valves, some little measurements (onboard m328 temperature and Vcc, attached Dallas DS18x20 chip) can be read by CLI.
Consider using http://fhem.de as a server on master device. See FHEM subdirecory to see how to use it.
FHT8V_commander has two main interfaces:
- CLI (command line interface) on its serial port (connected to master device)
- Radio interface which drives Conrad/ELV FHT8V radiator valve(s).
Commands given on CLI are radio-transmitted to the valves.
-
The main platform is Atmel AVR Atmega328P microprocessor running at 8 Mz, voltage is 3.3 V max. You may use our own device, breadboarded m328 (8 MHz crystal needed) or buy compatible Arduino (Mini Pro 8 MHz 3.3 V is well tested).
-
RFM22B / RFM23B radio module. Take care of voltage, since RFM22/23B radios cannot run on 5V!
-
Moreover, some additional hardware may be connected and the measurements read by CLI. By the current FHT8V_commander source are already supported Dallas DS18x20 temperature sensors, but any general sensors with public Arduino library (e.g. DHTxx temperature and humidity sensors) may be easily implemented.
- Make your hardware. The default RFM radio to m328/Arduino pin connection is
TRX_MOSI <---> B3
TRX_MISO <---> B4
TRX_SCK <---> B5
TRX_SDN <---> GND*
nTRX_IRQ <---> R 1k <---> B1*
nTRX_SEL <---> B2* <---> R 4k7 (pullup) <---> Vcc
Vcc <---> Vcc
GND <---> GND
Pins marked (*) may be changed and configured in boards.h
-
Setup pin connections in
boards.txt
(additional hardware sensors may be configured here, too) -
Compile and upload the sketch using Arduino IDE application, version 1.5.2. Other versions were not tested.
-
Use and enjoy.
See http://www.mike-stirling.com/notes/fht8v-protocol/ for explanation of FHT protocol.
To use serial line, sudo screen /dev/ttyAMA0 52600
or sudo screen /dev/USB0 52600
is a choice.
On Raspbery Pi, consult https://github.com/lurch/rpi-serial-console to see how to enable Raspi onboard serial console (no USB needed).
Remember to set newline as line terminator.
-
If you want just test our stuff, let grp bellow be simply 1. Issue
fht groups 1
command and continue to the step 2.The same rule apply if you have single room or you want to drive all valves in the house in global manner.
Optional: If you have more rooms and you want to regulate them separatedly:
1.1 issue
fht groups groups_number
command and1.2 repeat the whole procedure with grp equal to 1, 2, 3, ... up the number of your rooms.
-
From serial console (52600 baud), send command
fht hc grp hc1 hc2
where hc1 and hc2 are appropriate (decimal) house codes - e.g. 10 11. This command saves your valve fht home code to be used in further communication with valves to ATMEGA EEPROM. -
If your radiator valve is not powered on or never been used before, power up the valve, and after initial whir, click button once - wait for valve to calibrate.
-
Press and hold button on the valve until you hear three beeps. Valve is waiting for PAIR command.
-
Send command
fht pair grp
(you will hear another multi-tone beep from the valve). The valve knows its actual home code now. -
Valve should now be synced. Try sending beep command
fht beep grp
wait upto 2 minutes for time slot to come around until you hear a beep from the valve. -
To set valve opening value, send command
fht set grp value
and wait up to 2 minutes. -
After each ATMEGA restart, all groups are synced automatically. If our valves get out of sync, use
fht sync
command to resync whole system.