Home Assistant Community Add-on: Grocy

Will there be an update soon? This still installs version 2.6.0, and the latest is (and some of my Grocy addons want) 2.7.1

1 Like

Did you find a solution to this? I am struggling with the same problem.
Google Calendar does nothing at all, but Outlook prompts for credentials (that donā€™t work).

When logged into HA and Grocy, manually navigating to the URL does indeed start the download so Iā€™m guessing itā€™s an auth issue somewhere ā€¦

Apparently the ical does not work through nabu casa. You have to configure the addon --> add port 9192 in the network section.
Then, if you navigate to the path your HA is on, instead of filling out port 8123 you fill out 9192 (http://yourhomeassistant:9192).
You can now log on directly to Grocy. Navigate to the calendar and get the ical link. Itā€™s different this time and it does work locally if you add it to Outlook on a device connected to your LAN.

I just installed the add-on and I get this error on first run.

-----------------------------------------------------------
 Add-on: Grocy
 ERP beyond your fridge! A groceries & household management solution for your home
-----------------------------------------------------------
 Add-on version: 0.7.1
 There is an update available for this add-on!
 Latest add-on version: null
 Please consider upgrading as soon as possible.
 System: Ubuntu 18.04.4 LTS  (amd64 / qemux86-64)
 Home Assistant Core: 0.110.3
 Home Assistant Supervisor: 224
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
[cont-init.d] 00-banner.sh: exited 0.
[cont-init.d] 01-log-level.sh: executing... 
Log level is set to DEBUG
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] grocy.sh: executing... 
[13:15:08] DEBUG: Symlinking data directory to persistent storage location...
[cont-init.d] grocy.sh: exited 0.
[cont-init.d] nginx.sh: executing... 
[13:15:08] DEBUG: Requested API resource: http://supervisor/dns/info
[13:15:08] DEBUG: Request method: GET
[13:15:08] DEBUG: Request data: {}
[13:15:08] DEBUG: API HTTP Response code: 200
[13:15:08] DEBUG: API Response: {"result": "ok", "data": {"version": "9", "version_latest": "9", "host": "172.30.32.3", "servers": [], "locals": []}}

[cont-init.d] nginx.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[13:15:08] INFO: Starting PHP-FPM...
[services.d] done.
[13:15:09] INFO: Starting NGinx....
2020/05/28 13:15:33 [error] 563#563: *1 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/var/www/grocy/data/config.php): failed to open stream: Permission denied in /var/www/grocy/app.php on line 26PHP message: PHP Fatal error:  require_once(): Failed opening required '/var/www/grocy/data/config.php' (include_path='.:/usr/share/php7') in /var/www/grocy/app.php on line 26" while reading response header from upstream, client: 172.30.32.2, server: a0d7b954-grocy, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9002", host: "192.168.1.2:8123", referrer: "http://192.168.1.2:8123/hassio/ingress/a0d7b954_grocy"
[28/May/2020:13:15:33 -0400] 500 192.168.1.3, 172.30.32.1(172.30.32.2) GET / HTTP/1.1 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15)

Hi, this may have been asked before but unfortunately I couldnā€™t find it anywhere.

I have a Hassio setup with multiple users, of which are not at admin level. Grocy is not visible to these users and even if I put a link in to redirect to the Ingress path of Grocy, they are still unable to access the addon.

As a test I made one of the users an admin and sure enough Grocy worked fine. Iā€™m still pretty new to HA so forgive me if this has already been discussed.

Is it possible to allow non-admin users access to Grocy or do they specifically need admin privileges?

Thanks.

I would try Grocy outside of HA. :slight_smile: Grocy, the way you installed it as a Hass.io addOn, can still be called directly.

Go to the configuration screen of the addOn, and add a port under network. Maybe there already is a port setting for 9192. Leave it that way and call your machine directly, for example with the IP address, like http://192.168.178.2:9192. Then you can use the user management from Grocy to give access. Itā€™s not a perfect solution, but better than giving admin access to your HA installation to ā€œnon trustedā€ users. :slight_smile:

1 Like

I gotcha :wink:

Thanks for that. It probably is better to open Grocy directly from a webpage anyway as the Android app doesnā€™t allow for PDF reading directly within it. This is a function I need as I am writing many manuals currently on how to use the HA UI I setup and the various systems around the place :slight_smile:

For manuals Iā€™d try the Bookstack addOn. :slight_smile:

1 Like

Thanks. Iā€™ll give it a try. Grocy is still going to be useful for shopping lists etcā€¦
It really is nice to have options :slight_smile:

Yes, I do use both as well. I just find it more convenient to make documentation in Bookstack. It is more ordered and you can use markdown. :slight_smile:

And Grocy is just great. I for one am a specialist in ordering/buying batteries from a type I already have, but would still need other types to replace empty onesā€¦ Grocy solved that for me very nicely. Apart from all the other nice goodies, Grocy has to offer. :slight_smile:

1 Like

I like the idea of being able to see changes of the shopping list when actually in the store.
This means that if someone at home has forgotten to add something it can be pushed across the HASS network almost instantaneously.

Trying out Bookstack now too. Iā€™ve gota figure out the best method to get my docs across to it. They were written in Libreoffice then converted to pdf. Hoping a simple copy/paste solution will be ok as Iā€™d hate to have to redo 100ā€™s of pages.

When you build a place up and it starts resembling the C&C at NASA you can expect users to get a little lost when performing simple tasks like trying to access tv channels or lighting profiles etcā€¦ :sweat_smile: :joy:

Fantastic add-on!
Thanks @frenck a lot.
Just wondering if an export/import CSV option is in the pipeline?
Good for starting new installation to import e.g. from excel long list of products and its details.
Or, what Iā€™'m personally interested, export into excel and do there my favorite pivot analysis :slight_smile:

Another idea to be eventually taken into consideration.

The design of this Grocy architecture implies one single home.
How about allowing multiple instance of Grocy on the same server? Or, multiple Home instances. E.g. my friend does not have hassio or whatever, while I have Grocy set up on my machine. Creating a new instance for him only, which he can access/administrate over the web, would be great.

I am having problems getting the sensors to show up and I am sorry if this is not where I need to post this.

I have hassio installed on a pi 4. 111.3 running.

arch armv7l
chassis embedded
dev false
docker true
docker_version 19.03.8
hassio true
host_os HassOS 4.10
installation_type Home Assistant
os_name Linux
os_version 4.19.126-v7l
python_version 3.7.7
supervisor 227
timezone America/New_York
version 0.111.3
virtualenv false

I followed the steps in the custom component:
The configuration is slightly different for users that use Hass.io and the official Grocy addon from the Hass.io Add-on store.

  1. If you havenā€™t already done so, install Grocy from the Add-on store
  2. In the ā€˜Networkā€™ section of the add-on config, input 9192 in the host field screenshot. Save your changes and restart the add-on.
  3. Install HACS for Home Assistant
  4. Go to Community > Store > Grocy
  5. Install the Grocy integration component
  6. Restart Home Assistant
  7. Go to Grocy > Wrench icon > Manage API keys > Add
  8. In the HA UI go to ā€œConfigurationā€ -> ā€œIntegrationsā€ click ā€œ+ā€ and search for ā€œGrocyā€
  9. Look for the new Grocy sensor in States and use its info

I have the addon working fine, installed through Supervisor -> Add on Store -> Grocy Addon. I see the grocery cart in HA and can click on it and open it up. Log in. Create things. I switched it to port 9192 in the config. I can see it externally through 9192 by logging into https://XXXX.duckdns.org:9192. I can access internally the same and https://i192.168.1.223:9192.

I installed the Grocy custom component by going to HACS -> Integrations -> Grocy Custom Component. Added the info as it says to my config file.

I installed Grocy integrations going to Configuration -> Integrations -> Grocy. I added https://192.168.1.223 as the IP. Added my API key. Had the port 9192. It says it added it. I see it Grocy in my integrations. *Edit to say I tried multiple combos for the url here like below before the normal 192.168.1.223 was accepted.

I have tried every combo of URL I can think of for the config file assuming this is my issue. Duckdns way, ip address way, include port, exclude port, include /api, include the /a0d7b954_grocy on it. I even remove it all and I am still getting the below errors in my hass logs. No errors in the Grocy Addon logs.

grocy: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 319, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 470, in async_device_update
    await self.async_update()
  File "/config/custom_components/grocy/binary_sensor.py", line 36, in async_update
    await self._client.async_update_data(self.sensor_type)
  File "/config/custom_components/grocy/__init__.py", line 186, in async_update_data
    db_changed = await self.hass.async_add_executor_job(self.client.get_last_db_changed)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.7/site-packages/pygrocy/grocy.py", line 259, in get_last_db_changed
    return self._api_client.get_last_db_changed()
  File "/usr/local/lib/python3.7/site-packages/pygrocy/grocy_api_client.py", line 453, in get_last_db_changed
    last_change_timestamp = parse_date(resp.json().get('changed_time'))
  File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 898, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/simplejson/__init__.py", line 525, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Grocy AddOn is version .8
Grocy Custom Component is version .4

I can see the Grocy services in the developer tools.

Any help would be appreciated. I can definitely grab some more info if needed.

Nice add-on, but I found out after configuring it that it is not available for non-administrators. That makes it almost unusable for me at the moment. It isnā€™t Grocyā€™s fault, but seems to be a limitation on Home Assistant.

Having the same issue. Any idea how we can add user permissions for non-admin users to be able to access apps like this that use ingress?

I havent found any examples of adding expired and expiring products to lavelace, so i managed to do that myself and wanted to share with you (requires flex-table-card)

Expiring products:

columns:
  - data: items
    modify: x.name
    name: Product
  - data: items
    modify: x.available_amount
    name: Amount
  - data: items
    modify: >-
      const dateDiff = (Date.parse(x.best_before_date) - Date.now());  const
      daysDiff = dateDiff/86400000; const days = Math.floor(daysDiff); days + "
      days "
    name: Expiring
  - data: items
    modify: x.best_before_date
    name: Expiring - sort
    id: best_before_sort
    hidden: true
    prefix: 'in '
entities:
  include: binary_sensor.grocy_expiring_products
sort_by: best_before_sort
title: Expiring products
type: 'custom:flex-table-card'

Expired:

columns:
  - data: items
    modify: x.name
    name: Product
  - data: items
    modify: x.available_amount
    name: Amount
  - data: items
    modify: >-
      const dateDiff = (Date.now() - Date.parse(x.best_before_date));  const
      daysDiff = dateDiff/86400000; const days = Math.floor(daysDiff); days + "
      days "
    name: Expiring
    suffix: ' ago'
  - data: items
    id: best_before_sort
    modify: x.best_before_date
    hidden: true
    name: Expiring - sort
    suffix: ' ago'
sort_by: best_before_sort
entities:
  include: binary_sensor.grocy_expired_products
title: Expiring products
type: 'custom:flex-table-card'

Just updated the above examples to add sorting by expiry date.

Did you ever find a solution? Iā€™m in the same situation now.

1 Like

How do I change the language? I donā€™t see a selector or any other option to change it like in the pre-release demo.