Dodanie produkcji z paneli do dashboard Energia

Cześć.
Zrobiłem w NodeRed odczyt danych z regulatora grzałek, m.in. ilość wyprodukowanych kWh. Dodałem encje do HA i wszystko to super działa, ale chciałbym to jeszcze dodać do dashboard Energia i nie umiem tego zobić.
Wyskakuje mi:
nodered1
Jak by typ danych był nieprawidłowy.
Próbowałem już na rożne sposoby i nie potrafie tego ogarnac.
Nie wiem gdzie to zmienić.
Jakieś sugestie?

flows (5).json (21,3 KB)

Aby dodać do dasboard Energy, encje muszą mieć odpowiednie “device_class” i “state_class” np. coś w ten deseń

sensor.pv_maksymalny_uzysk_energii

state_class: total_increasing
unit_of_measurement: kWh
friendly_name: Produkcja
icon: mdi:solar-power
device_class: energy

Jeśli encje nie mają ze żródła to modyfikacja encji w customize.yaml o brakujące np.

sensor.pv_maksymalny_uzysk_energii:
  device_class: energy
  state_class: total_increasing

PS. Używasz w swoim flow nodów tworzących encję w HA więc tam możesz uzupełnić brakujące atrybuty.


Jak widać z obrazka Twoja encja to nie liczba tylko string czyli ciąg znaków bo jak łatwo zauważyć jest tam przecinek zamiast kropki:
image
stąd problem z dodaniem do dashboardu Energia. Zacznij od weryfikacja jak powstała ta encja w HA, pokaż definicję tej encji, sprawdź w Narzędzia deweloperskich jak faktycznie wygląda ta encja, tam powinna wyswietlać się kropka, mimo, że w dashbardzie jest przecinek.

Utworzył ją w NR jak na obrazku wyżej.

@MariuszAK prośba o sprawdzenie u siebie: wyświetlany jest przecinek w dashboardach, w Narzędziach deweloperskich jest kropka, tak mam u siebie i dotyczy to wszystkich encji (energia, temperatura, itd) typy liczba.

Tak,tak w obu przypadkach.
Output type “COUNT” ??

Nie używam Node-REDa więc nie mam pojęcia, w internecie jest kilka przykładów zamiany tekstu na liczbę, trzeba sprawdzić.

spróbuj użyć w nodzie funkcji

var result = Number(msg.payload);
msg.payload = result;
return msg;

wstawionym między “edit get entities” a “ha entity config”

Uzupełniłem:
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh

Nic to nie dało.

Sprawdziłem i jest przecinek. Czyli wychodzi na to że winny jest właśnie ten przecinek.
Po za tym zauważyłem teraz, że jak regulator zwraca wartość to zwraca z przecinkiem:
nrr

Niestety nie zadziałało:

Jakiś inny sposób jak zamienić przecinek na kropkę?

Podłącz debug zamiast funkcion i pokaż co pokazuje (rozwiń dane…)

A co za krzaki masz w tym odczycie?
Screenshot - 02.05.2023 , 12_23_12

nrrrr

Krzaki nie wiem po co są (takie regulator zwraca), ale po “AA” są dane które mnie interesują, kolejno:
Aktualna moc regulatora
Aktualna temperatura CWU (trzeba podzielić przez 10)
Uzysk energii
Status pracy regulatora
Itp…
Wartości oddzielone średnikiem.

@linuksowiec spróbuj teraz z funkcją

var result = Number(msg.payload.replace(",", "."));
msg.payload = result;
return msg;

1 polubienie

Działa :slight_smile:
Dzięki za pomoc.