mit Hilfe dieses Threads (Robuster Sonnensensor):
viewtopic.php?t=26686
und dieses Threads zur Sonnenstandsberechnung, bzw. weiterführenden Infos auf der Webseite:
https://www.stall.biz/project/sonnensta ... sen-lampen
habe ich nun einen Selbstbausonnensensor sowie die sehr clevere sonnenstandsabhängige Rollosteuerung in Betrieb genommen. Soweit alles prima - Danke für die Vorarbeiten.
Ich habe nun leider noch folgende (Programm-)Probleme, die ich nicht in den Griff kriege und hier auf Hilfe hoffe:
1. Aus bestimmten Gründen möchte ich, die Rollos am Wochenende manuell steuern - die sonnenstandsabhängige Steuerung also aussetzen. Ich habe dies mit der Abfrage nach dem Wochentag (1-5) (aus diesem Zeitsteuerungsskript https://www.stall.biz/project/universel ... den-lampen) gelöst.
Allerdings passiert nun das folgende: am Montag um 00:01 Uhr fahren die Rollos (die um diese Uhrzeit eigentlich geschlossen sind) auf 50% (Sonnenschutzposition). Dies dadurch, dass offenbar die Variable "Sonnenschein" noch auf wahr steht, und ab 00:01h ja wieder ein Wochentag ist. Das zugrundeliegende Problem ist also offenbar, dass die Variable Sonnenschein nicht wieder auf falsch gesetzt wird.
2. Ähnlich gelagert, vermutlich gleiche Ursache: wenn die Sonne nicht mehr scheint, weil z.B. ein Gewitter aufzieht, sollen die Rollos eigentlich wieder hochfahren. Und? Na klar, sie fahren nicht hoch.
Also die grundsätzliche Berechnung des Mittelwertes und das setzen der Variable Sonnenschein funktioniert, nur eben wenn die Sonne nicht mehr scheint gibt's glaub ich Probleme.
Hier meine Programme und Skripte
Rollos_runter_bei_Sonnenschein:
Rollos_hoch_nach_Sonnenschein:
Variable Sonnenschein setzen:
Berechnung des Mittelwertes zur Temperatur (https://www.stall.biz/project/robuster- ... desyntax_1):
Code: Alles auswählen
!skript zur berechnung des mittelwertes der sonnentemperatur
real tau = 0.6; ! 1 = keine mittelung ; kleinere werte, umso stärker ist mittelung
real Sonne_Diff_Garten = dom.GetObject("BidCos-RF.NEQ0534145:3.TEMPERATURE").Value();
!WriteLine(Sonne_Diff_Garten);
real Sonne_Diff_Mittel = dom.GetObject("Sonne_Diff_Mittel").Value();
!WriteLine(Sonne_Diff_Mittel);
real Diff= Sonne_Diff_Garten - Sonne_Diff_Mittel;
Sonne_Diff_Mittel = Sonne_Diff_Mittel + (tau *Diff);
!WriteLine(Sonne_Diff_Mittel);
dom.GetObject("Sonne_Diff_Mittel").State(Sonne_Diff_Mittel );