433 MHz Funkthermometer decodieren

Hier nochmal der ganze Code:

int startarray;
int thhuarray[40];
int thhuarraypos=0;
int startok=0;
int endok=0;
int lengh=0;

void setup() {
  Serial.begin(9600);
  startarray =0;
  attachInterrupt(0, r, CHANGE);
  for (int i=0;i<=40;i++) {
  	thhuarray[i]=5;
  }
}

void loop() {
}

void output() {
}
Hacked Thierry Mugler 433 MHz Thermometer Protokoll Decoded By Arduino - °C
byte createValue(byte start)
  {
      byte value=0;
      byte bitpos=0;
      for (byte valuepos=start;valuepos<=start+3;valuepos++) {
            bitWrite(value, bitpos, thhuarray[valuepos]);
            bitpos++;
      }
      return value;
  }

void r() {
    int duration = pulseIn(2, HIGH);

    if ((duration>3600) & (duration<3900))  {
      startarray=1;
      thhuarraypos=0;
      startok=1;
      lengh=0;
    }

    if (startarray=1) {
	    if ((duration>600) & (duration<1000)) {
		    thhuarray[thhuarraypos]=1;
		    thhuarraypos++;
		    lengh++;
		    if (lengh==4) {
		      lengh=0;
		    }
	    }

    if ((duration>2000) & (duration<2500)) {
		    thhuarray[thhuarraypos]=0;
		    thhuarraypos++;
		    lengh++;
		    if (lengh==4) {
		      lengh=0;
		    } 
    }
    
    if (thhuarraypos==40) {
		startarray=0;
		endok=1;

		if ((startok & endok) & (thhuarray[36]==1) & (thhuarray[37]==1) & (thhuarray[38]==1) & (thhuarray[39]==1) & (thhuarray[0]==1) & (thhuarray[1]==1) & (thhuarray[2]==1) & (thhuarray[3]==1) ) {
		Serial.print(createValue(12),DEC);
		Serial.print(createValue(8),DEC);
		Serial.print(".");
		Serial.print(createValue(4),DEC);    
		Serial.print(";");        
		Serial.print(createValue(20),DEC);
		Serial.print(createValue(16),DEC);
	       Serial.print("\r");        
	      }      
      thhuarraypos=0;
      startok=0;
      endok=0;      
    }
  }
}

Der Code läuft recht Stabil ohne weitere Ausreißer bis jetzt. Siehe Live Daten:

Der Rel Humidity Sprung kommt weile meine Frau heute den WLAN Router durch Staubsaugen stromlos machte:
EDIT: Ich denke den "Feuchtesensor" Marke Billig China kann man wohl vergessen: der Sprung von 47% auf 57% ist doch recht schnell hochgegangen...

:slight_smile:

Der Codeteil für den Interrupt ist durch Sui entstanden. Er hatte ihn für die 433 MHz Steckdosen Analyse implementiert.

Weiterhin traue ich der Temperatur mehr als der Rel Luftfeuchtigkeit.

Egal: das Gesamtprojekt ich für mich nun erledigt. Wir hackten das Protokoll, es gibt einen Code, der rennt. Der Ardu sendet per WR703N Daten. Das war's. Over'n'out.