TapHome

NOUS A1

Packet Parser → MQTT
Eingereicht von
Zuletzt aktualisiert: 06. 2026
NOUS A1

Die NOUS A1 ist eine WiFi-Smartsteckdose mit integriertem Energiemonitoring (BL0937-Chip). Mit Tasmota-Firmware kommuniziert sie über MQTT mit TapHome. Die Vorlage bietet Relaissteuerung und umfassende Energiemessung — Spannung, Strom, Wirk-/Blind-/Scheinleistung, Leistungsfaktor und kumulativen Energieverbrauch.

Die Steckdose verwendet einen ESP8266-Chipsatz und ist für 16A Spitzenlast / 15A Dauerlast (bis zu 3680W max., 3450W dauerhaft) ausgelegt. Sie benötigt einen externen MQTT-Broker (z. B. Mosquitto), der sowohl von der Steckdose als auch von TapHome Core erreichbar ist.

Konfiguration

Tasmota MQTT-Einrichtung

Vor dem Import der TapHome-Vorlage muss die NOUS A1 mit Tasmota-Firmware geflasht und die Verbindung zum MQTT-Broker konfiguriert werden:

  1. Öffnen Sie die Tasmota-Weboberfläche (IP-Adresse des Geräts im Browser eingeben)
  2. Navigieren Sie zu ConfigurationConfigure MQTT
  3. Setzen Sie den Host auf die IP-Adresse des MQTT-Brokers
  4. Setzen Sie den Port (Standard 1883)
  5. Setzen Sie User und Password, falls der Broker Authentifizierung erfordert
  6. Notieren Sie den Topic-Wert (z. B. tasmota_496D5A) — dieser wird für die TapHome-Vorlage benötigt
Vorlagenvariablen

Setzen Sie nach dem Import der Vorlage in TapHome die benutzerdefinierte Variable plug1topic entsprechend dem Tasmota MQTT Topic der Steckdose:

VariableBeschreibungErmittlung
plug1topicTasmota MQTT Topic der SmartsteckdoseTasmota Web UI → Configuration → MQTT → Feld Topic

Der Standardwert ist tasmota_496D5A — dieser muss auf das tatsächliche Topic jeder Steckdose geändert werden.

Das MQTT Topic ist gerätespezifisch. Bei Verwendung mehrerer NOUS A1 Steckdosen benötigt jede eine separate Vorlageninstanz mit einem eindeutigen plug1topic-Wert.

Kalibrierung des Energiemonitorings

Der BL0937-Energiemonitoring-Chip erfordert eine Kalibrierung für genaue Messwerte. Zur Kalibrierung:

  1. Schließen Sie eine bekannte ohmsche Last (z. B. 60W-Glühbirne) an die Steckdose an
  2. Setzen Sie in der Tasmota-Konsole die Referenzspannung: VoltageSet 230
  3. Setzen Sie die Referenzleistung: PowerSet 60
  4. Überprüfen Sie, ob der Leistungsfaktor für die ohmsche Last nahe 1,00 anzeigt

Die Kalibrierung ist ein einmaliger Vorgang — die Werte werden im Flash-Speicher gespeichert und bleiben nach Neustarts erhalten. Ohne sie können die Messwerte des BL0937-Chips ungenau sein.

Gerätefunktionen

Relaissteuerung

Die Vorlage stellt einen Relaisausgang für die 230V-AC-Steckdose bereit. Das Relais wird durch Publizieren auf cmnd/{topic}/Power mit Payload 1 (EIN) oder 0 (AUS) gesteuert. Beim Ausschalten des Relais fordert die Vorlage auch ein Energiestatus-Update an (Status 8), um die Energiewerte sofort zu aktualisieren.

Energiemessung

Die Vorlage liest Energiedaten aus dem tele/{topic}/SENSOR-Payload, der periodisch publiziert wird (Standard alle 300 Sekunden). Folgende Messwerte sind verfügbar:

  • Voltage — Netzspannung (V)
  • Current — Laststrom (A)
  • Active Power — Wirkleistung (W)
  • Apparent Power — Scheinleistung einschließlich Blindanteil (VA)
  • Reactive Power — Blindleistung (VAR)
  • Power Factor — Verhältnis von Wirk- zu Scheinleistung (cos phi, 0–1)
  • Energy Today — kumulativer Verbrauch seit Mitternacht (kWh)
  • Total Energy — kumulativer Verbrauch seit Zählerstart, bleibt nach Neustarts erhalten (kWh)
  • Period Energy — Verbrauch im aktuellen Telemetriezeitraum (Wh)
WiFi-Diagnose

Die Vorlage liest den WiFi-Status aus dem tele/{topic}/STATE-Payload:

  • WiFi Channel — die 2,4-GHz-Kanalnummer (1–13)
  • WiFi Signal Strength — Signalpegel in dBm
  • WiFi RSSI — Signalqualität in Prozent (0–100 %)
  • Uptime — Betriebszeit des Geräts in Sekunden seit dem letzten Neustart
Weitere Funktionen

Die NOUS A1 mit Tasmota-Firmware unterstützt auch die Überwachung des Verbindungsstatus über LWT-Topic (Last Will and Testament), den Energieverbrauch von gestern, eine konfigurierbare Telemetrieperiode (10–3600 Sekunden) und Befehle zum Zurücksetzen des Energiezählers. Der BL0937-Chip kann auch per MQTT-Befehle fernkalibriert werden. Diese Funktionen können in einem zukünftigen Vorlagenupdate hinzugefügt werden.

Fehlerbehebung

Keine Daten in TapHome
  1. Überprüfen Sie, ob die Steckdose mit WiFi verbunden ist — die Tasmota-Weboberfläche sollte unter der Geräte-IP erreichbar sein
  2. Prüfen Sie, ob MQTT konfiguriert und verbunden ist — die Tasmota-Hauptseite zeigt den MQTT-Verbindungsstatus
  3. Bestätigen Sie, dass die Variable plug1topic in TapHome exakt dem Topic-Wert in der Tasmota MQTT-Konfiguration entspricht
  4. Verwenden Sie einen MQTT-Client (z. B. MQTT Explorer), abonnieren Sie tele/# und überprüfen Sie, ob die Steckdose STATE- und SENSOR-Nachrichten publiziert
Ungenaue Energiemesswerte
  1. Der BL0937-Chip erfordert eine Kalibrierung mit einer bekannten ohmschen Last — siehe Abschnitt Kalibrierung oben
  2. Induktive Lasten (Motoren, LED-Treiber) haben natürlicherweise einen Leistungsfaktor unter 1,0 — dies ist erwartetes Verhalten, kein Messfehler
  3. Überprüfen Sie die Telemetrieperiode — das Standardintervall von 300 Sekunden bedeutet, dass Energiewerte alle 5 Minuten aktualisiert werden

Neuere Produktionsserien der NOUS A1 können Nicht-ESP-Chipsätze verwenden, die mit Tasmota-Firmware inkompatibel sind. Überprüfen Sie den Chipsatz vor dem Kauf, wenn eine Tasmota/MQTT-Integration erforderlich ist.

Verfügbare Geräte

NOUS A1 Modul
Benutzerdefinierte Variablen
plug1topic (string) = tasmota_496D5ATasmota MQTT Topic der Smartsteckdose — verwendet in Abonnementfiltern und Relaissteuerungsbefehlen
Open Tasmota web UI → Configuration → MQTT → copy Topic value (e.g., tasmota_496D5A)

ESP-NOUS-ZASUVKA-1

Listener
#var tmp := RECEIVEDMSG.Payload;
WiFi-Kanal Variable Nur lesen
numeric json_path

WiFi-Kanal

Listener
if INDEXOF(RECEIVEDMSG.Topic, "STATE") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID1 + ".Channel", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Scheinleistung Variable Nur lesen
numeric Einheit: VA json_path

Scheinleistung

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".ApparentPower", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Leistungsfaktor Variable Nur lesen

Verhältnis von Wirk- zu Scheinleistung (cos phi) — Bereich 0 bis 1, wobei 1,0 eine rein ohmsche Last anzeigt

numeric json_path

Leistungsfaktor

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Factor", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Strom Variable Nur lesen
numeric Einheit: A json_path

Strom

Schreiben
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Va);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Va, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Va + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Va + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Va, "write"); # use "append" mode to append data to existing file
Lesen (Modul)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Current", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Relaisausgang Schalter

Haupt-230V-AC-Relais — fordert beim Ausschalten auch eine Energiestatus-Aktualisierung an

boolean
Werte / Zustände: ON-ACCESO · OFF-SPENTO

Relaisausgang

Schaltzustand schreiben
var value1 := IF(St = 1, "1", "0");
MQTTPUBLISH("cmnd/" +  plug1topic + "/Power", value1);

var value2 := IF(St = 0, MQTTPUBLISH("cmnd/" +  plug1topic + "/Status", "8"));
Periodenenergie Variable Nur lesen

Verbrauch im aktuellen Telemetriezeitraum

numeric Einheit: Wh json_path

Periodenenergie

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Period", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Wirkleistung Variable Nur lesen
numeric Einheit: W json_path

Wirkleistung

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Power", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Energie heute Variable Nur lesen

Kumulativer Energieverbrauch seit Mitternacht

numeric Einheit: kWh json_path

Energie heute

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Today", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Blindleistung Variable Nur lesen
numeric Einheit: VAR json_path

Blindleistung

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".ReactivePower", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Gesamtenergie Variable Nur lesen

Kumulativer Verbrauch seit Zählerstart — bleibt nach Neustarts erhalten

numeric Einheit: kWh json_path

Gesamtenergie

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Total", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
Betriebszeit Variable Nur lesen

Betriebszeit des Geräts in Sekunden seit dem letzten Neustart

numeric Einheit: s json_path

Betriebszeit

Listener
if INDEXOF(RECEIVEDMSG.Topic, "STATE") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, "UptimeSec", true);
    if (!ISNULL(temp4), Va := temp4);
end
Spannung Variable Nur lesen
numeric Einheit: V json_path

Spannung

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID12 + ".Voltage", true);
    if (!ISNULL(temp4), Va := temp4/1);
end
WiFi-Signalstärke Variable Nur lesen

WiFi-Signalpegel in dBm — in der Vorlage durch 100 geteilt (Rekalibrierung möglicherweise erforderlich)

numeric Einheit: dBm json_path

WiFi-Signalstärke

Listener
if INDEXOF(RECEIVEDMSG.Topic, "STATE") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, ID1 + ".Signal", true);
    if (!ISNULL(temp4), Va := temp4/100);
end
WiFi RSSI Analogeingang Nur lesen

WiFi-Signalqualität in Prozent, normalisiert auf den Bereich 0–1 für TapHome AnalogInput

numeric Einheit: % json_path

WiFi RSSI

Listener
if INDEXOF(RECEIVEDMSG.Topic, "STATE") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp2 := PARSEJSON(RECEIVEDMSG.Payload, ID1 + ".RSSI", true);
    if (!ISNULL(temp2), An := temp2/100);
end
Verbindung: Packet Parser → MQTT
Mögliche Verbesserungen (5)
  • Connection Status (LWT) — Last Will and Testament — Online/Offline payload. Could detect device connectivity.
  • Energy Yesterday — Yesterday's energy consumption in kWh. Available in SENSOR payload but not parsed by template.
  • Telemetry Period — Set telemetry interval (10–3600s, default 300). Could be exposed as service action.
  • Energy Counter Reset — Reset energy counters (Today, Yesterday, Total). Could be exposed as service action.
  • Energy Calibration Commands — BL0937 energy monitoring chip calibration — important for accurate readings but requires physical known load.

Quellen

Haben Sie ein Problem mit dieser Gerätevorlage gefunden?

Sagen Sie uns, was nicht funktioniert, was fehlt oder wie sich die Vorlage verhalten sollte. Ihr Feedback hilft uns, den Katalog genau zu halten.

Von TapHome verifiziert

Möchtest du das in deinem TapHome Core verwenden?

Öffne diese Vorlage im Kundenportal, um sie auf eine deiner Wohnungen anzuwenden, oder entwirf eine Anpassung und reiche sie an den Katalog ein.

Im Portal öffnen