hydropmeter mit IOBroker verbinden


Aktuell gibt es eine Community Lösung für die Integration. Die Nutzung efolgt auf eigene Verantwortung.


Manuelle Integration

Für das Einbinden deines hydropmeter in IOBroker benötigst du folgende Dinge:

  • einen Account in der hydrop App (verfügbar für Android und iOS)
  • den Namen, den du deinem hydropmeter in der App gegeben hast
  • deinen persönlichen API-Key für die hydrop REST-API

Den API-Key findest du in der hydrop App unter Einstellungen -> Konto -> API-Key. Bitte speichere den Key direkt ab, da er nur einmal angezeigt wird.


Wenn du alle Informationen bereit hast, kann es losgehen. Die Abfrage der Daten in IOBroker erfolgt mit JavaScript. Das Skript hierfür findest du im Codeblock.


Falls du bislang noch kein JavaScript in deinem IOBroker verwendest, musst du zunächst den Adapter für JavaScript Skriptausführung hinzufügen und eine Instanz erstellen.

Dann im Menü auf der linken Seite auf Skripte klicken und ein neues JavaScript-Skript (für Programmierer) erstellen. Kopiere die Codevorlage in dein neues leeres Skript. Ersetze die Platzhalter für den Sensornamen und den API-Key oben mit deinen eigenen Werten.


Nun kann das Skript abgespeichert werden. Nach dem Speichern erscheint die Schaltfläche zum Ausführen des Skripts. Klicke darauf und die Messwerte deines hydropmeter sollten nun als State in den IOBroker-Objekten zu finden sein und kontinuierlich aktualisiert werden.


Achtung: Bitte gehe sorgsam mit deinem API-Key um und lasse ihn nicht in falsche Hände geraten.


/* * Hydropmeter Datenabfrage
 * Dieses Skript fragt regelmäßig den aktuellen Zählerstand von einem hydropmeter
 * über die hydrop REST-API ab und speichert die Werte in IOBroker States.
 * 
 * Abhängigkeiten: axios (sollte bereits in IOBroker installiert sein)
 * 
 * Datum: 07.08.2025
 */

const axios = require('axios');

const SENSOR_NAME = 'DEIN_HYDROPMETER_NAME_HIER';      // Name des hydropmeters aus der App hier eintragen
const API_KEY = 'DEIN_API_KEY_HIER';                   // API-Key hier eintragen

const API_URL = `https://api.hydrop-systems.com/sensors/ID/${SENSOR_NAME}/newest`;
const REQUEST_INTERVAL_MINUTES = 5;

// State-Bezeichner für die Datenpunkte
const dpValue = `javascript.0.hydropmeter.${SENSOR_NAME}.zaehlerstand_m3`;
const dpTimestamp = `javascript.0.hydropmeter.${SENSOR_NAME}.messzeitpunkt_iso`;

// States anlegen (falls nicht vorhanden)
createState(dpValue, 0, {
    type: 'number',
    name: 'Zählerstand Wasser [m³]',
    unit: 'm³',
    read: true,
    write: false
});

createState(dpTimestamp, '', {
    type: 'string',
    name: 'Messzeitpunkt (ISO-Zeitstempel)',
    read: true,
    write: false
});

// Funktion zum Abrufen der hydropmeter-Daten über die REST-API
function fetchHydropData() {
    console.log(`[hydropmeter] Anfrage an API für Sensor "${SENSOR_NAME}" gestartet.`);

    axios.get(API_URL, {
        headers: {
            'apikey': API_KEY
        },
        timeout: 10000
    }).then(response => {
        const record = response.data?.sensors?.[0]?.records?.[0];

        if (!record) {
            console.warn('[hydropmeter] Keine gültigen Daten im Antwortobjekt gefunden.');
            return;
        }

        const meterValue = record.meterValue;
        const timestampUnix = record.timestamp;
        const timestampISO = new Date(timestampUnix * 1000).toISOString();

        console.log(`[hydropmeter] Neuer Wert empfangen: ${meterValue} m³ (Zeit: ${timestampISO})`);

        setState(dpValue, meterValue, true);
        setState(dpTimestamp, timestampISO, true);
    }).catch(err => {
        console.error(`[hydropmeter] Fehler bei API-Abfrage mit axios: ${err}`);
    });
}

// Erstmaliger Aufruf
fetchHydropData();

// Regelmäßige Abfrage im Intervall
schedule(`*/${REQUEST_INTERVAL_MINUTES} * * * *`, fetchHydropData);