TapHome

NOUS A1

Packet Parser → MQTT
Trimis de
Ultima actualizare: 03. 2026
NOUS A1

NOUS A1 este o priză inteligentă Wi-Fi cu monitorizare integrată a energiei (cip BL0937). După instalarea firmware-ului Tasmota, comunică cu TapHome prin MQTT. Șablonul oferă comanda releului și o contorizare completă a energiei — tensiune, curent, putere activă/reactivă/aparentă, factor de putere și consumul cumulat de energie.

Priza folosește un chipset ESP8266 și are valori nominale de 16 A vârf / 15 A continuu (până la 3680 W maximum, 3450 W continuu). Necesită un broker MQTT extern (de ex. Mosquitto), accesibil atât din priză, cât și din TapHome Core.

Configurare

Configurarea MQTT în Tasmota

Înainte de importul șablonului TapHome, NOUS A1 trebuie să aibă instalat firmware-ul Tasmota și să fie configurată pentru conectarea la un broker MQTT:

  1. Deschideți interfața web Tasmota (introduceți adresa IP a dispozitivului în browser)
  2. Accesați Configuration → Configure MQTT
  3. Setați la Host adresa IP a brokerului MQTT
  4. Setați Port (implicit 1883)
  5. Setați User și Password dacă brokerul necesită autentificare
  6. Notați valoarea Topic (de ex. tasmota_496D5A) — este necesară pentru șablonul TapHome
Variabilele șablonului

După importul șablonului în TapHome, setați variabila personalizată plug1topic astfel încât să corespundă topicului MQTT Tasmota al prizei:

VariabilăDescriereCum se obține
plug1topicTopicul MQTT Tasmota al prizei inteligenteInterfața web Tasmota → Configuration → MQTT → câmpul Topic

Valoarea implicită este tasmota_496D5A — trebuie schimbată astfel încât să corespundă topicului real al fiecărei prize.

Topicul MQTT este specific fiecărui dispozitiv. Dacă folosiți mai multe prize NOUS A1, fiecare necesită o instanță separată a șablonului, cu o valoare plug1topic unică.

Calibrarea monitorizării energiei

Cipul de monitorizare a energiei BL0937 necesită calibrare pentru citiri precise. Pentru calibrare:

  1. Conectați la priză o sarcină rezistivă cunoscută (de ex. un bec incandescent de 60 W)
  2. În consola Tasmota setați tensiunea de referință: VoltageSet 230
  3. Setați puterea de referință: PowerSet 60
  4. Verificați dacă factorul de putere pentru sarcina rezistivă este apropiat de 1,00

Calibrarea se face o singură dată — valorile se salvează în memoria flash și se păstrează după reporniri. Fără calibrare, citirile energiei de la cipul BL0937 pot fi inexacte.

Funcțiile dispozitivului

Comanda releului

Șablonul expune o singură ieșire de releu pentru priza de 230 V AC. Releul se comandă prin publicarea pe cmnd/{topic}/Power cu payload 1 (ON) sau 0 (OFF). La oprirea releului, șablonul solicită și o actualizare a datelor de energie (Status 8), pentru a reîmprospăta imediat citirile energiei.

Monitorizarea energiei

Șablonul citește datele despre energie din payloadul tele/{topic}/SENSOR, publicat periodic (implicit la fiecare 300 de secunde). Sunt disponibile următoarele măsurători:

  • Tensiune — tensiunea rețelei (V)
  • Curent — curentul sarcinii (A)
  • Putere activă — puterea reală consumată (W)
  • Putere aparentă — puterea totală, inclusiv componenta reactivă (VA)
  • Putere reactivă — puterea reactivă (VAR)
  • Factor de putere — raportul dintre puterea activă și cea aparentă (cos phi, 0–1)
  • Energie azi — energia cumulată de la miezul nopții (kWh)
  • Energie totală — energia cumulată de la pornirea contorului, păstrată după reporniri (kWh)
  • Energie pe perioadă — energia consumată în perioada de telemetrie curentă (Wh)
Diagnosticarea Wi-Fi

Șablonul citește starea Wi-Fi din payloadul tele/{topic}/STATE:

  • Canal Wi-Fi — numărul canalului de 2,4 GHz (1–13)
  • Puterea semnalului Wi-Fi — nivelul semnalului în dBm
  • Wi-Fi RSSI — calitatea semnalului în procente (0–100 %)
  • Timp de funcționare — timpul de funcționare al dispozitivului în secunde de la ultima pornire
Funcții suplimentare

NOUS A1 cu firmware Tasmota suportă și monitorizarea stării conexiunii prin topicul LWT (Last Will and Testament), consumul de energie de ieri, perioada de telemetrie configurabilă (10–3600 de secunde) și comenzi de resetare a contorului de energie. Cipul BL0937 poate fi și recalibrat de la distanță prin comenzi MQTT. Aceste funcții pot fi adăugate într-o actualizare viitoare a șablonului.

Rezolvarea problemelor

Nu există date în TapHome
  1. Verificați dacă priza este conectată la Wi-Fi — interfața web Tasmota trebuie să fie accesibilă la adresa IP a dispozitivului
  2. Verificați dacă MQTT este configurat și conectat — pagina principală a interfeței web Tasmota afișează starea conexiunii MQTT
  3. Verificați dacă variabila plug1topic din TapHome corespunde exact valorii Topic din configurația MQTT Tasmota
  4. Folosiți un client MQTT (de ex. MQTT Explorer) pentru a vă abona la tele/# și verificați dacă priza publică mesajele STATE și SENSOR
Citiri inexacte ale energiei
  1. Cipul BL0937 necesită calibrare cu o sarcină rezistivă cunoscută — consultați secțiunea despre calibrare de mai sus
  2. Sarcinile reactive (motoare, drivere LED) au în mod natural un factor de putere sub 1,0 — este un comportament normal, nu o eroare de măsurare
  3. Verificați perioada de telemetrie — intervalul implicit de 300 de secunde înseamnă că valorile energiei se actualizează la fiecare 5 minute

Loturile de producție mai noi ale NOUS A1 pot folosi chipseturi non-ESP, incompatibile cu firmware-ul Tasmota. Dacă aveți nevoie de integrarea Tasmota/MQTT, verificați chipsetul înainte de cumpărare.

Dispozitive disponibile

NOUS A1 Modul
Variabile personalizate
plug1topic (string) = tasmota_496D5ATopicul MQTT Tasmota al prizei inteligente — folosit în filtrele de abonare și în comenzile releului
Open Tasmota web UI → Configuration → MQTT → copy Topic value (e.g., tasmota_496D5A)

ESP-NOUS-ZASUVKA-1

Ascultător
#var tmp := RECEIVEDMSG.Payload;
Canal Wi-Fi Variabilă Doar citire
numeric json_path

Canal Wi-Fi

Ascultător
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
Putere aparentă Variabilă Doar citire
numeric Unitate: VA json_path

Putere aparentă

Ascultător
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
Factor de putere Variabilă Doar citire

Raportul dintre puterea activă și cea aparentă (cos phi) — interval de la 0 la 1, unde 1,0 indică o sarcină pur rezistivă

numeric json_path

Factor de putere

Ascultător
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
Curent Variabilă Doar citire
numeric Unitate: A json_path

Curent

Scriere
# 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
Citire (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");
Ascultător
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
Ieșire releu Comutator

Releul principal 230 V AC — la oprire solicită și reîmprospătarea datelor de energie

boolean
Valori / Stări: ON-ACCESO · OFF-SPENTO

Ieșire releu

Scrierea stării comutatorului
var value1 := IF(St = 1, "1", "0");
MQTTPUBLISH("cmnd/" +  plug1topic + "/Power", value1);

var value2 := IF(St = 0, MQTTPUBLISH("cmnd/" +  plug1topic + "/Status", "8"));
Energie pe perioadă Variabilă Doar citire

Energia consumată în perioada de telemetrie curentă

numeric Unitate: Wh json_path

Energie pe perioadă

Ascultător
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
Putere activă Variabilă Doar citire
numeric Unitate: W json_path

Putere activă

Ascultător
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 azi Variabilă Doar citire

Consumul cumulat de energie de la miezul nopții

numeric Unitate: kWh json_path

Energie azi

Ascultător
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
Putere reactivă Variabilă Doar citire
numeric Unitate: VAR json_path

Putere reactivă

Ascultător
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
Energie totală Variabilă Doar citire

Consumul cumulat de energie de la pornirea contorului — se păstrează după reporniri

numeric Unitate: kWh json_path

Energie totală

Ascultător
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
Timp de funcționare Variabilă Doar citire

Timpul de funcționare al dispozitivului în secunde de la ultima pornire

numeric Unitate: s json_path

Timp de funcționare

Ascultător
if INDEXOF(RECEIVEDMSG.Topic, "STATE") > 0
	var tmp := RECEIVEDMSG.Payload;
    var temp4 := PARSEJSON(RECEIVEDMSG.Payload, "UptimeSec", true);
    if (!ISNULL(temp4), Va := temp4);
end
Tensiune Variabilă Doar citire
numeric Unitate: V json_path

Tensiune

Ascultător
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
Puterea semnalului Wi-Fi Variabilă Doar citire

Nivelul semnalului Wi-Fi în dBm — împărțit la 100 în șablon (poate necesita recalibrare)

numeric Unitate: dBm json_path

Puterea semnalului Wi-Fi

Ascultător
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
Wi-Fi RSSI Intrare analogică Doar citire

Calitatea semnalului Wi-Fi în procente, normalizată la intervalul 0–1 pentru AnalogInput TapHome

numeric Unitate: % json_path

Wi-Fi RSSI

Ascultător
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
Conexiune: Packet Parser → MQTT
Îmbunătățiri posibile (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.

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal