top of page


Updated: Dec 4, 2021

#include <ESP8266WiFi.h> //The library we will use for the wifi connection
#include <PubSubClient.h> // The library we will use for the mqtt connection

#include <CCS811.h>
#define ADDR      0x5A
#define WAKE_PIN  4
CCS811 sensor;

//mqtt connection library settings
WiFiClient espClient;
PubSubClient client(espClient);

//settings for internet and mqtt connection
const char* ssid = ""; // wifi SSID
const char* password =  ""; // wifi password
const char* mqttServer = ""; // mqtt server ip  to be sent by smartespiot by mail
const int mqttPort = ; // mqtt port   to be sent by smartespiot by mail
const char* mqttUser = ""; // mqtt username  to be sent by smartespiot by mail
const char* mqttPassword = ""; // mqtt pass to be sent by smartespiot by mail

void setup() {
  Serial.begin(115200); // start serial communication at 115200 speed

  Wire.begin(14, 12); // d6-14 scl d5-12 sda
  Serial.println("CCS811 test");
  if (!sensor.begin(uint8_t(ADDR), uint8_t(WAKE_PIN)))
    Serial.println("Initialization failed.");

  WiFi.begin(ssid, password); // start the wifi connection process

  while (WiFi.status() != WL_CONNECTED) { //
    delay(500); //wait 500ms
    Serial.println("Connecting to wifi..."); // wait until the wifi process connects
  Serial.println("Wifi connection ready :)"); // print the connection made information to the serial port

  client.setServer(mqttServer, mqttPort);//start connecting to the mqtt server from the specified port

  while (!client.connected()) { //wait until we connect to mqtt
    Serial.println("Connecting to MQTT server...");

    if (client.connect("SmartEspIOT", mqttUser, mqttPassword )) {//login to mqtt server with username and password with smartespIOT name

      Serial.println("MQTT connection established :) ");

    } else {

      Serial.print("Unable to connect... ");// If the connection cannot be established, let's give a warning
      Serial.print(client.state());             // print the problem description
      // We can understand the problem according to the information returned from the clients state.
      //-4 : MQTT_CONNECTION_TIMEOUT - the server did not respond in the ongoing time
      //-3 : MQTT_CONNECTION_LOST - network connection lost
      //-2 : MQTT_CONNECT_FAILED - network connection failed
      //-1 : MQTT_DISCONNECTED - disconnected
      //0 : MQTT_CONNECTED - connection established
      //1 : MQTT_CONNECT_BAD_PROTOCOL - The server does not support the requested MQTT version
      //2 : MQTT_CONNECT_BAD_CLIENT_ID - The server did not accept your information
      //3 : MQTT_CONNECT_UNAVAILABLE - The server did not accept the connectionetmed
      //4 : MQTT_CONNECT_BAD_CREDENTIALS - username password not accepted
      //5 : MQTT_CONNECT_UNAUTHORIZED - you are not authorized to connect

      delay(2000);   // wait two seconds and try connecting again


void loop() {

  client.loop(); // run the mqtt data processing function
  Serial.print("CO2 concentration : "); Serial.print(sensor.readCO2()); Serial.println(" ppm");
  Serial.print("TVOC concentration : "); Serial.print(sensor.readTVOC()); Serial.println(" ppb");
  //publish message//

  client.publish("devicename/co2", String(sensor.readCO2()).c_str());// send co2
  client.publish("devicename/tvoc", String(sensor.readTVOC()).c_str());// send tvoc
  delay(2000); // wait two seconds and send the message again
  Serial.println("message send");

Download ZIP • 2KB

8 views0 comments

Recent Posts

See All
Yazı: Blog2_Post
bottom of page