CO2, humidity and temperature sensor on ESP8266 with mh-z19 co2 sensor and dht-22 temperature and humidity sensor.
You can either use custom backed server to receive data in JSON or build in MQTT client to publish data to MQTT server.
You can use project https://github.com/jehy/co2-online-display as backend to this program. See full description on https://geektimes.ru/post/270958/ (you can use Google translate from Russian).
All required libraries can be installed with Arduino IDE:
arduino --pref "boardsmanager.additional.urls=http://arduino.esp8266.com/stable/package_esp8266com_index.json" --save-prefs
arduino --install-library "ArduinoJson:6.14.1"
arduino --install-library "Adafruit Unified Sensor:1.1.2"
arduino --install-library "DHT sensor library:1.3.8"
arduino --install-library "LiquidCrystal I2C:1.1.2"
arduino --install-library "PubSubClient:2.8.0"
arduino --install-boards esp8266:esp8266
cp settings.sample.h settings.h # EDIT AFTER COPY!
arduino --verify --board esp8266:esp8266:d1:CpuFrequency=80,FlashSize=4M3M arduino-esp8266-mh-z19-serial.ino
- Copy file
settings.sample.h
tosettings.h
and specify your settings; - Install Adafruit Unified Sensor version 1.1.2;
- Install DHT sensor library version 1.3.8;
- Install ArduinoJson library v 6.14.1;
- Install LiquidCrystal_I2C library v 1.1.2;
- Compile and upload your sketch;
- Enjoy!
For Wemos D1, before compiling sketch:
- Add
http://arduino.esp8266.com/stable/package_esp8266com_index.json
to additional boards in preferences; - Select wemos D1 (or your other board) in boards manager and install it.
You can use config which looks like this:
sensor:
- platform: mqtt
unique_id: esp-terrace-co2
name: "ESP terrace CO2"
state_topic: "esp/terrace/co2"
qos: 0
unit_of_measurement: "ppm"
- platform: mqtt
unique_id: esp-terrace-humidity
name: "ESP terrace Humidity"
state_topic: "esp/terrace/humidity"
qos: 0
unit_of_measurement: "%"
- platform: mqtt
unique_id: esp-terrace-temperature
name: "ESP terrace Temperature"
state_topic: "esp/terrace/temperature"
qos: 0
unit_of_measurement: "ºC"