[APP][PRO] Picnic

image

Stable: Picnic App
Test: Picnic App | Test

Picnic app for Homey

Connect Picnic with Homey.

Add individual items or multiple items based on a recipy to your shopping cart. Or trigger flows based on the different states of your order.

Instructions

After installing the app, login using your Picnic account via the app settings. Here you can also add your favorite recipes.

Flow Triggers

Polling the status of your Picnic account and providing trigger flowcards based on the following events:

  • Groceries have been ordered, with tokens:
    • price (in euro)
    • eta date
    • eta begin, returning the begin of the 60 minutes delivery timeframe
    • eta end, returning the end of the 60 minutes delivery timeframe
  • Your groceries will be delivered soon (announcement of the 20min delivery timeframe), with tokens:
    • eta date
    • eta begin, returning the begin of the 20 minutes delivery timeframe
    • eta end, returning the end of the 20 minutes delivery timeframe
  • Start of the time frame when the delivery is announced
  • End of the time frame when the delivery is announced
  • Your groceries have been delivered

Flow Actions

  • Adding a product to your basket based on the name of the product passed as an argument.
  • Adding products based on a recipe as configured via the settings page.
  • Adding products based on a randomly picked recipe.

Global Tokens

The following order specific global tokens are available:

  • Order status
  • Order costs
  • Delivery status
  • Start of the delivery window
  • End of the delivery window

CHANGELOG

3.4.2 (test)

  • Bugfix adding products via action card

3.3.2

  • Adding support for German customers of Picnic
Old changes

3.2.7

  • Bugfix triggers being reran on restart of the app

3.2.6

  • Reduce default poll interval to prevent missing order trigger

3.2.5

  • Bugfix adding product IDs as String upon API change

3.2.4

  • Updated Homey community URL

3.2.3

  • Fixed typo in global token

3.2.2

  • Bugfix to prevent unnecessary firing of triggers after update

3.2.1

  • Bugfix in start and end window trigger

3.2.0

  • Adding order condition

3.1.0

  • Adding global Picnic tokens

3.0.3

  • Improve the app description

3.0.2

  • Bugfix in order delivered trigger, removed trigger tokens

3.0.1

  • Bugfix order announced end time

3.0.0

  • Migrate to SDK3

2.3.3

  • Adding request header

2.3.2

  • Fixing uncaught exception

2.3.0

  • Updated order summary API
  • Removed speech input code, no longer supported by Homey
  • Improved polling intervals based on order status

2.2.5

  • Changing readme files to comply with Athom’s standards

2.2.4

  • Fixing bug that would expire your session after 2 weeks

2.2.3

  • Adding order existence check

2.2.2

  • Fixed order retrieval

2.2.1

  • Fixed stupid typo in the Dutch translation

2.2.0

  • Added triggers for the begin and end of the announced time frame of delivery

2.1.6

  • Fixing another README formatting issue

2.1.5

  • Fixing README formatting issue

2.1.4

  • Updates to pass certification

2.1.3

  • Updating dependencies and removing deprecated “request” dependency
  • Removing obsolete “http” dependency

2.0.5

  • Updating dependencies

2.0.4

  • Bugfixes, adding re-authentication fix and improving error handling

2.0.3

  • Adding brand color (thanks to Veldkornet)

2.0.2

  • Bugfix: Adding improved exception handling to prevent crashes

2.0.1

  • Bugfix: Homey v2.0 support

1.5.1

  • Bugfix: fixing minor issues

1.5.0

  • Feature: Adding recipy management

1.4.4

  • Bugfix: Adding exception handler when no products are found
  • Bugfix: Encoding products including non-ASCII characters

1.4.3

  • Bugfix: Picnic uses a server-side lock when items are being added to your cart. This caused an issue when running a flow that adds multiple items to your cart at the same time. Fixing this bug in 1.4.3 by using a threat lock stored in the app’s ManagerSettings.

1.4.2

  • Bugfix: Checking if the order status response actually contains content that can be parsed.

1.4.1

  • Bugfix: Catching any errors during periodic polling of the order status.

1.4.0

Note that after this update you will have to re-authenticate via the Picnic app settings.

  • Bugfix: Fixing bug to store credentials to the settings

1.3.0

Note that after this update you will have to re-authenticate via the Picnic app settings.

  • Bugfix: session expires after about a month. To solve this the app now stores the username and password and retrieves a new session as soon as it is required

Donate

Feel free to donate if you like the app :slight_smile:

Paypal donate

1 Like

reserved for topic starter

note: this is a continuation of the topic at Picnic app

Hi,
unfortunately my login data is not accepted. Is it possible that it doesn’t work in Germany?

Hmm that could be… the domain i am using does include “nl”, it possibly uses a different domain in other countries…

I can fix this, but testing will be difficult for me :smiley: care to help me out? I can push a fix to the test channel for you to see if that works

That sounds good, I’d be happy to test it

Awesome app! A vibrationsensor on my Nespresso counts down from 10 to 0 once reached your app adds my preferred cups to my cart

I also use it to add batteries to the basket when homey finds them to be almost empty.

On the start of the 20 minute window, if none is home and the door to the hallway is closed (I have a dog) i activate picnics personal accès code for the danapad. once delivered It deactivated accès.

Picnic has wrote this code with instructions to place the groceries in the hallway to my account, so all delevery guys can see it. (Also with a warning to not be spooded by the dog as tha hallway door is fully glas)

Request:

Would it be possible to place a order through the app?
For example when the minimum amount is reached than place a order with the next possible or preferred delivery time?

3 Likes

Cool to read about your usecases, great stuff

I’m actually not sure, i always pay by iDeal which will be very hard to automate. But i see you could configure it to use direct debit (automatische incasso) nowadays, so maybe it could be?

Haha indeed (automatisch incasse)

My gf generally places the orders, and I get billed.:sweat_smile:

I have pushed an option in the settings to configure the app to use the German version of the shop. I could not test if this actually works due to the lack of a German Picnic account, so if you could check it out @patsche and let me know if it works, that would be great!

Pushed to the test channel just now:

Hi Retrospected,

Unfortunately it doesn’t work yet, Auth No OK is still displayed. Unfortunately I can’t activate a log or anything similar.

But I found out that I can authenticate myself against the following URL:
https://storefront-prod.de.picnicinternational.com/api/17/user/login

The .de part can be replaced by other country codes. I tested the login with Postman and entered the following in the body:
{
“key”: “e-mail”,
“secret”: “Password as MD5 hash”,
“client_id”: 1
}

In addition, authentication also seems to work this way in API version 14.

Thanks, I have changed the domains around and bumped it to version 17 which doesnt seem to make a difference. Can you try again? 3.3.1 is published to test.

Is it possible to add the next timeslot as a variable?

picnic.get_delivery_slots()

Hi, unfortunately it doesn’t work yet.

I sent you a DM: I have fixed a bug that should solve the issue. Could you test it again?

First of all, thank you for developing this app!

I have a question. I’m looking to create a flow to automatically add our “weekly groceries” to the shopping cart. However, I’ve encountered an issue with the “BundelBonus” items. Take Green tea lemon, for instance, which comes in four variations: a single piece, a 2-pack, a 3-pack, and a 4-pack. Opting for the 4-pack is more economical, but I’m having trouble figuring out how to select it. Are there specific article codes from Picnic that correspond to these different options?

hey 7Hills, Picnic uses their own unique ID’s for products. I checked and the bundelbonusses are indeed a separate product ID. I’m afraid that it will be difficult to add these bundelbonusses via flow-cards right now since it is purely based on the title of the product. The flow-card literally uses the Search function of the Picnic app and selects the first product of the results.

I am not really happy with the product-search option right now because it’s very error-prone. I investigated a year ago if i could somehow use the more reliable PLU code of products, but the Picnic API does not seem to support that.

Besides that, i don’t know why Picnic doesn’t just convert multiple added products to “bundlebonusses” for you automatically. That would also solve this problem in my Homey app ;).

Thanks for the quick response and explanation. I’am trying to justify that €400 Homey Pro purchase to the wife :stuck_out_tongue:.

I get the challenges with Picnic’s unique IDs. Searching by product title isn’t the best solution indeed. It’s a bummer the API doesn’t support PLU codes.

It’d be handy if Picnic auto-converted multiple products into “bundle bonuses,” but I get the business angle.

I used the: Your groceries will be delivered soon as an “if” function to trigger a sentence on my Google nest mini, saying: “the groceries are almost there.”
Just now I scared to sh*t…because it started this sentence at 23:40 at night. Can you explain what is wrong? I assume this should trigger just before they are at my door step?

Thanks in advance.

Note: the status at the moment is “delivery_announced”

Hey Erik, you are using the wrong trigger here. Use the “Start of the delivery window” trigger to fire flows that should start at the beginning of the 20min delivery window.

The trigger you are using now is fired as soon as the 20min timeslot is decided by picnic, which is indeed typically between 22 and 24 in the evening before the day of delivery :wink: