Verwachtte zonnige minuten obv weersvoorspelling op jouw locatie

https://www.daggegevens.knmi.nl/klimatologie/uurgegevens?start=2024061200&end=2024061223&vars=PRCP&stns=260&fmt=json ben ik mee aan het pielen

1 Like

Voor de geïnteresseerden,

Ik heb er een advanced virtual device voor gemaakt, welke de verwachte zontijd in uren en minuten aangeeft, met daarbij het tijdstip van de laatste trigger (het script draait nl. een gedeelte van avond en nacht niet).
Ik heb ook een logica variabele gemaakt voor de tijd in uren, in dit format: 1,75 uur
En ook een Homeyscript variable voor de seconden ,benodigd voor de Better Logic kaart “Format TimeSec as …”

Mobiele app:

Web app:
Screenshot from 2024-06-17 18-34-53

Instellingen voor het adv. virtual device:

Screenshot from 2024-06-17 19-26-39

Screenshot from 2024-06-17 19-19-12

Screenshot from 2024-06-17 19-19-32

Flow:

2 Likes

Dat is weer een mooie toevoeging. Had ik zelf niet meer aan gedacht! Ga ik gebruiken :slight_smile:

1 Like

Mooi script!
Werkt goed

Ben niet zo heel handig met code, dus kom er nog niet uit.
Als ik een kortere periode wil gebruiken (1uur ipv 3 uur)
Wat moet ik dan in het script aanpassen

Dank, maar de eer is geheel voor @Pietje_Kuif

Ben ook geen script held, maar vermoedelijk moet in onderstaand stukje code de 3 een 1 worden:

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

Misschien moet je ook de URL uitbreiden met

&forecast_hours=1

Heb 't net even getest met locatie San Francisco, (daar is het nu 14:15 uur én zonnig) en dan krijg ik 60 minuten als resultaat.

(Test URL https://api.open-meteo.com/v1/forecast?latitude=37.7749&longitude=-122.4194&hourly=sunshine_duration&forecast_hours=1)

Bron:
https://open-meteo.com/en/docs#latitude=37.7749&longitude=-122.4194&current=&hourly=sunshine_duration&daily=&timezone=America%2FLos_Angeles&forecast_days=1&forecast_hours=1

2 Likes

Goed idee trouwens, ik gebruik nu beide, 3u en 1u, voor iets meer precisie

1 Like

Yup, ik ook maar dan combined in 1
IMG_0056

1 Like

@Peter_Kawa moet de scripts(3h en 1h) nog even samenvoegen in 1 script. (Scheelt API calls).
Heb jij dat al gedaan?

Mm bij nader inzien, zal het toch wel geen calls schelen…

Nog niet. Iets met lui en moe :rofl:
Maar ik doe 4x24=96 x 2 =192 calls, ruim 100 onder de limiet

hallo Peter,ik heb geprobeerd je voorbeeld na te bouwen. Script werkt en urenverwachting wordt netjees bijgewerkt in virtual device maar het lukt mij niet om de actuele tijd als timestamp vast te leggen. Ik heb (volgens mij) net als in het voorbeeld een textfield aangemaakt met naam timestamp en in flow set timestamp naar time.
Krijg foutmelding unexpected token ':" hoe schrijf ik tijd naar de capabilitie? wat doe ik fout?

Hoi H,

Ha dank je! Ik was dit kwijt na het opnieuw (moeten) inrichten van 1 van mijn Homey’s.

Wat leuk dat je het hebt nagebouwd.

De foutmelding komt hoogstwaarschijnlijk voorbij omdat je een nummerveld (blauw) hebt gebruikt i.p.v. een tekstveld (groen)

(Tijd wordt als 12:45 aangeduid, een numeriek veld ‘snapt’ de 1 en de 2, maar het : teken is geen cijfer, en dan geeft ie de foutmelding)

Hallo Peter,
Dank voor je bericht. Maar nee, ik heb net als in het voorbeeld een textveld aangemaakt waarbij ik deze fout krijg. Heb geen idee wat ik nog kan veranderen om dit op te lossen.

Graag gedaan.
Wil je de settings schermpjes van de AVD even laten zien?
En de flowkaart die je gebruikt?

Ik ga het straks of morgen zelf ook weer opzetten, mss kom ik nog wat foutjes tegen.

Dank voor dir scripr. Ik gebruik hem om mijn batterij aan te sturen.

Bijgaand de 2 afbeeldingen. heb ook geprobeerd om nummerveld toe te passen. zoals verwacht krijg ik daar een fout over verkeerd type. Wanneer ik text gebruik valt hij over de : in de tijdnotatie.


Ben benieuwd of je mn fout ziet…

Waarom staat er ‘time’ voor de Tijd-tag? Deze tag bevat al een opgemaakte tijdstempel.

Werkt het als je dat weghaalt?

Als je met ‘time’ naar de time-function van Better Logic Library (BLL) verwijst, dan kan die een tijdsduur in seconden (of milliseconden) omzetten naar een opgemaakte tijd:

Als je het huidige moment wilt omzetten naar een tijdstempel, dan kun je (o.a.) de volgende BLL-expressie gebruiken: date('HH:mm:ss', Date.now()) Echter de uitkomst daarvan (zonder de seconden) zit ook al in de standaard Tijd-tag :grinning_face:.

Hallo Subeech,

dit was een van de pogingen om het werkend te krijgen. In basis had ik alleen de groen tage ‘time’ geselecteerd. Hier krijg ik de gemelde fout op.

Ah oké. Als alternatief zou je de huidige tijd aan een BLL-variabele kunnen toewijzen en die variabele selecteren bij de Reflecteer-instelling van het veld. Je vervangt dan in je flow de laatste kaart, die nu het veld instelt, met de BLL-kaart die de tijd aan de (door jouw in BLL aan te maken) variabele toekent:

Vreemd zeg.
Ik heb geen problemen gehad.
Staat bij jou de “Device class” op Sensor?

Ik heb het nu als volgt gemaakt:



(Tekstveld1 is verwijderd, deze was bij nader inzien niet nodig, dit is dus geen speciale constructie of zo)