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 1command 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_numbercommand 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 hc2where 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 grpwait 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 valueand wait up to 2 minutes. -
After each ATMEGA restart, all groups are synced automatically. If our valves get out of sync, use
fht synccommand to resync whole system.