 door mvdbro » 23 jul 2012, 20:30
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...