DashboardIntegrationer

Ugens opskrift med Mealie

Denne guide beskriver, hvordan du kan installere og bruge Mealie til at samle dine madopskrifter og lave ugentlige madplaner. Guiden beskriver også, hvordan du kan hente data ind i Home Assistant (HA) og få vist ugens madplan på dit dashboard.

Introduktion

Jeg har gennem længere tid brugt en egenudviklet web-løsning til at gemme opskrifter og lave madplan på ugebasis. Jeg har lavet en simpel integration, så dagens opskrift og ugens madplan) bliver vist på vores HA tablet i køkkenet:

Jeg har nu skiftet min egen løsning ud med Mealie, der er en open-sourceløsning, som giver en række fordele:

  • Løsningen er brugervenlig og du kan gemme opskrifter, lave madplan samt lave indkøbslister
  • Det er let at oprette opskrifter, da løsningen kan hente data fra en lang række online opskriftssamlinger
  • Mealie har et godt API, som gør det let at hente data og integrere med f.eks. HA
  • Mealie kan køre lokalt som en addon i HA, så løsningen er omfattet af dine HA sikkerhedskopier

Jeg har lavet denne guide, der beskriver, hvordan jeg bruger Mealie sammen med HA og viser ugens madplan i mit HA dashboard.

Guiden gennemgår ikke selve brugen af Mealie, men kun opsætningen ift. HA. Se i stedet den officielle dokumentation for Mealie for beskrivelse af funktionalitet.

BEMÆRK
Indtil videre understøtter Mealie tilføjelsesprogrammet ikke systemer med ARM processor og vil derfor ikke virke på en Raspberry Pi. Mealie kan dog installeres manuelt i Docker.

Guiden er oprindeligt lavet til Mealie version v1.0.0beta-3, men er senere opdateret til brug sammen med Mealie version v1.0.0beta-5 (seneste version pr. Januar 2023). Der kan forekomme mindre ændringer i API mellem versioner, så koden kan ikke garanteres at virke med andre version end ovenstående. Du kan se, hvilken version, du har installeret under “Indstillinger”, når du er logget ind i Mealie.

Installer Mealie som et tilføjelsesprogram i HA

Mealie kan enten installeres lokalt på din HA-maskine eller på en anden maskine, hvis du foretrækker at holde tingene adskilt.

I guiden, viser jeg, hvordan du installerer Mealie som en addon i HA, da dette giver mulighed for at dine Mealie data bliver sikkerhedskopieret sammen med HA.

  1. Vælg Indstillinger -> Tilføjelsesprogrammer
  2. Tryk på knappen ”Butik for tilføjelsesprogrammer” nederst i højre hjørne
  3. Tryk på ikonet med i øverste højre hjørne
  4. Vælg ”Tilføjelsesregistre”
  5. Indtast / indsæt følgende URL i feltet tilføj: https://github.com/alexbelgium/hassio-addons
  6. Tryk på ”Tilføj” knappen
  7. Tryk på ”Luk” knappen
  8. Tryk på Ctrl+F5 for at genindlæse siden

Nu har du mulighed for at installere flere nye tilføjelsesprogrammer, herunder Mealie:

Mealie tilføjelsesprogram
Mealie tilføjelsesprogram

Klik på Mealie (Omni) og herefter på ”Installer” knappen for at installere.

Når installationen er færdig, kan du klikke på ”Start” knappen for at starte Mealie.

Klik på knappen ”Åbn webbrugergrænseflade” for at åbne Mealie eller naviger til følgende adresse, hvor du udskifter [HA_IP_adresse] med IP adressen på din HA installation:

http://[HA_IP_adresse]:9090/login

Første gang, skal du logge på ved at bruge ”changeme@email.com” som brugernavn og ”MyPassword” som adgangskode. Du bør oprette en ny bruger under ”Indstillinger” -> ”Brugere”.

Opret token

For at kunne bruge Mealie’s API i Home Assistant skal du oprette en token, som giver adgang til at hente data.

  1. Klik på dit profilnavn i menuen i venstre side og klik på ”Manage Your API Tokens” knappen eller naviger til: http://[HA_IP_adresse]:9090/user/profile/api-tokens
  2. Indtast valgfrit navn, f.eks. ”HA” i feltet ”Tokennavn”
  3. Klik ”+Generate” knappen
  4. Klik på ”Copy” knappen for at kopiere token tekst strengen
  5. Sørg for at gemme token midlertidigt, da den skal bruges lidt senere i HA opsætning

Opsætning af sensorer i HA

OPDATERING JULI 2024
I version 2024.7 er der tilføjet en ny integration, der gør det muligt at få indlæst ugens madplan som en kalender i Home Assistant. Integrationen gør det nemmere at integrere ugens madplan. Dog giver integrationen pt. ikke mulighed for at få billeder af opskrifter med. Nedenstående metode kan fortsat anvendes for at hente opskrifter og billeder af ugens opskrifter.

Nu har du fået Mealie installeret og lavet en token, så data kan trækkes ud til HA. Næste skridt er så at lave rest sensorer, som henter oplysninger om ugens madplan. Det kræver naturligvis, at du har oprettet opskrifter og lavet en madplan i Mealie først 😊

Vi laver en sensor for hver dag i de kommende 7 dage inklusiv den nuværende dag.

Rest sensorer tilføjes til din configuration.yaml fil under sensor.

Sensor med madplanen for den nuværende dag ser sådan ud:

- platform: rest
    resource: http://[HA_IP_adresse]:9000/api/groups/mealplans
    name: mealie_mealplan_day0
    scan_interval: 3600
    headers:
      Authorization: Bearer [mealie_API_token]
    params:
      start_date: >
        {{ now().strftime('%Y-%m-%d') }}
      end_date: >
        {{ now().strftime('%Y-%m-%d') }}
    json_attributes_path: "$.[0].recipe"
    json_attributes:
      - id
      - name
      - slug
      - image
    value_template: "{{ value_json.date }}"

Du skal erstatte [HA_IP_adresse] med IP adressen på din HA installation og indsætte din token fra trin 2 ovenfor i stedet for [mealie_API_token].

TIP
Du bør overveje at gemme din token i secrets.yaml filen i stedet for. Se mere i den officielle dokumentation her.

Sensorer for de næste dage er stort set identiske, hvor start og slut dato ændres til følgende:

      start_date: >
        {{ (now() + timedelta(days = 1)).strftime('%Y-%m-%d') }}
      limit_date: >
        {{ (now() + timedelta(days = 1)).strftime('%Y-%m-%d') }}

Bemærk, at days = 1 giver data for i morgen, mens days = 2 giver data for den efterfølgende dag osv.

Jeg har oprettet i alt 7 sensorer (0 til 6) og du kan se den samlede konfiguration fra linje nr. 359 i min konfigurationsfil.

Når du har oprettet alle sensor, skal du genstarte HA for at få hentet data første gang.

Data opdateres hver time, men du kan ændre dette ved at ændre ”scan_interval” til det ønskede antal sekunder, f.eks. 900 for opdatering hvert 15 minut.

Visning af madplan i HA dashboard

Når data først er indlæst, kan du bruge dem på mange forskellige måder i dit HA dashboard.

Jeg har bl.a. lavet nedenstående kort, som vises på forsiden af min tablet i køkkenet og som åbner opskriften i Mealie, når man klikker på kortet:

Kortet er lavet ved brug af custom:button-card, som skal installeres via HACS, hvis du ikke allerede har det installeret.

Følgende kode er brugt til at lave ovenstående kort:

type: custom:button-card
name: Dagens ret
state_display: "[[[ return entity.attributes.name; ]]]"
entity: sensor.mealie_mealplan_day0
show_entity_picture: false
show_state: true
show_name: true
show_image: false
show_label: false
show_icon: false
styles:
  card:
    - background-image: >-
        [[[ return "url(http://[HA_IP_adresse]:9090/api/media/recipes/"
        +entity.attributes.id +
        "/images/original.webp)"; ]]]
    - background-size: cover
    - height: 180px
  grid:
    - grid-template-areas: '"n" "l" "s"'
    - grid-template-columns: 1fr
    - grid-template-rows: 1fr 5fr 1fr
  name:
    - background-color: rgba(0, 0,0, 0.3)
    - padding-left: 35px
    - width: 100%
    - line-height: 40px
    - text-align: left
    - display: inline-block
    - vertical-align: middle
  state:
    - background-color: rgba(0, 0,0, 0.3)
    - padding-left: 35px
    - width: 100%
    - line-height: 40px
    - text-align: left
    - display: inline-block
    - vertical-align: middle
tap_action:
  action: fire-dom-event
  browser_mod:
    service: browser_mod.popup
    data:                  
      title: Dagens ret
      size: fullscreen
      content:
        type: iframe
        url: '[[[ return "http://[HA_IP_adresse]:9090/recipe/" + entity.attributes.slug ]]]'

Kortet er tilpasset til min tablets skærmopløsning på 1280×800, så tilpasning kan være nødvendig på andre skærme.

Opdatering – September 2023
Flere oplever problemer med at få vist billederne fra Mealie på deres dashboards.
Det ser ud til at HA har et problem med at vise billederne, når man ikke bruger IOS app’en til visning af sit dashboard.

Heldigvis kan det løses ved at vise billedet gennem en kamera entitet. Se hvordan i næste afsnit, hvis ovenstående ikke virker for dig.

Opret kamera entitet til visning af billede

Hvis billeder fra Mealie ikke vises på dit dashboard, kan du i stedet oprette en kamera entitet til visning af billederne.

Det gøres ved at navigere til ”Indstillinger” –> ”Enheder og tjenester” eller ved at klikke på nedenstående knap for at gå direkte til opsætningen:

Du skal nu trykke knappen ”Tilføj integration” i nederste højre hjørne og søge efter “Generic Camera” integrationen. Klik på integrationen, når den er fundet:

Opret generic camera entitet

I indstillinger for kamera integrationen, skal du indtaste link til dit billede fra Mealie under “Still image”:

Opret generic camera entitet

Du kan indsætte link fra de sensorer med opskrift data, som du har oprettet. Dette eksempel viser, hvordan der anvendes billedet fra sensoren med dagens opskrift (day0):

http://[HA_IP_adresse]:9090/api/media/recipes/{{ state_attr('sensor.mealie_mealplan_day0','id') }}/images/original.webp

Husk at erstatte [HA_IP_adresse] med IP adressen på din HA installation og evt. rette portnummeret, hvis du ikke anvender 9090 i din konfiguration.

Hvis du har indtastet det korrekt, bør du kunne se billedet fra Mealie, når du trykker på “Send” knappen.

Sæt kryds i “This image looks good” og tryk på “Send” knappen:

Opret generic camera entitet

Nu skulle du gerne have en ny kamera entitet med billedet fra Mealie. Gentag processen, så du får en kamera entitet for hver af de sensorer, du har oprettet.

Omdøb den nye kamera entitet og giv den et mere sigende navn, f.eks. “mealie_image_day0” og tryk på “Opdatér” knappen:

Omdøb kamera entitet

Nu skulle du gerne have en (eller flere) kamera entiteter med billeder fra opskrifterne i Mealie.

For at bruge dem i dit dashboard, skal du ændre koden i eksemplet ovenfor. Linjerne med “background-image” erstattes med denne kode:

            - background-image: >-
                [[[ return "url(" + states['camera.mealie_image_day0'].attributes.entity_picture +")"; ]]]

Navnet skal rettes i koden, hvis du har valgt et andet navn til din kamera entitet. Men ellers skulle du kunne få vist billeder på alle dine enheder – og ikke kun IOS. Det virker endda også, hvis du ikke er hjemme, men har fjernadgang til din HA.

Afrundning

Når først integrationen til Mealie er opsat, er der mange muligheder for at vise og kombinere data. Så det er næsten kun fantasien, der sætter grænserne.

Her er en kort video fra mobil-versionen af mit dashboard:

Hvor nyttigt var dette indlæg?

Gennemsnitlig bedømmelse 5 / 5. Bedømmelser: 3

Ingen stemmer indtil videre! Vær den første til at bedømme dette indlæg.

Jeg beklager, at dette indlæg ikke var nyttigt for dig!

Hvordan kan indlægget forbedres?

10 thoughts on “Ugens opskrift med Mealie

  • Hej Anders,
    Jeg har fulgt din vejledning, men desværre problem med at få vist image til retterne. Jeg har version v1.0.0-beta-5-4 Omni i Home Assistant v. 8.3
    Ved du hvordan jeg får nedgraderet til den version f.eks. via Terminal i HA, som du har brugt i ovenstående eksempel?
    Skal siges, at jeg forsøger install via Synology Nas DS923+ og Virtuel Machine.
    Det virker fint, når jeg laver en install via Docker og vejledning fra Mariushosting med din kode i yaml.

    Besvar
    • Anders

      Hej Knud,

      Jeg er blevet opmærksom på, at billeder fra Mealie pt. kun vises på mine IOS enheder, men ikke på Android eller PC.

      Det har tidligere virket på alle enheder, men der ser ud til at være et generelt problem med visning af webp billeder på andet end IOS gennem HA.

      Det kan heldigvis løse ved at oprette en generic kamera entitet, som linker til billedet fra Mealie.

      Jeg har nu opdateret guiden med en beskrivelse af, hvordan dette gøres.

      Tak for at følge med og gøre mig opmærksom på problemet.

      Mvh.

      Anders

      Besvar
      • Knud Hammeken

        For pokker det virker Anders. Tusind tak for hjælpen.
        Men hvordan laver du dog de fine knapper der. Kan jeg finde koden på den sti, som du i sin tid gav til din configuration.yaml? eller er den ikke uploadet endnu. Endnu engang tak.

        Besvar
        • Anders

          Hej Knud,

          Super godt at du fil det til at virke.

          Hvis dit spørgsmål går på knapperne i min video, så findes de ikke på min GitHub (endnu?). Det skyldes, at jeg bruger en del automatiseringer i NodeRED til at hente en tilfældig opskrift og vise den mv.

          Det kræver derfor en længere forklaring eller guide, hvis man vil lave noget tilsvarende. Videoen var mest tænkt til inspiration til, hvad der faktisk kan lade sig gøre, når først data er inde i HA 😊

          Mvh.

          Anders

          Besvar
          • Knud Hammeken

            Hej Anders,
            Det er helt i orden. Pænt af dig at give svar retur. Jeg prøver mig frem :-).

  • Kan det passe der skal bruges et mod mere, sammen med custom-card? Noget “browser mod” måske?

    Jeg synes ikke rigtig der sker noget når jeg tap’er på mit custom card, jeg ville forvente at ryge over på opskriften fra Mealie e.l.

    Hvis jeg ændrer tap action til url og url_path sætter til recipe + slug, så åbner den godt nok opskriften, men desværre i browseren / ny fane, og ikke inde i Home Assistant. Så jeg vil tro iframe delen er nødvendig for at få til at virke?

    Pft.

    Besvar
  • Benjamin Hansen

    Føler skut det virker…

    Besvar
  • Casper Gotschalk

    Hej Anders
    Super fed guide 🙂
    Jeg har dog en enkelt kommentar, value_template: ikke være “{{ value_json[‘items’][0].date }}”
    og ikke kun “{{ value_json.date }}” for at få datoen med ud som data på sensoren?

    Besvar
    • Hej Casper,

      Tak for din kommentar.

      Jo – den nuværende kode giver ikke længere datoen, men det virke med {{ value_json.items[0].date }} i stedet for.

      Mvh.

      Anders

      Besvar

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *