- Wemos D1 miniPro
- BME-280 Temperatur-/Feuchtigkeits-/Luftdrucksensor
- Reed Kontakte für Türen / Fenster
- platformio
- MQTT Broker (auch auf Docker)
- Docker
- Optional Pushbullet zur Benachrichtigung
Bildet die Platform der Kommunikation zwischen Microcontroller und NodeRed Bietet eine Publish Subscribe Mechanismus zum Austausch von Nachrichten in einem beliebig gestaltbaren hierarchischen Sytem von Topics. Hilfreich zur Entwicklung ist ein stand-alone MQTT Client, z.B. MQTTBox
- verbindet sich mit dem WLAN
- verbindet sich mit dem MQTT Broker
- Aboniert Topics auf dem MQTT Broker um Korrekturwerte für Sensordaten entgegen zu nehmen
- liest den Temperatur-/Feuchtigkeits-/Luftdrucksensor aus
- Published die ausgelesenen Werte auf individuelle MQTT Topics (enthält MAC Addresse des Microcontrollers im Namen)
Dient zum Aufspielen der Software auf den Microcontroller
- Verbindet sich auf den MQTT Broker
- subscribed sich auf alle topics auf denen Sensordaten veröffentlicht werden
- liest die Daten aus und schreibt sie in die InfluxDB, versehen mit einem Tag für die Location, welcher Anhand des Topicnamen bestimmt wird
- Timeseries Datenbank
- Speicherung der von NodeRed aufbereiteten und angelieferten Messwerte
- verbindet sich mit der InfluxDB und stellt die Daten dar
platformio ist ein python Paket. Compilieren für ein Projekt wird komplett über platformio.ini im Projektverzeichnis gesteuert. Hier werden auch alle Libraries angegeben, die eingebunden werden.
Device finden
pio device list
Build directory säubern, Sketch compilieren und hochladen, danach anfangen auf dem seriellen Device zu lauschen
platformio run --target clean && platformio run --target upload && platformio device monitor -b 115200
- WiFi SSID und Passwort
- IP Addresse für MQTT Broker
sudo docker pull influxdb
sudo docker run -p 8083:8083 -p 8086:8086 -v <path to influxDB data on host>:/var/lib/influxdb influxdb
Create a DB:
curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE environment"
Access the Database CLI:
sudo docker exec -it <name of docker container> influx
Influx queries:
> select * from environment
> SELECT "value" FROM "autogen"."temp" WHERE ("measurement" = 'dewPoint') AND time >= 1516834800000 and time <= 1516921199999
- all measurements go into the DB "environment".
- measurements can be: temp, dewpt, pressure
- information about where the measurements were taken are in tag-key: location
- information about sensor are in tag-key: sensor
- information about unit are in tag-key: unit
- the actually measured value is in field-key: value
- this is pieced together in node red by reading from the MQTT Server
docker pull nodered/node-red-docker
sudo docker run -it -p 1880:1880 -v <path to data directory on host>:/data nodered/node-red-docker
http://localhost:1880
docker pull grafana/grafana
sudo docker run -d -p 3210:3000 --link <name of influx container>:influxdb --name grafana
http://localhost:3210 (u/p: admin/admin)
Data Source konfigurieren (http://localhost:8086) Dashboard erstellen und Rows konfigurieren
App installieren
Auf Pushbullet.com anmelden und API Key erstellen
NodeRed konfigurieren, dass eine Notification geschickt wird
curl --header 'Access-Token: <your_access_token_here>' --header 'Content-Type: application/json' --data-binary '{"body":"Die Garagentür steht offen!","title":"Türalarm","type":"note"}' --request POST https://api.pushbullet.com/v2/pushes