Works great! Thanks for your work on this project and creating the Docker version as well!
We have a kitchen tablet that we use daily for HA and AnyList app for recipes.
I have the meal plan calendar feed from AnyList set up to display who is making what for the day on our main HA dashboard, and then the rest of the future meal plan calendar on a list on another tab.
Now I can see all of our lists in HA too (THANK YOU!), but we still need to switch back and forth to view recipes.
I do all the actual recipe imports from my phone or PC, so I’m not concerned about that part. It would just be lovely to at the minimum view the recipes within HA so I could lock down the tablet to just HA usage.
Massive extra points if I could assign recipes to the meal plan as well and/or add recipe items to the shopping list via HA, but that’s likely wishful thinking!
Thanks for describing your use case, I’ll let you know if recipes support gets added. In the meantime, I wonder if you could use the webpage dashboard card to embed the recipes webpage into your dashboard.
I did try that, and it’s entirely possible that I just didn’t get things correctly set up, but the AnyList website wouldn’t load in it. I do pay for the website access on their site, so that’s not it. I’ll tinker some more and let you know if I get it working so other folks will know too.
Thank you again for bringing AnyList to HA!
I looked into this and it looks like anylist is not allowing their site to be embedded in another webpage. So anylist will have to allow it on their end for this to work.
Would this integration make it possible for me to issue a Siri voice command to add items to the anylist grocery list? We use this via Alexa currently, but I’m trying to get rid of all the Alexas.
There is a Siri integration offered by Anylist themselves, but it is not ideal because you have to say “siri, add to grocery list”, then wait for a siri prompt, then say the item you want. With Alexa (and what I’m hoping is possible with this integration) is to just say “siri add ____ to grocery list”
I don’t use Siri myself so not sure, but if there’s a way to trigger home assistant automations or hook into the assist pipeline then you should be able to do what you want. Found these links from a quick search:
Public Service Announcement…
This component is going to become super important on July 1st, at least for me… I’ve been using Alexa’s shopping list (very convenient, since you just say “Alexa, add eggs to the shopping list”), and Alexa had an integration with Anylist, so that Anylist would get automatically updated, and then I’d be using Alexa’ shopping list directly in Home Assistant. So until now this workaround I’ve been using allowed me not to use @kevdliu 's package at all. However, Alexa is now removing the ability for Anylist and other shopping lists to integrate with them (they want us to now use “Alexa, ask anylist to add eggs to the shopping list”, not going to do that, thank you).
So… here’s how it’s going to work after July 1st - I’d still be using the Alexa integration in home assistant, I’d still be saying “Alexa, add eggs to the shopping list”, but in order to actually go to the supermarket with the anylist app I’m going to need some automation in home assistant that synchronizes the Alexa shopping list with the Anylist shopping list. And so if Alexa adds an item to the list, it’ll get added to the anylist app and if I check it off in the anylist app it needs to update Alexa.
2 way sync.
I’m thinking this can be adapted to what we’ll be needing here next week:
I’ll wait until the alexa shopping list / anylist integration will break next week and then will need to figure this one out.
When I wrote the message above I actually forgot that there’s no Alexa Shopping List entity in home assistant to sync with here, so is that it? We now officially have no way to get Alexa’s shopping list into home assistant?
Amazon shut down the API to access Alexa lists. That’s why AnyList had to change their skill. There’s now no way for AnyList or Home Assistant or anyone else to access any Alexa lists. I’m sure every single AnyList and Alexa user agrees that having to say “ask AnyList…” is a pain. I feel really bad for the AnyList developers having to scramble to make a less friendly skill than what they had.
I haven’t figured out any work-around yet. I don’t think the list content is visible in the browser version that can be hijacked like the Alexa media player skill does for smart home device control, but I might dig farther.
If you haven’t already found it, you can set one list as “default” in the AnyList app. So, for that one list, you can save a few syllables by saying “ask AnyList to add milk” without adding “to my grocery list” (if the grocery list is default).
Unfortunately, yes, this is how Amazon decided to do it for the foreseeable future…
Your only chance is, to avoid Alexa, and use Assist. I can see, that this is not ideal, and it is a more or less expensive thing for people, but in the end, it will make you more independent from such proprietary systems like Alexa.
And honestly, I highly doubt Amazon will make a turnaround, because they need to make some money with Alexa, fast! So it will only prolong the inevitable, you need to get other devices, if you want to have the comfort of a voice assistant in the future!
Please, this is not ment disrespectful in any way, and I’m with you all, that this is a **** decision from Amazon, but what can we do? I personally like it more, if I’ve been told the truth, as soon as it can be, and that is: your Alexas will go to the recycling, rather sooner than later…
From what I can see, there are 2 options I’m looking into. One - far from ideal - you still say “add eggs to the shopping list”, this populates the Alexa shopping list, then from the Alexa shopping list there’s an “export” option. I export the list to my WhatsApp family bot that’s connected to home assistant, and I created an automation that parses the list, and adds it to the anylist list. After that I can see it in the Home Assistant dashboard, not to mention I can go to the supermarket with the anylist app. This works. I’ll add the script later if there’s interest from people here.
Another option to look at is the node-red node for Alexa (Apple Strudel), that one simulates an echo device and can still see the shopping lists from Alexa. I’m still not sure what to do about this option. There’s also a Anylist node, so technically it can be used to sync the two lists.
I’ve done all the steps above but i cant get anylist to sync up? What have i missed?
@kevdliu - I’ve made some progress!
I’ve finally been able to get Alexa shopping list into Home Assistant, with full 2 way synchronization from Alexa to Home Assistant and from Home Assistant to Alexa. I can’t take credit for the solution – I’ve been corresponding with someone from the Anylist team and he pointed out the following GitHub repo:
Through this repo, I was able to install a Home Assistant add-on and after some trial and error (and some more error, until I figured it out), now I’m in a situation where the default Home Assistant shopping to-do list is fully synchronized with Alexa.
So now my situation is that I have todo.shopping_list that’s fully synchronized with Alexa and I have todo.anylist_shopping_list that’s fully synchronized with Anylist.
All that’s needed now to close the loop is for the Anylist integration to sync Anylist to the built-in todo.shopping_list entity and not to a new one it’ll create.
I found a way to do that using this blueprint:
And that’s it! I have my anylist synchronized with Alexa again!
Can you help I have downloaded and installed the add-on but cant work out how to do step 2 and configure the server.
Where do i download the repository too and how can I run the script?
ok thought I worked it out installed python on windows pc and ran the comands from the windows power shell. I enter email and password and the as soon as MFA code arrives on my phone is crashes with below error. can anyone help.
Traceback (most recent call last):
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 1289, in close_connection
await self.transfer_data_task
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 955, in transfer_data
message = await self.read_message()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 1025, in read_message
frame = await self.read_data_frame(max_size=self.max_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 1100, in read_data_frame
frame = await self.read_frame(max_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 1157, in read_frame
frame = await Frame.read(
^^^^^^^^^^^^^^^^^
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\framing.py", line 68, in read
data = await reader(2)
^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\streams.py", line 750, in readexactly
await self._wait_for_data('readexactly')
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\streams.py", line 543, in _wait_for_data
await self._waiter
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\users\matt\documents\shopping\client\client.py", line 288, in <module>
asyncio.run(client.run_console())
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\base_events.py", line 654, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\users\matt\documents\shopping\client\client.py", line 259, in run_console
await self._check_server()
File "C:\users\matt\documents\shopping\client\client.py", line 84, in _check_server
await self._setup_server_authentication()
File "C:\users\matt\documents\shopping\client\client.py", line 131, in _setup_server_authentication
response = await self._send_command("login", email=email, password=password)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\users\matt\documents\shopping\client\client.py", line 39, in _send_command
response = await websocket.recv()
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 564, in recv
await self.ensure_open()
File "C:\Users\matt\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\websockets\legacy\protocol.py", line 940, in ensure_open
raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: sent 1011 (internal error) keepalive ping timeout; no close frame received
did you manage to figure this out?
Yes, but it doesnt work at all. After tying and failing miserably to install the sw on both Debian and Ubuntu (websocket failure), I installed the code on my Mac and used terminal to try and set the settings. I got this far:
pip3 install --user -r requirements.txt
python3 client.py 192.168.1.200
it connected to the server, and it said it completed, but I never got any login screens.
so, I gave up.
It sucks b/c I’m a HEAVY AnyList user as is my entire family and getting folks to change to “Alexa, tell AnyList to” is the worst experience imaginable.
So I’m now heavily involved in the FutureHomes project (https://futureproofhomes.net/ ) so we can replace this Amazon & Google garbage permanently.
Jeff