summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md91
1 files changed, 91 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4793209
--- /dev/null
+++ b/README.md
@@ -0,0 +1,91 @@
+# ESP8266 Lua/NodeMCU module for CCS811 VOC sensors
+
+[esp8266-nodemcu-ccS811](https://finalrewind.org/projects/esp8266-nodemcu-ccs811/)
+provides an ESP8266 NodeMCU Lua module (`ccs811.lua`) as well as MQTT /
+HomeAssistant / InfluxDB gateway application example (`init.lua`) for
+**CCS811** volatile organic compounds (VOC) sensors connected via I²C. The
+application example assumes that an **HDC1080** sensor for temperature and
+humidity compensation is available as well.
+
+## Dependencies
+
+ccs811.lua has been tested with Lua 5.1 on NodeMCU firmware 3.0.1 (Release
+202112300746, float build). It requires the following modules.
+
+* bit
+* i2c
+
+Most practical applications (such as the example in init.lua) also need the
+following modules.
+
+* hdc1080
+* gpio
+* mqtt
+* node
+* tmr
+* wifi
+
+## Setup
+
+Connect the CCS811 sensor (or CCS811/HDC1080 combo board) to your
+ESP8266/NodeMCU board as follows.
+
+* CCS811 GND → ESP8266/NodeMCU GND
+* CCS811 VCC → ESP8266/NodeMCU 3V3
+* CCS811 SDA → NodeMCU D1 (ESP8266 GPIO5)
+* CCS811 SCL → NodeMCU D2 (ESP8266 GPIO4)
+
+If you use different pins for SCL and SDA, you need to adjust the i2c.setup
+call in the examples provided in this repository to reflect those changes. Keep
+in mind that some ESP8266 pins must have well-defined logic levels at boot time
+and may therefore be unsuitable for CCS811 connection.
+
+## Usage
+
+Copy **ccs811.lua** to your NodeMCU board and set it up as follows.
+
+```lua
+ccs811 = require("ccs811")
+i2c.setup(0, 1, 2, i2c.SLOW)
+ccs811.start()
+
+-- can be called with up to 1 Hz
+function some_timer_callback()
+ if ccs811.read() then
+ -- ccs811.eco2 : equivalent CO₂ (estimated from tvoc, unreliable) [ppm]
+ -- ccs811.tvoc : Total Volatile Organic Compounds [ppb]
+ -- ccs811.status : Status Register; see manual
+ -- ccs811.error : Error Register; see manual. error == 0 indicates that everything is alright.
+ -- optionally, if HDC1080 is available:
+ local t, h = hdc1080.read()
+ ccs811.setEnv(h, t)
+ end
+end
+```
+
+The sensor performs an air quality measurement every second.
+
+## Application Example
+
+**init.lua** is an example application with HomeAssistant integration.
+To use it, you need to create a **config.lua** file with WiFI and MQTT settings:
+
+```lua
+station_cfg = {ssid = "...", pwd = "..."}
+mqtt_host = "..."
+```
+
+Optionally, it can also publish readings to InfluxDB.
+To do so, configure URL and attribute:
+
+```lua
+influx_url = "..."
+influx_attr = "..."
+```
+
+Readings will be published as `ccs811[influx_attr] eco2_ppm=%d,tvoc_ppb=%d,status=%d,error=%d`.
+Unless `influx_attr = ''`, it must start with a comma, e.g. `influx_attr = ',device=' .. device_id`.
+
+## Images
+
+![](https://finalrewind.org/projects/esp8266-nodemcu-ccs811/media/hass.png)