Display any message on a Pimoroni Scroll pHAT HD using MQTT
For BusyBot (display messages):
- Raspberry Pi Zero W
- Raspberry Pi OS Lite
- Pimoroni Scroll pHAT HD
For ButtonBot (send messages with a single click):
- Raspberry Pi Zero W
- Raspberry Pi OS Lite
- 3-Key Keybow
- MQTT Broker (such as Mosquitto)
Mosquitto will run happily on a Pi Zero, so if you don't have/don't want an MQTT broker for general use, just install it on BusyBot.
sudo apt -y update && sudo apt -y full-upgrade
sudo apt install git python3-pip
sudo pip3 install paho-mqtt
curl https://get.pimoroni.com/scrollphathd | bash
sudo pip3 install smbus
cd
git clone https://github.com/mrpjevans/busybot.git
cd busybot
You can now do a test run. Check out the options available:
python3 busybot.py -h
For example:
python3 busybot.py -b 192.168.0.1 -c BB1 -t busybot
...will start busybot listening to the topic busybot on the MQTT server located at 192.168.0.1
To display a message on the Scroll pHAT HD, just publish the message to the chosen topic on the MQTT server. For example using Mosquitto's command line tools:
mosquitto_pub -h 192.168.0.1 -t busybot -m "Hello, world"
This should cause "Hello, world" to be displayed repeatedly on the display.
To clear the display, send an empty payload:
mosquitto_pub -h 192.168.0.1 -t busybot -m ""
To have BusyBot startup at boot time:
sudo nano /usr/lib/systemd/busybot.service
Add the following:
[Unit]
Description=busybot
[Service]
ExecStart=/usr/bin/python3 /home/pi/busybot/busybot.py -b <host> -c <client_id> -t <topic>
Restart=on-failure
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
Save and quit, then from the command line:
sudo systemctl enable /usr/lib/systemd/busybot.service
sudo systemctl start busybot
ButtonBot is a device for sending pre-canned messages to BusyBot with a single keypress. It is based on a Raspberry Pi Zero W with a Pimoroni 3-Button Keybow.
sudo apt -y update && sudo apt -y update
sudo apt install git python3_pip
sudo pip3 install keybow paho-mqtt
cd
git clone https://github.com/mrpjevans/busybot.git
cd busybot
You can now do a test run. Check out the options available:
python3 buttonbot.py -h
For example:
python3 buttonbot.py -b 192.168.0.1 -c BB1 -t busybot
...will start button publishing to the topic busybot on the MQTT server located at 192.168.0.1
The code comes with three messages pre-loaded. Have a look at the code for easy customisation of the messages.
Having run up buttonbot, press any button to switch its message 'on'. Hopefully it will start scrolling on BusyBot. Press again to cancel or another button to switch.
To have ButtonBot startup at boot time:
sudo nano /usr/lib/systemd/buttonbot.service
Add the following:
[Unit]
Description=buttonbot
[Service]
ExecStart=/usr/bin/python3 /home/pi/busybot/buttonbot.py -b <host> -c <client_id> -t <topic>
Restart=on-failure
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
Save and quit, then from the command line:
sudo systemctl enable /usr/lib/systemd/buttonbot.service
sudo systemctl start buttonbot