A skąd bierzesz energię, bo na liście atrybutów nie widzę takiej pozycji (są napięcie, prąd, moc itp)?
Podobno Shelly PM2/2PM Gen4 w wersji Zigbee implementuje klaster Smart Energy (0x0702), czyli Zigbee Metering i tam jest zawarta zużyta energia. A Ty chyba nie masz tego klastra.
Jak to się mówi "Nie ucz ojca dzieci robić", ale AI wymyslił taką implementację do Twojego modułu (nie wiem czy to ma jakiś sens, jeśli nie ma to przepraszam):
void ZigbeeGateway::zbReadMeteringCluster(
esp_zb_zcl_addr_t src_address,
uint16_t src_endpoint,
uint16_t cluster_id,
esp_zb_zcl_attribute_t *attribute)
{
if (cluster_id != ESP_ZB_ZCL_CLUSTER_ID_METERING)
return;
switch (attribute->id)
{
case 0x0000: // CurrentSummationDelivered
if (attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U48 && attribute->data.value)
{
uint64_t raw_value = 0;
memcpy(&raw_value, attribute->data.value, 6); // 48-bit
// zapamiętaj wynik
_last_device_query.metering_current_summation_delivered = raw_value;
log_i("Metering: CurrentSummationDelivered = %llu (raw)", raw_value);
// sygnalizacja zakończenia
xSemaphoreGive(gt_lock);
}
break;
case 0x0301: // Multiplier
_last_device_query.metering_multiplier = *((uint32_t*)attribute->data.value);
log_i("Metering: Multiplier = %u", _last_device_query.metering_multiplier);
break;
case 0x0302: // Divisor
_last_device_query.metering_divisor = *((uint32_t*)attribute->data.value);
log_i("Metering: Divisor = %u", _last_device_query.metering_divisor);
break;
default:
log_i("Metering cluster: attribute 0x%04X received", attribute->id);
break;
}
}
query_basic_cluster_data_t ZigbeeGateway::_last_device_query;
uint64_t metering_current_summation_delivered;
uint32_t metering_multiplier;
uint32_t metering_divisor;
bool ZigbeeGateway::zbQueryMeteringCluster(zbg_device_params_t *device)
{
esp_zb_zcl_read_attr_cmd_t read_req = {};
read_req.address_mode = ESP_ZB_APS_ADDR_MODE_64_ENDP_PRESENT;
memcpy(read_req.zcl_basic_cmd.dst_addr_u.addr_long, device->ieee_addr, sizeof(esp_zb_ieee_addr_t));
read_req.zcl_basic_cmd.src_endpoint = _endpoint;
read_req.zcl_basic_cmd.dst_endpoint = device->endpoint;
read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_METERING;
uint16_t attributes[] = {0x0000, 0x0301, 0x0302}; // energy, multiplier, divisor
for (int i = 0; i < 3; i++)
{
read_req.attr_number = 1;
read_req.attr_field = &attributes;
log_i("Query metering attribute 0x%04X", attributes);
esp_zb_lock_acquire(portMAX_DELAY);
uint8_t tsn = esp_zb_zcl_read_attr_cmd_req(&read_req);
esp_zb_lock_release();
log_i("Metering tsn 0x%x", tsn);
if (xSemaphoreTake(gt_lock, pdMS_TO_TICKS(3000)) != pdTRUE)
{
log_e("Timeout reading metering attribute 0x%04X", attributes);
return false;
}
}
return true;
}
double ZigbeeGateway::getEnergyKWh()
{
if (_last_device_query.metering_divisor == 0)
return 0;
return (double)_last_device_query.metering_current_summation_delivered *
(double)_last_device_query.metering_multiplier /
(double)_last_device_query.metering_divisor;
}
Shelly PM2 Gen4 [bramka ZigBee]
Moderator: vajera
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
djack2017 wrote: Mon Feb 23, 2026 6:04 pm A skąd bierzesz energię, bo na liście atrybutów nie widzę takiej pozycji (są napięcie, prąd, moc itp)?
Podobno Shelly PM2/2PM Gen4 w wersji Zigbee implementuje klaster Smart Energy (0x0702), czyli Zigbee Metering i tam jest zawarta zużyta energia. A Ty chyba nie masz tego klastra.
Jak to się mówi "Nie ucz ojca dzieci robić", ale AI wymyslił taką implementację do Twojego modułu (nie wiem czy to ma jakiś sens, jeśli nie ma to przepraszam):
void ZigbeeGateway::zbReadMeteringCluster(
esp_zb_zcl_addr_t src_address,
uint16_t src_endpoint,
uint16_t cluster_id,
esp_zb_zcl_attribute_t *attribute)
{
if (cluster_id != ESP_ZB_ZCL_CLUSTER_ID_METERING)
return;
switch (attribute->id)
{
case 0x0000: // CurrentSummationDelivered
if (attribute->data.type == ESP_ZB_ZCL_ATTR_TYPE_U48 && attribute->data.value)
{
uint64_t raw_value = 0;
memcpy(&raw_value, attribute->data.value, 6); // 48-bit
// zapamiętaj wynik
_last_device_query.metering_current_summation_delivered = raw_value;
log_i("Metering: CurrentSummationDelivered = %llu (raw)", raw_value);
// sygnalizacja zakończenia
xSemaphoreGive(gt_lock);
}
break;
case 0x0301: // Multiplier
_last_device_query.metering_multiplier = *((uint32_t*)attribute->data.value);
log_i("Metering: Multiplier = %u", _last_device_query.metering_multiplier);
break;
case 0x0302: // Divisor
_last_device_query.metering_divisor = *((uint32_t*)attribute->data.value);
log_i("Metering: Divisor = %u", _last_device_query.metering_divisor);
break;
default:
log_i("Metering cluster: attribute 0x%04X received", attribute->id);
break;
}
}
query_basic_cluster_data_t ZigbeeGateway::_last_device_query;
uint64_t metering_current_summation_delivered;
uint32_t metering_multiplier;
uint32_t metering_divisor;
bool ZigbeeGateway::zbQueryMeteringCluster(zbg_device_params_t *device)
{
esp_zb_zcl_read_attr_cmd_t read_req = {};
read_req.address_mode = ESP_ZB_APS_ADDR_MODE_64_ENDP_PRESENT;
memcpy(read_req.zcl_basic_cmd.dst_addr_u.addr_long, device->ieee_addr, sizeof(esp_zb_ieee_addr_t));
read_req.zcl_basic_cmd.src_endpoint = _endpoint;
read_req.zcl_basic_cmd.dst_endpoint = device->endpoint;
read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_METERING;
uint16_t attributes[] = {0x0000, 0x0301, 0x0302}; // energy, multiplier, divisor
for (int i = 0; i < 3; i++)
{
read_req.attr_number = 1;
read_req.attr_field = &attributes;
log_i("Query metering attribute 0x%04X", attributes);
esp_zb_lock_acquire(portMAX_DELAY);
uint8_t tsn = esp_zb_zcl_read_attr_cmd_req(&read_req);
esp_zb_lock_release();
log_i("Metering tsn 0x%x", tsn);
if (xSemaphoreTake(gt_lock, pdMS_TO_TICKS(3000)) != pdTRUE)
{
log_e("Timeout reading metering attribute 0x%04X", attributes);
return false;
}
}
return true;
}
double ZigbeeGateway::getEnergyKWh()
{
if (_last_device_query.metering_divisor == 0)
return 0;
return (double)_last_device_query.metering_current_summation_delivered *
(double)_last_device_query.metering_multiplier /
(double)_last_device_query.metering_divisor;
}
Bramka ma klaster METERING od ponad roku - zajrzyj do zbGateway.cpp i z2s_devices_table.cpp
W GUI też jest - bodajże jako SIMPLE METERING - tam jest atrybut 0x0000 - energia oraz atrybutu podzielnika i mnożnika energii.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
Tutaj sam korzystasz z tego klastra - SIMPLE METERING to właśnie 0x0702djack2017 wrote: Sat Feb 21, 2026 11:31 amPrąd, napięcie, częstotliwość i moc mają poprawne wskazania.vajera wrote: Fri Feb 20, 2026 9:22 pm Sprawdź jeszcze w GUI, zakładka C&A, klaster SIMPLE METERING - odczytaj atrybuty Divisor i Multiplier?
Divisor:
Data value is 1000000(0xF4240)
Data type is U48(0x25)
Data size is 0x6
Multiplier:
Data value is 1(0x1)
Data type is U48(0x25)
Data size is 0x6
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
djack2017
- Posts: 784
- Joined: Mon Nov 27, 2017 7:36 am
- Been thanked: 1 time
OK, sorry. Szukałem w ZigbeeGateway.cpp ale nie znalazłem. Poszukam jeszcze raz.
W takim razie czemu Twoja odczytana energia jest inna niż ta którą wyświetla konsola shelly?
W takim razie czemu Twoja odczytana energia jest inna niż ta którą wyświetla konsola shelly?
__________________________________________________________
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
To prawda, ale ja w domu mam normalne gniazdka ścienne Zigbee - możesz mieć takie 2 obok siebie i do tego jeszcze port USB w gniazdku (A+C). Nie wspomnę już, że takie gniazdko pełni dodatkowo funkcję routera Zigbee.djack2017 wrote: Mon Feb 23, 2026 5:58 pmTylko, że Sonoff S60 TPF nie jest dwukanałowy i do puszki 70mm go nie wsadzę.vajera wrote: Mon Feb 23, 2026 4:28 pm Tak na marginesie, porównując stosunek jakości i ceny, to Shelly wypada słabo z innymi urządzeniami Zigbee - chociażby z takim Sonoff S60TPF.
Możesz też mieć bezpiecznik Zigbee w rozdzielnicy - również z pomiarem energii.
Są również przekaźniki 2 kanałowe z pomiarem w ⅓ ceny Shelly.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
A możesz zrobić logi z pracy przekaźnika pod obciążeniem, np. suszarką?djack2017 wrote: Mon Feb 23, 2026 6:54 pm OK, sorry. Szukałem w ZigbeeGateway.cpp ale nie znalazłem. Poszukam jeszcze raz.
W takim razie czemu Twoja odczytana energia jest inna niż ta którą wyświetla konsola shelly?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
djack2017
- Posts: 784
- Joined: Mon Nov 27, 2017 7:36 am
- Been thanked: 1 time
A ja w puszkach za grzejnikami mam Shelly 2.5 (od początku 2021) z moim firmware. Dwa z pięciu ostatnio padły więc szukam zamiennika.vajera wrote: Mon Feb 23, 2026 6:54 pmTo prawda, ale ja w domu mam normalne gniazdka ścienne Zigbee - możesz mieć takie 2 obok siebie i do tego jeszcze port USB w gniazdku (A+C). Nie wspomnę już, że takie gniazdko pełni dodatkowo funkcję routera Zigbee.djack2017 wrote: Mon Feb 23, 2026 5:58 pmTylko, że Sonoff S60 TPF nie jest dwukanałowy i do puszki 70mm go nie wsadzę.vajera wrote: Mon Feb 23, 2026 4:28 pm Tak na marginesie, porównując stosunek jakości i ceny, to Shelly wypada słabo z innymi urządzeniami Zigbee - chociażby z takim Sonoff S60TPF.
Możesz też mieć bezpiecznik Zigbee w rozdzielnicy - również z pomiarem energii.
Są również przekaźniki 2 kanałowe z pomiarem w ⅓ ceny Shelly.
__________________________________________________________
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
W cenie jednego Shelly masz 2-3 inne urządzenia, ale nic ns siłę.djack2017 wrote: Mon Feb 23, 2026 6:57 pmA ja w puszkach za grzejnikami mam Shelly 2.5 (od początku 2021) z moim firmware. Dwa z pięciu ostatnio padły więc szukam zamiennika.vajera wrote: Mon Feb 23, 2026 6:54 pmTo prawda, ale ja w domu mam normalne gniazdka ścienne Zigbee - możesz mieć takie 2 obok siebie i do tego jeszcze port USB w gniazdku (A+C). Nie wspomnę już, że takie gniazdko pełni dodatkowo funkcję routera Zigbee.djack2017 wrote: Mon Feb 23, 2026 5:58 pm
Tylko, że Sonoff S60 TPF nie jest dwukanałowy i do puszki 70mm go nie wsadzę.
Możesz też mieć bezpiecznik Zigbee w rozdzielnicy - również z pomiarem energii.
Są również przekaźniki 2 kanałowe z pomiarem w ⅓ ceny Shelly.
Zróbmy tak - dodam te mnożniki/dzielniki na sztywno, tylko odczytaj mi jeszcze te z klastra ELECTRICAL MEASUREMENT (6 sztuk).
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
djack2017
- Posts: 784
- Joined: Mon Nov 27, 2017 7:36 am
- Been thanked: 1 time
1. Możesz podaj jakiś przykład bo ja nie znalazłem za ⅓ ceny Shelly (126zł)vajera wrote: Mon Feb 23, 2026 6:54 pm Są również przekaźniki 2 kanałowe z pomiarem w ⅓ ceny Shelly.
2. Nie znalazłem w Twoim wykazie - obsługujesz takie urządzenie: "Uniwersalny miniaturowy moduł RTX ZRS1EM"
(https://www.rtx24.pl/tuya-zigbee-sterow ... p-797.html)
__________________________________________________________
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
ad.1. W czasie gdy dodawałem Twoje Shelly widziałem w sieci ceny > 150 zł, teraz pokazuje mi 140 zł?djack2017 wrote: Tue Feb 24, 2026 4:46 pm1. Możesz podaj jakiś przykład bo ja nie znalazłem za ⅓ ceny Shelly (126zł)vajera wrote: Mon Feb 23, 2026 6:54 pm Są również przekaźniki 2 kanałowe z pomiarem w ⅓ ceny Shelly.
2. Nie znalazłem w Twoim wykazie - obsługujesz takie urządzenie: "Uniwersalny miniaturowy moduł RTX ZRS1EM"
(https://www.rtx24.pl/tuya-zigbee-sterow ... p-797.html)
ad.1. Podrzucę przykłady, ale muszę znaleźć wolną chwilę.
ad. 2. Dodanie tego urządzenia zajmie < 5 minut (o ile jeszcze nie ma go w bazie)
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
