node-red-contrib-sun-position
Version:
NodeRED nodes to get sun and moon position
568 lines • 27.3 kB
JSON
{
"common": {
"label": {
"positionConfig": "configuration",
"infoText": "The configuration must be created and deployed for the settings page to work properly.",
"loadingInfo": "loading data...",
"binary": "binary",
"json": "json",
"jsonata": "json expr.",
"timestamp": "timestamp",
"suntimeObj": "{next suntime}",
"blank": "\"\"",
"nothing": "nothing",
"checkall": "checking all rules",
"stopfirst": "stopping after first match (if)",
"nextOccurrence": "next occurrence",
"on": "on",
"validForDays": "valid days",
"validForMonths": "valid months",
"validForDates": "validForDates (year will be ignored)",
"specialLimits": "limit",
"onlyEvenDays": "only even days",
"onlyOddDays": "only odd days",
"onlyEvenWeeks": "only even weeks",
"onlyOddWeeks": "only odd weeks",
"between": "between",
"and": "and",
"or": "or",
"enabled": "enabled",
"disabled": "disabled",
"cancel": "Cancel",
"ok": "Ok",
"randNum": "random till",
"randNumCachedDay": "random (daily) till",
"randNumCachedWeek": "random (weekly) till",
"inputPort": "input message",
"outputPort": "output message"
},
"types": {
"unlimited":"no limitation",
"undefined":"not used",
"delete":"delete",
"undefinedTimeFrom":"from midnight or previous rule",
"undefinedTimeUntil":"until midnight or the next rule",
"msgInput": "input message",
"datespecific":"timestamp enhanced",
"nodeId":"node name",
"nodeName":"node ID",
"nodePath":"node path",
"timeentered":"time (next)",
"dateentered":"date",
"cronexpr":"CRON expression",
"timepredefined":"fixed times",
"dayofmonth":"day of month",
"dayofweek":"day of week",
"timesun":"sun time",
"timesunnow": "next sun time",
"timesuncustom":"sun time (custom)",
"timesuncustomnamed":"sun time __value__",
"timemoon":"moon time",
"randomNumber":"random number (continuously new)",
"randmNumCachedDay":"random number (once a day)",
"randmNumCachedWeek":"random number (once a week)",
"numPercent":"number in percent %",
"suncalc":"sun calculation",
"suninsky":"sun in the sky (percent)",
"sunAzimuth":"Azimuth of sun",
"sunElevation":"Elevation of sun",
"numAzimuth":"Azimuth angle",
"numAltitude":"Elevation angle",
"numAnglePreDef":"custom angle from config node",
"SunTimeByAzimuth":"time by azimuth",
"SunTimeByElevationObj":"time by elevation (set or rise)",
"SunTimeByElevationNext":"next time by elevation (set or rise)",
"SunTimeByElevationRise":"next rise time by elevation",
"SunTimeByElevationSet":"next set time by elevation",
"suntime":"sun time",
"suntimes":"sun times",
"mooncalc":"moon calculation",
"moonPhase":"moon phase",
"moonPhaseCheck": "moon phase",
"levelfix":"Level",
"levelfree": "Level entered",
"levelND": "N/D - use default or sun control",
"PlTRes":"msg.payload if msg.topic contains",
"isDST":"is DST (true/false)",
"WeekOfYear":"week number",
"isWeekOfYearEven":"is week even (true/false)",
"DayOfYear":"day number",
"isDayOfYearEven":"is day even (true/false)",
"sunControlMode": "current sun control mode",
"sunControlOff": "off",
"sunControlRestrict": "restrict sunlight (🌞 Summer)",
"sunControlMaximize": "maximize sunlight (⛄ Winter)",
"sunControlMinimize": "minimize sunlight (🕶️)",
"payload":"payload",
"level":"blind level",
"levelInverse":"blind level inverse",
"slat":"blind slat",
"topic":"topic",
"ctrlObj":"status object",
"strPlaceholder": "string with placeholder"
},
"typeOptions": {
"moonRise": "moon rise",
"moonSet": "moon set",
"astronomicalDawn": "astronomical dawn",
"amateurDawn": "amateur dawn",
"nauticalDawn": "nautical dawn",
"blueHourDawnStart": "blue hour dawn start",
"civilDawn": "civil dawn",
"blueHourDawnEnd": "blue hour dawn end",
"goldenHourDawnStart": "golden hour dawn start",
"sunriseStart": "sunrise start",
"sunriseEnd": "sunrise end",
"goldenHourDawnEnd": "golden hour dawn end",
"solarNoon": "solar noon",
"goldenHourDuskStart": "golden hour dusk start",
"sunsetStart": "sunset start",
"sunsetEnd": "sunset end",
"goldenHourDuskEnd": "golden hour dusk end",
"blueHourDuskStart": "blue hour dusk start",
"civilDusk": "civil dusk",
"blueHourDuskEnd": "blue hour dusk end",
"nauticalDusk": "nautical dusk",
"amateurDusk": "amateur dusk",
"astronomicalDusk": "astronomical dusk",
"nadir": "nadir",
"fMon": "first Monday",
"fTue": "first Tuesday",
"fWed": "first Wednesday",
"fThu": "first Thursday",
"fFri": "first Friday",
"fSat": "first Saturday",
"fSun": "first Sunday",
"lMon": "last Monday",
"lTue": "last Tuesday",
"lWed": "last Wednesday",
"lThu": "last Thursday",
"lFri": "last Friday",
"lSat": "last Saturday",
"lSun": "last Sunday",
"newMoon" : "New Moon 🌚",
"waxingCrescentMoon": "Waxing Crescent 🌒",
"firstQuarterMoon": "First Quarter 🌓",
"waxingGibbousMoon": "Waxing Gibbous 🌔",
"fullMoon": "Full Moon 🌝",
"waningGibbousMoon": "Waning Gibbous 🌖",
"thirdQuarterMoon": "Third Quarter 🌗",
"waningCrescentMoon": "Waning Crescent 🌘",
"PlTRes":"msg.payload if msg.topic contains \"__topic__\""
},
"multiselectLbl": {
"operatorTypes": "include into compare"
},
"operatorsGroups": [
"Timestamp compare",
"other"
],
"operators": [
"== (equal)",
"!= (unequal)",
"> (greater)",
">= (greater or equal)",
"< (lesser)",
"<= (lesser or equal)",
"otherwise"
],
"operatorTypesGroups": [
"include into compare",
"special"
],
"operatorTypes": [
"Milliseconds",
"Seconds",
"Minutes",
"Hours",
"Day of Month",
"Month",
"Year",
"Day of Week"
],
"outputFormatsGroups": [
"Number",
"Text (string)",
"time (number) since emit",
"day of week",
"day of year",
"week of year",
"Text free"
],
"outputFormats": [
"UNIX timestamp (ms)",
"YYYYMMDDHHMMSS",
"YYYYMMDD.HHMMSS",
"UTC date and time",
"local date and time",
"local time",
"local date",
"ISO date and time UTC",
"ISO date and time local",
"milliseconds",
"seconds",
"minutes",
"hours",
"Day Name, e.g. Monday, 22.12.",
"Day in relative, e.g. Today, 22.12.",
"Week number",
"is week even",
"day number",
"is day even",
"as object",
"Other"
],
"outputTSFormatsGroups": [
"timestamp (number)",
"timestamp rounded (number)",
"Text"
],
"outputTSFormats": [
"milliseconds",
"seconds",
"minutes",
"hours",
"days",
"weeks",
"month",
"years",
"seconds rounded",
"minutes rounded",
"hours rounded",
"days rounded",
"weeks rounded",
"month rounded",
"years rounded",
"Other (free defined)"
],
"parseFormatsGroups": [
"Number",
"Text (string)",
"Other"
],
"parseFormats": [
"milliseconds - UNIX timestamp",
"ECMA-262 - simple JSON Date representation",
"ISO8601",
"try different text Formats, prefer day first like d/M/y",
"try different text Formats, prefer month first like M/d/y",
"YYYYMMDDHHMMSS",
"YYYYMMDD.HHMMSS",
"try different various Formats (object, number, text)",
"free text format definition"
],
"multiplierGroups": [
"Standard",
"Special"
],
"multiplier": [
"milliseconds",
"seconds",
"minutes",
"hours",
"days",
"weeks",
"month",
"year"
],
"comparatorGroups": [
"simple",
"medium",
"enhanced"
],
"comparator": [
"is true",
"is false",
"is null",
"is not null",
"is empty",
"is not empty",
"is true expr.",
"is false expr.",
"is not true expr.",
"is not false expr.",
"=",
"≠",
"<",
"≤",
">",
"≥",
"contain",
"containSome",
"containEvery"
],
"days": [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
],
"months": [
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December",
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
],
"dayDiffNames": [
"1 week ago",
"6 days ago",
"5 days ago",
"4 days ago",
"3 days ago",
"2 days ago",
"Yesterday",
"Today",
"Tomorrow",
"day after tomorrow",
"in 3 days",
"in 4 days",
"in 5 days",
"in 6 days"
],
"timeFormat": {
"default": "ddd MMM dd yyyy HH:mm:ss",
"shortDate": "m/d/yy",
"mediumDate": "MMM d, yyyy",
"longDate": "MMMM d, yyyy",
"fullDate": "dddd, MMMM d, yyyy",
"shortTime": "h:mm TT",
"mediumTime": "h:mm:ss TT",
"longTime": "h:mm:ss TT Z",
"isoDate": "yyyy-MM-dd",
"isoTime": "HH:mm:ss",
"isoTimeZ": "HH:mm:ssooo",
"isoDateTime": "yyyy-MM-dd'T'HH:mm:ssooo",
"isoUtcDateTime": "UTC:yyyy-MM-dd'T'HH:mm:ss'Z'"
},
"comparatorDescription" : {
"true": "is true",
"false": "is false",
"null": "is null",
"nnull": "is not null",
"empty": "is empty",
"nempty": "is not empty",
"true_expr": "is a true expression (true, on, 1)",
"false_expr": "is a false expression (false, off, 0)",
"ntrue_expr": "is not a true expression",
"nfalse_expr": "is not a false expression",
"equal": "equal",
"nequal": "not equal",
"lt": "less than",
"lte": "less than or equal",
"gt": "greater than",
"gte": "greater than or equal",
"contain": "contain",
"containSome": "containSome",
"containEvery": "containEvery"
},
"units": {
"ms": "ms",
"sec": "s",
"min": "min",
"hour": "h",
"day": "day",
"days": "days",
"week": "week",
"weeks": "weeks"
}
},
"ruleCtrl": {
"label": {
"outDated": "✎ Please edit this rule.",
"isInValid": "⚠️ Rule is invalid and needs to be changed!!",
"ruleIsOutdated": "⚠️ This rule is invalid and has to be adjusted because it no longer works!",
"ruleTimeMin_start": "from at the earliest (min)",
"ruleTimeMax_start": "from no later than (max)",
"ruleTimeMin_end": "until at the earliest (min)",
"ruleTimeMax_end": "until no later than (max)",
"ruleTimeMinOffset_start": "earliest (min) offset",
"ruleTimeMaxOffset_start": "latest (max) offset",
"ruleTimeMinOffset_end": "earliest (min) offset",
"ruleTimeMaxOffset_end": "latest (max) offset",
"ruleTimeLimit": "limited",
"ruleTimeLimitStart": "only from",
"ruleTimeLimitEnd": "to",
"ruleTimeMonths": "only on month",
"ruleTimeDays": "only on day",
"ruleTopic": "Topic",
"ruleSlat": "Slat",
"rulePayload": "Payload: ",
"rulePayloadND": "No Payload",
"ruleResetOverwrite": "overwrite should expire when rule gets active",
"ruleDescription": "Description",
"ruleBlindLevel": "blind position",
"ruleBlindLevelMinimum": "⭳ minimum blind position",
"ruleBlindLevelMaximum": "⭱️ maximum blind position",
"ruleOverwrite": "overwrite",
"ruleImportance":"Importance",
"ruleLevelAbs": "↕ absolute",
"ruleLevelMin": "⭳❗ minimum (oversteer)",
"ruleLevelMax": "⭱️❗ maximum (oversteer)",
"ruleSlatOversteer": "Slat (oversteer)",
"ruleTopicOversteer": "Topic (oversteer)",
"ruleTimeStart": "↧ from",
"ruleTimeEnd": "↥ until",
"ruleTimeOffset": "time offset",
"ruleOff": "✋ send nothing",
"ruleLevelND": "use default level (e.g. sun control)",
"ruleState": "enables or disables the rule",
"ruleExec":"order of evaluation",
"ruleExecAuto": "auto - rules only with '↧ from', last matching; all other first matching",
"ruleExecFirst": "⭳ first valid rule (evaluation first to last [1])",
"ruleExecLast": "⭱️ last valid rule (evaluation last to first [2], only if no first match)",
"ruleExecShort": [
"",
"¹⭳",
"²⭱️"
],
"ruleInValidElement":"invalid",
"ruleInValidText":"invalid Element",
"editRule": "edit the rule",
"duplicateRule": "duplicate the rule",
"btnAdd": "add",
"btnSort": "sort",
"btnClear": "clear",
"btnExport": "",
"btnImport": ""
},
"reasons": {
"overwriteNoExpire": "position is overwritten with importance __importance__",
"overwriteExpire": "position is overwritten with importance __importance__, will expire __dateISO__",
"default": "position is set to default position because no other rule matches",
"ruleTime": "position by time - rule __timeOp__ __timeLocal__ [__number__] __name__",
"ruleCond": "position by conditional rule __text__ [__number__] __name__",
"ruleTimeCond": "position by time rule __timeOp__ __timeLocal__ and condition __text__ [__number__] __name__",
"rule": "position by fixed rule [__number__] __name__",
"sunMinDelta": "change is less ad min delta",
"sunNotInWin": "Sun not in window",
"sunCtrl": "sun control",
"sunCtrlMin": "__org__ (__level__ is below minimum)",
"sunCtrlMax": "__org__ (__level__ is above maximum)",
"oversteer": "sun position oversteer __pos__",
"smooth": "Position is not changed to __pos__ because not enough time has passed since the last change (time smooth)",
"sunInWinMin": "Sun in window (Level is minimum)",
"sunInWinMax": "Sun in window (Level is maximum)",
"sunNotInWinMin": "Sun not in window (Level is minimum)",
"sunNotInWinMax": "Sun not in window (Level is maximum)",
"ruleMin": "__org__ (__level__ is below minimum) [__number__] __name__",
"ruleMax": "__org__ (__level__ is above maximum) [__number__] __name__",
"startDelay": "node in startup until __dateISO__"
},
"states": {
"overwriteNoExpire": "overwritten [imp=__importance__]",
"overwriteExpire": "overwritten [imp=__importance__], till __timeLocal__",
"default": "default",
"ruleTime": "__timeOp__ __timeLocal__ [__number__] __name__",
"ruleCond": "__textShort__ [__number__] __name__",
"ruleTimeCond": "__timeOp__ __timeLocal__ + cond __operatorText__ [__number__] __name__",
"rule": "by fixed rule [__number__] __name__",
"sunMinDelta": "min delta",
"sunNotInWin": "no sun in window",
"sunCtrl": "sun control",
"sunCtrlMin": "__org__ (min)",
"sunCtrlMax": "__org__ (max)",
"oversteer": "oversteer rule __pos__",
"smooth": "block change to __pos__",
"sunInWinMin": "Sun in window (min)",
"sunInWinMax": "Sun in window (max)",
"sunNotInWinMin": "Sun not in window (min)",
"sunNotInWinMax": "Sun not in window (max)",
"ruleMin": "__org__ [min rule __number__]",
"ruleMax": "__org__ [max rule __number__]",
"startDelay": "startup [__date__]"
},
"text": {
"blind": "blind settings",
"time": "Time control:Only rows will be evaluated, where property is <b>not used</b> or matches the selected value. <br><b>until</b>:The first matching line will used, where defined time is <b>not used</b> or greater than <b>now</b>.<br><b>from</b>:The last matching line will used, where defined time is <b>not used</b> or less than <b>now</b>.<br>",
"blindLevelDefault": "if no other settings matches (timerule, rule or sun-control) the following default settings for level, slat and the topic will be used. On sun light restriction this is the blind level wenn sun is not in the window.",
"payloadDefault": "if no rule matches the following payload will be used.",
"overwriteBlind": "manual overwrite of the blind position",
"overwriteTimer": "manual overwrite of the rule payload",
"sunControlNotActive": "Only rule control",
"sunControlMode": "Instead of the default blind position there can be restricted the extent to which direct sunlight may shine into the room.<br><br>The mode can be changed with an incomming message. Then this is the maximum possible mode which can selected. The value of the incomming message will be stored in the node's context and will persists a deploy.",
"windowAzimuth": "representing the orientation of the window to geographical north (in degrees) when the sun falls into the window (sun azimuth).",
"windowPos": "window settings, measurement from the floor to bottom and top of the window covered by the blind",
"oversteer": "allows to oversteer the position depending on the sun under defined condition such as elevation, weather (for example sky covered by clouds, lighting, ...) This can also be used to define a minimum or maximum elevation angle if mountains / buildings, etc. cover the window.",
"sunAdvanced": "advanced settigns for sun control",
"blindPosOffset": "If the window free space does not match the blind open and closed position, here can be defined an offset to this. Example for this is a wide window frame or a delay in opening the blind caused by open/close the slits between the slats.",
"sunControlMaximization": "<ul><li>If no rule or override matches<ul><li>If the sun is <em>not</em> in the window the blind will set to defined <strong>minimum position</strong>. (oversteer will be ignored)</li><li>If the sun is in the window</li><li>If any oversteer data are setup and oversteer conditions are fulfilled the blind will set to the defined oversteer blind position.</li><li>otherwise the blind level is set to defined <strong>maximum position</strong>.</li></ul></li></ul>",
"sunControlMinimization": "<ul><li>If no rule or override matches<ul><li>If the sun is <em>not</em> in the window the blind will set to defined <strong>maximum position</strong>. (oversteer will be ignored)</li><li>If the sun is in the window</li><li>If any oversteer data are setup and oversteer conditions are fulfilled the blind will set to the defined oversteer blind position.</li><li>otherwise the blind level is set to defined <strong>minimum position</strong>.</li></ul></li></ul>",
"sunControlRestriction": "If no rule or override matches, the node calculates the appropriate blind position to restrict the amount of direct sunlight entering the room.",
"sunCtrlLoF": "The limit to what extent direct sunlight is to be allowed into the room through the window, defined as a length on the floor.",
"sunCtrlRestrict": "Limit the frequency of changes by time and/or delta",
"ruleCondition": "Condition under which this rule is observed.<br/><small>There is no operator precedence! The combination of several conditions with <kbd>AND</kbd> or <kbd>OR</kbd> only means the respective condition to the preceding ones. The evaluation is canceled as soon as the expression results in true.</small>",
"enhanced":"advanced settings",
"startDelayTime":"With a value of 0, the node will only be activated with the next incoming message after a deploy or node red start and will not react to any events until then!"
}
},
"errors": {
"warning": "Warning: __message__",
"error": "Error: __message__",
"error-title": "internal error",
"error-init": "error '__message__', retry in __time__min",
"warn-init": "warning '__message__', retry in __time__min",
"config-missing": "Node not properly configured!! Configuration is missing or wrong (no valid configuration is selected)!",
"config-missing-state": "No valid configuration is selected!",
"config-error": "Error in used configuration node: __error__",
"unknownPropertyOperator": "error, the used property operator __propertyOp__=\"__propertyOpText__\" is unknown!",
"unknownCompareOperator": "error, the used compare operator \"__operator__\" is unknown! (\"__opTypeA__.__opValueA__\" compare to \"__opTypeB__.__opValueB__\")",
"notEvaluableProperty":"Error: could not evaluate __type__.__value__!",
"notEvaluablePropertyAdd":"Error \"__err__\", could not evaluate __type__.__value__",
"notEvaluablePropertyUsedValue": "could not evaluate __type__.__value__, using \"__usedValue__\"!",
"notEvaluableCustomAngle":"Custom Angle with name \"__value__\" is not defined in the configuration node!",
"invalidParameter":"Parameter \"__param__\" is invalid \"__type__\" (using __newValue__)",
"invalid-expr": "Invalid JSONata expression: __error__",
"getPropertyData": "error getting condition data: \"__message__\" skipping time",
"error-time": "Error get time: __message__",
"usingTempValue": "Could not evaluate __type__.__value__ and using stored value \"__usedValue__\"!",
"latitude-wrong":"Given Latitude __latitude__ is wrong. Using default from config!",
"longitude-wrong":"Given Longitude __longitude__ is wrong. Using default from config!"
},
"position-config": {
"label": {
"position": "Position",
"latitude": "Latitude",
"longitude": "Longitude",
"height":"(opt) observer height",
"angleType": "angle type",
"timeZoneOffset": "TZ Offset",
"name": "Name",
"property": "Property",
"minutes": "minutes",
"stateDateFormat": "State Date Format",
"stateTimeFormat": "State Time Format",
"OSStandard": "Operating system standard",
"timeZoneDST": "DST",
"noDST": "No DST",
"addDST1Hour": "DST add 1 Hour",
"addDST2Hour": "DST add 2 Hours",
"sunPositions": "Custom Sun Positions",
"predefAngles": "defined angles",
"angle": "Angle",
"riseName": "Rise Name",
"setName": "Set Name",
"angleDec": "Decimal degree"
},
"placeholder": {
"positionConfig":"select or create generic configuration",
"latitude": "51.025",
"longitude": "-1.4",
"height": "the observer height (in meters) relative to the horizon",
"timeZoneOffset": "0",
"name": "Name",
"stateDateFormat": "Format of the state output of a date only. If empty default toLocaleDateString will be used.",
"stateTimeFormat": "Format of the state output of a time only. If empty default toLocaleTimeString will be used."
},
"tips": {
"config": "Starting from Version 2.0 the coordinates are not saved as credentials due to privacy reasons. So they no longer part of the regular flow and will not part of the export! To update from a previous version save and re-deploy is necessary.",
"timeZoneOffset": "If for the timezone OS Standard is choosen the standard timezone including daylight saving switch is used. If is not chosen this setting, but a special time zone then no change of the daylightsaving is done! Formatchanges to time could taken time until it will get any effect.",
"sunPositions": "Here you can define your own elevation angles for sun positions.",
"predefAngles": "Here you can specify angle values in decimal degrees with a name, which can be used in different nodes. For example, an azimuth angle with the name N (for north) can be defined here. For the window position in the blind node, only the side of the window (N) is specified."
},
"errors": {
"latitude-missing": "Latitude is missing or wrong!",
"longitude-missing": "Longitude is missing or wrong!",
"coordinates-missing": "Coordinates Latitude and Longitude is missing in the configuration node!",
"height-wrong": "Observer height has wrong value in the configuration node! Must be a number or empty!",
"invalid-custom-suntime": "Invalid custom suntime __riseName__ or __setName__ given! Maybe duplicate to existing name.",
"custom-angles":"Invalid user-defined angle __name__! The name must not contain special characters!",
"custom-angles-duplicate":"Invalid custom angle __name__! Name already exists, duplicates are not allowed!"
}
}
}