PiJuice HAT and pHAT are a great portable power solution to your Raspberry Pi projects. However, your Raspberry Pi may be in a remote location or you may find yourself not having physical access to the Raspberry Pi and its important to keep tabs on how it performing especially when you find that your primary power has gone down or when the battery is getting low. It can be critical for you to know in an instant when power events occur so you can rectify any issues and keep your project powered and running.
This is where the platform Twilio comes in. Twilio is a communications platform designed to link and engage with users from a number of different platforms such as Email, SMS, WhatsApp, Voice and many more. The platform allow users to create their own applications using a number of different programming language and provided examples.
Note: Twilio is a paid platform. Initial sign up under the free Trial will give you credit of $15.50 to send and receive messages. Thereafter you can use a pay-as-you-go service to top up your credit. Each message sent using the WhatsApp Twilio API is approximately $0.003, which very inexpensive. You will also be required to setup a number to send message from Twilio, this is roughly $1 a month to maintain.
In this guide we will show you how to install Twilio and PiJuice software on your Raspberry Pi as well as how to setup a trial account with Twilio. You will be able to configure your Raspberry Pi to send messages to your smart device via WhatsApp when certain power events occur using the PiJuice API.
What you need
You will need the following parts to complete this exercise:
- Raspberry Pi computer
- Power supply
- Keyboard & Mouse
- Ethernet cable (optional)
- PiJuice HAT
- Solar panel (optional)
Create a Twilio Account
1. Head on over to https://www.twilio.com/try-twilio to sign up for a free trial account. You will need to verify your email address and personal phone number for security measures before you can try Twilio.
2. Once you finish signing up, you should see you Console Dashboard. This is your home for finding all your Twilio credentials, checking your usage and creating a phone number.
3. You will also see in the Dashboard that there is a small pre-loaded balance to test out some of Twilio’s functionality. You will not be charged for Twilio phone numbers until you upgrade your account.
4. When you signed up for your account you verified your personal phone number, where you can see a list of varied numbers on the Verified Caller ID page. Here you may verify as many number as you like.
5. WhatsApp for Twilio us currently in Beta mode and as such there is a sandbox developers environment we can use to test and implement in our project before it gets rolled out. In order to get started you will need to send a WhatsApp message from your verified phone to +1 415 523 8886 with the message “join applied-basket”.
Install PiJuice Software
For this project we are going to use the PiJuice API which is included in the PiJuice Base package. To install this open up a Terminal window on your Raspberry Pi or Login via SSH and enter the following command:
sudo apt-get update sudo apt-get install pijuice-base
To install Twilio on the Raspberry Pi simply open up a terminal window and type the following command:
sudo pip3 install twilio
Note: You must install Python 3 Twilio library as the PiJuice API is Python 3 only.
In this guide we will give a few examples on how to combine Twilio with the PiJuice Events.
1. First you will need to find and locate some of your Twilio credentials such as your account ID and authorisation token, which are both unique to you. Open up your Twilio Dashboard and you can find your Account ID and Auth Token.
2. Open up a terminal window on your Raspberry Pi and create a new python script:
sudo nano whatsapp.py
3. Add the following scrip but replacing the credentials with yours incising your verifying phone number:
from twilio.rest import Client account_sid = 'XXXXXXXXXXXXXXXXXXXXXXXXX' auth_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXX' client = Client(account_sid, auth_token) message = client.messages.create( from_='whatsapp:+14155238886', body='Sent from Raspberry Pi', to='whatsapp:+44000000000000' ) print(message.sid)
4. Run the script from the command line and you should receive a WhatsApp message on your phone:
sudo python3 whatsapp.py
Example 1 – Primary Power Removed
#!/usr/bin/python3 from time import sleep from twilio.rest import Client from pijuice import PiJuice # Import pijuice module account_sid = 'xxxxxxxxxxxxxxxxxxxxxxx' auth_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxx' event = 0 client = Client(account_sid, auth_token) pijuice = PiJuice(1, 0x14) # Instantiate PiJuice interface object while True: data = (pijuice.status.GetStatus()['data']) # Read PiJuice status. print (data["powerInput"]) sleep(1) if data["powerInput"] is 'NOT_PRESENT'and event == 0: message = client.messages.create( from_='whatsapp:+14155238886', body='PiJuice Primary power removed', to='whatsapp:+447879841412' ) print(message.sid) sleep(5) event = 1 elif data["powerInput"] is "PRESENT" and event == 1: event = 0 message = client.messages.create( from_='whatsapp:+14155238886', body='PiJuice power restored', to='whatsapp:+440000000000' ) sleep(5)