Source code for this project is available on GitHub.

I wanted to add items to a shopping list as I used them up, then read the same list on my phone at the supermarket. A Raspberry Pi 3 and a barcode scanner let me scan an empty packet before throwing it away and add the product to a Trello list.

The Pi ran a web server and displayed the list in Chrome, with updates sent to Trello over Wi-Fi. Over time, the display also gained:

  • Timer to turn off the screen and barcode scanner at night and when nobody was home
  • Live weather (four-day forecast) with expected precipitation graph
  • Countdown timer (top left under date) to a goal
  • Shared calendars (via Google Calendar)
  • Todo list (via Trello)

Watch the video below to see it in action. You can see the scanned items appear both on the cell-phone and in the list on the left-hand side of the phone.

Details Summary

  • The PC maintained a database of products and their barcode numbers. When an unknown item was scanned, it appeared as "Unknown Item (08 5321...)" where the numbers in brackets were the start of the item's barcode number. You could then edit the item in Trello to match its name (e.g. "Baking Soda"). The PC would see this change and record the item description and barcode number into a separate GitHub repository. This made adding new products quick and simple.
  • The barcode scanner appears as a keyboard input device. Scanning an item causes the virtual keyboard to enter the barcode number followed by enter.
  • Google Chrome was automatically launched in kiosk mode at boot-up. This removed the title bar and kept it in full-screen mode.
  • The webserver was created using Flask in Python.
  • The material design lite CSS kit was used to style the page.