door mvdbro » 23 jul 2012, 20:30
Met deze versie kun je de temperatuur richting webapp krijgen. Ik heb variable 10 even gebruikt als voorbeeld. Je kunt dit aanpassen door de #define tempVar te wijzigen.
#define tempVar 10
boolean UserPlugin_Receive(unsigned long Event)
{
unsigned long bitstream=0;
byte nibble0=0;
byte nibble1=0;
byte nibble2=0;
byte nibble3=0;
byte nibble4=0;
byte nibble5=0;
byte nibble6=0;
byte nibble7=0;
byte checksum=0;
long temperature=0;
unsigned long rain=0;
byte windspeed=0;
unsigned long winddirection=0;
if (RawSignal.Number != 74) return true;
for(byte x=2; x<=64; x=x+2)
{
if(RawSignal.Pulses[x] > 0xA00) bitstream = ((bitstream >> 1) |(0x1L << 31));
else bitstream = (bitstream >> 1);
}
for(byte x=66; x<=72; x=x+2)
{
if(RawSignal.Pulses[x] > 0xA00) checksum = ((checksum >> 1) |(0x1L << 3));
else checksum = (checksum >> 1);
}
nibble7 = (bitstream >> 28) & 0xf;
nibble6 = (bitstream >> 24) & 0xf;
nibble5 = (bitstream >> 20) & 0xf;
nibble4 = (bitstream >> 16) & 0xf;
nibble3 = (bitstream >> 12) & 0xf;
nibble2 = (bitstream >> 8) & 0xf;
nibble1 = (bitstream >> 4) & 0xf;
nibble0 = bitstream & 0xf;
temperature = (bitstream >> 12) & 0xfff;
Serial.print("Alecto Raw data:");
Serial.println(bitstream);
Serial.print("Alecto Checksum:");
Serial.println(checksum);
if ((nibble2 & 0x6) != 6) {
Serial.print("Alecto Temperature:");
Serial.println(temperature);
UserVar[tempVar-1] = temperature;
ProcessEvent(AnalogInt2event(UserVar[tempVar-1], tempVar, CMD_VARIABLE_EVENT), VALUE_DIRECTION_INTERNAL, VALUE_SOURCE_VARIABLE, 0, 0);
}
else
{
if (nibble3 == 3)
{
Serial.print("Alecto Raindata:");
rain = (bitstream >> 16) & 0xffff;
Serial.println(rain);
}
if (nibble3 == 1)
{
Serial.print("Alecto Windspeed:");
windspeed = (bitstream >> 24) & 0xff;
Serial.println(windspeed);
}
if ((nibble3 & 0x7) == 7)
{
Serial.print("Alecto Wind direction:");
winddirection = (bitstream >> 15) & 0x1ff;
Serial.println(winddirection);
}
}
// funktie kan op twee manieren worden verlaten:
// true = Nodo gaat verder met verwerking van het event
// false = Event wordt niet verder behandeld.
return true;
}
Volgens mij hebben we een begin van iets bruikbaars...