Ah leuk dat er nog meer mee bezig zijn!
Ik heb zelf geen RFXcom maar met véél zoeken op internet, nog meer lezen en veel puzzelen ben ik al een heel einde gekomen. De details van het protocol ga ik nu niet typen want ik moet van mezelf zo eens gaan slapen, maar wel even een
sheetje. De KaKu decodering komt van Paul Tonkes, dus aan hem alle credits. De notering erachter is van mij.
edit:
voor het geval zich iemand het afvraagt: ik heb de rfxcom 'geanalyseerd' door middel van een test zend&ontvang tool. Te vinden op:
http://www.rfxcom.com/downloads.htm Programma RFreceiver en RFtransmitter.
De RFXCOM geeft bijna alle signalen (iig die van kaku en nog een heel stel) door aan de computer als x10 signalen (x10.basic voor de googelaars). Van een heel stel kaku codes heb ik deze x10 codes uitgezocht (zie
sheet).
Het x10 protcol is een beetje anders dan dat van KaKu, de RFXCOM werkt bij KaKu in 48bit mode (= variable bitmode). Zoals je kan zien begint elk signaal met 20 (hexadecimaal overigens). Dat is 'rommel' in 32 bit mode zit dat er niet voor maar 32 bit mode kan geen kaku ontvangen. Na de 0x20 komen 4 bytes. De eerste en de derde hiervan bevatten resp. de huis en kanaal+commando. De tweede en vierde byte is de inverse van de andere (dus 0xFF minus waarde of 255- decimale waarde)
Voorbeeld:
code:
1
2
3
4
5
6
| 20 60 9F 00 FF = A1ON
xx 20 is opvulling
xx 60 60 is huiscode A
xx xx 9F FF-60 = 9F checksum van huiscode
xx xx xx 00 xx 00 is kanaal 1 plus 'AAN'
xx xx xx xx FF FF-0 = FF. duh. |
Een 'aan' of 'uit' zit hem in het verhogen van de kanaalcode (3e bit). Bij UIT met 0x20, bij AAN blijft het gelijk. De checksum gaat dus 0x20 (of 0) omlaag (4e bit). De huiscode is hetzelfde voor kanaal 1 tm 8 (let goed, kanaal niet huis), bij kanaal 9 tm 16 gaat de huiscode 0x04 omhoog.
code:
1
2
3
4
5
6
| 20 64 9B 30 CF = A 10 OFF
xx 20 is opvulling
xx 64 64 = 60 + 4 is huiscode A
xx xx 9B FF-64 = 9B checksum van huiscode
xx xx xx 30 xx 30 is kanaal 10 plus 'uit'
xx xx xx xx CF FF-30 = CF |
Mijn 'wijsheid' is gelukkig niet alleen in een excel sheet te vinden. Nadat ik nagenoeg de boel had uitgepluisd vond ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| 'Unit High or Low used?
'Uncomment the line you like to use.
'-------------------------------------------
'In this example UNIT 3 OR 11 is selected
'and to select UNIT 3 the line UNITHL =&H00 must be selected (uncomment)
UNITHL = &H00 'UNITS 1 TO 8
'UNITHL = &H04 'UNITS 9 TO 16
'Select the ON or OFF command to be executed.
'-------------------------------------------
CMD = &H00 'ON
'CMD = &H20 'OFF
'Select the unit to switch on or off.
'-------------------------------------------
'UNIT = &H00 Or CMD '1 OR 9
'UNIT = &H10 Or CMD '2 OR 10
UNIT = &H08 Or CMD '3 OR 11
'UNIT = &H18 Or CMD '4 OR 12
'UNIT = &H40 Or CMD '5 OR 13
'UNIT = &H50 Or CMD '6 OR 14
'UNIT = &H48 Or CMD '7 OR 15
'UNIT = &H58 Or CMD '8 OR 16
'Select the house code (no more changes after this line)
'-------------------------------------------
HOUSE = &H60 Or UNITHL 'A
'HOUSE = &H70 Or UNITHL 'B
'HOUSE = &H40 Or UNITHL 'C
'HOUSE = &H50 Or UNITHL 'D
'HOUSE = &H80 Or UNITHL 'E
'HOUSE = &H90 Or UNITHL 'F
'HOUSE = &HA0 Or UNITHL 'G
'HOUSE = &HB0 Or UNITHL 'H
'HOUSE = &HE0 Or UNITHL 'I
'HOUSE = &HF0 Or UNITHL 'J
'HOUSE = &HC0 Or UNITHL 'K
'HOUSE = &HD0 Or UNITHL 'L
'HOUSE = &H00 Or UNITHL 'M
'HOUSE = &H10 Or UNITHL 'N
'HOUSE = &H20 Or UNITHL 'O
'HOUSE = &H30 Or UNITHL 'P |
Goed, fijn, maar wat kan je hier nou mee?
Als je dus weet wat de RFXCOM er uit gooit en ontvangt kan zelf met je arduino met de rfxcom software praten. Het voordeel hiervan is dat de software voor alle gangbare huisautomatiseringssoftware al bestaat en het wordt ook nog bijgewerkt. Maar als je alles zelf wilt maken heeft het dus niet veel nut
Ik ben ook al verder dan allen de code, maar als er interesse is daarover later meer. Mijn arduino kan nu praten met de rfxcom plugin en ook signalen ontvangen van de KaKu afstandbediening, deze doorgeven aan de plugin, welke het weer doorgeeft aan xPLHal. Deze kan dan doen wat je maar wil, maar dat lijkt me duidelijk.
Mijn todo is nog een mooie 'code' omschrijving doen van KaKu naar rfxcom.X10 (nu werken alleen 3 kanalen omdat die 'hardcoded' erin zitten) en de zender moet is het volgende project. Tot nu toe ben ik zeer tevreden over de gekozen richting, het lijkt me aardig wat tijd aan de software kant te schelen, en dat is toch al niet mn allersterkste kant
