calcul position du soleil

Discussion et échanges de scripts pour la box eedomus

Re: calcul position du soleil

Messagepar vva » 27 Mars 2015 13:44

Par exemple si tu as une maison avec des volets roulants sur les 4 faces (N / S/ E et O), tu peux les fermer au fur et à mesure de la journée (simulateur de présence et/ou protection solaire).

Si tu as un pergola bioclimatique avec des lames orientables, tu peux calculer l'angle parfait d'inclinaison des lames pour te protéger ou au contraire laisser passer le soleil (mode été ou hiver)

Les applications sont multiples. Le résultat de ce script n'est que la première marche d'une solution définitive.

Pour ma part, je vois bien un second algorithme qui calculerait la position de mes volets en mon absence, en fonction de la température extérieure et la position du soleil (ou par simples règles) :idea:
vva
 
Messages : 381
Inscription : 12 Juin 2013

Re: calcul position du soleil

Messagepar dplein » 27 Mars 2015 13:50

Oui j'ai une maison ( :D :D ) et avec également des volets aux 4 murs.... Alors que dois je faire stp ??? Ou du moins comment interpréter les résultats...
Avant mais ça c'était avant, je me limitait à les fermer à moitié lorsqu'il faisait plus de 25°c dehors....
Irradié.... RAC v2
dplein
 
Messages : 1680
Inscription : 28 Oct 2012
Localisation : Lorraine

Re: calcul position du soleil

Messagepar vva » 27 Mars 2015 14:06

Concrètement:
Dans le résultat au format xml, il y une valeur "Solar_Cardinal_point" qui correspond au point cardinal du soleil (Nord, Nord-Nord-Est, Nord-Est, sud, est, ouest, ...)

En tout la rose des vents est découpée en 15 points cardinaux (oui, j'ai craqué :? )
http://fr.wikipedia.org/wiki/Point_cardinal

Pour l'exploiter dans la box; il te faut créer un capteur http (ex: Capteur_point_cadinal) avec les valeurs (voir la pièce jointe) et le xpath : /Data/Soleil/Solar_Cardinal_point

Ensuite, imaginons une règle:
Temp extérieure > 25 ET Capteur_point_cadinal = SUD
Alors: Fermer les volets coté sud et ouvrir les autres (avec une scène par exemple).

C'est très schématique et il faut affiner en fonction du besoin réel et la configuration de la maison.

Ca te va comme exemple ?
Pièces jointes
Capteur.png
valeur capteur
Capteur.png (33.6 Kio) Consulté 20389 fois
vva
 
Messages : 381
Inscription : 12 Juin 2013

Re: calcul position du soleil

Messagepar dplein » 27 Mars 2015 14:10

Ok merci bien, je vais mettre en route tout çà....
Irradié.... RAC v2
dplein
 
Messages : 1680
Inscription : 28 Oct 2012
Localisation : Lorraine

Re: calcul position du soleil

Messagepar vva » 27 Mars 2015 14:13

J'avoue que c'est un peu du luxe cette solution :D
vva
 
Messages : 381
Inscription : 12 Juin 2013

Re: calcul position du soleil

Messagepar jonathan56000 » 27 Mars 2015 15:29

Ca m'attire bien mais ça à l'air lourd à mettre en place... On va attendre d'avoir un peu plus de temps !
jonathan56000
 
Messages : 91
Inscription : 05 Sep 2014

Re: calcul position du soleil

Messagepar dplein » 27 Mars 2015 17:57

jonathan56000 a écrit:Ca m'attire bien mais ça à l'air lourd à mettre en place... On va attendre d'avoir un peu plus de temps !


Heu, c'est quoi que tu appelles "lourd" ???
Irradié.... RAC v2
dplein
 
Messages : 1680
Inscription : 28 Oct 2012
Localisation : Lorraine

Re: calcul position du soleil

Messagepar Blanchard » 27 Mars 2015 20:37

Ça fonctionne super bien
Un grand merci
Blanchard
 
Messages : 27
Inscription : 15 Jan 2012

Re: calcul position du soleil

Messagepar Chacks » 28 Mars 2015 10:35

ça marche nickel chez moi.

Merci pour ce script.

@+
1 EEDOMUS, modules FIBARO, IPX800 V3, Arduino, sondes T & Rh WS1170
Chacks
 
Messages : 228
Inscription : 06 Mars 2012

Re: calcul position du soleil

Messagepar vva » 29 Mars 2015 08:14

Bonjour à tous les testeurs,

Voici la dernière version qui corrige le problème d'angle (élévation) et prend en charge le changement d'heure (testé cette nuit :D )

Code : Tout sélectionner
<?php

// Version v0.12
// CE SCRIPT EXPERIMENTAL REALISE EN PHP PERMET DE DETERMINER LA POSITION DU SOLEIL (AZIMUT + ELEVATION, ...)
// L'ALGORYTHME EST BASÉ SUR UNE ÉTUDE FAITE PAR LE National Oceanic and Atmospheric Administration

// LES VARIABLES DE LA BOX EEDOMUS:
// [VAR1] = @IP DE LA BOX
// [VAR2] = Latitude (+ => N)
// [VAR3] = Longitude (+ => E)

// Les latitude et longitude doivent contenir des "." (PAS DE VIRGULE)
// EXEMPLE: Latitude = 48.858346
//          Longitude = 2.294496
// OU
//
// EXEMPLE: Latitude = 48.387942
//          Longitude = -4.484993

// EXEMPLE APPEL DE SCRIPT avec variables: http://[VAR1]/script/?exec=position_soleil.php&latitude=[VAR2]&longitude=[VAR3]
// EXEMPLE APPEL DE SCRIPT dans navigateur: http://@IP_BOX_EEDOMUS/script/?exec=position_soleil.php&latitude=48.858346&longitude=2.294496

// LE RESULTAT EST SOUS FORME XML
// L'ELEVATION CORRESPOND A L'ANGLE ENTRE L'HORIZON ET LE SOLEIL
// XPATH ELEVATION: /Data/Soleil/Solar_Elevation_corrected_for_atm_refraction_deg

// L'AZIMUT CORRESPOND A L'ANGLE ENTRE LE NORD ET LE SOLEIL
// XPATH AZIMUT: /Data/Soleil/Solar_Azimuth_round
// 0°/ 360° = NORD
// 90° = EST
// 180° = SUD
// 270° = OUEST

//--------------------------------------------------------------

// Stocker les variables passées en argument
$ma_latitude = getArg('latitude');
$ma_longitude = getArg('longitude');

// Recalcul avec correction depuis le jour d'origine
$diff_jour_origine = strtotime('2015-03-26 00:00:00');
$diff_jour = strtotime(date('Y')."-".date('m')."-".date('d')." 00:00:00");

$jour_diff = $diff_jour - $diff_jour_origine;
$jour_diff = round($jour_diff / 84600);

// Aujourd'hui depuis 01/01/1900
$delta_jour = 42089;

$Date_1900 = $jour_diff + $delta_jour;

// Time zone par défaut = Heure d'hiver
$time_zone = 1;
$day_year = date('z');

// SI JOUR > A 87 ET < A 297 = HEURE D'ETE: TIME_ZONE = 2 SINON = TIME_ZONE = 1
if ($day_year >= 87 && $day_year <= 297)
{
   // Heure d'été
   $time_zone = 2;
}

//--------------------------------------------------------------

$heure = date('H');
$heure_mk = $heure / 24;

$Julian_Day = $Date_1900 + '2415018.5' + $heure_mk;

$Julian_Day_2 = $time_zone / 24;
$Julian_Day = $Julian_Day - $Julian_Day_2;

$Julian_Century = $Julian_Day - 2451545;
$Julian_Century = $Julian_Century / 36525;

$Geom_Mean_Long_Sun_deg_1 = $Julian_Century * '0.0003032';
$Geom_Mean_Long_Sun_deg_1 = '36000.76983' + $Geom_Mean_Long_Sun_deg_1;
$Geom_Mean_Long_Sun_deg_1 = $Julian_Century * $Geom_Mean_Long_Sun_deg_1;
$Geom_Mean_Long_Sun_deg = fmod('280.46646' + $Geom_Mean_Long_Sun_deg_1,360);

$Geom_Mean_Anom_Sun_deg = '0.0001537' * $Julian_Century;
$Geom_Mean_Anom_Sun_deg = '35999.05029' - $Geom_Mean_Anom_Sun_deg;
$Geom_Mean_Anom_Sun_deg = $Julian_Century * $Geom_Mean_Anom_Sun_deg;
$Geom_Mean_Anom_Sun_deg = '357.52911' + $Geom_Mean_Anom_Sun_deg;

$Eccent_Earth_Orbit = '0.0000001267'*$Julian_Century;
$Eccent_Earth_Orbit = '0.000042037' + $Eccent_Earth_Orbit;
$Eccent_Earth_Orbit = $Julian_Century * $Eccent_Earth_Orbit;
$Eccent_Earth_Orbit = '0.016708634' - $Eccent_Earth_Orbit;

$Sun_Eq_of_Ctr_1 = deg2rad(3 * $Geom_Mean_Anom_Sun_deg);
$Sun_Eq_of_Ctr_1 = sin($Sun_Eq_of_Ctr_1);
$Sun_Eq_of_Ctr_1 = $Sun_Eq_of_Ctr_1 * '0.000289';
$Sun_Eq_of_Ctr_2 = '0.000101' * $Julian_Century;
$Sun_Eq_of_Ctr_2 = '0.019993' - $Sun_Eq_of_Ctr_2;
$Sun_Eq_of_Ctr_3 = deg2rad(2* $Geom_Mean_Anom_Sun_deg);
$Sun_Eq_of_Ctr_3 = sin($Sun_Eq_of_Ctr_3);
$Sun_Eq_of_Ctr = $Sun_Eq_of_Ctr_2 * $Sun_Eq_of_Ctr_3;
$Sun_Eq_of_Ctr = $Sun_Eq_of_Ctr + $Sun_Eq_of_Ctr_1;
$Sun_Eq_of_Ctr_3 = '0.000014' * $Julian_Century;
$Sun_Eq_of_Ctr_3 = $Sun_Eq_of_Ctr_3 + '0.004817';
$Sun_Eq_of_Ctr_3 = $Julian_Century * $Sun_Eq_of_Ctr_3;
$Sun_Eq_of_Ctr_3 = '1.914602' - $Sun_Eq_of_Ctr_3;
$Sun_Eq_of_Ctr_2 = deg2rad( $Geom_Mean_Anom_Sun_deg);
$Sun_Eq_of_Ctr_2 = sin($Sun_Eq_of_Ctr_2);
$Sun_Eq_of_Ctr_2 = $Sun_Eq_of_Ctr_2*$Sun_Eq_of_Ctr_3;
$Sun_Eq_of_Ctr = $Sun_Eq_of_Ctr_2 + $Sun_Eq_of_Ctr;

$Sun_True_Long_deg = $Geom_Mean_Long_Sun_deg + $Sun_Eq_of_Ctr;

$Sun_True_Anom_deg = $Geom_Mean_Anom_Sun_deg + $Sun_Eq_of_Ctr;

$Sun_Rad_Vector_AUs_1 = deg2rad($Sun_True_Anom_deg);
$Sun_Rad_Vector_AUs_1 = cos($Sun_Rad_Vector_AUs_1);
$Sun_Rad_Vector_AUs_1 = $Eccent_Earth_Orbit * $Sun_Rad_Vector_AUs_1;
$Sun_Rad_Vector_AUs = 1 + $Sun_Rad_Vector_AUs_1;
$Sun_Rad_Vector_AUs_1  = $Eccent_Earth_Orbit*$Eccent_Earth_Orbit;
$Sun_Rad_Vector_AUs_1 = 1-$Sun_Rad_Vector_AUs_1;
$Sun_Rad_Vector_AUs_1 = '1.000001018'*$Sun_Rad_Vector_AUs_1;
$Sun_Rad_Vector_AUs = $Sun_Rad_Vector_AUs_1 / $Sun_Rad_Vector_AUs;

$Sun_App_Long_deg_1 = '1934.136'*$Julian_Century;
$Sun_App_Long_deg_1 = '125.04'-$Sun_App_Long_deg_1;
$Sun_App_Long_deg_1 = deg2rad($Sun_App_Long_deg_1);
$Sun_App_Long_deg_1 = sin($Sun_App_Long_deg_1);
$Sun_App_Long_deg_1 = '0.00478'*$Sun_App_Long_deg_1;
$Sun_App_Long_deg = $Sun_True_Long_deg - '0.00569'-$Sun_App_Long_deg_1;

$Mean_Obliq_Ecliptic_deg = $Julian_Century * '0.001813';
$Mean_Obliq_Ecliptic_deg = '0.00059'- $Mean_Obliq_Ecliptic_deg;
$Mean_Obliq_Ecliptic_deg = $Julian_Century * $Mean_Obliq_Ecliptic_deg;
$Mean_Obliq_Ecliptic_deg = '46.815' + $Mean_Obliq_Ecliptic_deg;
$Mean_Obliq_Ecliptic_deg = $Julian_Century * $Mean_Obliq_Ecliptic_deg;
$Mean_Obliq_Ecliptic_deg = '21.448' - $Mean_Obliq_Ecliptic_deg;
$Mean_Obliq_Ecliptic_deg = $Mean_Obliq_Ecliptic_deg / 60;
$Mean_Obliq_Ecliptic_deg = '26' + $Mean_Obliq_Ecliptic_deg;
$Mean_Obliq_Ecliptic_deg = $Mean_Obliq_Ecliptic_deg / 60;
$Mean_Obliq_Ecliptic_deg = 23 + $Mean_Obliq_Ecliptic_deg;

$Obliq_Corr_deg = '1934.136'*$Julian_Century;
$Obliq_Corr_deg = '125.04'-$Obliq_Corr_deg;
$Obliq_Corr_deg = deg2rad($Obliq_Corr_deg);
$Obliq_Corr_deg = cos($Obliq_Corr_deg);
$Obliq_Corr_deg = $Obliq_Corr_deg*'0.00256';
$Obliq_Corr_deg = $Mean_Obliq_Ecliptic_deg + $Obliq_Corr_deg;

$Sun_Declin_deg_1 = deg2rad($Sun_App_Long_deg);
$Sun_Declin_deg_1 = sin($Sun_Declin_deg_1);
$Sun_Declin_deg_2 = deg2rad($Obliq_Corr_deg);
$Sun_Declin_deg_2 = sin($Sun_Declin_deg_2);
$Sun_Declin_deg = asin($Sun_Declin_deg_1*$Sun_Declin_deg_2);
$Sun_Declin_deg = rad2deg($Sun_Declin_deg);

$SunRt_Ascen_deg_1 = deg2rad($Sun_App_Long_deg);
$SunRt_Ascen_deg_1 = sin($SunRt_Ascen_deg_1);
$SunRt_Ascen_deg_2 = deg2rad($Obliq_Corr_deg);
$SunRt_Ascen_deg_2 = cos($SunRt_Ascen_deg_2);
$SunRt_Ascen_deg_1 = $SunRt_Ascen_deg_2 * $SunRt_Ascen_deg_1;
$SunRt_Ascen_deg_2 = deg2rad($Sun_App_Long_deg);
$SunRt_Ascen_deg_2 = cos($SunRt_Ascen_deg_2);
$SunRt_Ascen_deg = atan2($SunRt_Ascen_deg_1, $SunRt_Ascen_deg_2);
$SunRt_Ascen_deg = rad2deg($SunRt_Ascen_deg);

$y_1 = $Obliq_Corr_deg/2;
$y_1 = deg2rad($y_1);
$y_1 = tan($y_1);
$y = $Obliq_Corr_deg/2;
$y = deg2rad($y);
$y = tan($y);
$y = $y * $y_1;

$Eq_of_Time_minutes_1 = deg2rad($Geom_Mean_Anom_Sun_deg);
$Eq_of_Time_minutes_1 = 2 * $Eq_of_Time_minutes_1;
$Eq_of_Time_minutes_1 = sin($Eq_of_Time_minutes_1);
$Eq_of_Time_minutes_1 = '1.25' * $Eccent_Earth_Orbit * $Eccent_Earth_Orbit * $Eq_of_Time_minutes_1;
$Eq_of_Time_minutes_2 = deg2rad($Geom_Mean_Long_Sun_deg);
$Eq_of_Time_minutes_2 = 4 * $Eq_of_Time_minutes_2;
$Eq_of_Time_minutes_2 = sin($Eq_of_Time_minutes_2);
$Eq_of_Time_minutes_2 = '0.5' * $y * $y * $Eq_of_Time_minutes_2;
$Eq_of_Time_minutes_3 = deg2rad($Geom_Mean_Long_Sun_deg);
$Eq_of_Time_minutes_3 = 2 * $Eq_of_Time_minutes_3;
$Eq_of_Time_minutes_3 = cos($Eq_of_Time_minutes_3);
$Eq_of_Time_minutes_4 = deg2rad($Geom_Mean_Anom_Sun_deg);
$Eq_of_Time_minutes_4 = sin($Eq_of_Time_minutes_4);
$Eq_of_Time_minutes_4 = 4 * $Eccent_Earth_Orbit * $y * $Eq_of_Time_minutes_4 * $Eq_of_Time_minutes_3;
$Eq_of_Time_minutes_5 = deg2rad($Geom_Mean_Anom_Sun_deg);
$Eq_of_Time_minutes_5 = sin($Eq_of_Time_minutes_5);
$Eq_of_Time_minutes_5 = 2 * $Eccent_Earth_Orbit * $Eq_of_Time_minutes_5;
$Eq_of_Time_minutes_6 = deg2rad($Geom_Mean_Long_Sun_deg);
$Eq_of_Time_minutes_6 = 2 * $Eq_of_Time_minutes_6;
$Eq_of_Time_minutes_6 = sin($Eq_of_Time_minutes_6);
$Eq_of_Time_minutes_6 = $y * $Eq_of_Time_minutes_6;

$Eq_of_Time_minutes = $Eq_of_Time_minutes_6 - $Eq_of_Time_minutes_5 + $Eq_of_Time_minutes_4 - $Eq_of_Time_minutes_2 - $Eq_of_Time_minutes_1;
$Eq_of_Time_minutes = 4 * rad2deg($Eq_of_Time_minutes);

$HA_Sunrise_deg_1 = deg2rad($Sun_Declin_deg);
$HA_Sunrise_deg_1 = tan($HA_Sunrise_deg_1);
$HA_Sunrise_deg_2 = deg2rad($ma_latitude);
$HA_Sunrise_deg_2 = tan($HA_Sunrise_deg_2);
$HA_Sunrise_deg_1 = $HA_Sunrise_deg_1 * $HA_Sunrise_deg_2;
$HA_Sunrise_deg_2 = deg2rad($Sun_Declin_deg);
$HA_Sunrise_deg_5 = cos($HA_Sunrise_deg_2);
$HA_Sunrise_deg_3 = deg2rad($ma_latitude);
$HA_Sunrise_deg_3 = cos($HA_Sunrise_deg_3);
$HA_Sunrise_deg_3 = $HA_Sunrise_deg_3 * $HA_Sunrise_deg_5;
$HA_Sunrise_deg_4 = deg2rad('90.833');
$HA_Sunrise_deg_4 = cos($HA_Sunrise_deg_4);
$HA_Sunrise_deg = $HA_Sunrise_deg_4 / $HA_Sunrise_deg_3;
$HA_Sunrise_deg = $HA_Sunrise_deg - $HA_Sunrise_deg_1;
$HA_Sunrise_deg = acos($HA_Sunrise_deg);
$HA_Sunrise_deg = rad2deg($HA_Sunrise_deg);

$Solar_Noon_LST = $time_zone * 60;
$Solar_Noon_LST_1 = 4 * $ma_longitude;
$Solar_Noon_LST = 720 - $Solar_Noon_LST_1 - $Eq_of_Time_minutes + $Solar_Noon_LST;
$Solar_Noon_LST = $Solar_Noon_LST / 1440;

$Sunrise_Time_LST = $HA_Sunrise_deg*4;
$Sunrise_Time_LST = $Sunrise_Time_LST / 1440;
$Sunrise_Time_LST = $Solar_Noon_LST - $Sunrise_Time_LST;

$Sunset_Time_LST = $HA_Sunrise_deg*4;
$Sunset_Time_LST = $Sunset_Time_LST / 1440;
$Sunset_Time_LST = $Solar_Noon_LST + $Sunset_Time_LST;

$Sunlight_Duration_minutes = 8* $HA_Sunrise_deg;

$True_Solar_Time_min_1 = 60 * $time_zone;
$True_Solar_Time_min_2 = 4 * $ma_longitude;
$True_Solar_Time_min_3 = $heure_mk * 1440;
$True_Solar_Time_min = $True_Solar_Time_min_3 + $Eq_of_Time_minutes + $True_Solar_Time_min_2 - $True_Solar_Time_min_1;
$True_Solar_Time_min = fmod($True_Solar_Time_min, 1440);

if ($True_Solar_Time_min/4 < 0)
{
   $Hour_Angle_deg = $True_Solar_Time_min / 4;
   $Hour_Angle_deg = $Hour_Angle_deg +180;
}
else
{
   $Hour_Angle_deg = $True_Solar_Time_min / 4;
   $Hour_Angle_deg = $Hour_Angle_deg -180;
}

$Solar_Zenith_Angle_deg_1 = deg2rad($Hour_Angle_deg);
$Solar_Zenith_Angle_deg_1  = cos($Solar_Zenith_Angle_deg_1 );
$Solar_Zenith_Angle_deg_2 = deg2rad($Sun_Declin_deg);
$Solar_Zenith_Angle_deg_2  = cos($Solar_Zenith_Angle_deg_2 );
$Solar_Zenith_Angle_deg_3 = deg2rad($ma_latitude);
$Solar_Zenith_Angle_deg_3  = cos($Solar_Zenith_Angle_deg_3 );
$Solar_Zenith_Angle_deg_3 = $Solar_Zenith_Angle_deg_1 * $Solar_Zenith_Angle_deg_2 * $Solar_Zenith_Angle_deg_3;
$Solar_Zenith_Angle_deg_4 = deg2rad($Sun_Declin_deg);
$Solar_Zenith_Angle_deg_4 = sin($Solar_Zenith_Angle_deg_4);
$Solar_Zenith_Angle_deg_5 = deg2rad($ma_latitude);
$Solar_Zenith_Angle_deg_5 = sin($Solar_Zenith_Angle_deg_5);
$Solar_Zenith_Angle_deg_5 = $Solar_Zenith_Angle_deg_5  * $Solar_Zenith_Angle_deg_4;   
$Solar_Zenith_Angle_deg = $Solar_Zenith_Angle_deg_5 + $Solar_Zenith_Angle_deg_3;
$Solar_Zenith_Angle_deg = acos($Solar_Zenith_Angle_deg);
$Solar_Zenith_Angle_deg = rad2deg($Solar_Zenith_Angle_deg);

$Solar_Elevation_Angle_deg = 90 - $Solar_Zenith_Angle_deg;

// A FAIRE
$Approx_Atmospheric_Refraction_deg = 0;

$Solar_Elevation_corrected_for_atm_refraction_deg = $Solar_Elevation_Angle_deg + $Approx_Atmospheric_Refraction_deg;

if ($Hour_Angle_deg > 0)
{
   $Solar_Azimuth_Angle_deg_cw_from_N_1 = deg2rad($Solar_Zenith_Angle_deg);
   $Solar_Azimuth_Angle_deg_cw_from_N_1 = sin($Solar_Azimuth_Angle_deg_cw_from_N_1);
   $Solar_Azimuth_Angle_deg_cw_from_N_2 = deg2rad($ma_latitude);
   $Solar_Azimuth_Angle_deg_cw_from_N_2 = cos($Solar_Azimuth_Angle_deg_cw_from_N_2 );
   $Solar_Azimuth_Angle_deg_cw_from_N_1 = $Solar_Azimuth_Angle_deg_cw_from_N_1 * $Solar_Azimuth_Angle_deg_cw_from_N_2;
   $Solar_Azimuth_Angle_deg_cw_from_N_3 = deg2rad($Sun_Declin_deg);
   $Solar_Azimuth_Angle_deg_cw_from_N_3 = sin($Solar_Azimuth_Angle_deg_cw_from_N_3);
   $Solar_Azimuth_Angle_deg_cw_from_N_4 = deg2rad($Solar_Zenith_Angle_deg);
   $Solar_Azimuth_Angle_deg_cw_from_N_4 = cos($Solar_Azimuth_Angle_deg_cw_from_N_4);
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = deg2rad($ma_latitude);
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = cos($Solar_Azimuth_Angle_deg_cw_from_N_5 );
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = $Solar_Azimuth_Angle_deg_cw_from_N_5 * $Solar_Azimuth_Angle_deg_cw_from_N_4;
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = $Solar_Azimuth_Angle_deg_cw_from_N_5 - $Solar_Azimuth_Angle_deg_cw_from_N_3;   
   $Solar_Azimuth_Angle_deg_cw_from_N = acos($Solar_Azimuth_Angle_deg_cw_from_N_5 / $Solar_Azimuth_Angle_deg_cw_from_N_1);   
   $Solar_Azimuth_Angle_deg_cw_from_N = rad2deg($Solar_Azimuth_Angle_deg_cw_from_N) + 180;
   $Solar_Azimuth_Angle_deg_cw_from_N = fmod($Solar_Azimuth_Angle_deg_cw_from_N,360);
}
else
{
   $Solar_Azimuth_Angle_deg_cw_from_N_1 = deg2rad($Solar_Zenith_Angle_deg);
   $Solar_Azimuth_Angle_deg_cw_from_N_1 = sin($Solar_Azimuth_Angle_deg_cw_from_N_1);
   $Solar_Azimuth_Angle_deg_cw_from_N_2 = deg2rad($ma_latitude);
   $Solar_Azimuth_Angle_deg_cw_from_N_2 = cos($Solar_Azimuth_Angle_deg_cw_from_N_2 );
   $Solar_Azimuth_Angle_deg_cw_from_N_1 = $Solar_Azimuth_Angle_deg_cw_from_N_1 * $Solar_Azimuth_Angle_deg_cw_from_N_2;   
   $Solar_Azimuth_Angle_deg_cw_from_N_3 = deg2rad($Sun_Declin_deg);
   $Solar_Azimuth_Angle_deg_cw_from_N_3 = sin($Solar_Azimuth_Angle_deg_cw_from_N_3);
   $Solar_Azimuth_Angle_deg_cw_from_N_4 = deg2rad($Solar_Zenith_Angle_deg);
   $Solar_Azimuth_Angle_deg_cw_from_N_4 = cos($Solar_Azimuth_Angle_deg_cw_from_N_4);
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = deg2rad($ma_latitude);
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = cos($Solar_Azimuth_Angle_deg_cw_from_N_5 );
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = $Solar_Azimuth_Angle_deg_cw_from_N_5 * $Solar_Azimuth_Angle_deg_cw_from_N_4;
   $Solar_Azimuth_Angle_deg_cw_from_N_5 = $Solar_Azimuth_Angle_deg_cw_from_N_5 - $Solar_Azimuth_Angle_deg_cw_from_N_3;   
   $Solar_Azimuth_Angle_deg_cw_from_N = acos($Solar_Azimuth_Angle_deg_cw_from_N_5 / $Solar_Azimuth_Angle_deg_cw_from_N_1);   
   $Solar_Azimuth_Angle_deg_cw_from_N = 540 - rad2deg($Solar_Azimuth_Angle_deg_cw_from_N);
   $Solar_Azimuth_Angle_deg_cw_from_N = fmod($Solar_Azimuth_Angle_deg_cw_from_N,360);
}

$Solar_Azimuth_Angle_deg = round($Solar_Azimuth_Angle_deg_cw_from_N);

// Associé le point cardinal à l'angle
if ($Solar_Azimuth_Angle_deg == 0)
   { $Solar_Cardinal_point = 1;}      // NORD
   
if ($Solar_Azimuth_Angle_deg > '22.4')
   { $Solar_Cardinal_point = 2;}      // NORD-NORD-EST
   
 if ($Solar_Azimuth_Angle_deg > '44.9')
   {$Solar_Cardinal_point = 3;}      //NORD-EST
   
 if ($Solar_Azimuth_Angle_deg > '67.4')
   {$Solar_Cardinal_point = 4;}      //EST-NORD-EST
   
 if ($Solar_Azimuth_Angle_deg > 90)
   {$Solar_Cardinal_point = 5;}      //EST
   
 if ($Solar_Azimuth_Angle_deg > '112.5')
   {$Solar_Cardinal_point = 6;}      //EST-SUD-EST
   
 if ($Solar_Azimuth_Angle_deg > '134.9')
   {$Solar_Cardinal_point = 7;}      //SUD-EST
   
 if ($Solar_Azimuth_Angle_deg > '157.4')
   {$Solar_Cardinal_point = 8;}      //SUD-SUD-EST
   
 if ($Solar_Azimuth_Angle_deg > '179.9')
   {$Solar_Cardinal_point = 9;}      //SUD
   
 if ($Solar_Azimuth_Angle_deg > '202.4')
   {$Solar_Cardinal_point = 10;}      //SUD-SUD-OUEST
   
 if ($Solar_Azimuth_Angle_deg > '224.9')
   {$Solar_Cardinal_point = 11;}      //SUD-OUEST
   
 if ($Solar_Azimuth_Angle_deg > '247.4')
   {$Solar_Cardinal_point = 12;}      //OUEST-SUD-OUEST
   
 if ($Solar_Azimuth_Angle_deg > '269.9')
   {$Solar_Cardinal_point = 13;}      //OUEST
   
 if ($Solar_Azimuth_Angle_deg > '292.4')
   {$Solar_Cardinal_point = 14;}      // OUEST-NORD-OUEST
   
 if ($Solar_Azimuth_Angle_deg > '314.9')
   {$Solar_Cardinal_point = 15;}      // NORD-OUEST
   
 if ($Solar_Azimuth_Angle_deg > '337.4')
   {$Solar_Cardinal_point = 16;}      //NORD-NORD-OUEST
   
 if ($Solar_Azimuth_Angle_deg > 360)
   {$Solar_Cardinal_point = 1;}      //NORD


$content_type = 'text/xml';
sdk_header($content_type);

echo "<Data>";
echo "<Parametres>";
echo "<Latitude>".$ma_latitude."</Latitude>";
echo "<Longitude>".$ma_longitude."</Longitude>";
echo "<jour_diff>".$jour_diff."</jour_diff>";
echo "<Date_1900>".$Date_1900."</Date_1900>";
echo "<Day_year>".$day_year."</Day_year>";
echo "<Heure_mk>".$heure_mk."</Heure_mk>";
echo "<Time_zone>".$time_zone."</Time_zone>";
echo "</Parametres>";

echo "<Soleil>";
echo "<Julian_Day>".$Julian_Day."</Julian_Day>";
echo "<Julian_Century>".$Julian_Century."</Julian_Century>";
echo "<Geom_Mean_Long_Sun_deg>".$Geom_Mean_Long_Sun_deg."</Geom_Mean_Long_Sun_deg>";
echo "<Geom_Mean_Anom_Sun_deg>".$Geom_Mean_Anom_Sun_deg."</Geom_Mean_Anom_Sun_deg>";
echo "<Sun_Eq_of_Ctr>".$Sun_Eq_of_Ctr."</Sun_Eq_of_Ctr>";
echo "<Sun_True_Long_deg>".$Sun_True_Long_deg."</Sun_True_Long_deg>";
echo "<Sun_True_Anom_deg>".$Sun_True_Anom_deg."</Sun_True_Anom_deg>";
echo "<Eccent_Earth_Orbit>".$Eccent_Earth_Orbit."</Eccent_Earth_Orbit>";
echo "<Sun_Rad_Vector_AUs>".$Sun_Rad_Vector_AUs."</Sun_Rad_Vector_AUs>";
echo "<Sun_App_Long_deg>".$Sun_App_Long_deg."</Sun_App_Long_deg>";
echo "<Mean_Obliq_Ecliptic_deg>".$Mean_Obliq_Ecliptic_deg."</Mean_Obliq_Ecliptic_deg>";
echo "<Obliq_Corr_deg>".$Obliq_Corr_deg."</Obliq_Corr_deg>";
echo "<SunRt_Ascen_deg>".$SunRt_Ascen_deg."</SunRt_Ascen_deg>";
echo "<Sun_Declin_deg>".$Sun_Declin_deg."</Sun_Declin_deg>";
echo "<y>".$y."</y>";
echo "<Eq_of_Time_minutes>".$Eq_of_Time_minutes."</Eq_of_Time_minutes>";
echo "<HA_Sunrise_deg_1>".$HA_Sunrise_deg."</HA_Sunrise_deg_1>";
echo "<Solar_Noon_LST>".$Solar_Noon_LST."</Solar_Noon_LST>";
echo "<Sunrise_Time_LST>".$Sunrise_Time_LST."</Sunrise_Time_LST>";
echo "<Sunset_Time_LST>".$Sunset_Time_LST."</Sunset_Time_LST>";
echo "<Sunlight_Duration_minutes>".$Sunlight_Duration_minutes."</Sunlight_Duration_minutes>";
echo "<True_Solar_Time_min>".$True_Solar_Time_min."</True_Solar_Time_min>";
echo "<Hour_Angle_deg>".$Hour_Angle_deg."</Hour_Angle_deg>";
echo "<Solar_Zenith_Angle_deg>".$Solar_Zenith_Angle_deg."</Solar_Zenith_Angle_deg>";
echo "<Solar_Elevation_Angle_deg>".$Solar_Elevation_Angle_deg."</Solar_Elevation_Angle_deg>";
echo "<Approx_Atmospheric_Refraction_deg>".$Approx_Atmospheric_Refraction_deg."</Approx_Atmospheric_Refraction_deg>";
echo "<Solar_Elevation_corrected_for_atm_refraction_deg>".$Solar_Elevation_corrected_for_atm_refraction_deg."</Solar_Elevation_corrected_for_atm_refraction_deg>";
echo "<Solar_Azimuth>".$Solar_Azimuth_Angle_deg_cw_from_N."</Solar_Azimuth>";
echo "<Solar_Azimuth_round>".$Solar_Azimuth_Angle_deg."</Solar_Azimuth_round>";
echo "<Solar_Cardinal_point>".$Solar_Cardinal_point."</Solar_Cardinal_point>";

echo "</Soleil>";
echo "</Data>";

?>
vva
 
Messages : 381
Inscription : 12 Juin 2013

Re: calcul position du soleil

Messagepar valrom » 31 Mars 2015 12:36

quelque un peut faire une capture d'écran de la page capteur et des pages valeurs ??

Bonne journée
valrom
 
Messages : 112
Inscription : 14 Juin 2013

Re: calcul position du soleil

Messagepar vva » 01 Avr 2015 14:43

Voici le capteur:

Sachant que tu n'est pas obliger d'utiliser [VAR1] si tu mets localhost à la place de l'@ip de ta box dans l'URL.
Pièces jointes
Capteur_.PNG
Capteur_.PNG (43.47 Kio) Consulté 20316 fois
vva
 
Messages : 381
Inscription : 12 Juin 2013

Re: calcul position du soleil

Messagepar picatchoume » 02 Avr 2015 10:03

merci ca fonctionne très bien, je viens d'installer la nouvelle version ;)

Reste plus qu'a attendre le soleil :lol:
picatchoume
 
Messages : 190
Inscription : 05 Mai 2012
Localisation : 22- Dinan

Re: calcul position du soleil

Messagepar valrom » 02 Avr 2015 15:46

Merci tout fonctionne, grâce à la capture d'écran j ai vu mon erreur

Merci bien !!!
valrom
 
Messages : 112
Inscription : 14 Juin 2013

Re: calcul position du soleil

Messagepar enr37 » 08 Avr 2015 13:14

Si ca peut aider ayant bossé qq annees dans le PV, la reference europeenne pour les installations est le site de pvgis.
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: calcul position du soleil

Messagepar Floman321 » 09 Avr 2015 07:10

fonctionne bien
Merci
Floman321
 
Messages : 174
Inscription : 30 Avr 2014

Re: calcul position du soleil

Messagepar enr37 » 10 Avr 2015 10:33

salut à tous,
@brunold me demande de faire les icones allant avec ce post et me parle de 16 positions alors que la rose en comporte 18. Mais pour avoir fait des années de voile et bossé dans le photovoltaique, il n'y a pour moi que 9 "positions" solaire (même s'il n'y en a reelement 180). Bref, pouvez vous m'expliquer ce screenshot ci dessus avec un soleil au nord par exemple ? :shock: mais peut etre suis vraiement rouillé !
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: calcul position du soleil

Messagepar vva » 10 Avr 2015 11:16

enr37 a écrit:salut à tous,
@brunold me demande de faire les icones allant avec ce post et me parle de 16 positions alors que la rose en comporte 18. Mais pour avoir fait des années de voile et bossé dans le photovoltaique, il n'y a pour moi que 9 "positions" solaire (même s'il n'y en a reelement 180). Bref, pouvez vous m'expliquer ce screenshot ci dessus avec un soleil au nord par exemple ? :shock: mais peut etre suis vraiement rouillé !

Salut enr37, il y a effectivement 9 points principaux mais on il y en a aussi des intermédiaires d'ou le 16.

http://fr.wikipedia.org/wiki/Point_cardinal

J'aurais pu me contenter des 9 mais bon ... :roll:
vva
 
Messages : 381
Inscription : 12 Juin 2013

Re: calcul position du soleil

Messagepar enr37 » 10 Avr 2015 11:59

bon j'explique alors :p
la rose des vents est comme son nom l'indique faites pour indiquer d'où proviennent les vents sur mer et on est d'accord, il peut arriver à 360° (même si rarement de l'Est en france :D ) stylisé par les 16 points cardinaux.
Le soleil, lui n'utilise que la partie basse de cette rose (soit 9 points) se lève a l'E et se couche à l'W avec une acmée a midi heure solaire, plein S soit, 180°
l'azimuth est, lui, calculé (pour le soleil) en fonction du S et non pas du nord. Cela n'enleve rien à la qualité du travail effectué ici, mais pour ma part, je vais m'attacher et faire les icones pour les 9 points Sud car ceux aux Nord ne servent a rien et que j'ai pas envie de bosser pour rien :lol: :lol:
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: calcul position du soleil

Messagepar vva » 10 Avr 2015 13:15

oui je comprends, de toute façon j'utilise uniquement les points à partir de Est-Nord-Est et jusqu'à Ouest-Nord-ouest.

Merci pour ce cours :D
vva
 
Messages : 381
Inscription : 12 Juin 2013

PrécédentSuivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 18 invité(s)