TapHome

NOUS A1

Packet Parser → MQTT
Přidal
Poslední aktualizace: 04. 2026
NOUS A1

NOUS A1 je WiFi chytrá zásuvka s vestavěným měřením spotřeby (čip BL0937). Po nahrání firmware Tasmota komunikuje s TapHome přes MQTT. Šablona poskytuje ovládání relé a komplexní měření energie — napětí, proud, činný/jalový/zdánlivý výkon, účiník a kumulativní spotřebu energie.

Zásuvka používá čipset ESP8266 a je dimenzována na 16A špičkově / 15A trvale (max. 3680W, 3450W trvale). Vyžaduje externí MQTT broker (např. Mosquitto) dostupný jak ze zásuvky, tak z TapHome Core.

Konfigurace

Nastavení Tasmota MQTT

Před importem TapHome šablony musí být na NOUS A1 nahrán firmware Tasmota a nakonfigurováno připojení k MQTT brokeru:

  1. Otevřete webové rozhraní Tasmota (zadejte IP adresu zařízení do prohlížeče)
  2. Přejděte na ConfigurationConfigure MQTT
  3. Nastavte Host na IP adresu MQTT brokeru
  4. Nastavte Port (výchozí 1883)
  5. Nastavte User a Password pokud broker vyžaduje autentizaci
  6. Poznamenejte si hodnotu Topic (např. tasmota_496D5A) — ta je potřebná pro TapHome šablonu
Proměnné šablony

Po importu šablony v TapHome nastavte vlastní proměnnou plug1topic podle Tasmota MQTT topicu zásuvky:

ProměnnáPopisJak získat
plug1topicTasmota MQTT topic chytré zásuvkyTasmota web UI → Configuration → MQTT → pole Topic

Výchozí hodnota je tasmota_496D5A — tu je nutné změnit podle skutečného topicu každé zásuvky.

MQTT topic je specifický pro zařízení. Pokud se používá více zásuvek NOUS A1, každá vyžaduje samostatnou instanci šablony s unikátní hodnotou plug1topic.

Kalibrace měření spotřeby

Čip BL0937 pro měření spotřeby vyžaduje kalibraci pro přesné údaje. Postup kalibrace:

  1. Připojte známou odporovou zátěž (např. 60W žárovku) do zásuvky
  2. V konzoli Tasmota nastavte referenční napětí: VoltageSet 230
  3. Nastavte referenční výkon: PowerSet 60
  4. Ověřte, že účiník ukazuje hodnotu blízkou 1,00 pro odporovou zátěž

Kalibrace je jednorázový postup — hodnoty jsou uloženy ve flash paměti a přetrvávají po restartu. Bez ní mohou být údaje z čipu BL0937 nepřesné.

Funkce zařízení

Ovládání relé

Šablona poskytuje jeden reléový výstup pro 230V AC zásuvku. Relé se ovládá publikováním na cmnd/{topic}/Power s payloadem 1 (ZAP) nebo 0 (VYP). Po vypnutí relé šablona také vyžádá aktualizaci stavu spotřeby (Status 8) pro okamžité obnovení hodnot.

Měření spotřeby

Šablona čte údaje o spotřebě z payloadu tele/{topic}/SENSOR, který je publikován periodicky (výchozí interval 300 sekund). K dispozici jsou tato měření:

  • Voltage — síťové napětí (V)
  • Current — proud zátěže (A)
  • Active Power — činný výkon (W)
  • Apparent Power — zdánlivý výkon včetně jalové složky (VA)
  • Reactive Power — jalový výkon (VAR)
  • Power Factor — poměr činného ke zdánlivému výkonu (cos phi, 0–1)
  • Energy Today — kumulativní spotřeba od půlnoci (kWh)
  • Total Energy — kumulativní spotřeba od spuštění počítadla, přetrvávající po restartu (kWh)
  • Period Energy — spotřeba v aktuálním telemetrickém období (Wh)
WiFi diagnostika

Šablona čte stav WiFi z payloadu tele/{topic}/STATE:

  • WiFi Channel — číslo 2,4 GHz kanálu (1–13)
  • WiFi Signal Strength — úroveň signálu v dBm
  • WiFi RSSI — kvalita signálu v procentech (0–100 %)
  • Uptime — doba provozu zařízení v sekundách od posledního restartu
Další funkce

NOUS A1 s firmware Tasmota také podporuje monitoring stavu připojení přes LWT (Last Will and Testament) topic, spotřebu energie za včerejšek, konfigurovatelnou periodu telemetrie (10–3600 sekund) a příkazy pro resetování počítadla energie. Čip BL0937 lze rekalibrovat vzdáleně přes MQTT příkazy. Tyto funkce mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Žádná data v TapHome
  1. Ověřte, že zásuvka je připojena k WiFi — webové rozhraní Tasmota by mělo být dostupné na IP adrese zařízení
  2. Zkontrolujte, že MQTT je nakonfigurováno a připojeno — hlavní stránka Tasmota web UI zobrazuje stav MQTT připojení
  3. Potvrďte, že proměnná plug1topic v TapHome přesně odpovídá hodnotě Topic v konfiguraci Tasmota MQTT
  4. Použijte MQTT klienta (např. MQTT Explorer) pro přihlášení k tele/# a ověřte, že zásuvka publikuje zprávy STATE a SENSOR
Nepřesné údaje o spotřebě
  1. Čip BL0937 vyžaduje kalibraci se známou odporovou zátěží — viz sekce kalibrace výše
  2. Induktivní zátěže (motory, LED drivery) mají přirozeně účiník pod 1,0 — to je očekávané chování, nikoliv chyba měření
  3. Zkontrolujte periodu telemetrie — výchozí 300sekundový interval znamená aktualizaci hodnot každých 5 minut

Novější výrobní série NOUS A1 mohou používat čipsety jiné než ESP, které nejsou kompatibilní s firmware Tasmota. Před nákupem ověřte čipset, pokud je integrace Tasmota/MQTT nezbytná.

Dostupná zařízení

NOUS A1 Modul
Vlastní proměnné
plug1topic (string) = tasmota_496D5ATasmota MQTT topic chytré zásuvky — používá se ve filtrech přihlášení a příkazech pro ovládání relé
Open Tasmota web UI → Configuration → MQTT → copy Topic value (e.g., tasmota_496D5A)

ESP-NOUS-ZASUVKA-1

Listener
#var tmp := RECEIVEDMSG.Payload;
WiFi kanál Proměnná Pouze ke čtení
numeric json_path

WiFi kanál

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
Zdánlivý výkon Proměnná Pouze ke čtení
numeric Jednotka: VA json_path

Zdánlivý výkon

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
Účiník Proměnná Pouze ke čtení

Poměr činného ke zdánlivému výkonu (cos phi) — rozsah 0 až 1, kde 1,0 znamená čistě odporovou zátěž

numeric json_path

Účiník

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
Proud Proměnná Pouze ke čtení
numeric Jednotka: A json_path

Proud

Zápis
# 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
Čtení (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
Reléový výstup Přepínač

Hlavní 230V AC relé — při vypnutí také vyžádá obnovení stavu spotřeby

boolean
Hodnoty / Stavy: ON-ACCESO · OFF-SPENTO

Reléový výstup

Zápis stavu přepínače
var value1 := IF(St = 1, "1", "0");
MQTTPUBLISH("cmnd/" +  plug1topic + "/Power", value1);

var value2 := IF(St = 0, MQTTPUBLISH("cmnd/" +  plug1topic + "/Status", "8"));
Energie za periodu Proměnná Pouze ke čtení

Spotřeba v aktuálním telemetrickém období

numeric Jednotka: Wh json_path

Energie za periodu

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
Činný výkon Proměnná Pouze ke čtení
numeric Jednotka: W json_path

Činný výkon

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 dnes Proměnná Pouze ke čtení

Kumulativní spotřeba energie od půlnoci

numeric Jednotka: kWh json_path

Energie dnes

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
Jalový výkon Proměnná Pouze ke čtení
numeric Jednotka: VAR json_path

Jalový výkon

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
Celková energie Proměnná Pouze ke čtení

Kumulativní spotřeba od spuštění počítadla — přetrvávající po restartu

numeric Jednotka: kWh json_path

Celková energie

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
Doba provozu Proměnná Pouze ke čtení

Doba provozu zařízení v sekundách od posledního restartu

numeric Jednotka: s json_path

Doba provozu

Listener
if INDEXOF(RECEIVEDMSG.Topic, "STATE") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, "UptimeSec", true);
    if (!ISNULL(temp4), Va := temp4);
end
Napětí Proměnná Pouze ke čtení
numeric Jednotka: V json_path

Napětí

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
Síla WiFi signálu Proměnná Pouze ke čtení

Úroveň WiFi signálu v dBm — v šabloně dělená 100 (může vyžadovat rekalibraci)

numeric Jednotka: dBm json_path

Síla WiFi signálu

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 Analogový vstup Pouze ke čtení

Kvalita WiFi signálu v procentech, normalizovaná na rozsah 0–1 pro TapHome AnalogInput

numeric Jednotka: % 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
Připojení: Packet Parser → MQTT
Možná vylepšení (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.

Zdroje