This little project is our home assistant. A Cat sitting on a Book with a Raspberry Pi mounted inside. This contains sensors, lights, a display, google assistant, music player and network Storage.
I have had this project running for a couple of years but it needed an update and a few features changed. So I have given it a new lease of life by adding a few more useful feature for how we want to use it.
Several years ago Google released the AIY voice kit for the Raspberry Pi, which came in a little cardboard box. Though functional, it was not that interesting to look at. So to win the argument of having this assistant on display in our lounge it needed a new more ascetically pleasing box. My solution was to turn to decopatch. This is basically adding patterned paper to paper mache models. I used a Cat and a book, with the Cat covered in Fur print paper and the Book covered in an Map of the world. Now that I had a bit of extra space for the Pi as it is located in the Book, I decided to give the setup a few more feature and more functional.
So this is what it is and what it can do:
- Google Voice Assistant
- Network Storage using Samba for Laptops, Pi's and Phones.
- MP3 Music/Radio Player via webserver
- LCD Display for
- Time Date
- Room Temperature and Humidity
- Script to show important dates in the next 30 days
- Script to get RSS weather feed for the local area from the BBC, Forecast and Sunset
- Animations
- Multiple patterns of Coloured LEDS
- A Fibre Optic Cat Collar
- Off Switch
The project is made from:
- Raspberry Pi 2
- 5ghz Wifi USB Adapter
- Google AIY Voice v1 Hat
- BME680 Temperature, Humidity , Pressure & Air Quality Sensor
- Blinkt Programable LEDs
- 16 x 2 LCD Display
- RGB LED and Fibre Optics
- 3w Speaker
- Off Switch and Status LED
- 3TB hard drive
Inside are lots of wires and a small yogurt pot to amplify the 3 watt mini speaker.
Though the Google Voice Hat can output in Stereo only one Speaker is attached.
Sticking out the side is the Pimoroni BME680 temperature, humidity, pressure and air quality sensor. Currently i'm only using the temperature and humidity readings.
The Google Assistant project comes with it's own image but I wanted to use a standardd Raspberry Pi OS (Buster) installation. There are a few projects that install the AIY Voice software on to the existing OS. I followed this guide which worked pefectly, pimylifeup.com/raspberry-pi-google-assistant/. This was useful as the AIY setup is different than how it was when I first created this project.
The Display
The display is the main source of information which is run from four custom python scripts.
The main script runs the sequence of events and manages the display while collecting readings from the other three scripts as needed.
Just for fun there is a random animation of a Pacman Ghost going by. There was a Pacman and Space Invaders animations, as well, but I took them away as it felt like they were on the screen just as I wanted to see the Time or other info.
When the animation is not playing the date and time are displayed on one line and then messages are displayed on the other.
Up and Coming Events
The next custom script displays then next important date in the next 30 days. There is a text file that contains anniversary dates such as birthdays, national holidays etc where the date is the same. Then there is unique dates such as bank holidays, a personal event, a trip out, school holidays, school events etc.
Each entry has a lead up message such as "days to my Birthday" and a day message "Happy Birthday me" not that my age getting up is a good thing.
The script then checks for all events that will fall in the next 30 days and randomly display one each time the script is run. No excuses for missing Birthdays now.
Room Temperature and Humidity
The next script gets the current room temperature and humidity from the Pimoroni BME sensor and displays the results. I previously just had a one wire temperature sensor sticking out the tail, but when I came across the Pimoroni BME680 sensor I though that would be useful. We have issues with condensation at times and this is great for monitoring that. We can now see that around 70% we need to put on the dehumidifier.
Local Weather Forecast
The next script get the RSS weather feed from the BBC for the local area. A python script then extracts the Summary for Today and Tomorrow along with the outside temperature and sunset times. These scroll along the top line while the Time and Date are on the bottom line.
Network Storage
Attached to the Pi2 is a 3TB hard drive in a self powered case. The Pi has Samba installed so the Hard Drive can be used as back up storage for Wifi devices in the house. It also good as alternate storage when using the my other Pi's. The drive also contains all the MP3 music for the Music player.
Music Player
The Cat can also play your favourite music. There is a folder that contains our MP3 music. I have a batch script in the music folder that generates playlist from each Album folder. There is also a folder of Radio Station links. The Pi uses MPD with YMPD as the interface so the music player can be accessed via a webpage.
You can then select a playlist or Radio station to listen too. We don't subscribe to a music service to play music through Google Assistant so this works for us. As there is only one speaker, you can't use the Google Assistant while listening to music. The other down side is anybody in the house can access the webserver, so the kids like to randomly play music when they are in the a different room and turn the volume up, they are sooo funny, not.
Lights
To add a bit of colour to the project I have added a fibre optic collar to the Cat model. Inside the Cat's body is a single Cycling RGB LED. These types of LED's scroll through mutiple colours on their own without any programming. The fibre optics are held in rubber gromits, the LED is also in a grommit. These are glued to two plastic nuts to hold it in place. It does the job but I think it needs some foil over the fibre optics and nuts to stop so much light escaping.
Above the display there is a Blinkt. This is 8 programable colour leds mounted under a mouldable plastic cover to diffuse the LEDs. This is run by a seperate python script that I have written to cycle through variouse effects and make the project even more intersting to look at. Well it beats the original cardboard box!
If you are interested in any further details on this project then please let me know.