Homematic Usertreffen 2019: Intelligente Rollladensteuerung

,
Print Friendly, PDF & Email

Wer den Vortrag als Video anschauen möchte , bitteschön: https://www.youtube.com/watch?v=kLuUA9yjvbQ

Und hier ist das Sonnenstands-Skript:

[codesyntax lang=“php“]

!berechnung sonne_elevation, sonne_azimut; stand 07.08.2016  verfasser: eugen stall,  stall.biz
!dieses skript alle 4min aufrufen 
real temp;
real sin_phi;
real cos_phi;
integer sonnenzeit;
boolean nachmittag;
real sin_tau;
real cos_tau;
real tau1;
real sin_delta;
real cos_delta;
boolean vorzeichen;
 
integer temp = system.Date("%M").ToInteger() + 60*system.Date("%H").ToInteger();
integer sonnenzeit =temp + 720 - 0.5 *((system.SunriseTime("%M").ToInteger() + 60*system.SunriseTime("%H").ToInteger()) +system.SunsetTime("%M").ToInteger() + 60* system.SunsetTime("%H").ToInteger());
if (sonnenzeit > 1440) {sonnenzeit = sonnenzeit -1440;}
if (sonnenzeit < 1) {sonnenzeit = 1440 + sonnenzeit;}
if (sonnenzeit > 720) {sonnenzeit =sonnenzeit - 720; nachmittag = true; }
   else {sonnenzeit =720 -sonnenzeit;nachmittag =false;}
temp = 0.00436332313 * sonnenzeit;   
if (temp < 1.570796327)
  {real sin_tau =temp * ((temp * temp * temp * temp *  0.0083334) +1.0 - (temp * temp *0.1666667));
   temp= 1.570796327 - temp;
   cos_tau =temp * ((temp * temp * temp * temp *  0.0083334) +1.0 - (temp * temp * 0.1666667));}                   
   else {real tau1  =3.141592654 - temp;
         sin_tau =tau1 * ((tau1 * tau1 * tau1 * tau1 *  0.0083334) +1.0 - (tau1 * tau1 * 0.1666667));
         temp = temp  -  1.570796327;
         real cos_tau = (temp) *(-1.0)* ((temp * temp * temp * temp *  0.0083334) +1.0 - (temp * temp * 0.1666667));}
temp = system.Date("%j").ToInteger() +10;
if (temp > 365) {temp = temp - 365;}
if (temp < 92) {real tag = 0.0172142 *temp;
                tau1 = (-0.410152) *((tag * tag *tag * tag *0.041666)  + 1.0 - (tag * tag * 0.5));}
if ((temp >91) && (temp < 184)) {temp = 183 - temp; real tag = 0.0172142 *temp;
                                 tau1 = (0.410152) *((tag * tag *tag * tag *0.041666)  + 1.0 - (tag * tag * 0.5));}
if ((temp >183) && (temp < 275)) {temp = temp - 183; real tag = 0.0172142 *temp;
                                  tau1 = (0.410152) *((tag * tag *tag * tag *0.041666)  + 1.0 - (tag * tag * 0.5));}
if ((temp >274) && (temp < 366)) {temp = 365 - temp; real tag = 0.0172142 *temp;
                                  tau1 = (-0.410152) *((tag * tag *tag * tag *0.041666)  + 1.0 - (tag * tag * 0.5));}
sin_delta =tau1 * ((tau1 * tau1 * tau1 * tau1 *  0.0083334) +1.0 - (tau1 * tau1 * 0.1666667)); !sinus-naeherung
cos_delta = (tau1 * tau1 * tau1 * tau1 *0.0416667)  + 1.0 - (tau1 * tau1 * 0.5); !cosinus-naeherung
if (tau1 < 0.0) {vorzeichen = false; tau1 = (-1.0) * tau1;} else {vorzeichen = true;}
temp = 0.017453292*system.Latitude(); 
sin_phi =(temp * ((temp * temp * temp * temp * 0.0083334) +1.0 - (temp * temp * 0.1666667)));
cos_phi = ((temp * temp *temp * temp *0.0416667)  + 1.0 - (temp * temp * 0.5));
temp = (sin_phi * sin_delta) +( cos_phi * cos_delta * cos_tau);
temp = temp * (1.0 + (0.1666667 * temp * temp) + (0.075 * temp * temp * temp * temp));     
temp = 57.29577951 * temp;
temp= 0.1 *((temp *10.0) .ToInteger());     
dom.GetObject("sonne_elevation").State(temp);
WriteLine(temp);
 
if (tau1 >=0.2618) {tau1 = (1.1822 * tau1) - 0.0416;}else {tau1 = 1.0233 * tau1;}
if (vorzeichen == false) {tau1 = (-1.0) * tau1;}
temp = (sin_phi*cos_tau) - (cos_phi * tau1);
if (temp < 0.0) {boolean plus180 = true;}  
temp = sin_tau / temp;
vorzeichen = true;
if (temp < 0.0) {vorzeichen = false; temp = (-1.0)*temp;}
tau1 = 0.97723 * temp;
if ((temp >= 0.2679)&&(temp < 0.5774)) {tau1 = (0.84588* temp) + 0.035189;}
if ((temp >= 0.5774)&&(temp < 1.0)) {tau1 = (0.6195* temp) + 0.1659;}
if ((temp >= 1.0)&&(temp < 1.3032)) {tau1 = (0.43173* temp) + 0.3537;}
if ((temp >= 1.3032)&&(temp < 1.7321))  {tau1 = (0.3052* temp) + 0.51856;}
if ((temp >= 1.7321)&&(temp < 2.4142)) {tau1 = (0.1919* temp) + 0.7148;}
if ((temp >= 2.4142)&&(temp < 2.9459)) {tau1 = (0.123* temp) + 0.88115;}
if ((temp >= 2.9459)&&(temp < 3.7321)) {tau1 = (0.083312* temp) + 0.9981;}
if ((temp >= 3.7321)&&(temp < 5.0))  {tau1 = (0.050792* temp) + 1.1194;}
if ((temp >= 5.0)&&(temp <7.0)) {tau1 = (0.02775* temp) + 1.23465;}
if ((temp >= 7.0)&&(temp <12.0)) {tau1 = (0.01175117*temp) + 1.346641;}
if ((temp >= 12.0)&&(temp <20.0)) {tau1 = (0.004147854* temp) + 1.437881;}
if ((temp >= 20.0)&&(temp <50.0)) {tau1 = (0.0009987*temp) + 1.5008639;}
if (temp >= 50.0) {tau1 = (0.000099983* temp) + 1.54579974;}
if (tau1> 1.5707963278) {tau1 = 1.5707963278;}
if (vorzeichen == false) {tau1 = (-1.0) * tau1;}
tau1 = 57.29577951 * tau1;
if (plus180 == true) {tau1 = tau1 + 180.0;}
if (nachmittag == false)
  {tau1 = 180.0 - tau1; sonnenzeit = 720 - sonnenzeit;}
   else {tau1 = tau1 + 180.0;sonnenzeit = 720 + sonnenzeit;}
tau1 = 0.1 *((tau1*10.0) .ToInteger());
dom.GetObject("sonne_azimut").State(tau1);
WriteLine(tau1);

[/codesyntax]

 

hier ist der Link zum Anklicken: https://www.stall.biz/project/robuster-sonnensensor-ganz-einfach

Hier ist der Link zum Anklicken:https://www.stall.biz/produkt/sonnensensor-glaskuppel

Hier ist der Link zum Anklicken: https://www.stall.biz/project/sonnensensor-fur-jalousien-und-rolladensteuerung

Hier ist der Link zum Anklicken: https://www.stall.biz/project/weatherman-die-perfekte-wetterstation-fuer-die-hausautomation

oder : https://www.stall.biz/project/rainyman-der-perfekte-sensor-fuer-regen-sonne-klima-bodenfeuchte-und-mehr

Skills

Posted on

7. April 2019