@htag/node-red-contrib-hypertegrity-parksandgardens 0.3.2
Hypertegrity NodeRED Node for Parks and Gardens (GreenspaceRecord).
Hypertegrity Node-RED Parks and Gardens Nodes
A collection of Node-RED nodes for fitting the smart data model Parks and Gardens.
📝 Introduction
This package provides nodes for integrating parks and gardens sensor data into your Node-RED flows.
Included Nodes
| Node | Description |
|---|---|
eh-bodenfeuchte |
Fetches soil moisture sensor data from the Netilion API and outputs GreenspaceRecord entities |
Configuration by message
The node accepts an optional msg.config object on its input. Its properties use the same names as the node settings in the editor (sensors, authMethod, baseUrl, apiKey, apiSecret, username, password) and override them for this message only. Sensor lists in msg.payload or msg.sensors keep working as before. Invalid values raise an error that can be handled with a Catch node.
msg.config = { sensors: [{ instrumentationId: "123456", sensorName: "Beet A", moistureKey: "soil_moisture" }] };
Security notes
The editor helper endpoints require the eh-bodenfeuchte.read permission when adminAuth is enabled and use POST requests, so credentials typed in the dialog never appear in URLs. Stored credentials are only used for nodes of this type and only sent to the origin of the API base URL the node is deployed with (default https://api.netilion.endress.com); editor lookups only use the public Netilion API or that deployed address. A message that points msg.config.baseUrl to another origin uses only its own credentials (msg.config.apiKey is required). At runtime, redirects are only followed within the origin of the API base URL, so the API key, user credentials and tokens never reach another host.
Notes on upgrading to 0.3.2
dateObserveduses the measurement time of the moisture value, otherwise of the VWC value, otherwise of the temperature (earlier versions used the retrieval time when no moisture value was mapped).- In Basic Auth mode the Netilion user name and password are required; the node warns at startup if they are missing.
- Coordinates are parsed strictly: a decimal comma (
"49,44") is accepted; values with additional text ("7.7abc") or outside ±90° latitude / ±180° longitude produce nolocation(earlier versions truncated or passed them on, e.g."49,44"became 49). - Only numbers are taken over as measurements (numbers delivered as text stay unchanged). A Netilion value delivered as
null, withoutvalueor as non-numeric text (e.g."n/a","") creates no attribute, no longer determinesdateObservedand is reported with a warning once per sensor and attribute (until the next deploy). - A response with HTTP 200 but without a
valueslist (HTML page, broken or truncated JSON) is reported as an error for this sensor instead of an empty record; the editor reports such responses (also an instrumentation list that is broken or has noinstrumentationsarray) as an upstream error (HTTP 502); an empty list stays valid. - Redirects of the Netilion API are only followed within the same origin; a redirect to another host fails with an error for this sensor.
- Closing or redeploying the node also aborts a running OAuth token request; queued messages no longer change the status or log warnings after close.
- In OAuth mode the Netilion user name and password are required as well; the node warns at startup (status "not configured") if they are missing.
msg.instrumentationIdof a configured sensor uses the value mapping, coordinates and name of that sensor (msg.sensorNameonly replaces the name). A single sensor object inmsg.payload(withinstrumentationId) keeps its own value mapping and coordinates like a list entry. Earlier versions produced a record without measurements in both cases.- A list in
msg.payloadcounts as a sensor list as soon as one entry is a sensor; invalid entries are skipped with a warning (earlier versions only checked the first entry and otherwise usedmsg.sensorsor the configured sensors). - Only numeric instrumentation IDs are queried; any other ID (e.g.
"..","abc") is reported as an error for this sensor without a request. - Values spread over several pages (
pagination.next) are read completely, at most 10 pages (with a warning once per sensor beyond that); this also applies to the "Values" button in the editor. - After an authentication error (failed OAuth token request, HTTP 401 in Basic Auth mode) the remaining sensors of the same message get the same error without a further request or login (earlier versions logged in again for every sensor, which could lock the account).
- OAuth tokens are cached per set of credentials including a hash of the password, so
msg.configwith another password never uses a cached token. A cached token rejected with HTTP 401 is discarded; the node logs in again once per message and repeats the request. - Editor: a failed OAuth token request is reported as upstream error (HTTP 502) with the HTTP status of Netilion (earlier HTTP 500 without status); entries of the value list that are no objects (e.g.
null) are skipped instead of causing an error. - New setting API base URL (default: the public Netilion API) for a proxy or a test mock;
msg.config.baseUrlchanges it for one message (another origin than the configured one uses only the credentials of the message and requiresmsg.config.apiKey).
Installation
Install via the Node-RED Palette Manager or using npm:
npm install @htag/node-red-contrib-hypertegrity-parksandgardens
🌍 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