# Verwachtte zonnige minuten obv weersvoorspelling op jouw locatie

**URL:** <https://community.homey.app/t/verwachtte-zonnige-minuten-obv-weersvoorspelling-op-jouw-locatie/111197>\
**Category:** Ideeën & Suggesties\
**Created:** [June 8, 2024, 11:59am UTC](https://community.homey.app/t/verwachtte-zonnige-minuten-obv-weersvoorspelling-op-jouw-locatie/111197 "2024-06-08T11:59:27Z")\
**Posts on this page:** 1\
**Showing post:** 11

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [June 9, 2024, 9:47pm UTC](https://community.homey.app/t/verwachtte-zonnige-minuten-obv-weersvoorspelling-op-jouw-locatie/111197/11 "2024-06-09T21:47:58Z")

</div>

Script hieronder werkt nu, en wel op een Pro 2019 mocht dat van invloed zijn.

Bij de fetch dienen backticks ```` gebruikt te worden, ontdekte ik ‘al klooiend’ 😛

```auto
fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}&hourly=sunshine_duration`);

```

Verder krijg ik in de return enkel maar _ **undefined** _ terug, ook als ik de constante vervang door `true`. Iemand een idee?

(_Als je het script te snel na elkaar test, krijg je soms een 500 error van open-meteo. Paar minuten wachten en dan werkt het weer_ 😉 )

code:

```auto
async function calculateExpectedSunshineForNextThreeHours() {
const latitude = 53.1234567;
const longitude = 4.1234567;

// MAX 300 calls per dag
const response = await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}&hourly=sunshine_duration`);
//
const data = await response.json();

// Controleer of er zonneschijninformatie beschikbaar is
if (!data.hourly || !data.hourly.sunshine_duration) {
    throw new Error("Geen zonneschijninformatie beschikbaar \nconst latitude = " + latitude
    + "\nconst longitude = " + longitude
    + "\nconst response = " + response + "\nconst data = " + data);
}

const sunshineDuration = data.hourly.sunshine_duration;
const timeStamps = data.hourly.time;

// Controleer of de waarden in seconden zijn (meer dan 60)
const isInSeconds = sunshineDuration.some(duration => duration > 60);
const conversionFactor = isInSeconds ? 60 : 1;

// Bepaal de huidige tijd en de index voor de komende 3 uur
const now = new Date();
const currentHourIndex = timeStamps.findIndex(time => new Date(time).getHours() === now.getHours());

if (currentHourIndex === -1 || currentHourIndex + 3 >= sunshineDuration.length) {
    throw new Error("Onvoldoende gegevens voor de komende 3 uur.");
}

// Bereken de verwachte zonneschijnduur voor de komende 3 uur
let expectedSunshineMinutes = 0;
for (let i = currentHourIndex; i < currentHourIndex + 3; i++) {
    expectedSunshineMinutes += sunshineDuration[i] / conversionFactor;
}
expectedSunshineMinutes = Math.ceil(expectedSunshineMinutes)

console.log("Verwachte zonneschijnduur voor de komende 3 uur:", expectedSunshineMinutes + " minuten."); // er moest nog een + tussen

return expectedSunshineMinutes;
}

async function updateExpectedSunshineVariable() {
const expectedSunshineMinutes = await calculateExpectedSunshineForNextThreeHours();

// Haal alle logica variabelen op
const variables = await Homey.logic.getVariables();

// Zoek naar de variabele met de naam "ExpectedSunshineMinutes"
const expectedSunshineVariable = Object.values(variables).find(variable => variable.name === 'ExpectedSunshineMinutes');

// Update de variabele als deze gevonden is
  if (expectedSunshineVariable) {
      await Homey.logic.updateVariable({
          id: expectedSunshineVariable.id,
          variable: {
              value: expectedSunshineMinutes
          }
      });
      console.log("Variabele 'ExpectedSunshineMinutes' = bijgewerkt.");
     } else {
      console.error("Variabele 'ExpectedSunshineMinutes' niet gevonden.");
    }

}

// Roep de functie aan om de variabele bij te werken
updateExpectedSunshineVariable().catch(console.error);

```

> ![Screenshot from 2024-06-09 23-29-43](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/a/e/ae18bf056319c54b70ed02369c3012d5c77cbb1f.png)

Ben benieuwd wat er overdag uit rolt aan zon uren voorspelling!

---

_[View the full topic](https://community.homey.app/t/verwachtte-zonnige-minuten-obv-weersvoorspelling-op-jouw-locatie/111197)._
