Kyle Willis
Published © GPL3+

Adafruit Huzzah Humidifier/Dehumidifier Controller

Arduino humidity sensor that turns a humidifier or dehumidifier on/off using Thing.io, IFTTT, and Smartthings.

BeginnerShowcase (no instructions)5 hours1,338
Adafruit Huzzah Humidifier/Dehumidifier Controller

Things used in this project

Story

Read more

Schematics

Adafruit Huzzah and Sensor Schematic

This is the schematics for hooking up the adafruit Huzzah and temperature and humidity sensors together.

Schematic Image

Code

Adafruit Huzzah Code

C/C++
This is the code run on the feather to control and communicate with Thinger.io
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <ThingerWifi.h>
#include <Adafruit_Si7021.h>
// thinger.io config
#define USER_ID "kvwillis311"
#define DEVICE_ID "HouseHumidityTemp"
#define DEVICE_CREDENTIAL "HumTemp"
// wifi config
#define WIFI_SSID "TheInternet"
#define WIFI_WPA2_PASSWORD "HereistheKey0618"
//thinger.io Endpoint Config


//defines Wifi conection function
ThingerWifi thing(USER_ID, DEVICE_ID, DEVICE_CREDENTIAL);
//sets up defualt connection to Sensor
Adafruit_Si7021 sensor = Adafruit_Si7021();
//Defines containing readings for sensor
float Temperature;
float Humidity;
bool LowHum = false;
bool HighHum = false;
unsigned long lastCheck = 0;
float previousTemp = 0;
float previousHum = 0;


void setup() {
  //initializes wifi connection
  thing.add_wifi(WIFI_SSID, WIFI_WPA2_PASSWORD);
  //initializes sensor
  sensor.begin(); 
  thing["temperature"] >> [](pson& out){
    out = sensor.readTemperature();
  };
  thing["humidity"] >> [](pson& out){
    out = sensor.readHumidity();
  };


}
void loop() {
  thing.handle();
 
  Humidity = sensor.readHumidity();
  float currentTemp = sensor.readTemperature();
  float currentHum = Humidity;

  if(currentTemp-previousTemp!=0){
    thing.stream(thing["temperature"]);
    previousTemp = currentTemp;
  }
  if(currentHum-previousHum!=0){
    thing.stream(thing["humidity"]);
    previousHum = currentHum;
  }
  
  unsigned long currentTs = millis();
  if(currentTs-lastCheck>= 60*1000){
    lastCheck = currentTs;
  if(Humidity < 30 && !LowHum){
    LowHum = true;
    thing.call_endpoint("LowHumidity");
  }else if(Humidity < 50 && Humidity > 30){
    if(LowHum){
      LowHum = false;
      thing.call_endpoint("LowHumidityOff");
    }else if(HighHum){
      HighHum = false;
      thing.call_endpoint("HighHumOff");
    }    
  }else if(Humidity > 50 && !HighHum){
    HighHum = true;
    thing.call_endpoint("HighHumOn");
  }
}
}

Credits

Kyle Willis

Kyle Willis

1 project • 0 followers

Comments