@htag/node-red-contrib-hypertegrity-weather 0.3.2
Hypertegrity NodeRED Weather Nodes.
Hypertegrity Node-RED Weather Nodes
A collection of Node-RED nodes for retrieving weather forecasts, weather warnings, UV index and rain gauge data.
📝 Introduction
This package provides nodes for integrating weather data into your Node-RED flows. It currently includes connectors for the German Weather Service (DWD), OpenUV.io and Nivus rain gauges (DataKiosk API).
Included Nodes
| Node | Description |
|---|---|
hypertegrity-dwd-weather |
Fetches the MOSMIX point forecasts of the German Weather Service (DWD) as WeatherObserved (interpolated to “now”) and WeatherForecast entities |
hypertegrity-dwd-weatherwarnings |
Retrieves active weather warnings issued by the DWD for warn cells and coordinates |
openuv |
Queries the OpenUV.io API for the current UV index and forecast (palette module openuv-io) |
nivus-rainfall |
Reads Nivus rain gauges via the Nivus DataKiosk API and emits WeatherObserved (precipitation) and WaterObserved (collected height) entities |
Configuration by message
Every node accepts an optional msg.config object on its input. Its properties use the same names as the node settings in the editor and override them for this message only; the stored configuration stays unchanged. Existing message properties of earlier versions (for example msg.payload.lookAheadHours of hypertegrity-dwd-weather) keep working, msg.config takes precedence. Invalid values raise an error that can be handled with a Catch node. The help text of each node lists the supported properties.
msg.config = { mosmixStation: ["10865"], lookAheadHours: 12, lookAheadUnit: "hours" };
Security notes
The editor helper endpoints of all nodes require the <node type>.read permission when adminAuth is enabled. URLs entered in the editor are only fetched if they are http(s) URLs of public hosts. Internal hosts (for example a mirror in your network) can be allowed in settings.js:
hypertegrity: { allowedHosts: ["mirror.example.internal"] }
Stored API keys are only sent to the URL configured in the deployed node (for openuv the origin of the API base URL, default https://api.openuv.io; a message that points msg.config.baseUrl to another origin must carry its own msg.config.apiKey). If msg.config points a node to another host, the key must be given in msg.config as well. Requests that carry a key do not follow redirects to another host. Editor requests to hosts that are not trusted (not the built-in service, not in allowedHosts, not the URL of a deployed node) check the address again when connecting (protection against DNS rebinding); internal IPv4 addresses in IPv6 notation (e.g. ::ffff:7f00:1, 64:ff9b::a00:1) are recognised as internal.
Notes on upgrading to 0.3.2
- openuv: the API key is now stored as an encrypted credential. Flows of older versions keep working; open and save the node once to move the key out of the flow file. Keys that were part of exported flows should be rotated. The new setting API base URL (default: the public API) points the node to a proxy or a test mock;
msg.config.baseUrlchanges it for one message (another origin than the configured one requiresmsg.config.apiKey). - nivus-rainfall: without a configured credential the key is read from the environment variable
NIVUS_API_KEY. The generic variableAPI_KEYis no longer read; rename it if you used it. Stations without a valid GPS position no longer carrylocation: [null, null], the attribute is omitted instead. - nivus-rainfall: a station without a valid reading (
CurValuemissing,nullor text) is left out of the run with a warning; its precipitation baseline stays unchanged (before, the next reading reported the whole counter as precipitation).msg.config.apiBasepointing to another host requiresmsg.config.apiKey. A reading whoseCurValueTSis older than the last processed one is treated like an unchanged reading (baseline kept, no precipitation counted twice). - hypertegrity-dwd-weatherwarnings: an invalid response of the DWD (HTML, broken JSON, no list of warnings) is handled like an unreachable API (cached data with
isStale, otherwise an error) instead of “no warnings”. Neighbouring locations that only share a border get their own message again, and holes of areas (enclaves) are respected when warn cells are compared with warning areas and when overlapping locations are reduced to the largest one – the assignment of such warnings can differ from 0.3.1. An invalid warn cell mapping (warnings.json) is handled like a failed mapping fetch (warning, cached mapping if possible) instead of an empty mapping. Invalid or empty WFS geometry data is retried after 5 minutes instead of being cached for 24 hours. Coordinatesnull/empty or outside ±90°/±180° are ignored with a warning. A failed or invalid mapping fetch is only reported as a warning naming the cause (e.g.HTTP 503, no additional error to the Catch node); if the warnings cannot be fetched either, exactly one error is reported. Warnings and mapping keep their own retrieval time:staleSincenames the oldest cached data used, and the maximum age applies to the cached mapping as well. A warning whosestart/endis not a number is skipped with a warning instead of aborting the run. Areas that cross each other without a corner inside the other one count as overlapping. A maximum point count of 1–3 in the editor is raised to 4 (a closed polygon needs 4 points). Warn cells listed by the DWD mapping (warnings.json) now match: its warning IDs differ from those ofgemeinde_warnings.json, so a warning is also linked by event, level, start and end (when unambiguous); before, such cells only matched when their area overlapped the warning area. - hypertegrity-dwd-weather: in
WeatherForecastthe period values of the DWD (precipitation/RR1c,precipitationProbability/wwPand additional elements such asFX1,SunD1,TX) now refer to the hourvalidFrom–validTo(evaluated atvalidTo); before, they described the hour before the time of the value. These values therefore move one hour earlier compared to 0.3.1: each entry now shows e.g. the precipitation expected within its own hour.relativeHumidityis rounded once to 2 decimals (values can differ by 0.01). An outdated MOSMIX file (no time step after “now”) counts as a failed station (warning, yellow or red status, error to the Catch node if all stations fail) instead of a log entry with green status. An unknownmsg.payload.actionraises an error instead of sending nothing;msg.config.lookAheadHoursmust be a whole number. - openuv: locations with coordinates
null, empty orfalseare skipped with a warning instead of querying (0, 0). A forecast response without result list is reported as a warning. A connection aborted during the response names the cause instead of “HTTP 200”. - msg.config: boolean properties (
useForecastStation,ignoreExpired,ignoreFuture,staleAllow,outputForecast) accept onlytrue/false(also as string); other values raise an error instead of being treated asfalse.
Installation
Install via the Node-RED Palette Manager or using npm:
npm install @htag/node-red-contrib-hypertegrity-weather
🌍 About the Project / Über das Projekt
📍 Über dieses Projekt / About this Project
DE: Dieses Open Source Projekt ist im Rahmen der Förderung Modellprojekte Smart Cities entstanden und wurde durch die Initiative des Projekts Südwestcluster ermöglicht.
EN: This open source project was created as part of the Smart City Pilot Projects (Modellprojekte Smart Cities) funding and was made possible by the initiative of the Südwestcluster project.
💡 Hintergrund / Background
DE: Die Entwicklung wurde durch öffentliche Gelder im Kontext der Förderung Modellprojekte Smart Cities unterstützt. Dadurch können wir diese Lösung der gesamten Community als Open Source zur Verfügung stellen.
EN: The development was supported by public funds in the context of the Smart City Pilot Projects (Modellprojekte Smart Cities) funding. This allows us to make this solution available to the entire community as open source.
🌐 Open Source Philosophie / Open Source Philosophy
DE: Wir unterstützen aktiv die OSS-Community und fördern kollaborative Entwicklung. Durch die Veröffentlichung als Open Source profitieren alle Beteiligten:
- Community: Freier Zugang zu moderner Smart City Technologie
- Transparenz: Nachvollziehbare und überprüfbare Lösungen
- Innovation: Gemeinsame Weiterentwicklung durch verschiedene Akteure
- Nachhaltigkeit: Langfristige Verfügbarkeit und Wartbarkeit
EN: We actively support the OSS community and promote collaborative development. Releasing it as open source benefits everyone involved:
- Community: Free access to modern Smart City technology
- Transparency: Traceable and verifiable solutions
- Innovation: Collaborative development by various actors
- Sustainability: Long-term availability and maintainability
🙏 Danksagung / Acknowledgements
DE: Ein besonderer Dank gilt der Förderung Modellprojekte Smart Cities für die finanzielle Unterstützung sowie dem Projekt Südwestcluster für die Initiative und Koordination:
- Eifelkreis Bitburg-Prüm
- Stadt Kaiserslautern
- Landkreis Kusel
- Stadt und Verbandsgemeinde Linz am Rhein
- Landkreis Mayen-Koblenz
- Landkreis St. Wendel
EN: Special thanks goes to the Smart City Pilot Projects (Modellprojekte Smart Cities) funding for financial support and the Südwestcluster project for the initiative and coordination:
- Eifelkreis Bitburg-Prüm
- City of Kaiserslautern
- District of Kusel
- City and Collective Municipality of Linz am Rhein
- District of Mayen-Koblenz
- District of St. Wendel
📜 License & Contact / Lizenz & Kontakt
© 2026 HYPERTEGRITY AG. Alle Rechte vorbehalten. / All rights reserved.
⚖️ License Compatibility / Lizenz-Kompatibilität
DE: Details zur Lizenzierung und zu den Nutzungsrechten finden Sie in der beigefügten LICENSE Datei.
EN: Details on licensing and usage rights can be found in the attached LICENSE file.
📧 Contact / Kontakt: [email protected] 🌐 Website: www.hypertegrity.de