#include "DHT.h"
DHT dht;
+#include "RunningAverage.h"
+
+RunningAverage temp_avg(10);
+RunningAverage hum_avg(10);
+
// setup
void help() {
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
mySwitch.enableTransmit(10); // with sender wired in receiving doesn't work, pin #10
+ mySwitch.setRepeatTransmit(repeat); // or change to be different for 433 and 315 MHz
// DS18B20
sensors.begin();
// DHT22
dht.setup(8);
+ temp_avg.addValue( dht.getTemperature() );
+ hum_avg.addValue( dht.getHumidity() );
+
}
int serial_pos = 0;
char serial_data[2]; // socket (0-9), state (0-1)
char binary_data[32];
+int dht22_errors = 0;
+
+unsigned long time = millis();
void loop() {
+ if ( millis() - time > 2000 ) {
+ float t = dht.getTemperature();
+ if ( dht.getStatus() == 0 )
+ temp_avg.addValue( t );
+ else dht22_errors++;
+ float h = dht.getHumidity();
+ if ( dht.getStatus() == 0 )
+ hum_avg.addValue( h );
+ else dht22_errors++;
+ time = millis();
+ }
+
if (mySwitch.available()) {
Serial.print(mySwitch.getReceivedBitlength());
Serial.print(" bits ");
// DHT22
if (input == 'd') {
Serial.print("temperature=");
- Serial.print(dht.getTemperature());
+ Serial.print(temp_avg.getAverage());
Serial.print(" humidity=");
- Serial.print(dht.getHumidity());
- Serial.print(" status=");
- Serial.println(dht.getStatusString());
+ Serial.print(hum_avg.getAverage());
+ Serial.print(" errors=");
+ Serial.println(dht22_errors);
}
- if ( input >= 0x30 && input <= 0x39 ) {
+ if ( input >= 0x30 && input <= 0x39 && serial_pos < 2 ) {
input = input - 0x30; // ASCII to number
serial_data[serial_pos++] = input;
} else {