Sunrise/Sunset
-
Hello,
I'm trying to get sunrise and sunset times for my local area into a data point. I know that there are plenty of websites that serve this data in various forms and there are probably various different ways to approach this.
I am just wondering if anyone has done anything like this before and what the recommended approach would be before I attempt it. I tried the forum search, but I didn't find any applicable results.
Any suggestions?
Thanks,
-
Hi fishfacs,
By far the easiest way would be to use the Http Retriever data source. After that it's a matter of picking a source for the information that is easy to regex the value out of.
For instance, https://www.timeanddate.com/sun/usa/denver seems like it would be an easy page, because it has pretty simple text for the value and it isn't being fetched by a script (i.e. wget gets that information, too, not just a browser):
<span class=four>Sunrise Today: </span><span class=three>7:06 am</span> <span class=four>Sunset Today: </span><span class=three>6:26 pm</span>
-
Here's an HTTP Retriever with sunrise and sunset points for the link in my last post:
{ "dataSources":[ { "xid":"DS_082d3c5d-adea-44b1-9076-332adfce9dfb", "name":"fishfacs!", "enabled":false, "type":"HTTP_RETRIEVER", "alarmLevels":{ "DATA_RETRIEVAL_FAILURE":"URGENT", "POLL_ABORTED":"URGENT", "SET_POINT_FAILURE":"URGENT", "PARSE_EXCEPTION":"URGENT" }, "purgeType":"YEARS", "updatePeriodType":"HOURS", "quantize":false, "retries":0, "setPointUrl":"", "timeoutSeconds":30, "updatePeriods":4, "url":"https:\/\/www.timeanddate.com\/sun\/usa\/denver", "editPermission":"", "purgeOverride":false, "purgePeriod":1 } ], "dataPoints":[ { "xid":"DP_2bc4f110-c5b2-4d8d-bf9c-c1c62e24cf78", "name":"Sunrise", "enabled":true, "loggingType":"ON_CHANGE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"INSTANT", "purgeType":"YEARS", "pointLocator":{ "dataType":"ALPHANUMERIC", "ignoreIfMissing":false, "setPointName":"", "settable":false, "timeFormat":"", "timeGroup":1, "timeRegex":"", "valueFormat":"", "valueGroup":1, "valueRegex":".*Sunrise Today:.*?(\\d?\\d:\\d\\d [ap]m).*" }, "eventDetectors":[ ], "plotType":"STEP", "rollup":"NONE", "unit":"", "templateXid":"Alphanumeric_Default", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"TABLE", "limit":10 }, "dataSourceXid":"DS_082d3c5d-adea-44b1-9076-332adfce9dfb", "defaultCacheSize":1, "deviceName":"fishfacs!", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":15, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"PLAIN", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "suffix":"" }, "tolerance":0.0 }, { "xid":"DP_edaa622a-8e7f-44b8-aaae-79d14206f0a0", "name":"Sunset", "enabled":true, "loggingType":"ON_CHANGE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"INSTANT", "purgeType":"YEARS", "pointLocator":{ "dataType":"ALPHANUMERIC", "ignoreIfMissing":false, "setPointName":"", "settable":false, "timeFormat":"", "timeGroup":1, "timeRegex":"", "valueFormat":"", "valueGroup":1, "valueRegex":".*Sunset Today:.*?(\\d?\\d:\\d\\d [ap]m).*" }, "eventDetectors":[ ], "plotType":"STEP", "rollup":"NONE", "unit":"", "templateXid":"Alphanumeric_Default", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"TABLE", "limit":10 }, "dataSourceXid":"DS_082d3c5d-adea-44b1-9076-332adfce9dfb", "defaultCacheSize":1, "deviceName":"fishfacs!", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":15, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"PLAIN", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "suffix":"" }, "tolerance":0.0 } ] }
-
I put the data point in exactly as above. Not as an import; just manually. I get the following error when I click the green Test Value checkbutton.
"java.lang.IllegalArgumentException: Illegal character in opaque part at index 6: https://www.timeanddate.com/sun/usa/denver"
My knowledge of regular expressions is not great. Any ideas on what I missed?
-
Did you get a whole stack trace?
I would guess something is malformed in how you set up the URL in the data source? Idk, the JSON I provided works and has example regex.
-
A JSON/XML API might be easier
e.g. Government (TSA) supplied API for sunset/sunrise that returns XML
https://www.dhs.gov/mytsa-api-documentation -
I figured it out. There was a typo in my URL. Thanks for this.