Letztes Update 2021/04/26 00:09
Die Astro-Bindung wird zur Berechnung verwendet von:
Diese Bindung unterstützt zwei Dinge: Sonne und Mond
Keine verbindliche Konfiguration erforderlich.
Alle Things erfordern den Parameter geolocation
(als <latitude>,<longitude>[,<altitude in m>]
), für den die Berechnung durchgeführt wird. Das Höhensegment (altitude) ist optional und schärft die Ergebnisse der Strahlungsgruppe. Optional kann ein Aktualisierungsintervall (in Sekunden) definiert werden, um auch Positionsdaten wie Azimut und Höhe zu berechnen.
Die Jahreszeitberechnung kann von einer äquinoktischen1) Berechnung auf eine meteorologische Berechnung umgestellt werden (beginnend am ersten Tag des jeweiligen Monats). Dies erfolgt, indem useMeteorologicalSeason im erweiterten Sonnenuntergang auf true gesetzt wird.
sun
rise, set, noon, night, morningNight, astroDawn, nauticDawn, civilDawn, astroDusk, nauticDusk, civilDusk, eveningNight, daylight
start, end
(DateTime)duration
(Number:Time)position
azimuth, elevation
(Number:Angle)shadeLength
(Number)radiation
direct, diffuse, total
(Number:Intensity)zodiac
start, end
(DateTime)sign
(String), values: ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCES
season
spring, summer, autumn, winter
(DateTime)name,nextName
(String), values SPRING, SUMMER, AUTUMN, WINTER
timeLeft
(Number:Time)eclipse
total, partial, ring
(DateTime)totalElevation, partialElevation, ringElevation
(Number:Angle)phase
name
(String), values: SUN_RISE, ASTRO_DAWN, NAUTIC_DAWN, CIVIL_DAWN, CIVIL_DUSK, NAUTIC_DUSK, ASTRO_DUSK, SUN_SET, DAYLIGHT, NIGHT
moon
rise, set
start, end
(DateTime)phase
firstQuarter, thirdQuarter, full, new
(DateTime)age
(Number:Time)ageDegree
(Number:Angle)agePercent, illumination
(Number:Dimensionless)name
(String), values: NEW, WAXING_CRESCENT, FIRST_QUARTER, WAXING_GIBBOUS, FULL, WANING_GIBBOUS, THIRD_QUARTER, WANING_CRESCENT
eclipse
total, partial
(DateTime)totalElevation, partialElevation
(Number:Angle)distance
date
(DateTime)distance
(Number:Length)perigee
date
(DateTime),distance
(Number:Length)apogee
date
(DateTime)distance
(Number:Length)zodiac
sign
(String), values: ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, SCORPIO, SAGITTARIUS, CAPRICORN, AQUARIUS, PISCES
position
azimuth, elevation
(Number:Angle)START, END
TOTAL, PARTIAL, RING
rise
set
END
phase
FIRST_QUARTER, THIRD_QUARTER, FULL, NEW
eclipse
TOTAL, PARTIAL
perigee
PERIGEE
apogee
APOGEE
Offsets: Für jede Ereignisgruppe können Sie optional einen offset
in Minuten konfigurieren. Der offset
muss in den Kanaleigenschaften für das entsprechende Objekt konfiguriert werden.
Der minimal zulässige Versatz (offset
) beträgt -1440 und der maximal zulässige Versatz beträgt 1440.
Früheste/Neueste: Für jeden Triggerkanal und start
, end
Tageszeitwert können Sie optional die früheste und späteste Uhrzeit des Tages konfigurieren.
z.B.: sun#set earliest=18:00, latest=20:00
Der Sonnenuntergang ist 17:40 Uhr, aber frühestens
18:00 Uhr, sodass der Wert für Ereignis (event) / Datum / Uhrzeit auf 18:00 Uhr verschoben wird.
oder
Der Sonnenuntergang ist 22:10 Uhr, der letzte
ist jedoch auf 20:00 Uhr eingestellt, sodass der Wert für Ereignis (event) / Datum / Uhrzeit um 20:00 Uhr verschoben wird.
Things:
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] astro:moon:home [ geolocation="52.5200066,13.4049540", interval=60 ]
oder optional mit einem Ereignisversatz (event offset)
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] { Channels: Type rangeEvent : rise#event [ offset=-30 ] } astro:moon:home [ geolocation="52.5200066,13.4049540", interval=60 ]
oder ein Datum/Uhrzeit-Offset
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] { Channels: Type start : rise#start [ offset=5 ] Type end : rise#end [ offset=5 ] }
oder ein Offset und spätestens
astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] { Channels: Type rangeEvent : rise#event [ offset=-10, latest="08:00" ] }
Items:
DateTime Sunrise_Time "Sunrise [%1$tH:%1$tM]" { channel="astro:sun:home:rise#start" } DateTime Sunset_Time "Sunset [%1$tH:%1$tM]" { channel="astro:sun:home:set#start" } Number:Angle Azimuth "Azimuth" { channel="astro:sun:home:position#azimuth" } Number:Angle Elevation "Elevation" { channel="astro:sun:home:position#elevation" } String MoonPhase "MoonPhase" { channel="astro:moon:home:phase#name" } Number:Length MoonDistance "MoonDistance [%.1f %unit%]" { channel="astro:moon:home:distance#distance" } Number:Intensity Total_Radiation "Radiation [%.2f %unit%]" { channel="astro:sun:home:radiation#total" } Number:Intensity Diffuse_Radiation "Diffuse Radiation [%.2f %unit%]" { channel="astro:sun:home:radiation#diffuse" }
Events:
rule "example trigger rule" when Channel 'astro:sun:home:rise#event' triggered START then ... end
Diese Bindung unterstützt mehrere Aktionen. In klassischen Regeln wird auf diese zugegriffen, wie im folgenden Beispiel gezeigt:
SunActions-Variable in Skripten abrufen:
val sunActions = getActions("astro","astro:sun:local") if(null === sunActions) { logInfo("actions", "sunActions not found, check thing ID") return } else { // do something with sunActions }
getEventTime(phaseName, date, moment)
Ruft Datum und Uhrzeit (ZonedDateTime) des angeforderten Phasennamens ab. Die Methode gilt nur für den Sun thing type.
phaseName
(String), values: SUN_RISE, ASTRO_DAWN, NAUTIC_DAWN, CIVIL_DAWN, CIVIL_DUSK, NAUTIC_DUSK, ASTRO_DUSK, SUN_SET, DAYLIGHT, NIGHT
. Verpflichtend.
date
(ZonedDateTime), Es wird nur der Datumsteil dieses Parameters berücksichtigt - standardmäßig now(), wenn null.
moment
(String), values: START, END
- standardmäßig START
wenn null.
Beispiel:
val sunEvent = "SUN_SET" val today = ZonedDateTime.now; val sunEventTime = sunActions.getEventTime(sunEvent,today,"START") logInfo("AstroActions","{} will happen at : {}", sunEvent, sunEventTime.toString)
getElevation(timeStamp)
Ruft die Höhe (QuantityType) der Sonne zum gewünschten Zeitpunkt ab. Die Methode gilt für Sonne und Mond.
timeStamp
(ZonedDateTime) - Standardeinstellung ist now(), wenn null.getAzimuth(timeStamp)
Ruft den Azimut (QuantityType) der Sonne zum gewünschten Zeitpunkt ab. Die Methode gilt für Sonne und Mond.
timeStamp
(ZonedDateTime) - defaulted to now() if null.Beispiel:
val azimuth = sunActions.getAzimuth(sunEventTime) val elevation = sunActions.getElevation(sunEventTime) logInfo("AstroActions", "{} will be positioned at elevation {} - azimuth {}",sunEvent, elevation.toString,azimuth.toString)
Machen Sie sich keine Sorgen, wenn zum Beispiel die „Astro-Morgendämmerung“ an Ihrem Standort nicht definiert ist. Der Grund könnte sein, dass Sie in einem nördlichen Land leben und es Sommer ist, so dass die Sonne morgens nicht 18 Grad unter dem Horizont steht. Einzelheiten finden Sie in diesem Wikipedia-Artikel. Das „Civil Dawn“ Ereignis ist oft die bessere Wahl.
Die Übersetzung steht unter der EPLv2 Lizenz.