Menu [hide]
  Wiki

FHZ / FHT Radio Protocol

Description of the 868 MHz Radio Protocal between FHZ1xxx and FHT
backlinks print PDF
similar

Funkprotokoll FHT-B - FHZ1xxx


Beschreibung der Funk-Datenpakete? 868 MHz die zwischen einem FHT-B (Heizungssteuerung-Regler) und dem FHZ1xxx ausgetauscht werden.

Diese Information kann verwendet werden, um sein eigenes kleines FHZ (z.B. auf Microcontrollerbasis mit geeigneten Funkmodulen) zu bauen, auch wenn man das nicht will, hilft es m.E. die Funktionsweise des FHZ zu verstehen, da sich viele Infos in der FHZ-Protokoll Beschreibung in etwas andere Form (FHZ-codiert wiederfindet).

Die Infos sind natürlich nicht vollständig, reichen aber aus, um FHT-B und FHT-V befriedigend zu steuern (getestet und im Einsatz)


Der grundlegende Aufbau der Pakete (Homecode / Prüfsumme ...) ist schon bei FHT-V (Ventilsteuerung) beschrieben.
In den folgenden Tabellen spare ich mir die Angabe des Homecode (HC1/HC2) und der Prüfsumme, sondern beschränke mich auf die 3 wichtigen Datenbytes:

Im Prinzip gibt es zwei grundlegende Protokollfolgen:

1. FHZ sendet Anfragen um Einstellungen des FHT-B zu ändern (Register schreiben) oder Einstellungen (Werte) des FHT-B zu lesen.
2. FHT-B bietet Informationen aufgrund von Statusänderungen des FHT-B (manuelle Einstellung am FHT-B) oder Messwertänderungen, oder auf Anforderung durch FHZ.

Beide Aktionen finden in dem knapp 2-minütigen Zeitfenster statt, wenn das FHT-B an seine angemeldeten Ventile Steuerungsinformationen schickt. Anschliessend an diese Übertragung bietet das FHT-B entweder Infos an, oder das FHZ kann eine Informationsanfrage an senden:

1. FHZ sendet Anfrage an FHB:


Byte3
Byte4
Byte5
Senderichtung
Beschreibung
00h 2Bh 00h > von FHT-B An die Ventile (Beispiel 3.Byte = 0 heisst Ventilstellung = 0)
53h 77h 37h < von FHZ Kommunikationsanfrage
53h 67h 37h > von FHT-B ACK - Acknowledge (Bestätigung) der Kommunikationsanfrage
54h 67h 37h > von FHT-B Bereit Daten zu empfangen
7Dh 77h 37h < von FHZ Starte Übertragung
7Dh 67h 37h > von FHT-B Bestätige - Start Übertragung
3Eh 79h 02h < von FHZ Schreibe Register 0x3e mit Wert 02x, d.h. Modusumstellen auf Urlaub
3Eh 69h 02h > von FHT-B Bestätige - Schreibe Register 0x3e mit Wert 02x, d.h. Modusumstellen auf Urlaub
4Bh 77h 02h < von FHZ ACK Bestätigung
4Bh 67h 02h > von FHT-B Bestätigung - ACK Bestätigung
7Eh 77h 02h < von FHZ Beende Übertragung
7Eh 67h 02h > von FHT-B Bestätige - Beende Übertragung


Wenn diese Befehlsfolge abgelaufen ist, dann steht das FHT-B im Modus "Urlaub".
Das ganze funktioniert genauso bei allen anderen (bekannten) Registern die bereits im FHZ-Protokoll beschrieben sind.


Allgemeine Anmerkungen zur oberen Befehlsfolge:

1. Ventilsteuerungskommando: Die 4 höherwertigen bits von Byte 4 können in 3 Ausprägungen vorkommen:

- 0010xxxx (2xh) : neue Ventileinstellung
- 1010xxxx (Axh) : Ventileinstellung identisch mit vorhergehender
- 1011xxxx (Bxh) : ???

wichtig ist, bit 5 ist immer gesetzt - dient zur Unterscheidung ob Befehl an FHT-V oder Bidirektional zwischen FHB-FHZ

2. Bidirektionaler Befehl - Sendequelle : Die 4 höherwertigen bits von Byte 4 können in 2 Ausprägungen vorkommen:

- 0110xxxx (6xh) : gesendet von FHB
- 0111xxxx (7xh) : gesendet von FHZ

3. Bidirektionaler Befehl - Daten oder Protokollinformation : Die 4 niederwertigen bits von Byte können in 2 Ausprägungen vorkommen:

- xxxx0111 (x7h) : Protokollbefehl
- xxxx1001 (x9h) : Datenbefehl (Register)


4. Sobald ein Datenbefehl vorkommt, wird der Dateninhalt (Byte 5) in den folgenden Protokollbefehlen mit übernommen, solange bis ein neuer Datenbefehl kommt oder die Übertragung endet.


2. FHT-B sendet Informationen:


Dieser Fall tritt auf, wenn bestimmte Statusänderungen bei FHT-B eingetreten sind, oder als Reaktion auf das Schreibung von Abfrageregister mit obiger Befehlsfolge.

Abfrageregister sind die Register 65h und 66h (evtl weitere ?), werden diese mit 1er bits geschrieben, so löst es das Senden einer Folge von Registerwerten durch das FHT-B aus. Diese Funktion benutzt das FHZ bei der sog. Initialisierung, hier werden beide Register mit ffh beschrieben, so dass das FHT-B alle aktuellen Infos (Staus) des angesprochenen FHT-B bekommt.
So sind z.B. von Register 65h die Wochentagseinstellungen kodiert, bit0= Montag, bit1=Dienstag ... Will man also nur die Werte für Mo und Do abfragen, sendet man einfach 00001001 = 09h an Register 65h


Byte 3
Byte 4
Byte 5
Senderichtung
Beschreibung
00h 2Bh 00h > von FHT-B n die Ventile (Beispiel 3.Byte = 0 heisst Ventilstellung = 0)
7Dh 67h 37h > von FHT-B Starte Übertragung
7Dh 77h 37h > von FHZ Bestätige - Starte Übertragung
42h 69h EAh > von FHT-B Sende den Wert von Register 42h ist_temperatur x/10 = 23,4 C
42h 79h EAh < von FHZ Bestätige Empfang Wert von Register 42h
43h 67h 00h > von FHT-B Sende den Wert von Register 43h ??? ist immer 0
43h 77h 00h < von FHZ Bestätige Empfang Wert von Register 43h
4Bh 67h 00h > von FHT-B Abschluss Datenpaket
4Bh 77h 00h < von FHZ Bestätige Abschluss Datenpaket
44h 67h 00h > von FHT-B Sende den Wert von Register 44h Statusregister Batterie ...
44h 77h 00h < von FHZ Bestätige Empfang Wert von Register 44h
4Bh 67h 00h > von FHT-B Abschluss Datenpaket
4Bh 77h 00h < von FHZ Bestätige Abschluss Datenpaket
7Eh 67h 02h > von FHT-B Beende Übertragung
7Eh 77h 02h > von FHZ Bestätige - Beende Übertragung


Die einzelnen Daten sind in logischen Paketen zusammengefasst (Temperatur, Programminfos je Wochentag ...)


Bisher bekannt FHT-B Register


Hier noch der Übersichtlichkeit halber die bisher bekannten Register (aus "raw findigs" FHZ1000 Protokoll) mit kleinen Ergänzungen

Register (hex) Beschreibung
14
Montag von 1 in 1/6 Stunde (10 Min.)
15
Montag bis 1
16
Montag von 2 (90 = frei)
17
Montag bis 2
18
Dienstag von 1
19
bis 1
1a
von 2
1b
bis 2
1c
Mittwoch von 1
1d
bis 1
1e
von 2
1f
bis 2
20
Donnerstag von 1
21
bis 1
22
von 2
23
bis 2
24
Freitag von 1
25
bis 1
26
von 2
27
bis 2
28
Samstag von 1
29
bis 1
2a
von 2
2b
bis 2
2c
Sonntag von 1
2d
bis 1
2e
von 2
2f
bis 2
3e
0=auto 1=manuell 2=Urlaub
3f
Urlaub Endeuhrzeit oder Endetag
40
Urlaub Endetag 10=heute 11=morgen 0x=Endemonat
41
aktuelle Solltemperatur (x*0.5)
42
ist Temperatur (x/10) - LowByte?
43
ist Temperatur (x/10)- HighByte?
44
bit0=Batterie 0=OK 1=leer bit5=Fenster 0=zu 1=offen
60
Jahr (60h - 64) werden anscheinend nur geschrieben
61
Monat
62
Tag
63
Stunde
64
Minute
65
Abfrageregister für 14h -2fh (bit 0-6)
66
Abfrageregister (42h,43h,44h (bit 0) - 3eh (bit 1) - 82h,84h,8ah (bit 2)
82
Tag Temperatur (x*0.5)
84
Nacht Temperatur (x*0.5)
8a
Fenster offen Temperatur (x*0.5)



Zum Abschluss noch eine Anmerkungen zu den Funkpaketen:

Einige Pakete (i.d.R) Start und Datenpakete werden 3x gesendet (kurz hintereinander).
Das FHT-B ist gnadenlos auf Stromsparen getrimmt, d.h. das Zeitfenster in dem es nach Senden von Ventilsteuerungs-informationen auf mögliche Anfragen von FHZ warten bewegt sich meiner Schätzung nach zwischen 50 bis 70 ms !!! Will man also die Folge mit einem eigenen MController nachbilden, empfiehlt es sich nicht mit festen Wartezeiten nach dem Empfang einer FHT-B Sendung mit dem Senden zu beginnen - denn man weiss nicht, welches von den 3 Paketen (Dauer je Paket ca 60ms) man dekodiert hat. Vielmehr hat sich bewährt eine Dauer von ca. 30 ms ohne gültiges Empfangssignal (gültige Pegeldauer) abzuwarten und dann sofort die Anforderung zu senden. Mit diesem Verfahren habe ich jedenfalls eine gute Trefferquote das FHT-B zu steuern.

Created by: mycroft last modification: Wednesday 20 of August, 2008 [21:32:17 UTC] by alexirion


Online users
We have 4 online users
Google ads
RSS Wiki RSS File Galleries
[ Execution time: 0.37 secs ]   [ Memory usage: 12.03MB ]   [ 52 database queries used ]   [ GZIP Enabled ]   [ Server load: 0.72 ]