PM2M Docker
Jump to navigation
Jump to search
1) Installer Docker sur votre machine
2) Installer les clients Mosquitto pour souscrire et publier sur les sujets (ie topics)
sudo apt install -y mosquitto-clients mosquitto_sub -h test.mosquitto.org -t "iot_pm2m/1718/groupe1/#" -v mosquitto_pub -h test.mosquitto.org -t "iot_pm2m/1718/groupe1/fridge123" -v -m "temp=20.0;hum=10;open=true"
Lancer le client Web MQTT HiveMQ.
3) Lancer les containers Docker suivant
# NodeRED app for collect sensors data name_to_ipaddress(){ ifconfig | grep "inet " |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' | grep -v "127.0.0.1" | head -1 } NODERED_WEB_PORT=1880 NODERED_ADMIN_PASSWORD="MUST_BE_CHANGED" # Note : Password can be crypt and set into settings.js with node-red-admin hash-pw GF_PORT=3600 GF_PASSWORD="MUST_BE_CHANGED" MQTT_BROKER_1=mqtt01 MQTT_BROKER_2=mqtt02 MQTT_BROKER_1=test.mosquitto.org MQTT_BROKER_2=test.mosquitto.org LOCAL_HOST=$(name_to_ipaddress localhost) echo $LOCAL_HOST # ------------------------------- # Clean # ------------------------------- docker rm -f mosquitto_for_iot docker rm -f influxdb_for_iot docker rm -f mongodb_for_iot docker rm -f nodered_for_iot docker rm -f grafana_for_iot docker rm -f chronograf_for_iot rm -fr influxdb mongo grafana chronograf rm -f lib/flows/* # ------------------------------- # Mosquitto # ------------------------------- docker pull eclipse-mosquitto docker run -d --name nodered_for_iot \ -p 1883:1883 -p 9001:9001 \ mosquitto_for_iot # ------------------------------- # Influx DB # ------------------------------- mkdir influxdb docker pull influxdb docker run -d --name influxdb_for_iot \ -p 8086:8086 \ -p 8083:8083 \ -v influxdb:/var/lib/influxdb \ influxdb # ------------------------------- # MongoDB # ------------------------------- docker run -d --name mongodb_for_iot \ -p 27017:27017 \ mongo # ------------------------------- # Influx DB # ------------------------------- docker pull nodered/node-red-docker LOCALDIR=$(pwd) docker run -d --name nodered_for_iot \ -v $LOCALDIR:/data \ -p $NODERED_WEB_PORT:1880 \ --add-host=influxdb-1:$LOCAL_HOST \ --add-host=mongodb-1:$LOCAL_HOST \ -e FLOWS=lora.flow.json \ -e NODE_OPTIONS="--max_old_space_size=128" \ nodered/node-red-docker npm install node-red-contrib-influxdb npm install node-red-node-mongodb npm install node-red-contrib-pubnub npm install node-red-contrib-ifttt npm install node-red-contrib-kafka-node npm install node-red-contrib-web-worldmap npm install -g node-red-admin node-red-admin target http://localhost:$PORT node-red-admin list node-red-admin install node-red-contrib-influxdb # ------------------------------- # Grafana # ------------------------------- docker run -d --name grafana_for_iot \ -p $GF_PORT:3000 \ --add-host=influxdb-1:$LOCAL_HOST \ -e "GF_SECURITY_ADMIN_PASSWORD=$GF_PASSWORD" \ grafana/grafana # ------------------------------- # Chronograf # ------------------------------- mkdir chronograf docker run -d --name chronograf_for_iot \ -p 18888:8888 \ --add-host=influxdb-1:$LOCAL_HOST \ -v chronograf:/var/lib/chronograf \ chronograf # ------------------------------- # Logs # ------------------------------- docker logs --follow nodered_for_iot tail -f logfile.txt # ------------------------------- # Stop then Start # ------------------------------- docker stop mosquitto_for_iot docker stop influxdb_for_iot docker stop mongodb_for_iot docker stop nodered_for_iot docker stop grafana_for_iot docker stop chronograf_for_iot docker start mosquitto_for_iot docker start influxdb_for_iot docker start mongodb_for_iot docker start nodered_for_iot docker start grafana_for_iot docker start chronograf_for_iot
4) Visualiser
5) Ecrire et tester un fichier iot_mashup.yml pour Docker Compose