mrpjevans / busybot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BusyBot and Buttonbot

Display any message on a Pimoroni Scroll pHAT HD using MQTT

Client

Hardware

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

Requirements

  • 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.

BusyBot

Install Dependancies

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

Installation

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

Pushing messages

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 ""

Running as a Service

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

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.

Install Dependancies

sudo apt -y update && sudo apt -y update
sudo apt install git python3_pip
sudo pip3 install keybow paho-mqtt

Installation

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

Usage

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.

Running as a Service

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

About

License:MIT License


Languages

Language:Python 98.2%Language:Shell 1.8%