npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@vereinkleinwohnformen/node-red-energiemonitor

v0.4.2

Published

Energy monitor connector to the KWF databases

Readme

Das Projekt Energiemonitor

Dieses Projekt soll es dir ermöglichen, deinen Energieverbrauch zu messen, in Echtzeit zu analysieren, zu verstehen und zu optimieren - mit dem Ziel dass du mit den einfachen aber richtigen Aktionen im Alltag 20% deines Energieverbrauchs einsparen kannst. Dieses Projekt wird vom Verein Kleinwohnformen getragen und ist in erster Linie auf kleine, unabhängige Wohnformen zugeschnitten. Es ist aber nicht ausgeschlossen, dass du unseren Monitor auch für deine Wohnung bauen und nutzen kannst - wir sind Open Source und Mitmachen im Projekt ist erwünscht! Einfach melden beim Energiemonitor-Team.

Projekt-Repos

Angestrebte Architektur

Wir befinden uns noch in der Designphase, viele der eingezeichneten Komponenten existieren noch nicht. Wir streben aber das folgende System an:

Hardware-Architektur

Software-Architektur

NodeRED Connector für KWF Energiemonitor (beta)

Dieser Node ist der Kernbaustein des KWF Energiemonitors. Du musst dich nur noch darum kümmern, die gewünschten Datenkanäle einzulesen, und sie in einem passenden Intervall mit dem richtigen Topic an diesen Baustein (KWF Datenbank-Connector) zu schicken, und dieser Block übernimmt den Rest, nämlich:

  • Daten in einer lokalen Datenbank zwischenspeichern
  • Daten regelmässig (1 mal pro Stunde) oder wenn wieder eine Internetverbindung vorhanden ist, an die Datenbank zu schicken.

So sieht eine Beispiel-Konfiguration aus. Deine NodeRED-Bausteine sollten noch folgende Aufgaben übernehmen:

  • Daten ggf. aggregieren und in der empfohlenen Frequenz an diesen Connector schicken (Idee: Zukünftig könnte auch dieser Konnektor Daten aggregieren, um Fehler und falsche Inputs in der Datenbank zu vermeiden)
  • Das richtige Format sicherstellen
  • Das richtige Topic anfügen

Das sieht dann so aus. Auf der linken Seite hast du deine Mess-Blocks, die alle mit unserem Connector verbunden sind. Beispiel

Installation

Dieser Node ist bereits in der NodeRED-Library verfügbar.

Konfiguration

Diese Parameter müssen konfiguriert werden:

  • Einen Pfad, auf dem Daten persistent gespeichert werden können (für die Datenbank zur Zwischenspeicherung). Für eine Einrichtung auf Balena den Default-Wert beibehalten. Im Fall von Datenbank-Fehlern (z.B. alte Version des Blocks hat bereits ein anderes Datenbank-Format) kann es helfen, den Namen des Datenbank-Files auszutauschen.
  • Sende-Intervall (ms), in dem die Daten an die Datenbank gesendet werden. Zum Testen ca. 1 Minute nehmen und im Betrieb 1 Stunde (Default).
  • Die URL der API, am besten aus den Balena Flotten-Variablen übernehmen
  • Deinen Device API-Key, am besten aus den Balena Device-Variablen übernehmen

Input-Datenformat

Das Input-Datenformat basiert jetzt auf Messpunkten (measurement_point), die für jede Wohneinheit separat definiert werden. Jeder Sensor hat eine eindeutige ID und jeder Datenpunkt wird einem spezifischen Messpunkt zugeordnet.

Wichtig: Topics werden nicht mehr verwendet. Alle Informationen werden in msg.payload übertragen.

Grundlegendes Format

{
  "values": {
    // Sensor-spezifische Messwerte
  },
  "sensor_id": "eindeutige-sensor-id",
  "timestamp": 1760084970005,
  "metering_point": "XX"
}

Unterstützte Messpunkte

Basierend auf dem Messkonzept werden folgende Messpunkte unterstützt:

Externe Messpunkte (Rand der Systemdefinition):

  • E1: Netzbezug el. Energie [kWh]
  • E2: Rückspeisung el. Energie [kWh]
  • E3: Eigenproduktion el. Energie [kWh]
  • M1: Gas in Flaschen [kg]
  • M2: Brennholz oder Pellets [kg, Ster]
  • A1: Abzug Verbrauch Energiemonitor [kWh]

Interne Messpunkte:

  • I1: Warmwassererzeugung [kWh / kg Gas]
  • I2: Energiebedarf Heizung [kWh / kg / Ster]

Wohnkomfort:

  • K0: Wohnkomfort Allgemein (Kombinierte Sensoren) [°C, % RH, ppm]
  • K1: Innentemperatur, Lieblingsort [°C]
  • K2: Aussentemperatur N, Schatten [°C]
  • K3: Luftfeuchtigkeit, Lieblingsort [% RH]
  • K4: CO2-Gehalt, Lieblingsort [ppm]

Wasser:

  • D1: Gesamtwasserverbrauch [m3]

Beispiele für verschiedene Sensortypen

230V Stromklemmen (z.B. Shelly 3EM Pro):

{
  "values": {
    "voltage": 231.27,
    "act_power": 14.555,
    "pf": 0.33,
    "aprt_power": 44.35
  },
  "sensor_id": "shelly-3em-pro",
  "timestamp": 1760084970005,
  "metering_point": "E1"
}

Netatmo Wetterstation:

{
  "values": {
    "device_id": "70:ee:50:a9:ea:6e",
    "device_reachable": true,
    "wifi_signal_strength": 65,
    "temperature_indoor": 19.8,
    "humidity_indoor": 51,
    "co2_indoor": 460,
    "pressure": 1028.9,
    "noise_level": 32,
    "pressure_absolute": 976.5,
    "outdoor_module_reachable": true,
    "outdoor_module_id": "02:00:00:a9:db:20",
    "temperature_outdoor": 18.4,
    "humidity_outdoor": 60,
    "battery_level": 100,
    "rf_signal_strength": 53,
    "battery_voltage": 6116,
    "temperature_difference": 1.4
  },
  "sensor_id": "netatmo",
  "timestamp": 1760086636000,
  "metering_point": "K0"
}

Per-Value Timestamps mit ts_ Prefix (v0.4.2+)

Der Node unterstützt individuelle Timestamps für jeden Messwert über das ts_ Präfix-System. Dies ist besonders nützlich für Sensoren, die ihre Messwerte in unterschiedlichen Intervallen aktualisieren.

Wie es funktioniert:

  • Für jeden Messwert kann ein individueller Timestamp mit dem Präfix ts_ angegeben werden
  • Der Node gruppiert automatisch Werte mit gleichen Timestamps in separate Datenbankeinträge
  • Werte ohne ts_ Präfix werden in alle Datenbankeinträge übernommen (z.B. Metadaten)
  • Vollständig rückwärtskompatibel: Funktioniert auch ohne ts_ Präfixe

Beispiel: Netatmo mit individuellen Timestamps

{
  "values": {
    "ts_temperature_indoor": 1761140223000,
    "temperature_indoor": 19.6,
    "ts_humidity_indoor": 1761140223000,
    "humidity_indoor": 51,
    "ts_temperature_outdoor": 1761140210000,
    "temperature_outdoor": 18.8,
    "ts_humidity_outdoor": 1761140210000,
    "humidity_outdoor": 64,
    "wifi_signal_strength": 67,
    "device_id": "70:ee:50:a9:ea:6e"
  },
  "sensor_id": "netatmo",
  "timestamp": 1761140877000,
  "metering_point": "K0"
}

Resultierende Datenbankeinträge:

Eintrag 1: timestamp=1761140223000
  - temperature_indoor: 19.6
  - humidity_indoor: 51
  - wifi_signal_strength: 67
  - device_id: "70:ee:50:a9:ea:6e"

Eintrag 2: timestamp=1761140210000
  - temperature_outdoor: 18.8
  - humidity_outdoor: 64
  - wifi_signal_strength: 67
  - device_id: "70:ee:50:a9:ea:6e"

Vorteile:

  • ✅ Präzise Zeitstempel für jede Messung
  • ✅ Automatische Gruppierung nach Timestamp
  • ✅ Metadaten werden in alle Einträge übernommen
  • ✅ Verhindert Duplikate durch intelligente Merge-Logik
  • ✅ Universal einsetzbar für beliebige Sensoren

Unterstützte Sensortypen

Die folgende Tabelle zeigt die aktuell unterstützten Sensortypen und ihre typischen Anwendungsfälle:

| Sensortyp | Sensor ID | Beschreibung | Typische Messpunkte | Gemessene Werte | |-----------|-----------|--------------|-------------------|-----------------| | Shelly 3EM Pro | shelly-3em-pro | 230V Stromklemmen für Energiemessung | E1, E2, E3, A1, I1, I2 | voltage, act_power, pf, aprt_power | | Netatmo Wetterstation | netatmo | Innen- und Außenklima-Monitoring | K0, K1, K2, K3, K4 | Temperatur, Luftfeuchtigkeit, CO2, Luftdruck, Lärm, Batteriestand, Signalstärke |

Todo

Weitere Aufgaben für dieses Projekt:

  • Support für Victron Cerbo GX testen
  • Basis-Sensoren des Energiemonitor-Kits einbinden
  • Weitere Datenformate unterstützen: Alle Victron-Geräte, sowie weitere Input-Daten
  • Aggregation der Messdaten übernehmen, damit nicht zuviele Daten in die Cloud geschickt werden können, sondern vorher ein Durchschnitt gebildet wird