IoT Monitoring with InfluxDB, MQTT, and Grafana

Tutorial ini merupakan tutorial untuk mengambil data dari IoT sensor dan menampilkannya pada Grafana dashboard.

Beberapa teknologi yang digunakan:

  • InfluxDB, sebagai database
  • MQTT sebagai protokol komunikasi
  • Grafana, sebagai dashboard

Tutorial ini menggunakan 1 node server untuk instalasi semua komponen diatas.

Instalasi InfluxDB

  • Install InfluxDB
echo "deb https://repos.influxdata.com/ubuntu bionic stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y influxdb

sudo systemctl enable --now influxdb
sudo systemctl is-enabled influxdb
systemctl status influxdb
  • Buat user dan database
influx -precision rfc3339
CREATE DATABASE "homeiot_db"
SHOW DATABASES
CREATE USER "admin" WITH PASSWORD 'rahasia' WITH ALL PRIVILEGES
CREATE USER "iotuser" WITH PASSWORD 'iotpassword'
GRANT ALL ON "homeiot_db" to "iotuser"
SHOW GRANTS FOR "iotuser"
SHOW USERS
exit
  • Set password InfluxDB
nano /etc/influxdb/influxdb.conf
[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = true
  log-enabled = true
  • Restart InfluxDB
systemctl restart influxdb
systemctl status influxdb

Install Grafana

  • Install Grafana
cd /opt
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4.linux-amd64.tar.gz
tar zxvf grafana-5.2.4.linux-amd64.tar.gz
  • Create service Grafana
cat << EOF >> /etc/systemd/system/grafana.service
[Unit]
Description=Grafana

[Service]
User=root
ExecStart=/opt/grafana-5.2.4/bin/grafana-server -homepath /opt/grafana-5.2.4/ web

[Install]
WantedBy=default.target
EOF
  • Start Grafana
systemctl daemon-reload
systemctl enable grafana.service
systemctl start grafana.service
systemctl status grafana.service

Install MQTT

  • Install MQTT Broker
sudo apt install mosquitto mosquitto-clients
  • Tambahkan user dan password
sudo mosquitto_passwd -c /etc/mosquitto/passwd iotuser
password: iotpassword
  • Setting MQTT
sudo nano /etc/mosquitto/conf.d/default.conf

listener 1883

allow_anonymous false
password_file /etc/mosquitto/passwd
  • Restart mosquitto
sudo systemctl stop mosquitto
sudo systemctl start mosquitto
sudo systemctl status mosquitto
ps aux | grep mosquitto
  • Testing mosquitto, buka 2 terminal, satu sebagai subscriber, dan yang lain sebagai publisher
mosquitto_sub -h localhost -t iotchannel -u "iotuser" -P "iotpassword"
mosquitto_pub -h localhost -t "iotchannel" -m "hello world" -u "iotuser" -P "iotpassword"

MQTT to InfluxDB

Berikut adalah script python sebagai broker antara MQTT dengan InfluxDB, script ini akan melisten MQTT dan memforward datanya kedalam InfluxDB

Jalankan script tersebut, script juga dapat dijalankan sebagai background atau sebagai service di linux

pip3 install -r requirements.txt
python3 MQTT-to-Influxdb.py

IoT devices

disini penulis menggunakan NodeMCU dengan build-in WiFi. NodeMCU menggunakan modul PubSubClient untuk mengirimkan data ke MQTT Broker. Berikut contoh sensor DH11:

IoT device akan mengirimkan data ke InfluxDB, dapat dicek dengan:

influx -format=json -pretty -host 10.10.10.247 -username iotuser -password iotpassword
use homeiot_db
SELECT * from temperature
SELECT * from humidity

Integrasi Grafana dengan InfluxDB diluar artikel ini.

Leave a Comment

Your email address will not be published.