Skip to content

3.1 Raspberry Pi setup using IOTStack

Graham Ross edited this page Feb 5, 2022 · 48 revisions

The benefit of using IOTStack to install ClassicMQTT is that it makes it easy to include other docker images like InfluxDB, Telegraf and Grafana. IOTStack will help you generate a docker-compose.yml file by merging the ClassicMQTT definitions specified in the compose-override.yml file and the other docker images you select in the 'Build Stack' (ex InfluxDB, Telegraf, Grafana, Portainer-ce).

Grafana sample

Sample grafana dashboard

Portainer sample

Portainer - Container list running on Raspberry PI

Raspberry Pi setup

  • Flash the Raspberry Pi OS (32-bit) onto SD card using the Raspberry Pi Imager found at www.raspberrypi.org/software.

  • For headless setup, SSH can be enabled by placing a file named ssh onto the boot partition of the SD card (see www.raspberrypi.org/documentation/remote-access/ssh)

  • install sd card into rpi and power it up.

  • Find raspberry pi's IP address on your router and reserve address. (example used in this document is 192.168.0.25, yours will be different)

  • log in using ssh pi@192.168.0.25 (default password is raspberry)

  • run sudo raspi-config

  • select update then **Finish **when done

  • Change the default password using: passwd or use passwordless SSH access by copying your public key to rPi (see www.raspberrypi.org/documentation/remote-access/ssh/). Using powershell on Windows 10, execute: cat ~/.ssh/id_rsa.pub | ssh pi@192.168.0.25 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Update the OS

  • sudo apt update

  • sudo apt upgrade -y (available on new versions of Pi)

  • sudo reboot

  • login again with ssh pi@192.168.0.25

Setup IOTstack:

( IOTStack Wiki available at: https://sensorsiot.github.io/IOTstack/Getting-Started/ )

  • cd ~

  • sudo apt install -y git

  • Install IOTstack: git clone -b old-menu https://github.com/SensorsIot/IOTstack.git ~/IOTstack

  • sudo reboot

  • login again with ssh pi@192.168.0.25

  • cd ~/IOTstack

  • Run IOTStack: ./menu.sh

  • When you run for the first time you will need to "Install Docker".

  • sudo reboot

( Note - There are a few bugs with IOTstack install . The prompted update shown below sort of messed up my pi.Choose no. │ "Docker version is currently 20.10.5+dfsg1 which is less than 18.2.0 consider upgrading or you may experience issues. You will not be prompted again......│" So don't do that prompted update , for some reason it made my router choose a different IP address for the pi - took me awhile to figure out. Maybe they will get it fixed someday and you won't see that message . note by Larry 11/28/2021 )

Create the ClassicMQTT container using IOTstack:

Copy the compose-override.yml file from ClassicDIY/ClassicMQTT/code/Python to the IOTStack directory on the pi using:

  • cd ~/IOTstack

  • sudo wget https://raw.githubusercontent.com/ClassicDIY/ClassicMQTT/master/code/Python/compose-override.yml

  • edit the compose-override.yml file using: sudo nano compose-override.yml

  • Change the IP address for CLASSIC= to your classic's IP address along with the name of your classic by updating CLASSIC_NAME=.

  • If you want to setup a user/password for the mosquitto MQTT broker, refer to create-username-and-password then include your user/password in the compose-overide.yaml file for the MQTT_USER= and MQTT_PASS=

  • If you have more than one classic you will need to uncomment the second classic_mqtt block and set your second classic's IP and Name as in the example below.

  • env

*indentation is important with yaml files, make sure both classic_mqtt and classic_mqtt2 blocks have the same indentation.

  • If you have an external or cloud based MQTT broker, set the MQTT_HOST and PORT to it's IP address or Name along with it's username and password as in the example below.

  • env

  • run ./menu.sh and select Build Stack

  • Select the following containers to build: grafana influxdb mosquitto portainer-ce telegraf

  • Hit Enter when done.

  • Select Docker Commands and then Start stack.

  • You should see the following logs Build Stack log

  • exit menu.sh and run docker ps

  • You should see the following docker containers Build Stack log

Setup telegraf:

Setup Portainer-ce:

(IOTStack documentation https://sensorsiot.github.io/IOTstack/Containers/Portainer-ce/)

  • Browse 192.168.0.25:9000

  • Create an admin User & Password

  • Select: Docker (Manage the local Docker environment)

  • Connect

  • Select Containers from the Portainer Dashboard and click the logs Quick Actions Icon Build Stack log

  • If everything works the ClassicMQTT logs should look like the following; Build Stack log

Connect to MQTT broker using MQTTfx to test.

  • Download and install MQTT.fx

  • Connect to the MQTT broker using the Pi's IP and port 1883 Build Stack log

  • Subscribe to ClassicMQTT/#

  • Publish a wake command to the broker ( ClassicMQTT/MyWorkshop/cmnd ["WAKE"] ) Build Stack log

  • You should see the following messages from ClassicMQTT Build Stack log

Setup grafana:

Clone this wiki locally