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...
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.