Shopping list skill

Hi everybody,

I’d like to offer my shopping list skill for everybody who is interested. Because I don’t think there is already a better way of publishing a skill I’ll do it through this forum post.

It currently can:

  • Add items to your shopping list
  • Remove items from your shopping list
  • Send the list via email to a set of recipients
  • Create a fresh empty list (currently the old ones are kept)

Not included yet:

  • Quantity of an item on a list (will include that later)
  • A interface to print the lists as well

Prerequisites apart from of a working Rhasspy environment:

  • A mariadb/mysql database
  • Java
  • An email server somewhere to send the lists

Here you can find downloads and instructions (yes, I know, my web design skills have stopped evolving in the 90’s):

For anybody interested there’s also the source code available as zip file. Forgive me if I’m not working with GIT, yet.

I’ve supplied sentences for English and German as well as a list of shopping items for those two languages so you have a basis to start with. Of course you’ll need to check the list to see if it contains all the items which YOU usually buy.

I’ll refrain from explaining a lot here as the above link holds more detailed explanations and I’d like to keep them at a central location. However feel free to comment here and suggest improvements for the instructions or the program itself.

I might add of all the nerdy things I made at/for home this has proven to have by far the highest woman-acceptance-factor. My wife started using it by herself without me asking her to do so at all :smiley: .

Update v2:

  • Added import feature to add all your products from the Rhasspy slot file to the database
  • Added PHP file to view your shopping list when you’re on the go (and forgot to send it while you were still at home)

Update v3 (2020-12-30):

  • Bugfixes

Update v4 (2020-12-31):

  • Improved the PHP file (for abroad non-voice use) significantly
  • Utilized the Rhasspy feature slot_programs so one doesn’t need to maintain the products list in 2 places anymore.

Hi @OulSiDEs, thanks for sharing this :slight_smile:

We’ve talked about different ways to share skills, and haven’t settled on something yet. I know an “app store” thingy would be cool, but I’m hoping to find someone else to volunteer for that :laughing:

Nothing wrong with good ol’ HTML!

Nice work and thank you for sharing :+1:

1 Like

This is great! I was just trying to figure out a way to do this and then this pops ups. Thanks for the work. :trophy: :1st_place_medal:

1 Like

I have also worked on a shopping list. But I must admit than your approach is more complete and sophisticated.

Mine which is based on Node-red. I can add to the list, read the items one by one and erase the list on demand. It is just a file, no database.

I considered making a smaller file based approach at first, too. But with the majority of my projects in the past I usually started with a small idea and kept putting too much stuff on top of that over time. And then I had to do a lot of refactoring every now and then.
That’s why nowadays I always plan additional room for possible growth :grinning:

1 Like

@OulSiDEs question for you. Do you have this on github or anything? The reason I am asking, is I was curious about doing a fork. Not because I think it needs improved, but to customize and maybe provide back.

My wife and I use the app 2do on our phones and all the lists get stored to ical tasks lists. So we have a shopping list that we add stuff to and it shows up on both our phones on our 2do shopping list.

I am interested in possibly seeing if I could have this skill use that list as it’s “storage” or probably an easier first step, edit the php so i could have it add the list shopping list to my 2do list.

Fantastic work! This is something i have been wanting for quite sometime!

Hi @CrankyCoder,

no, I’m not using Github. However the link at the top offers a zip file with the source code.

However I’m not sure if it’ll help you a lot because it uses a relational database as storage. I don’t think it’ll be easy to convert that to whatever’s in your ical files. Creating something anew is probably less work.

BUT: Maybe the PHP file might be worth looking into. It’s basically just an alternative to the voice interface and can be used in a web browser - maybe instead of 2do.

After never having worked with a source code repository before I’ve finally set up one. The source code can now be found in my repository:

1 Like

I have just released a new version.

Major changes:

  • Significantly improved the PHP interface
  • Introduced amounts and units for list entries

Have fun!

Just curious if you thought about/or looked at using SQLite instead of a full on Database? Not saying there is anything wrong with a full DB, I’ve used them a lot in the past when I did WebDev. Had I know about SQLite at the time I would have used it instead as I didn’t need the overhead of a full DB engine and it is super quick to setup.
Maybe something to consider for a future project :slight_smile:

I’m looking forward to implimenting this project!

No, hadn’t thought about a file based DB, yet. In my personal case I have a VM running anyway that’s hosting a DB server, so it’s quite little effort to create one for a new project. And the backup is taken care of already as well.

Recently I dedicated a lot of time on enhancing the PHP interface that comes with the package. For me personally it’s quite important becase a voice interface only qualifies for some basic repetitive tasks. Maintaining a list of available products for example wouldn’t even work because someone’s gotta teach Rhasspy the words first.
In addition the web-based list allows to fill or read the list when I’m not home.

I know PHP does support SQLite. It’s just that in my head this combination doesn’t fit very well. If someone’s got a webserver running already setting up a DB server shouldn’t be that far away.
I usually overdo things a bit and plan a new software idea to be working across multiple nodes for example. As a consequence the idea of putting data into a single file that is located on a single system doesn’t come easy to me :nerd_face:

I’ll keep it in mind though.

I also have a Maria DB server running in a VM so it’s not a this is better than that thing.

I’m Bill Gates lazy, and I like things that require as little effort as possible (while keeping performance the same). :slight_smile:
Also there are users who are using HA OS and the Rhasspy plugin. Setting up a DB might not be possible (technical or knowledge wise) and a SQLite DB would solve that issue.

I am certaily no coder, I’m wondering if there is a simple way for the user to pick either a MySQL or a SQLite DB?

I’m still looking forward to trying this skill out though, gotta get things working properly first though