Back to Get Started

Environment Monitoring

The Environment Monitoring system tracks temperature, humidity, and air quality in real time. Sensor readings are sent through the panel topic dash_177xxxxxxxxxx and displayed on dashboards using gauges and charts. You can set alerts when values go beyond safe limits.

dash_177xxxxxxxxxx
Create panel

How It Works

  1. Create an account if you are a new user, or sign in if you already have an account.
  2. Create a new panel.
  3. Add widgets to the panel.
  4. Save the panel after adding widgets.
  5. Connect your hardware devices with the respective dashboard topic ID; values will be transmitted and displayed in the widgets.

What you can track

TemperatureIndoor/outdoor or per-room. Default gauge: min 0°C, max 50°C.
HumidityRelative humidity from DHT/BME.
Air qualityCO₂, PM2.5, VOC in real time.
Alerts & historyThreshold alerts and trends.

Before You Start

Connect your sensor device to the same cloud as KiwisIoT.

Your firmware must publish sensor readings consistently to dash_177xxxxxxxxxx, preferably in a structured format like JSON.

Create a dashboard panel and link your widgets to the same topic. Configure alerts for out-of-range values as needed.

For setup guidance, refer to the documentation or contact support.

Tips

  • Place CO₂ and PM sensors at breathing height for representative readings.
  • Use a stable power supply; sensors can be sensitive to voltage noise.
  • Set alert thresholds with hysteresis to avoid notification storms.
Environment Monitoring (ESP8266 + KiwisIoT)
#include <ESP8266WiFi.h>
#include <KiwisIoT.h>
#include <DHT.h>
const char* ssid = "IOT"; // Replace with your WiFi network name
const char* pass = "12345678"; // Replace with your WiFi network password
const char* topic = "dash_1772273401032"; // Replace with your dashboard topic ID
// -------- Pins --------
#define DHT_PIN D2 // Replace with your DHT sensor pin
#define GAS_PIN D5 // Replace with your gas sensor pin
#define LIGHT_SENSOR D6 // Replace with your light sensor pin
#define SOUND_PIN D7 // Replace with your sound sensor pin
#define SOIL_PIN A0 // Replace with your soil moisture sensor pin
#define MOTOR_RELAY D1 // Replace with your motor relay pin
#define LIGHT_RELAY D3 // Replace with your light relay pin
#define DHTTYPE DHT11 // Replace with your DHT sensor type
DHT dht(DHT_PIN, DHTTYPE);
KiwisIoT kiwisiot(ssid, pass, topic);
// -------- App Control --------
void onControl(String ch, String val) {
if (ch == "9") { // Motor
digitalWrite(MOTOR_RELAY, val == "1" ? LOW : HIGH);
}
if (ch == "10") { // Light
digitalWrite(LIGHT_RELAY, val == "1" ? LOW : HIGH);
}
}
void setup() {
Serial.begin(115200);
pinMode(GAS_PIN, INPUT);
pinMode(LIGHT_SENSOR, INPUT);
pinMode(SOUND_PIN, INPUT);
pinMode(MOTOR_RELAY, OUTPUT);
pinMode(LIGHT_RELAY, OUTPUT);
digitalWrite(MOTOR_RELAY, HIGH);
digitalWrite(LIGHT_RELAY, HIGH);
dht.begin();
kiwisiot.begin();
kiwisiot.onReceive(onControl);
Serial.println("Environment Monitoring Started");
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
int gas = digitalRead(GAS_PIN);
int light = digitalRead(LIGHT_SENSOR);
int sound = digitalRead(SOUND_PIN);
int soil = analogRead(SOIL_PIN);
String status = "Normal";
if (gas == LOW) status = "Gas Alert!";
if (sound == LOW) status = "Noise Detected";
if (soil > 800) status = "Soil Dry";
// ---- Send Data ----
kiwisiot.send("0", temp);
kiwisiot.send("1", hum);
kiwisiot.send("2", gas);
kiwisiot.send("3", light);
kiwisiot.send("4", sound);
kiwisiot.send("6", soil);
kiwisiot.send("11", status);
kiwisiot.run();
delay(2000);
}