Marktguru (oder andere Preisalarm-Automationen)

thdeitmer

Member
Hallo Tüftler und Bastler!

vor kurzem hab ich mir gedacht, es könnte doch auch in HomeAssistant eine Automation geben, die mir einen Hinweis auf bestimmte Artikel in den Supermärten oder Discountern gibt. Dazu hab ich mich erstmal erkundigt, welche Prospekte- und Angebote-Anbieter es überhaupt gibt. Von Discounto über Idaolo bis zu Kaufda, Marktguro, Preisalarm und Smhaggle gibt es wirklich viele. Am interessantesten war für mich Marktguru. Alle meine regionalen Supermärtkte, Discounter, Getränkemärkte und Baumärkte sind dabei, die Prospekte sind aktuell. Die Googelsuche nach "Marktguru Home Assistant" zeigt mir häufiger einen Tipp bei "Smarthome Yourself" an. Der ist gut und funktioniert auch. Aber: er ist nicht gut genug und funktioniert nicht genau genug.

Dort wird das Beispiel genannt: "Krombacher" und er soll mir das günstigste Angebot von Krombacher aus der Region anzeigen. Und da ist auch schon das Problem. Erstens: es wir nur EIN Angebot angezeigt, also auch nicht unbedingt das günstigste. Keine Ahnung, warum er welches zuerst nennt. Zweitens: es werden mir auch Alternativen wie "Fassbrause" oder "Dosenbier" angezeigt. Alles Krombacher, ja, hat aber nichts mit meiner Suche zu tun. Das muss ich irgendwie verfeinern können. Und zuguterletzt ist mir aufgefallen, dass diese Woche Krombacher für 9,99 Euro im Kaufland war, aber die Anzeige sagt "kein Angebot", obwohl die Internetseite von Marktguru sehr wohl dieses Angebot anzeigt.

Ich hätte gerne eine Automation, oder eine Kachel oder irgendwas in HomeAssistant, was mir die günstigsten 3 Preise von einem Kasten Krombacher mit 20x 0,5 Liter Flaschen in meiner Region anzeigt. Diese Auswahl muss ich irgendwie einschränken können, und das Angebot muss auch irgendwie vollständig abgefragt werden können.

Kennt ihr sowas, habt ihr sowas? Wie geht das wohl?

Vielen Dank für Eure Tipps.
 
hier hab ich mal den Schnippsel, den ich nach Googlesuche bei den Kollegen gefunden habe:


YAML:
sensor:
  - platform: rest
    resource: https://api.marktguru.de/api/v1/offers/search?as=web&limit=24&offset=0&q=krombacher&zipCode=31139
    name: Krombacher
    value_template: "{{ value_json.results[0].price }}€ {{value_json.results[0].description}} bei {{value_json.results[0].advertisers[0].name }}"
    headers:
      x-clientkey: WU/RH+PMGDi+gkZer3WbMelt6zcYHSTytNB7VpTia90=
      x-apikey: 8Kk+pmbf7TgJ9nVj2cXeA7P5zBGv8iuutVVMRfOfvNE=

Die beiden Keys sind vorgegeben. Die Postleitzahl hab ich angepasst. Aktuell zeigt er mir ein Doppelpack 5 Liter Fässer vom Lidl für 24,99 Euro. Ich weiß aber, dass es diese Woche im Kaufland einen Kasten Pils für 9,99 Euro gibt. Letzte Woche hat er mir ein Fassbrause-Angebot angezeigt, obwohl es bei Rewe ein Pils-Angebot im Kasten gab.

Habt ihr eine Idee, wie man diese Code anpassen muss, damit wir uns nur auf Kasten-Angebote und nur auf Pils beschränken, und außerdem vielleicht 5-6 Angebote aufgelistet bekommen?
 
wenn es ne api gibt, braucht man natürlich kein scrape. Ansonsten findet es Daten auch z.B. anhand des css selector
 
Habt ihr eine Idee, wie man diese Code anpassen muss, damit wir uns nur auf Kasten-Angebote und nur auf Pils beschränken, und außerdem vielleicht 5-6 Angebote aufgelistet bekommen?
Wenn Du value_template mal auf value_json reduzierst und damit alles ausgibst, was die API an dieser Stelle liefert (und nicht nur [0] aka erstes Ergebnis) könnte man wohl schauen, wie da das gewünschte Ergebnis zu bekommen ist.
 
das heißt, die eckige Klammer bei allen drei Results ganz weglassen? Und bei Advertisers auch? Und den Rest genauso lassen, wie es ist?
 
aber aus der Idee heraus hab ich den Sensor jetzt mal mehrfach angelegt, mit dem Wert in der eckigen Klammer fortlaufend. Er zeigt mir leider immer nur bei der [0] etwas an, bei 1,2,3 oder 4 steht wieder "Unbekannt". Scheinbar MUSS die 0 da stehen.
 
YAML:
  value_template: >-
    {% for entry in value_json.results %}
      {% if 'Ka' in entry.description %}
        {{ entry.price }} € {{ entry.description }} bei {{ entry.advertisers[0].name }}
      {% endif %}
    {% endfor %}

Einmal das vollständige Ergebnis zur Orientierung:
JSON:
{"filters":{"retailers":[{"id":126654,"name":"Kaufland","resultsCount":1},{"id":126679,"name":"Lidl","resultsCount":1},{"id":126735,"name":"Netto Marken-Discount","resultsCount":1}],"brands":[{"id":115714,"name":"Krombacher","resultsCount":3}],"categories":[{"id":361,"name":"Bier","resultsCount":3}]},"totalResults":3,"skippedResults":0,"results":[{"brand":{"uniqueName":"krombacher","indexOffer":true,"indexLeaflet":false,"id":115714,"name":"Krombacher","industryId":1023},"advertisers":[{"uniqueName":"lidl","indexOffer":true,"indexLeaflet":true,"id":"retailers/126679","name":"Lidl","industryId":1023}],"categories":[{"uniqueName":null,"indexOffer":false,"indexLeaflet":false,"id":361,"name":"Bier","description":"Bier- und Biermischgetränke sind bei deutschen Konsumenten sehr beliebt. Anbieter wie [real](https://www.marktguru.de/r/real) haben [alkoholische Getränke](https://www.marktguru.de/c/getraenke-alkoholisch) von gefragten deutschen Brauereien wie [Bitburger](https://www.marktguru.de/b/bitburger), [Krombacher](https://www.marktguru.de/b/krombacher) oder [Veltins](https://www.marktguru.de/b/veltins) im Angebot.","parentId":70}],"id":18438453,"description":"HINWEIS: NUR ONLINE VERFÜGBAR mit Zapfhahn Pfandfrei. Je 2x 5 l","price":24.99,"oldPrice":null,"referencePrice":2.50,"requiresLoyalityMembership":false,"leafletFlightId":245183,"validityDates":[{"from":"2025-09-03T22:00:00Z","to":"2025-09-06T21:59:00Z"}],"externalId":null,"externalTrackingUrls":[],"externalTrackings":[],"externalUrl":"https://www.lidl.de/p/2-x-5-l-bierfass-doppelpack-krombacher-pils-bierfass-mit-zapfhahn-pfandfrei/p100377435?utm_source=vermarkter&utm_medium=leaflet&utm_campaign=lf_d-lf-dhz_others_notset_wt_omc_d-lf-dhz_sl_010925-060925&utm_content=de=p100377435","trackFlightImpression":null,"type":"standard","industries":[{"id":1023,"name":"Discounter"}],"product":{"id":37383,"name":"Pils","description":"~twxde~ ~twxwde~ ~twxnw~ ~twxsal~"},"unit":{"shortName":"l","id":1,"name":"Liter"},"images":{"count":1,"isCdnSuccessfullyPurged":null,"metadata":[{"aspectRatio":1.0964083175803403,"width":1.0,"height":0.9120689655172414}]},"imageType":"offer"},{"brand":{"uniqueName":"krombacher","indexOffer":true,"indexLeaflet":false,"id":115714,"name":"Krombacher","industryId":1023},"advertisers":[{"uniqueName":"netto-marken-discount","indexOffer":true,"indexLeaflet":true,"id":"retailers/126735","name":"Netto Marken-Discount","industryId":1023}],"categories":[{"uniqueName":null,"indexOffer":false,"indexLeaflet":false,"id":361,"name":"Bier","description":"Bier- und Biermischgetränke sind bei deutschen Konsumenten sehr beliebt. Anbieter wie [real](https://www.marktguru.de/r/real) haben [alkoholische Getränke](https://www.marktguru.de/c/getraenke-alkoholisch) von gefragten deutschen Brauereien wie [Bitburger](https://www.marktguru.de/b/bitburger), [Krombacher](https://www.marktguru.de/b/krombacher) oder [Veltins](https://www.marktguru.de/b/veltins) im Angebot.","parentId":70}],"id":18414333,"description":"6 x 0,5 Liter zzgl. Pfand 1.50","price":4.00,"oldPrice":null,"referencePrice":1.33,"requiresLoyalityMembership":false,"leafletFlightId":244973,"validityDates":[{"from":"2025-09-03T22:00:00Z","to":"2025-09-06T21:59:00Z"}],"externalId":null,"externalTrackingUrls":[],"externalTrackings":[],"externalUrl":null,"trackFlightImpression":null,"type":"standard","industries":[{"id":1023,"name":"Discounter"}],"product":{"id":37383,"name":"Pils","description":"~twxde~ ~twxwde~ ~twxnw~ ~twxsal~"},"unit":{"shortName":"l","id":1,"name":"Liter"},"images":{"count":1,"isCdnSuccessfullyPurged":null,"metadata":[{"aspectRatio":1.7102272727272727,"width":1.0,"height":0.584717607973422}]},"imageType":"offer"},{"brand":{"uniqueName":"krombacher","indexOffer":true,"indexLeaflet":false,"id":115714,"name":"Krombacher","industryId":1009},"advertisers":[{"uniqueName":"kaufland","indexOffer":true,"indexLeaflet":true,"id":"retailers/126654","name":"Kaufland","industryId":1009}],"categories":[{"uniqueName":null,"indexOffer":false,"indexLeaflet":false,"id":361,"name":"Bier","description":"Bier- und Biermischgetränke sind bei deutschen Konsumenten sehr beliebt. Anbieter wie [real](https://www.marktguru.de/r/real) haben [alkoholische Getränke](https://www.marktguru.de/c/getraenke-alkoholisch) von gefragten deutschen Brauereien wie [Bitburger](https://www.marktguru.de/b/bitburger), [Krombacher](https://www.marktguru.de/b/krombacher) oder [Veltins](https://www.marktguru.de/b/veltins) im Angebot.","parentId":70}],"id":18323273,"description":"(+ 3.10 Pfand) je Ka. 20 x 0,5-l-Fl.","price":9.99,"oldPrice":null,"referencePrice":1.00,"requiresLoyalityMembership":false,"leafletFlightId":244003,"validityDates":[{"from":"2025-08-27T22:00:00Z","to":"2025-09-03T18:00:00Z"}],"externalId":null,"externalTrackingUrls":["https://ad.doubleclick.net/ddm/trackimp/N1106503.2671411MARKGURUDE/B26240841.309225179;dc_pre=CIaFzIm8jI0DFZ2L_Qcd5l8Plg;dc_trk_aid=502197466;dc_trk_cid=154816736;ord={{mg-timestamp}};dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;gdpr=${GDPR};gdpr_consent=${GDPR_CONSENT_755};ltd=;dc_tdv=1"],"externalTrackings":[{"type":"click","url":"https://ad.doubleclick.net/ddm/trackimp/N1106503.2671411MARKGURUDE/B26240841.309225179;dc_pre=CIaFzIm8jI0DFZ2L_Qcd5l8Plg;dc_trk_aid=502197466;dc_trk_cid=154816736;ord={{mg-timestamp}};dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;gdpr=${GDPR};gdpr_consent=${GDPR_CONSENT_755};ltd=;dc_tdv=1","ugpctfet":null}],"externalUrl":null,"trackFlightImpression":null,"type":"standard","industries":[{"id":1009,"name":"Supermarkt"}],"product":{"id":37383,"name":"Pils","description":"~twxde~ ~twxwde~ ~twxnw~ ~twxsal~"},"unit":{"shortName":"l","id":1,"name":"Liter"},"images":{"count":1,"isCdnSuccessfullyPurged":null,"metadata":[{"aspectRatio":1.1842105263157894,"width":1.0,"height":0.8444444444444444}]},"imageType":"offer"}]}
Bei "je Ka. 20 x 0,5-l-Fl." bin ich eben erstmal auf 'Ka' gegangen, Du müsstest schauen, ob andere Geschäfte das vielleicht anders schreiben / die 20 aussagekräftiger wäre oder ähnliches.

Edit, Du müsstest die Leerzeichen noch auf Deine Config anpassen :)
 
Zuletzt bearbeitet:
hoppla, du hast dir aber Mühe gegeben. Vielen Dank. Ich bin nur gerade ein wenig planlos. Also den ersten Teil pack ich in meinen Sensor direkt auch an die Stelle von value_template. Und wo kommt der zweite Code hin?
 
Also den ersten Teil pack ich in meinen Sensor direkt auch an die Stelle von value_template.
Genau. Also eben korrekt eingerückt, ich habe die Sensoren ausgelagert in ner extra Datei, Du brauchst so zwei Leerzeichen mehr vor jeder Zeile.

Und wo kommt der zweite Code hin?
Garnicht, der ist nur für Dich zur Info, das, was value_json enthält :D da ich keine Lust habe, HA ständig neu zu starten, hatte ich das eben mittels PHP geholt und konnte dann direkt den anderen Code schreiben.
 
Achso. Hab's gerade mal getestet. Und funktioniert irgendwie. Der Sensor zeigt mir tatsächlich jetzt mein leckers Krombacher Pils in bevorzugter Einheit von 20x 0,5 Liter Flaschen. Besser geht's kaum.

Aber es gibt doch auch andere Angebote in diesem Zeitraum. Wo sind die denn?
 
Aber es gibt doch auch andere Angebote in diesem Zeitraum.
Du wolltest es auf Kästen gefiltert haben :)

Das hier sind alle Angebote, die die API rauswirft mit Deinen Einstellungen des Filters:

24.99 €, HINWEIS: NUR ONLINE VERFÜGBAR mit Zapfhahn Pfandfrei. Je 2x 5 l bei Lidl
4 €, 6 x 0,5 Liter zzgl. Pfand 1.50 bei Netto Marken-Discount
9.99 €, (+ 3.10 Pfand) je Ka. 20 x 0,5-l-Fl. bei Kaufland

Wenn Du die Zeilen mit dem if und endif rausnimmst bekommst das auch alles angezeigt.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
7.059
Beiträge
68.850
Mitglieder
7.443
Neuestes Mitglied
hjetter@beta22.
Zurück
Oben