Skip to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

WARP3: API-Zähler lässt sich anlegen, aber meters/X/update wird als „unknown topic“ verworfen (Firmware 2.9.0)

Featured Replies

Geschrieben

Hallo Tinkerforge / WARP-Team,

ich versuche einen virtuellen Stromzähler über die API-Meter-Schnittstelle an eine WARP3 anzubinden, stoße dabei aber auf ein Verhalten, das nicht ganz zur Dokumentation passt. Vielleicht übersehe ich etwas – oder es handelt sich um einen Firmware-Bug.

Setup

  • Gerät: WARP3 Charger Smart 22kW

  • Firmware: 2.9.0+69831bfb

  • MQTT aktiviert

  • Broker: Mosquitto im lokalen Netz

  • MQTT-Prefix der WARP: warp3/2hgV

Als externen Zähler verwende ich einen Tasmota-basierten Stromzähler (ESP32), der seine Messwerte per MQTT veröffentlicht.

Beispiel-Payload:

tele/tasmota_385B38/SENSOR
{
  "grid": {
    "power": 2509.91,
    "power_L1": 86.38,
    "power_L2": 2277.76,
    "power_L3": 89.43
  }
}

Ich habe dazu eine kleine Python-Bridge geschrieben, die diese Werte abonniert und an die WARP weiterleitet.


Schritt 1 – API-Zähler anlegen

Das Anlegen des API-Zählers funktioniert problemlos.

Beispiel:

curl http://192.168.0.100/meters/1/config \
  -d '[4,{"display_name":"Grid connection","location":4,"value_ids":[74]}]'

Ergebnis:

  • Der Zähler erscheint in der Web-UI.

  • Im Debug-Report steht:

meters/1/config [4,{"display_name":"Grid connection","location":4,"value_ids":[74]}]
meters/1/value_ids [74]
meters/1/values [null]

Außerdem im Boot-Log:

Meter 1: Meter declared 1 value

Das sieht für mich so aus, als würde die Konfiguration korrekt übernommen.


Schritt 2 – Werte über MQTT senden

Laut Dokumentation sollten API-Zähler über

meters/X/update

aktualisiert werden können.

Mein Test:

mosquitto_pub -h 192.168.0.141 \
  -t warp3/2hgV/meters/1/update \
  -m '[2453.59]'

Im Log der WARP erscheint jedoch:

mqtt | Received message on unknown topic 'meters/1/update'

Das heißt: Die Nachricht kommt an, aber das Topic wird nicht erkannt.


HTTP-Test

Auch der HTTP-Endpunkt scheint nicht zu existieren:

curl http://192.168.0.100/meters/1/update -d '[2453.59]'

Antwort:

Nothing matches the given URI.

Der Zähler bleibt weiterhin bei:

values [null]

Weitere Tests

Ich habe zusätzlich ausprobiert:

  • Slot 2 statt 1

  • value_ids mit mehreren Werten ([39,48,57,74])

  • Updates per HTTP und MQTT

Das Verhalten bleibt identisch.


Auffälligkeit

Im Debug-Report taucht meters/1/update in der API-Liste auf, was vermuten lässt, dass der Endpunkt existieren sollte. Zur Laufzeit meldet MQTT aber konsequent „unknown topic“.


Frage

Handelt es sich hierbei eher um

  1. einen Firmware-Bug in 2.9.0,

  2. eine Abweichung zwischen Dokumentation und Firmware,

  3. oder fehlt noch ein Aktivierungsschritt für API-Zähler-Updates?


Ziel

Ich möchte die Netzleistung eines Tasmota-MQTT-Stromzählers als virtuellen Netzanschluss-Zähler in der WARP nutzen

Vielen Dank schon einmal!

Viele Grüße
Wadim

Geschrieben
  • Autor

Update / Lösung

Ich glaube wir haben das Problem gefunden.

Das Verhalten lag nicht am MQTT-Topic oder an der Payload, sondern daran, wann die API-Meter in der Firmware initialisiert werden.

Ich hatte den API-Zähler per

/meters/1/config

angelegt und danach direkt versucht Werte über

meters/1/update

zu senden.

Der Zähler erscheint zwar sofort in der UI und value_ids werden korrekt gesetzt, aber die Firmware registriert die zugehörigen API-Commands (inkl. meters/X/update) erst beim Boot, wenn die Meter-Instanzen erzeugt werden.

Das führt dazu, dass man ohne Reboot folgendes sieht:

Received message on unknown topic 'meters/1/update'

Die Konfiguration ist also gespeichert, aber der MQTT-Handler kennt den Command noch nicht.

Die Lösung war simpel:

  1. API-Meter konfigurieren

curl http://<warp>/meters/1/config \-d '[4,{"display_name":"Grid connection","location":4,"value_ids":[39,48,57,74]}]'
  1. WARP einmal neu starten

  2. Danach funktionieren Updates sofort:

mosquitto_pub -t warp3/<uid>/meters/1/update \
-m '[L1_power,L2_power,L3_power,total_power]'

Danach werden die Werte korrekt übernommen und erscheinen auch in der UI.

In meinem Fall kommt die Leistung von einem Tasmota-Stromzähler über MQTT, den ich über eine kleine Python-Bridge an die WARP weiterreiche.

Vielleicht hilft das ja jemandem, der über das gleiche Verhalten stolpert 🙂

Geschrieben

Kann es sein dass du nachdem du den Zähler per curl angelegt hast den ESP nicht neugestartet hast? Bei den aktuellen Firmwares muss man nach Config-Änderungen der meters einmal den ESP neustarten (System -> Einstellungen -> Neu starten).

Edit: Oh jetzt hatte es sich überschnitten. Du hast es schon selber herausgefunden gehabt 😅.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.