Discussie forum over overige software. Voor vragen, specificaties, ervaringen etc..
#75096
Hoi weercollega's,

Ik ben op zoek naar een php of ander scriptje om de tijden voor opkomst en ondergang van de zon te tonen op mijn website, maar dan met name voor de andere tijden, zoals gouden en blauwe uur.
Heeft iemand ooit een dergelijke plugin voor Wordpress gezien of een PHP-script dat datzelfde kan berekenen en tonen?
Hoor het graag.

Alvast bedankt.
#75097
WeerstationGraveNL schreef: 17 dec 2023, 16:51 Ik ben op zoek naar een php of ander scriptje om de tijden voor opkomst en ondergang van de zon te tonen op mijn website, maar dan met name voor de andere tijden, zoals gouden en blauwe uur.
Hallo WeerstationGraveNL,

Eenmaal onder de horizon verdwenen, breekt meteen het blauwe uur aan. In de ochtend is de volgorde precies andersom. Vlak voor zonsopkomst is er het blauwe uur en zodra de zon boven de horizon uitkruipt, gaat het gouden uur van start
Het is wellicht niet precies 1 uur, maar de periode civil_twilight_begin -> zonsopgang voor het gouden uur
En zonsondergang -> civil_twilight_end voor het blauwe uur.
Maar er zijn meerder verklaringen en termen zoals bij alles.
Als het precies een uur moet zijn is het eenvoudig te berekenen de 3600 secondes mert de zonsopkomst en ondergang te verrekenen.

Wellicht is er in PHP 1 instructie voldoende, zie hier in de "Manual"

Dat geeft de volgende waardes (even vertaald met translate.google
sunrise -> tijdstempel van de zonsopgang (zenithhoek = 90°35').
sunset -> tijdstempel van de zonsondergang (zenithhoek = 90°35').

transit -> tijdstempel waarop de zon op haar hoogste punt staat, d.w.z. haar hoogste punt heeft bereikt.

civil_twilight_begin -> begin van de "burgerlijke" dageraad (zenithhoek = 96°). Het eindigt bij zonsopgang.
civil_twilight_end -> einde van de burgerlijke schemering (zenithhoek = 96°). Het begint bij zonsondergang.

nautische_schemering_begin -> begin van de nautische dageraad (zenithhoek = 102°). Het eindigt bij civil_twilight_begin.
nautische_schemering_end -> einde van de nautische schemering (zenithhoek = 102°). Het begint bij civil_twilight_end.

astronomical_twilight_begin -> begin van de astronomische dageraad (zenithhoek = 108°). Het eindigt bij nautical_twilight_begin.
astronomical_twilight_end -> Het einde van de astronomische schemering (zenithhoek = 108°). Het begint op nautical_twilight_end.

De waardes gelden alleen als de zon op en ondergaat voor die dag. Dus niet op plaatsen waar de zon 24 uur onder of 24 uur bocen de horizon is. Maar dat is gelukkig nooit zo in NL of BE.

Om de functie te gebruiken is het noodzakelijk de juiste tijdzone te zetten met date_default_timezone_set('Europe/Amsterdam');

De tabel met alle gegevens wordt gevuld door
Code: Selecteer alles
$array        = date_sun_info(time(), $lat, $lon);
De array is dan b.v. voor nu ik dit type:
Code: Selecteer alles
    [sunrise] => 1702796530
    [sunset] => 1702827279
    [transit] => 1702811904
    [civil_twilight_begin] => 1702794500
    [civil_twilight_end] => 1702829309
    [nautical_twilight_begin] => 1702792156
    [nautical_twilight_end] => 1702831653
    [astronomical_twilight_begin] => 1702789916
    [astronomical_twilight_end] => 1702833893
Alle gewenste waardes kunnen met de date() functie netjes getoond worden.

Succes,
Wim,
#75100
Dank voor deze info Wim.
Ben er mee aan het stoeien en inmiddels ook een javascript gevonden.
Ik laat het weten als er iets positiefs uit komt.
Dankjewel.
#75101
Meteotemplate genereert ook de gevraagde info m.b.v. zijn php-scripts.
Misschien kun je uit die scriptset iets als voorbeeld ‘lenen’.
#75122
In PHP programmeren kan ik nauwelijks, maar gelukkig is er ChatGPT die dat wel kan. Zolang je maar de juiste beschrijving geeft van wat je geprogrammeerd wil hebben.

Definities gegeven door GhatGPT:

Burgerlijke schemering: Begint in de ochtend wanneer de zon 6 graden onder de horizon is en eindigt bij zonsopgang. In de avond begint het bij zonsondergang en eindigt wanneer de zon 6 graden onder de horizon bereikt.

Nautische schemering: Begint in de ochtend wanneer de zon 12 graden onder de horizon is en eindigt bij het begin van de burgerlijke schemering. In de avond begint het aan het einde van de burgerlijke schemering en eindigt wanneer de zon 12 graden onder de horizon bereikt.

Astronomische schemering: Begint in de ochtend wanneer de zon 18 graden onder de horizon is en eindigt bij het begin van de nautische schemering. In de avond begint het aan het einde van de nautische schemering en eindigt wanneer de zon 18 graden onder de horizon bereikt.

Gouden uur (Golden Hour): Dit is de periode van de dag net voor zonsondergang of net na zonsopgang, wanneer het licht van de zon rood en zacht is. Tijdens het gouden uur is het licht vaak mooi vanwege de prachtige, warme lichtinval waarvan bij helder weer dan sprake is. Alles krijgt een sfeervolle, roodgouden gloed en bijvoorbeeld gebouwen, mensen en wolken komen dan extra mooi uit. Het gouden uur verwijst naar de fase van de schemering wanneer de zon zo ver onder de horizon is dat de blauwe golflengtes van het licht domineren. Het gouden uur vindt meestal plaats wanneer de zon minder dan 6 graden boven de horizon staat.

Blauwe uur (Blue Hour): Dit is de periode van de schemering (in de ochtend of avond, rond de nautische fase) wanneer de zon op een aanzienlijke diepte onder de horizon is. Tijdens deze tijd neemt het resterende zonlicht voornamelijk een blauwe tint aan. Het blauwe uur verwijst naar de fase van de schemering wanneer de zon zo ver onder de horizon is dat de blauwe golflengtes van het licht domineren. Het blauwe uur vindt meestal plaats wanneer de zon tussen 4 en 8 graden onder de horizon staat.

Dit is de PHP-code die ChatGPT heeft geproduceerd:
Code: Selecteer alles
<?php
/// Coördinaten voor Grave, Nederland
$latitude = 51.7611;
$longitude = 5.7372;

// Tijdzone voor Nederland
$timezone = "Europe/Amsterdam";

// Huidige datum
$date = date("Y-m-d");

// Zenithhoeken voor verschillende soorten schemering
$sunrise_zenith = 90+50/60;
$civil_twilight_zenith = 96;
$nautical_twilight_zenith = 102;
$astronomical_twilight_zenith = 108;

// Zonsopgang en zonsondergang berekenen
$sunrise = date_sunrise(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $sunrise_zenith, date("O")/100);
$sunset = date_sunset(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $sunrise_zenith, date("O")/100);

// Burgerlijke schemering berekenen
$civil_twilight_begin = date_sunrise(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $civil_twilight_zenith, date("O")/100);
$civil_twilight_end = date_sunset(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $civil_twilight_zenith, date("O")/100);

// Nautische schemering berekenen
$nautical_twilight_begin = date_sunrise(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $nautical_twilight_zenith, date("O")/100);
$nautical_twilight_end = date_sunset(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $nautical_twilight_zenith, date("O")/100);

// Astronomische schemering berekenen
$astronomical_twilight_begin = date_sunrise(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $astronomical_twilight_zenith, date("O")/100);
$astronomical_twilight_end = date_sunset(strtotime($date), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude, $astronomical_twilight_zenith, date("O")/100);

// Duur van elke fase berekenen
$daylight_duration = gmdate("H:i", $sunset - $sunrise);
$civil_twilight_duration_morning = gmdate("H:i", $sunrise - $civil_twilight_begin);
$civil_twilight_duration_evening = gmdate("H:i", $civil_twilight_end - $sunset);
$nautical_twilight_duration_morning = gmdate("H:i", $civil_twilight_begin - $nautical_twilight_begin);
$nautical_twilight_duration_evening = gmdate("H:i", $nautical_twilight_end - $civil_twilight_end);
$astronomical_twilight_duration_morning = gmdate("H:i", $nautical_twilight_begin - $astronomical_twilight_begin);
$astronomical_twilight_duration_evening = gmdate("H:i", $astronomical_twilight_end - $nautical_twilight_end);

echo "Zonsopgang: " . date("H:i:s", $sunrise) . "<br>";
echo "Zonsondergang: " . date("H:i:s", $sunset) . "<br>";
echo "Duur van daglicht: $daylight_duration<br>";
echo "Begin ochtend burgerlijke schemering: " . date("H:i:s", $civil_twilight_begin) . "<br>";
echo "Einde avond burgerlijke schemering: " . date("H:i:s", $civil_twilight_end) . "<br>";
echo "Duur van ochtend burgerlijke schemering: $civil_twilight_duration_morning<br>";
echo "Duur van avond burgerlijke schemering: $civil_twilight_duration_evening<br>";
echo "Begin ochtend nautische schemering: " . date("H:i:s", $nautical_twilight_begin) . "<br>";
echo "Einde avond nautische schemering: " . date("H:i:s", $nautical_twilight_end) . "<br>";
echo "Duur van ochtend nautische schemering: $nautical_twilight_duration_morning<br>";
echo "Duur van avond nautische schemering: $nautical_twilight_duration_evening<br>";
echo "Begin ochtend astronomische schemering: " . date("H:i:s", $astronomical_twilight_begin) . "<br>";
echo "Einde avond astronomische schemering: " . date("H:i:s", $astronomical_twilight_end) . "<br>";
echo "Duur van ochtend astronomische schemering: $astronomical_twilight_duration_morning<br>";
echo "Duur van avond astronomische schemering: $astronomical_twilight_duration_evening<br>";
?>
Met als uitvoer voor vandaag:

Zonsopgang: 08:48:14
Zonsondergang: 16:36:22
Duur van daglicht: 07:48
Begin ochtend burgerlijke schemering: 08:07:10
Einde avond burgerlijke schemering: 17:17:25
Duur van ochtend burgerlijke schemering: 00:41
Duur van avond burgerlijke schemering: 00:41
Begin ochtend nautische schemering: 07:23:16
Einde avond nautische schemering: 18:01:20
Duur van ochtend nautische schemering: 00:43
Duur van avond nautische schemering: 00:43
Begin ochtend astronomische schemering: 06:41:48
Einde avond astronomische schemering: 18:42:47
Duur van ochtend astronomische schemering: 00:41
Duur van avond astronomische schemering: 00:41
#75124
mandersp schreef: 29 dec 2023, 17:39 Bedankt Weerstation de Hout Alkmaar voor het delen van het script.
Ik heb hem ook bij mij staan: https://weerstationafferden.nl/waardes/
Ik zie op je pagina dat de tijd een uur te vroeg wordt weergegeven.
De tijdzone wordt kennelijk niet goed geïnterpreteerd.
Mogelijk is dat op te lossen door de regel met de timezone aan te passen in:
Code: Selecteer alles
date_default_timezone_set('Europe/Amsterdam');