nodo-domotica.nl
http://www.nodo-domotica.nl/forum/

omzetten Home Easy RF signalen
http://www.nodo-domotica.nl/forum/viewtopic.php?f=8&t=104
Pagina 1 van 1
Auteur:  mvdbro [ 13 nov 2011, 23:56 ]
Titel:  omzetten Home Easy RF signalen

Hallo Allemaal,

Zowel ikzelf als mijn buren hebben Home Easy zenders die helaas op enkele kanalen codes verzenden die door de Nodo onjuist worden geinterpreteerd, hieronder enkele voorbeelden:
23:48:59 > Direction=Input, Source=RF, Unit=13, Event=(TimerSetSec 182,154)
23:49:11 > Direction=Input, Source=RF, Event=(TimerSetSec 182,154)
23:49:42 > Direction=Input, Source=RF, Event=(TimerSetSec 182,175)
23:49:41 > Direction=Input, Source=RF, Unit=11, Event=(TimerSetSec 182,175)

Ik heb een routine gemaakt die Home Ease zendersignalen omzet naar unieke NewKaku signalen, zodat signalen van deze zenders beter worden begrepen. De Home Easy wordt nu dus ook als newKaku herkend. e.e.a is nog wel beperkt tot hetgeen ik zelf kan testen...

/*********************************************************************************************\
* Analyseer Home Easy Messages en zet deze om naar newkaku codes
* Alleen 'new' devices met automatische code worden herkend
* Alleen On / Off status wordt herkend
* Alleen getest met Home Easy HE300WEU zender
* Zet een Home Easy code om in een unieke newkaku code, zodat Home Easy 'compatible' wordt met KAKU
* Home Easy message structure, voor zover kunnen achterhalen uit analyze bitpatroon...
* AAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCDDEEFFFFFFG
* A = startbits/preamble, B = address, C = ?, D = Command, E = ?, F = Channel, G = Stopbit
* alpha status, geen foutdetectie e.d.!
\*********************************************************************************************/
unsigned long HomeEasy_Decode(void)
{
unsigned long address = 0;
unsigned long bitstream = 0;
int counter = 0;
byte rfbit =0;
byte state = 0;
unsigned long channel = 0;

// geldige berichten zijn altijd 116 pulses lang
if (RawSignal[0] != 116) return 0L;

for(byte x=1;x<=RawSignal[0];x=x+2)
{
if ((RawSignal[x]<500) & (RawSignal[x+1]>500))
{
rfbit = 0;
}
else
{
rfbit = 1;
}
if ((x>=23) && (x<=86)) address = (address << 1) | rfbit;
if ((x>=87) && (x<=114)) bitstream = (bitstream << 1) | rfbit;
}
state = (bitstream >> 8) & 0x3;
channel = (bitstream) & 0x3f;

// Tel kanaal op bij het basis adres, shift kanaal eerst 6 bits, zodat dit niet bit 5 kan beinvloeden
channel = channel << 6;
address = address + channel;

// Zet bit 5 op basis van commando informatie in Home Easy protocol
if (state == 2) address = address & 0xFFFFFEF;
else address = address | 0x00000010;

return (address&0x0fffffff) | (unsigned long)(SIGNAL_TYPE_NEWKAKU) << 28;
}
Pagina 1 van 1 Alle tijden zijn GMT + 1 uur