HM-Skript zur einfachen Sonnenstandsberechnung Script
Moderator: Co-Administratoren
- Jailbraik
- Beiträge: 429
- Registriert: 26.07.2013, 06:53
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 2 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Hallo, ich soche auch eien Lösung. Das es leider keinen lcihtsensor für die Himematic gibt.
Hat jemand erfahrungen mit einen Bewegungsmelder als Lichtsensor.....?
Oder nützliche Beiträgeß
Danke Euch
Hat jemand erfahrungen mit einen Bewegungsmelder als Lichtsensor.....?
Oder nützliche Beiträgeß
Danke Euch
@
Raspberry 4 / Home Assistant / 80 Aktoren /
Raspberry 4 / Home Assistant / 80 Aktoren /
- Spaßbremse
- Beiträge: 368
- Registriert: 16.10.2013, 12:59
- Wohnort: hoch im Norden
- Danksagung erhalten: 1 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Suche mal hier im Forum nach "Sonnensensor".
Schöne Grüße von Norman
CCU2 mit 55 Geräten, überwiegend "wired"
CCU2 mit 55 Geräten, überwiegend "wired"
- Jailbraik
- Beiträge: 429
- Registriert: 26.07.2013, 06:53
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 2 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Jailbraik hat geschrieben:DankeSpaßbremse hat geschrieben:Suche mal hier im Forum nach "Sonnensensor".
Weiss jemand wo ich diesen Beitrag finden kann? :
https://www.youtube.com/watch?v=6acWQYkBL9Q
Das wäre schon das was ich suche....
Danke Euch
@
Raspberry 4 / Home Assistant / 80 Aktoren /
Raspberry 4 / Home Assistant / 80 Aktoren /
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Schau dir mal die rundum Lösung von funkleuchturm an, ich glauben in diesen Thread sollte in den ersten Beiträgen sogar der Link sein. Eine Temperatur basierende Variante ist eigentlich die bessere Wahl.
Die meisten Probleme entstehen bei ihrer Lösung.
Leonardo da Vinci
Leonardo da Vinci
- Spaßbremse
- Beiträge: 368
- Registriert: 16.10.2013, 12:59
- Wohnort: hoch im Norden
- Danksagung erhalten: 1 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Schöne Grüße von Norman
CCU2 mit 55 Geräten, überwiegend "wired"
CCU2 mit 55 Geräten, überwiegend "wired"
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Hallo Jailbraik,Jailbraik hat geschrieben:Hallo, ich soche auch eien Lösung. Das es leider keinen lcihtsensor für die Himematic gibt.
Hat jemand erfahrungen mit einen Bewegungsmelder als Lichtsensor.....?
Oder nützliche Beiträgeß
Danke Euch
ich benutze den Aussenbewegungsmelder als Lichtsensor für meine Rolladensteuerung und ich bin damit sehr zufrieden.
Ab einem bestimmten Schwellwert bzgl. der Helligkeit fahren die Rolläden rauf bzw. runter. Einstellbar sind Werte von 0 bis 255 (255 = direkte Sonneneinstrahlung). Die übertragenen Helligkeitswerte werden als Minimum der letzten 8 Werte (einstellbar von 1 bis (Messung alle 6 Minuten) genutzt.
Gruß
Steve
- joni-blue
- Beiträge: 1171
- Registriert: 04.01.2012, 12:20
- System: CCU
- Wohnort: Hannover
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 1 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
sehr praktisch diese Seite zum rumprobieren http://www.sonnenverlauf.de
Reboot tut gut ! ! !
- Jailbraik
- Beiträge: 429
- Registriert: 26.07.2013, 06:53
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 2 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
@
Raspberry 4 / Home Assistant / 80 Aktoren /
Raspberry 4 / Home Assistant / 80 Aktoren /
- joni-blue
- Beiträge: 1171
- Registriert: 04.01.2012, 12:20
- System: CCU
- Wohnort: Hannover
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 1 Mal
Re: HM-Skript zur einfachen Sonnenstandsberechnung Script
Hi, wenn ich dein script in der CCU 2 nutze und auf Fehler prüfen klicke kommt
ich nutze das script hier von dir
es füllt die systemvariablen nur wenn ich auf script testen gehe und es da ausführe!
wo liegt mein Fehler?
Code: Alles auswählen
Error 1 at row 13 col 30 near ^ + 720 - 0.5 *(tagesbeginn_min +tagesende_min);
if (sonnenzeit > 1440) {sonnenze
Parse following code failed:
!berechg sonne_elevation, sonne_azimut; stand 14.03.2014
!Verfasser: funkleuchtturm
real phi = system.Latitude(); !Breitengrad holen
phi = 0.017453292 * phi; !umwandeln in bogenmass
!####### sin_phi und cos_phi mit taylorreihe berechnen
real temp = phi * phi;
real sin_phi =phi * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); !sinus-naeherung
real cos_phi = (temp *temp *0.0416667) + 1.0 - (temp * 0.5); !cosinus-naeherung
!### berechnung sonnenzeit, alle zeiten in minuten ########
integer zeit_min = system.Date("%M").ToInteger() + 60*system.Date("%H").ToInteger();
integer tagesbeginn_min = system.SunriseTime("%M").ToInteger() + 60*system.SunriseTime("%H").ToInteger();
integer tagesende_min = system.SunsetTime("%M").ToInteger() + 60* system.SunsetTime("%H").ToInteger();
integer sonnenzeit =zeit_min + 720 - 0.5 *(tagesbeginn_min +tagesende_min);
if (sonnenzeit > 1440) {sonnenzeit = sonnenzeit -1440;}
if (sonnenzeit < 1) {sonnenzeit = 1440 + sonnenzeit;}
boolean nachmittag =false;
if (sonnenzeit > 720) {sonnenzeit =sonnenzeit - 720; nachmittag = true; }
else {sonnenzeit =720 -sonnenzeit;}
!##### berechnung sin_tau und cos_tau ############
real tau = 0.00436332313 * sonnenzeit; ! 15/60 * pi /180 * sonnenzeit [0 < tau < pi ]
if (tau < 1.570796327)
{temp = tau * tau;
real sin_tau =tau * ((temp * temp * 0.0083334) +1.0 - (temp *0.1666667));
tau= 1.570796327 - tau;
temp = tau * tau;
real cos_tau =tau * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));}
else
{real tau1 =3.141592654 - tau;
temp = tau1 * tau1;
real sin_tau =tau1 * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));
tau = tau - 1.570796327;
temp = tau * tau;
real cos_tau = (tau) *(-1.0)* ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));}
!##### berechnung delta #######################
integer tageszahl = system.Date("%j").ToInteger();
tageszahl = tageszahl +10;
if (tageszahl > 365) {tageszahl = tageszahl - 365;}
if (tageszahl < 92) {real tag = 0.0172142 *tageszahl;temp = tag * tag;
real delta = (-0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
if ((tageszahl >91) && (tageszahl < 184)) {tageszahl = 183 - tageszahl; real tag = 0.0172142 *tageszahl;
temp = tag * tag; real delta = (0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
if ((tageszahl >183) && (tageszahl < 275)) {tageszahl = tageszahl - 183; real tag = 0.0172142 *tageszahl;
temp = tag * tag; real delta = (0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
if ((tageszahl >274) && (tageszahl < 366)) {tageszahl = 365 - tageszahl; real tag = 0.0172142 *tageszahl;
temp = tag * tag; real delta = (-0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
!##### berechnung sin_delta, cos_delta #######################
temp = delta * delta;
real sin_delta =delta * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); !sinus-naeherung
real cos_delta = (temp *temp *0.0416667) + 1.0 - (temp * 0.5); !cosinus-naeherung
!##### berechnung tan_delta mit stueckweiser linearisierung des tan #######################
boolean vvorzeichen = true;
if (delta< 0.0) {vvorzeichen = false; delta = (-1.0) *delta;}
real tan_delta = 1.0233 * delta;
if (delta >=0.2618) {tan_delta = (1.1822*delta) - 0.0416;}
if (vvorzeichen == false) {tan_delta = (-1.0) * tan_delta;}
!##### berechnung sin_elevation und tan_azimut #######################
real sin_elevation = (sin_phi * sin_delta) +( cos_phi * cos_delta * cos_tau);
temp = sin_elevation * sin_elevation;
real sonne_elevation = sin_elevation * (1.0 + (0.1666667 * temp) + (0.075 * temp * temp));
sonne_elevation = 57.29577951 * sonne_elevation;
real nenner = (sin_phi*cos_tau) - (cos_phi * tan_delta);
if (nenner < 0.0) {boolean plus180 = true;}
real tan_azimut = sin_tau / nenner;
!##### berechnung sonne_azimut mit stueckweiser linearisierung des arctan ############
boolean vorzeichen = true;
if (tan_azimut < 0.0) {vorzeichen = false; tan_azimut = (-1.0)*tan_azimut;}
real sonne_azimut = 0.97723 * tan_azimut;
if ((tan_azimut >=0.2679)&&(tan_azimut < 0.5774)) {sonne_azimut = (0.84588* tan_azimut) + 0.035189;}
if ((tan_azimut >= 0.5774)&&(tan_azimut < 1.0)) {sonne_azimut = (0.6195* tan_azimut) + 0.1659;}
if ((tan_azimut >= 1.0)&&(tan_azimut < 1.3032)) {sonne_azimut = (0.43173* tan_azimut) + 0.3537;}
if ((tan_azimut >= 1.3032)&&(tan_azimut < 1.7321)) {sonne_azimut = (0.3052* tan_azimut) + 0.51856;}
if ((tan_azimut >= 1.7321)&&(tan_azimut < 2.4142)) {sonne_azimut = (0.1919* tan_azimut) + 0.7148;}
if ((tan_azimut >= 2.4142)&&(tan_azimut < 2.9459)) {sonne_azimut = (0.123* tan_azimut) + 0.88115;}
if ((tan_azimut >= 2.9459)&&(tan_azimut < 3.7321)) {sonne_azimut = (0.083312* tan_azimut) + 0.9981;}
if ((tan_azimut >= 3.7321)&&(tan_azimut < 5.0)) {sonne_azimut = (0.050792* tan_azimut) + 1.1194;}
if ((tan_azimut >= 5.0)&&(tan_azimut <7.0)) {sonne_azimut = (0.02775* tan_azimut) + 1.23465;}
if ((tan_azimut >= 7.0)&&(tan_azimut <12.0)) {sonne_azimut = (0.01175117* tan_azimut) + 1.346641;}
if ((tan_azimut >= 12.0)&&(tan_azimut <20.0)) {sonne_azimut = (0.004147854* tan_azimut) + 1.437881;}
if ((tan_azimut >= 20.0)&&(tan_azimut <50.0)) {sonne_azimut = (0.0009987* tan_azimut) + 1.5008639;}
if (tan_azimut >= 50.0) {sonne_azimut = (0.000099983* tan_azimut) + 1.54579974;}
if (sonne_azimut> 1.5707963278) {sonne_azimut = 1.5707963278;}
if (vorzeichen == false) {sonne_azimut = (-1.0) * sonne_azimut;}
sonne_azimut = 57.29577951 * sonne_azimut;
if (plus180 == true) {sonne_azimut = sonne_azimut + 180.0;}
!##### tageszeitliche korrektur und werte auf systemvariablen speichern ######
if (nachmittag == false)
{sonne_azimut = 180.0 - sonne_azimut; sonnenzeit = 720 - sonnenzeit;}
else
{sonne_azimut = sonne_azimut + 180.0;sonnenzeit = 720 + sonnenzeit;}
sonne_azimut = 0.1 *((sonne_azimut*10.0) .ToInteger());
sonne_elevation = 0.1 *((sonne_elevation*10.0) .ToInteger());
dom.GetObject("sonne_elevation").State(sonne_elevation);
dom.GetObject("sonne_azimut").State(sonne_azimut);
Code: Alles auswählen
!berechg sonne_elevation, sonne_azimut; stand 14.03.2014
!Verfasser: funkleuchtturm
real phi = system.Latitude(); !Breitengrad holen
phi = 0.017453292 * phi; !umwandeln in bogenmass
!####### sin_phi und cos_phi mit taylorreihe berechnen
real temp = phi * phi;
real sin_phi =phi * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); !sinus-naeherung
real cos_phi = (temp *temp *0.0416667) + 1.0 - (temp * 0.5); !cosinus-naeherung
!### berechnung sonnenzeit, alle zeiten in minuten ########
integer zeit_min = system.Date("%M").ToInteger() + 60*system.Date("%H").ToInteger();
integer tagesbeginn_min = system.SunriseTime("%M").ToInteger() + 60*system.SunriseTime("%H").ToInteger();
integer tagesende_min = system.SunsetTime("%M").ToInteger() + 60* system.SunsetTime("%H").ToInteger();
integer sonnenzeit =zeit_min + 720 - 0.5 *(tagesbeginn_min +tagesende_min);
if (sonnenzeit > 1440) {sonnenzeit = sonnenzeit -1440;}
if (sonnenzeit < 1) {sonnenzeit = 1440 + sonnenzeit;}
boolean nachmittag =false;
if (sonnenzeit > 720) {sonnenzeit =sonnenzeit - 720; nachmittag = true; }
else {sonnenzeit =720 -sonnenzeit;}
!##### berechnung sin_tau und cos_tau ############
real tau = 0.00436332313 * sonnenzeit; ! 15/60 * pi /180 * sonnenzeit [0 < tau < pi ]
if (tau < 1.570796327)
{temp = tau * tau;
real sin_tau =tau * ((temp * temp * 0.0083334) +1.0 - (temp *0.1666667));
tau= 1.570796327 - tau;
temp = tau * tau;
real cos_tau =tau * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));}
else
{real tau1 =3.141592654 - tau;
temp = tau1 * tau1;
real sin_tau =tau1 * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));
tau = tau - 1.570796327;
temp = tau * tau;
real cos_tau = (tau) *(-1.0)* ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667));}
!##### berechnung delta #######################
integer tageszahl = system.Date("%j").ToInteger();
tageszahl = tageszahl +10;
if (tageszahl > 365) {tageszahl = tageszahl - 365;}
if (tageszahl < 92) {real tag = 0.0172142 *tageszahl;temp = tag * tag;
real delta = (-0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
if ((tageszahl >91) && (tageszahl < 184)) {tageszahl = 183 - tageszahl; real tag = 0.0172142 *tageszahl;
temp = tag * tag; real delta = (0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
if ((tageszahl >183) && (tageszahl < 275)) {tageszahl = tageszahl - 183; real tag = 0.0172142 *tageszahl;
temp = tag * tag; real delta = (0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
if ((tageszahl >274) && (tageszahl < 366)) {tageszahl = 365 - tageszahl; real tag = 0.0172142 *tageszahl;
temp = tag * tag; real delta = (-0.410152) *((temp *temp *0.041666) + 1.0 - (temp * 0.5));}
!##### berechnung sin_delta, cos_delta #######################
temp = delta * delta;
real sin_delta =delta * ((temp * temp * 0.0083334) +1.0 - (temp * 0.1666667)); !sinus-naeherung
real cos_delta = (temp *temp *0.0416667) + 1.0 - (temp * 0.5); !cosinus-naeherung
!##### berechnung tan_delta mit stueckweiser linearisierung des tan #######################
boolean vvorzeichen = true;
if (delta< 0.0) {vvorzeichen = false; delta = (-1.0) *delta;}
real tan_delta = 1.0233 * delta;
if (delta >=0.2618) {tan_delta = (1.1822*delta) - 0.0416;}
if (vvorzeichen == false) {tan_delta = (-1.0) * tan_delta;}
!##### berechnung sin_elevation und tan_azimut #######################
real sin_elevation = (sin_phi * sin_delta) +( cos_phi * cos_delta * cos_tau);
temp = sin_elevation * sin_elevation;
real sonne_elevation = sin_elevation * (1.0 + (0.1666667 * temp) + (0.075 * temp * temp));
sonne_elevation = 57.29577951 * sonne_elevation;
real nenner = (sin_phi*cos_tau) - (cos_phi * tan_delta);
if (nenner < 0.0) {boolean plus180 = true;}
real tan_azimut = sin_tau / nenner;
!##### berechnung sonne_azimut mit stueckweiser linearisierung des arctan ############
boolean vorzeichen = true;
if (tan_azimut < 0.0) {vorzeichen = false; tan_azimut = (-1.0)*tan_azimut;}
real sonne_azimut = 0.97723 * tan_azimut;
if ((tan_azimut >=0.2679)&&(tan_azimut < 0.5774)) {sonne_azimut = (0.84588* tan_azimut) + 0.035189;}
if ((tan_azimut >= 0.5774)&&(tan_azimut < 1.0)) {sonne_azimut = (0.6195* tan_azimut) + 0.1659;}
if ((tan_azimut >= 1.0)&&(tan_azimut < 1.3032)) {sonne_azimut = (0.43173* tan_azimut) + 0.3537;}
if ((tan_azimut >= 1.3032)&&(tan_azimut < 1.7321)) {sonne_azimut = (0.3052* tan_azimut) + 0.51856;}
if ((tan_azimut >= 1.7321)&&(tan_azimut < 2.4142)) {sonne_azimut = (0.1919* tan_azimut) + 0.7148;}
if ((tan_azimut >= 2.4142)&&(tan_azimut < 2.9459)) {sonne_azimut = (0.123* tan_azimut) + 0.88115;}
if ((tan_azimut >= 2.9459)&&(tan_azimut < 3.7321)) {sonne_azimut = (0.083312* tan_azimut) + 0.9981;}
if ((tan_azimut >= 3.7321)&&(tan_azimut < 5.0)) {sonne_azimut = (0.050792* tan_azimut) + 1.1194;}
if ((tan_azimut >= 5.0)&&(tan_azimut <7.0)) {sonne_azimut = (0.02775* tan_azimut) + 1.23465;}
if ((tan_azimut >= 7.0)&&(tan_azimut <12.0)) {sonne_azimut = (0.01175117* tan_azimut) + 1.346641;}
if ((tan_azimut >= 12.0)&&(tan_azimut <20.0)) {sonne_azimut = (0.004147854* tan_azimut) + 1.437881;}
if ((tan_azimut >= 20.0)&&(tan_azimut <50.0)) {sonne_azimut = (0.0009987* tan_azimut) + 1.5008639;}
if (tan_azimut >= 50.0) {sonne_azimut = (0.000099983* tan_azimut) + 1.54579974;}
if (sonne_azimut> 1.5707963278) {sonne_azimut = 1.5707963278;}
if (vorzeichen == false) {sonne_azimut = (-1.0) * sonne_azimut;}
sonne_azimut = 57.29577951 * sonne_azimut;
if (plus180 == true) {sonne_azimut = sonne_azimut + 180.0;}
!##### tageszeitliche korrektur und werte auf systemvariablen speichern ######
if (nachmittag == false)
{sonne_azimut = 180.0 - sonne_azimut; sonnenzeit = 720 - sonnenzeit;}
else
{sonne_azimut = sonne_azimut + 180.0;sonnenzeit = 720 + sonnenzeit;}
sonne_azimut = 0.1 *((sonne_azimut*10.0) .ToInteger());
sonne_elevation = 0.1 *((sonne_elevation*10.0) .ToInteger());
dom.GetObject("sonne_elevation").State(sonne_elevation);
dom.GetObject("sonne_azimut").State(sonne_azimut);
wo liegt mein Fehler?
Reboot tut gut ! ! !