# Veckans Skolmat

**URL:** https://community.homey.app/t/veckans-skolmat/148489
**Category:** 🇸🇪 Svenska (Swedish)
**Created:** [January 3, 2026, 10:50pm UTC](https://community.homey.app/t/veckans-skolmat/148489 "2026-01-03T22:50:48Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![DagonIVE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dagonive/32/150401_2.png) [@DagonIVE](https://community.homey.app/u/DagonIVE)
#### Post date: [January 3, 2026, 10:50pm UTC](https://community.homey.app/t/veckans-skolmat/148489/1 "2026-01-03T22:50:49Z")

</div>

Hej någon som vet om man kan gå in skolmaten i flödet?

---

<div class="post-metadata">

### Author: ![Mojento](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mojento/32/146817_2.png) [@Mojento](https://community.homey.app/u/Mojento)
#### Post date: [January 4, 2026, 1:02pm UTC](https://community.homey.app/t/veckans-skolmat/148489/2 "2026-01-04T13:02:46Z")

</div>

Hallå!

Har du redan kollat upp att skolan du vill ha maten ifrån finns tillgänglig?

Jag tror att det är enklast är att skapa ett homeyscript för att få in i flöden.

Primärt verkar skolmaten.se, matilda foodtech vara de som är vanligast.

Hälsningar,  
David

---

<div class="post-metadata">

### Author: ![DagonIVE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dagonive/32/150401_2.png) [@DagonIVE](https://community.homey.app/u/DagonIVE)
#### Post date: [January 8, 2026, 3:11pm UTC](https://community.homey.app/t/veckans-skolmat/148489/3 "2026-01-08T15:11:12Z")

</div>

Hej någon som kan hjälpa mig med ett script till Homey pro.

har suttit några timmar med att testa att få igång så man får menyn från barnens skola.

Men får ett fel hela tiden när jag testar det.

/\* Matilda Platform - Nyköpings Gymnasium \*/

/\* Slutgiltig version: 2026-01-08 \*/

async function run() {

try {

```
const cleanUrl = "https://menu.matildaplatform.com/api/v1/meals/week/685427abb1ee448fd5710ce1_gymnasium";

console.log("Anropar: " + cleanUrl);

const response = await fetch(cleanUrl, {

  method: 'GET',

  headers: { 'Accept': 'application/json' }

});

if (!response.ok) throw new Error("HTTP-fel: " + response.status);

const data = await response.json();

// Hämta lokalt datum i Nyköping (format: 2026-01-08)

const now = new Date();

const todayStr = now.toLocaleDateString('sv-SE'); 

const dayOfWeek = now.getDay(); 

if (dayOfWeek === 0 || dayOfWeek === 6) {

  await tag("DagensSkolmat", "Det är helg.");

  return "Helg";

}

// Letar efter dagens datum i menyn

const todayEntry = data.find(item => item.date.startsWith(todayStr));

if (todayEntry && todayEntry.meals) {

  const meals = todayEntry.meals.map(m => m.name).join(". ");

  await tag("DagensSkolmat", meals);

  console.log("SUCCÉ! Dagens mat (" + todayStr + "): " + meals);

  return true;

} else {

  // Fallback: Ta maten baserat på veckodag (Mån=0)

  const fallbackEntry = data\[dayOfWeek - 1\];

  if (fallbackEntry && fallbackEntry.meals) {

    const meals = fallbackEntry.meals.map(m => m.name).join(". ");

    await tag("DagensSkolmat", meals);

    console.log("SUCCÉ (fallback)! Dagens mat: " + meals);

    return true;

  }

  throw new Error("Ingen mat hittades i datan.");

}

```

} catch (e) {

```
console.error("DEBUG-INFO: " + e.message);

await tag("DagensSkolmat", "Kunde inte hämta menyn.");

return false;

```

}

}

return await run();

---

<div class="post-metadata">

### Author: ![Mojento](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mojento/32/146817_2.png) [@Mojento](https://community.homey.app/u/Mojento)
#### Post date: [January 8, 2026, 11:20pm UTC](https://community.homey.app/t/veckans-skolmat/148489/4 "2026-01-08T23:20:48Z")

</div>

Hallå @DagonIVE

Detta script fungerar, har precis testat via homeyscript!

/\* Matilda Platform - Nyköpings Gymnasium \*/

/\* Fungerande version: 2026-01-09 \*/

async function run() {

const url = “[https://menu.matildaplatform.com/meals/week/685427abb1ee448fd5710ce1\_gymnasium”](https://menu.matildaplatform.com/meals/week/685427abb1ee448fd5710ce1_gymnasium%E2%80%9D);

try {

// Hämta HTML-sidan

const response = await fetch(url);

const html = await response.text();

// Extrahera \__NEXT\_DATA_\_ JSON

const nextDataMatch = html.match(/]\*\>([\s\S]\*?)\<\/script\>/);

if (!nextDataMatch) {

throw new Error(“Kunde inte hitta menydata på sidan”);

```auto
}

```

const data = JSON.parse(nextDataMatch[1]);

const meals = data.props.pageProps.meals;

if (!meals || meals.length === 0) {

throw new Error(“Ingen menydata hittades”);

```auto
}

```

// Hämta dagens datum (YYYY-MM-DD format)

const now = new Date();

const todayStr = now.toISOString().split(‘T’)[0];

const dayOfWeek = now.getDay();

```auto
console.log("Dagens datum:", todayStr);

```

// Helgkoll (0 = söndag, 6 = lördag)

if (dayOfWeek === 0 || dayOfWeek === 6) {

await tag(“DagensSkolmat”, “Det är helg - ingen skolmat.”);

```auto
  console.log("Det är helg.");

```

return “Helg”;

```auto
}

```

// Hitta dagens måltider (filtrera på “Dagens”, inte “Tillbehör”)

const todayMeals = meals.filter(meal =\> {

const mealDate = meal.date.split(‘T’)[0];

return mealDate === todayStr && meal.name === “Dagens”;

```auto
});

```

if (todayMeals.length \> 0 && todayMeals[0].courses && todayMeals[0].courses.length \> 0) {

// Hämta alla rätter för dagen

const courses = todayMeals[0].courses

```auto
    .map(c => c.name)

    .filter(name => name && name.trim() !== "")

    .join(". ");

```

if (courses) {

await tag(“DagensSkolmat”, courses);

```auto
    console.log("✅ Dagens skolmat:", courses);

```

return true;

```auto
  }

}

```

// Om inget hittas för idag

await tag(“DagensSkolmat”, “Ingen meny tillgänglig för idag.”);

```auto
console.log("Ingen meny hittades för", todayStr);

```

return false;

} catch (e) {

```auto
console.error("FEL:", e.message);

```

await tag(“DagensSkolmat”, “Kunde inte hämta menyn.”);

return false;

}

}

return await run();

Hälsningar,  
David

---

<div class="post-metadata">

### Author: ![DagonIVE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dagonive/32/150401_2.png) [@DagonIVE](https://community.homey.app/u/DagonIVE)
#### Post date: [January 9, 2026, 7:30am UTC](https://community.homey.app/t/veckans-skolmat/148489/5 "2026-01-09T07:30:54Z")

</div>

Hej

Konstigt jag får fel i mitt HomeyScript.

---

<div class="post-metadata">

### Author: ![Mojento](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mojento/32/146817_2.png) [@Mojento](https://community.homey.app/u/Mojento)
#### Post date: [January 9, 2026, 7:44am UTC](https://community.homey.app/t/veckans-skolmat/148489/6 "2026-01-09T07:44:57Z")

</div>

```auto
/* Matilda Platform - Nyköpings Gymnasium */
/* Fungerande version: 2026-01-09 */

async function run() {
  const url = "https://menu.matildaplatform.com/meals/week/685427abb1ee448fd5710ce1_gymnasium";
  
  try {
    const response = await fetch(url);
    const html = await response.text();
    
    const regex = /<script id=" __NEXT_DATA__"[^>]*>([\s\S]*?)<\/script>/;
    const nextDataMatch = html.match(regex);
    
    if (!nextDataMatch) {
      throw new Error("Kunde inte hitta menydata på sidan");
    }
    
    const data = JSON.parse(nextDataMatch[1]);
    const meals = data.props.pageProps.meals;
    
    if (!meals || meals.length === 0) {
      throw new Error("Ingen menydata hittades");
    }
    
    const now = new Date();
    const todayStr = now.toISOString().split('T')[0];
    const dayOfWeek = now.getDay();
    
    console.log("Dagens datum:", todayStr);
    
    if (dayOfWeek === 0 || dayOfWeek === 6) {
      await tag("DagensSkolmat", "Det är helg - ingen skolmat.");
      return "Helg";
    }
    
    const todayMeals = meals.filter(meal => {
      const mealDate = meal.date.split('T')[0];
      return mealDate === todayStr && meal.name === "Dagens";
    });
    
    if (todayMeals.length > 0 && todayMeals[0].courses && todayMeals[0].courses.length > 0) {
      const courses = todayMeals[0].courses
        .map(c => c.name)
        .filter(name => name && name.trim() !== "")
        .join(". ");
      
      if (courses) {
        await tag("DagensSkolmat", courses);
        console.log("Dagens skolmat:", courses);
        return true;
      }
    }
    
    await tag("DagensSkolmat", "Ingen meny tillgänglig för idag.");
    return false;
    
  } catch (e) {
    console.error("FEL:", e.message);
    await tag("DagensSkolmat", "Kunde inte hämta menyn.");
    return false;
  }
}

return await run();

```

---

<div class="post-metadata">

### Author: ![Mojento](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mojento/32/146817_2.png) [@Mojento](https://community.homey.app/u/Mojento)
#### Post date: [January 9, 2026, 7:45am UTC](https://community.homey.app/t/veckans-skolmat/148489/7 "2026-01-09T07:45:59Z")

</div>

```auto
/* Matilda Platform - Nyköpings Gymnasium */
/* Fungerande version: 2026-01-09 */

async function run() {
  const url = "https://menu.matildaplatform.com/meals/week/685427abb1ee448fd5710ce1_gymnasium";
  
  try {
    const response = await fetch(url);
    const html = await response.text();
    
    const regex = /<script id=" __NEXT_DATA__"[^>]*>([\s\S]*?)<\/script>/;
    const nextDataMatch = html.match(regex);
    
    if (!nextDataMatch) {
      throw new Error("Kunde inte hitta menydata på sidan");
    }
    
    const data = JSON.parse(nextDataMatch[1]);
    const meals = data.props.pageProps.meals;
    
    if (!meals || meals.length === 0) {
      throw new Error("Ingen menydata hittades");
    }
    
    const now = new Date();
    const todayStr = now.toISOString().split('T')[0];
    const dayOfWeek = now.getDay();
    
    console.log("Dagens datum:", todayStr);
    
    if (dayOfWeek === 0 || dayOfWeek === 6) {
      await tag("DagensSkolmat", "Det är helg - ingen skolmat.");
      return "Helg";
    }
    
    const todayMeals = meals.filter(meal => {
      const mealDate = meal.date.split('T')[0];
      return mealDate === todayStr && meal.name === "Dagens";
    });
    
    if (todayMeals.length > 0 && todayMeals[0].courses && todayMeals[0].courses.length > 0) {
      const courses = todayMeals[0].courses
        .map(c => c.name)
        .filter(name => name && name.trim() !== "")
        .join(". ");
      
      if (courses) {
        await tag("DagensSkolmat", courses);
        console.log("Dagens skolmat:", courses);
        return true;
      }
    }
    
    await tag("DagensSkolmat", "Ingen meny tillgänglig för idag.");
    return false;
    
  } catch (e) {
    console.error("FEL:", e.message);
    await tag("DagensSkolmat", "Kunde inte hämta menyn.");
    return false;
  }
}

return await run();

```

Sorry, jag klistrade in det fel!

---

<div class="post-metadata">

### Author: ![DagonIVE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dagonive/32/150401_2.png) [@DagonIVE](https://community.homey.app/u/DagonIVE)
#### Post date: [January 9, 2026, 8:32am UTC](https://community.homey.app/t/veckans-skolmat/148489/8 "2026-01-09T08:32:50Z")

</div>

Tack 🙂 Nu får jag upp dagens mat.

Nu är det bara hur man ska bygga ett flow så det fungerar.

Vet du hur man kan göra ett flow så den läser upp maten på Google högtalare? Kollat lite men vet inte vad man kan använda. Har bara hittat där man måste skriva in egen text.

Sen även om man kan göra något så man får upp dagens mat på en skärm.

Mvh Andreas

---

<div class="post-metadata">

### Author: ![Mojento](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mojento/32/146817_2.png) [@Mojento](https://community.homey.app/u/Mojento)
#### Post date: [January 9, 2026, 10:39am UTC](https://community.homey.app/t/veckans-skolmat/148489/9 "2026-01-09T10:39:53Z")

</div>

@DagonIVE - Enklast är nog efter att du sparat homeyscriptet som t.ex. skolmat

 ![Skärmavbild 2026-01-09 kl. 10.20.10](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/0/3/03192fc9cbdaee9ad11f0bef1506ca71d050fb26.png)  
Detta flow kör scriptet kl 07.00 varje morgon mån-fre.  
Du kan sen beroende på vad du är ute efter skapa ett flow med en pushnotis:

 ![Skärmavbild 2026-01-09 kl. 10.23.12](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/a/c/ac1c18125407f98bd2976f2fe3b20b3d13a59179.png)

Har tyvärr ingen Google högtalare, men antar att du lagt till Homey via Google Home och därmed kan se högtalare i Homey? i så fall kan du kanske använda ett script som typ ovan exempel men använda Googles broadcast, t.ex. Broadcast dagens skolmat är: [[DagensSkolmat]] eller till specifik högtalare genom Broadcast to Köket: dagens skolmat är [[DagensSkolmat]]

Säg till om det löser sig 🙂

Hälsningar,  
David

---

<div class="post-metadata">

### Author: ![DagonIVE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dagonive/32/150401_2.png) [@DagonIVE](https://community.homey.app/u/DagonIVE)
#### Post date: [January 9, 2026, 11:32am UTC](https://community.homey.app/t/veckans-skolmat/148489/10 "2026-01-09T11:32:11Z")

</div>

Hej

Tackar nu har jag fått allt att fungera med både högtalare och få upp informationen på skärmen 😁
