Rule ausführen während Tageslicht
Verfasst: 25. Jun 2020 22:08
Wie schon angedroht melde ich mich nochmal zurück mit der Steuerung meiner Solarpanelnachführung.
Natürlich soll das Panel nur während des Tageslichtes nachgeführt werden und bei Dunkelheit die kumulierte Anzahl an Schritten des Steppermotors
zurückbewegt werden zum Ausgangspunkt.
Problem: Ich bekomme die Tageslicht Zeitpunkte (Anfang und Ende) nicht übergeben. Fehlermeldung in Visual Studio : The value of the local variable SoAufj is not used
Der Teil mit Now.is after stammt noch aus dem ersten Versuch und kann hier wahrscheinlich ignoriert werden.
Irgendwie steh ich auf dem Schlauch
Natürlich soll das Panel nur während des Tageslichtes nachgeführt werden und bei Dunkelheit die kumulierte Anzahl an Schritten des Steppermotors
zurückbewegt werden zum Ausgangspunkt.
Problem: Ich bekomme die Tageslicht Zeitpunkte (Anfang und Ende) nicht übergeben. Fehlermeldung in Visual Studio : The value of the local variable SoAufj is not used
Der Teil mit Now.is after stammt noch aus dem ersten Versuch und kann hier wahrscheinlich ignoriert werden.
Irgendwie steh ich auf dem Schlauch

Code: Alles auswählen
//Test
var Timer tmoscha = null //timer für den Motorschalter
var String SoAufg
var String SoUntg
//var Number SoAufj = null //Sonnenaufgang in Jodatime
val DateTime SoUntj //Sonnenuntergang in Jodatime
var Number startAZ = 50 //Startazimut
var Number LastAZ = null //Letzter Azimutwert
var Number AZvar = null //Aktueller Azimutwert
var Number Steps = null //Schritte des Steppers
var Number StepsKum = null //Aufaddierte Schritte
var String httpcom = "" // Zu sendender String für HTTPRequest
var String httpSteps ="" // Steps als String
rule "Tageslaenge" // Sonnenaufgang und Untergang holen
when
Time cron "0 /2 5-23 * * ? *"
// Time is midnight
then
AstronomischeSonnendaten_Daylight_StartTime.getState
AstronomischeSonnendaten_Daylight_EndTime.getState
//SoAufg = AstronomischeSonnendaten_Daylight_StartTime.state.toString
//SoUntg = AstronomischeSonnendaten_Daylight_EndTime.state.toString
var SoAufj = new DateTime((AstronomischeSonnendaten_Daylight_StartTime.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
//logInfo("Tag", "Tagesbeginn = " +SoAufg)
//logInfo("Tag", "Tagesende = " +SoUntg)
//logInfo("Tag", "Tagesdauer = " +DaylightDuration.state)
end
rule "Panel drehen" //Während Tag Azimuth holen und Differenz zu letztem Azimut berechnen und Schritte für Stepper kalkulieren
when
Time cron "0 /30 5-23 * * ? *"
then
if (now.isAfter(Sonnenuntergang_Zeit) && now.isBefore(SoUnt )) {
LocalSun_Position_Azimuth.getState
AZvar = LocalSun_Position_Azimuth.state as Number
AZvar = Math::round(AZvar.floatValue())
Steps = (AZvar - LastAZ) / 1.8
Steps = Math::round(Steps.floatValue())
logInfo("Pumpe", "Letzte = " +LastAZ)
LastAZ = AZvar
StepsKum = StepsKum + Steps
logInfo("Pumpe", "aktuelle = " +AZvar)
logInfo("Pumpe", "Schritte = " +Steps )
logInfo("Pumpe", "Kumulierte Schritte = " +StepsKum )