node-red-contrib-dutch-weather

2.0.12 • Public • Published

node-red-contrib-dutch-weather

A combination of a solar position calculation (angle & elevation) and (Dutch) weather providers in order to, for example, automate blinds and screens based on sun position (or) expected rain.

NPM

Provides several nodes for receiving (Dutch) weather related events.

Node name Description
dutch-weather-rain-state Rain state based on external sources. Used are Buienradar and Buienalarm.
dutch-weather-meteoplaza Weather forecast based on external source. For this Meteoplaza is used.

Installation

Run the following command in your Node-RED user directory - typically ~/.node-red

$ npm install node-red-contrib-dutch-weather

Configuration

For all nodes, you'll need to create at least one configuration. Drag one of the exposed nodes to your flow and set it up just like all other config nodes. After that, you can use the event emitters in your own code.

Release 2.0.12

  • Made meteo-plaza even more resilient against failing requests.
  • Changed meteo-plaza response today.astro.dayLengthHrs to today.astro.dayLength to match the naming of the source.

Release 2.0.11

  • Made meteo-plaza a bit more resilient against failing requests.
  • Added 'random()' time to all requests to prevent caching.

Release 2.0.10

  • Ensured prediction field is present in rain-state even if the state remains thesame.

Release 2.0.7

  • Added 'lastUpdate' field.

Release 2.0.6

  • After some time the rain-node was not giving any output anymore; the time in between working and not varies from various minutes to hours. Previously the script required both Buienradar and Meteoplaza to respond with a valid response when asking for the current rain state; this is changed so that only 1 of the systems would need to provide accurate values.

Release 2.0.3

  • dutch-weather-sun-position (and) dutch-weather-solar-events removed: There is a much better node-red node you can use: node-red-contrib-sun-position
  • Automatic refresh removed: The javascript timers sometimes stopped working, which in the worst case led to rain being reported while it was already dry for days; since Node-red has timer nodes built in, i've removed the javascript timers from the code completely. In order to get updated data you have to send a message on the input of a node with payload { trigger: true } for it to update.

Release 2.0.0

  • Backwards compatible breaking change: The nodes have been renamed to prevent a conflict with the node-red-contrib-sun-position package.

Testing locally

Since version 1.3.1, the nodes which are available have been changed and/or emit different messages. A local test can be exected with the following commands:

$ node local-test.js

See below for sample messages since 2.0.x

Node dutch-weather-rain-state sample:

{
   "now":{
      "atTimeIso8601":"2020-06-19T15:30:00.000+02:00",
      "inMinutes":0,
      "state":"dry",
      "probability":100,
      "precipitation":{
         "buienRadar":0,
         "buienAlarm":0
      },
      "message":"It is dry."
   },
   "prediction":{
      "atTimeIso8601":"2020-06-19T16:30:00.000+02:00",
      "inMinutes":60,
      "state":"raining",
      "probability":100,
      "precipitation":{
         "buienRadar":5,
         "buienAlarm":3.2
      },
      "message":"..."
   }
}

Node dutch-weather-meteoplaza sample:

{
   "now":{
      "icon":"C001D",
      "temp":22,
      "tempFeelsLike":25,
      "sunProbability":54,
      "precipitation":0.1,
      "pressure":1015.9,
      "humidity":52,
      "cloudCoverage":68,
      "wind":{
         "direction":"WZW",
         "speed":3,
         "speedMs":4.1,
         "speedKmh":15
      }
   },
   "today":{
      "tempMin":16,
      "tempMax":23,
      "astro":{
         "currentTime":"2020-06-19T15:41:47+02:00",
         "sunRise":"2020-06-19T05:21:00+02:00",
         "sunSet":"2020-06-19T21:58:00+02:00",
         "dayLength":"16:37",
         "moonPhase":{
            "newMoon":"2020-06-21 08:42",
            "fullMoon":"2020-07-05 06:45",
            "firstQuarter":"2020-06-28 10:17",
            "lastQuarter":"2020-07-13 01:31"
         }
      },
      "dataPerHour":{
         "15":{
            "icon":"C001D",
            "temp":22,
            "tempFeelsLike":25,
            "sunProbability":54,
            "precipitation":0.1,
            "pressure":1015.9,
            "humidity":52,
            "cloudCoverage":68,
            "wind":{
               "direction":"WZW",
               "speed":3,
               "speedMs":4.1,
               "speedKmh":15
            }
         },
         "16":{
            "icon":"C001D",
            "temp":23,
            "tempFeelsLike":25,
            "sunProbability":54,
            "precipitation":0.1,
            "pressure":1016,
            "humidity":51,
            "cloudCoverage":69,
            "wind":{
               "direction":"WZW",
               "speed":3,
               "speedMs":3.9,
               "speedKmh":14
            }
         },
         "17":{
            "icon":"A007D",
            "temp":23,
            "tempFeelsLike":25,
            "sunProbability":52,
            "precipitation":0,
            "pressure":1016.1,
            "humidity":50,
            "cloudCoverage":71,
            "wind":{
               "direction":"W",
               "speed":3,
               "speedMs":3.8,
               "speedKmh":14
            }
         },
         "18":{
            "icon":"C001D",
            "temp":22,
            "tempFeelsLike":25,
            "sunProbability":53,
            "precipitation":0.1,
            "pressure":1016.2,
            "humidity":51,
            "cloudCoverage":64,
            "wind":{
               "direction":"WNW",
               "speed":3,
               "speedMs":4.2,
               "speedKmh":15
            }
         },
         "19":{
            "icon":"C002D",
            "temp":23,
            "tempFeelsLike":25,
            "sunProbability":51,
            "precipitation":0.4,
            "pressure":1016.4,
            "humidity":54,
            "cloudCoverage":63,
            "wind":{
               "direction":"WNW",
               "speed":3,
               "speedMs":4.7,
               "speedKmh":17
            }
         },
         "20":{
            "icon":"A006D",
            "temp":20,
            "tempFeelsLike":20,
            "sunProbability":54,
            "precipitation":0,
            "pressure":1016.9,
            "humidity":63,
            "cloudCoverage":51,
            "wind":{
               "direction":"WNW",
               "speed":3,
               "speedMs":4.3,
               "speedKmh":15
            }
         },
         "21":{
            "icon":"A003D",
            "temp":18,
            "tempFeelsLike":18,
            "sunProbability":56,
            "precipitation":0,
            "pressure":1017.4,
            "humidity":73,
            "cloudCoverage":45,
            "wind":{
               "direction":"WNW",
               "speed":2,
               "speedMs":3.3,
               "speedKmh":12
            }
         },
         "22":{
            "icon":"A003N",
            "temp":17,
            "tempFeelsLike":17,
            "sunProbability":0,
            "precipitation":0,
            "pressure":1018.2,
            "humidity":81,
            "cloudCoverage":39,
            "wind":{
               "direction":"WNW",
               "speed":2,
               "speedMs":2.3,
               "speedKmh":8
            }
         },
         "23":{
            "icon":"A002N",
            "temp":16,
            "tempFeelsLike":16,
            "sunProbability":0,
            "precipitation":0,
            "pressure":1018.6,
            "humidity":87,
            "cloudCoverage":33,
            "wind":{
               "direction":"W",
               "speed":2,
               "speedMs":1.6,
               "speedKmh":6
            }
         }
      }
   }
}

Package Sidebar

Install

npm i node-red-contrib-dutch-weather

Weekly Downloads

8

Version

2.0.12

License

Apache-2.0

Unpacked Size

37.6 kB

Total Files

11

Last publish

Collaborators

  • gvdhoven