TapHome

NOUS A1

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 04. 2026
NOUS A1

NOUS A1 je WiFi inteligentná zásuvka so vstavaným meraním spotreby (čip BL0937). Po nahratí firmvéru Tasmota komunikuje s TapHome cez MQTT. Šablóna poskytuje ovládanie relé a komplexné meranie energie — napätie, prúd, činný/jalový/zdanlivý výkon, účinník a kumulatívnu spotrebu energie.

Zásuvka používa čipset ESP8266 a je dimenzovaná na 16A špičkovo / 15A trvalo (max. 3680W, 3450W trvalo). Vyžaduje externý MQTT broker (napr. Mosquitto) dostupný zo zásuvky aj z TapHome Core.

Konfigurácia

Nastavenie Tasmota MQTT

Pred importom TapHome šablóny musí byť NOUS A1 nahratý firmvér Tasmota a nakonfigurované pripojenie k MQTT brokeru:

  1. Otvorte Tasmota webové rozhranie (zadajte IP adresu zariadenia do prehliadača)
  2. Prejdite na ConfigurationConfigure MQTT
  3. Nastavte Host na IP adresu MQTT brokera
  4. Nastavte Port (predvolene 1883)
  5. Nastavte User a Password ak broker vyžaduje autentifikáciu
  6. Poznačte si hodnotu Topic (napr. tasmota_496D5A) — tá je potrebná pre TapHome šablónu
Premenné šablóny

Po importe šablóny v TapHome nastavte vlastnú premennú plug1topic podľa Tasmota MQTT topicu zásuvky:

PremennáPopisAko získať
plug1topicTasmota MQTT topic inteligentnej zásuvkyTasmota web UI → Configuration → MQTT → pole Topic

Predvolená hodnota je tasmota_496D5A — túto je nutné zmeniť podľa skutočného topicu každej zásuvky.

MQTT topic je špecifický pre zariadenie. Ak sa používa viacero zásuviek NOUS A1, každá vyžaduje samostatnú inštanciu šablóny s unikátnou hodnotou plug1topic.

Kalibrácia merania spotreby

Čip BL0937 na meranie spotreby vyžaduje kalibráciu pre presné údaje. Postup kalibrácie:

  1. Pripojte známu odporovú záťaž (napr. 60W žiarovku) do zásuvky
  2. V konzole Tasmota nastavte referenčné napätie: VoltageSet 230
  3. Nastavte referenčný výkon: PowerSet 60
  4. Overte, že účinník ukazuje hodnotu blízku 1,00 pre odporovú záťaž

Kalibrácia je jednorazový postup — hodnoty sú uložené vo flash pamäti a pretrvávajú po reštarte. Bez nej môžu byť údaje zo čipu BL0937 nepresné.

Funkcie zariadenia

Ovládanie relé

Šablóna poskytuje jeden reléový výstup pre 230V AC zásuvku. Relé sa ovláda publikovaním na cmnd/{topic}/Power s payloadom 1 (ZAP) alebo 0 (VYP). Po vypnutí relé šablóna tiež vyžiada aktualizáciu stavu spotreby (Status 8) pre okamžité obnovenie hodnôt.

Meranie spotreby

Šablóna číta údaje o spotrebe z payloadu tele/{topic}/SENSOR, ktorý je publikovaný periodicky (predvolene každých 300 sekúnd). K dispozícii sú tieto merania:

  • Voltage — sieťové napätie (V)
  • Current — prúd záťaže (A)
  • Active Power — činný výkon (W)
  • Apparent Power — zdanlivý výkon vrátane jalovej zložky (VA)
  • Reactive Power — jalový výkon (VAR)
  • Power Factor — pomer činného k zdanlivému výkonu (cos phi, 0–1)
  • Energy Today — kumulatívna spotreba od polnoci (kWh)
  • Total Energy — kumulatívna spotreba od spustenia počítadla, pretrvávajúca po reštarte (kWh)
  • Period Energy — spotreba v aktuálnom telemetrickom období (Wh)
WiFi diagnostika

Šablóna číta stav WiFi z payloadu tele/{topic}/STATE:

  • WiFi Channel — číslo 2,4 GHz kanála (1–13)
  • WiFi Signal Strength — úroveň signálu v dBm
  • WiFi RSSI — kvalita signálu v percentách (0–100 %)
  • Uptime — doba prevádzky zariadenia v sekundách od posledného reštartu
Ďalšie funkcie

NOUS A1 s firmvérom Tasmota tiež podporuje monitoring stavu pripojenia cez LWT (Last Will and Testament) topic, spotrebu energie za včerajšok, konfigurovateľnú periódu telemetrie (10–3600 sekúnd) a príkazy na resetovanie počítadla energie. Čip BL0937 je možné rekalibrovať na diaľku cez MQTT príkazy. Tieto funkcie môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Žiadne dáta v TapHome
  1. Overte, že zásuvka je pripojená k WiFi — Tasmota webové rozhranie by malo byť dostupné na IP adrese zariadenia
  2. Skontrolujte, že MQTT je nakonfigurované a pripojené — hlavná stránka Tasmota web UI zobrazuje stav MQTT pripojenia
  3. Potvrďte, že premenná plug1topic v TapHome presne zodpovedá hodnote Topic v konfigurácii Tasmota MQTT
  4. Použite MQTT klienta (napr. MQTT Explorer) na prihlásenie k tele/# a overte, že zásuvka publikuje správy STATE a SENSOR
Nepresné údaje o spotrebe
  1. Čip BL0937 vyžaduje kalibráciu so známou odporovou záťažou — pozrite sekciu kalibrácie vyššie
  2. Induktívne záťaže (motory, LED drivery) majú prirodzene účinník pod 1,0 — to je očakávané správanie, nie chyba merania
  3. Skontrolujte periódu telemetrie — predvolený 300-sekundový interval znamená aktualizáciu hodnôt každých 5 minút

Novšie výrobné série NOUS A1 môžu používať čipsety iné ako ESP, ktoré nie sú kompatibilné s firmvérom Tasmota. Pred nákupom overte čipset, ak je integrácia Tasmota/MQTT nevyhnutná.

Dostupné zariadenia

NOUS A1 Modul
Vlastné premenné
plug1topic (string) = tasmota_496D5ATasmota MQTT topic inteligentnej zásuvky — používa sa vo filtroch prihlásení a príkazoch na ovládanie 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 Premenná Len na čítanie
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
Zdanlivý výkon Premenná Len na čítanie
numeric Jednotka: VA json_path

Zdanlivý 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
Účinník Premenná Len na čítanie

Pomer činného k zdanlivému výkonu (cos phi) — rozsah 0 až 1, kde 1,0 znamená čisto odporovú záťaž

numeric json_path

Účinní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
Prúd Premenná Len na čítanie
numeric Jednotka: A json_path

Prúd

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
Čítanie (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 Prepínač

Hlavné 230V AC relé — pri vypnutí tiež vyžiada obnovenie stavu spotreby

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

Reléový výstup

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

var value2 := IF(St = 0, MQTTPUBLISH("cmnd/" +  plug1topic + "/Status", "8"));
Energia za periódu Premenná Len na čítanie

Spotreba v aktuálnom telemetrickom období

numeric Jednotka: Wh json_path

Energia za periódu

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 Premenná Len na čítanie
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
Energia dnes Premenná Len na čítanie

Kumulatívna spotreba energie od polnoci

numeric Jednotka: kWh json_path

Energia 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 Premenná Len na čítanie
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á energia Premenná Len na čítanie

Kumulatívna spotreba od spustenia počítadla — pretrvávajúca po reštarte

numeric Jednotka: kWh json_path

Celková energia

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 prevádzky Premenná Len na čítanie

Doba prevádzky zariadenia v sekundách od posledného reštartu

numeric Jednotka: s json_path

Doba prevádzky

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ätie Premenná Len na čítanie
numeric Jednotka: V json_path

Napätie

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
Sila WiFi signálu Premenná Len na čítanie

Úroveň WiFi signálu v dBm — v šablóne delená 100 (môže vyžadovať rekalibráciu)

numeric Jednotka: dBm json_path

Sila 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 Analógový vstup Len na čítanie

Kvalita WiFi signálu v percentách, normalizovaná na rozsah 0–1 pre 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
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (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