Jest dobrze wg dokumentacji licznika typ dla 0x34 i 0x36 to float32. Co ci pokazuje dla tej kofiguracji?
Ja już nie korzystam z połączenia szeregowego do HA. Za dużo było tu zabawy po restartach czy kolejnych aktualizacjach. Mam teraz zrobione na ESP i zapomniałem że trzeba było o tym pamiętać po każdej zmianie w HA.
Poniżej działający kod do d1_mini pracujący już chyba od roku. W miejsce gwiazdek trzeba ustawić swoje dane. Zahashowane pozycje których nie potrzebowałem. Po ich odhashowaniu trzeba sprawdzić czy będą działać - rok temu działały.
esphome:
name: licznik-pradu-gowny
friendly_name: Licznik prądu główny
esp8266:
board: d1_mini
# Enable Home Assistant API
api:
encryption:
key: "***"
ota:
- platform: esphome
password: "***"
captive_portal:
substitutions:
# Modify variables based on your settings
hostname: "Licznik glowny"
devicename: Glowny_licznik
wifi:
ssid: ***
password: ***
logger:
level: DEBUG
baud_rate: 0
web_server:
port: 80
auth:
username: ***
password: ***
uart:
id: mod_bus
tx_pin: GPIO14
rx_pin: GPIO12
baud_rate: 9600
stop_bits: 1
modbus:
#flow_control_pin: 23
send_wait_time: 100ms
id: mod_bus_vcx
modbus_controller:
- id: vcx
## the Modbus device addr
address: 0x1
modbus_id: mod_bus_vcx
command_throttle: 30ms
setup_priority: -10
update_interval: 10s
sensor:
- platform: modbus_controller
id: faza_l1_napiecie
name: "Faza L1 napięcie"
state_class: measurement
register_type: read
address: 0x200
unit_of_measurement: "V"
value_type: S_WORD
accuracy_decimals: 2
# skip_updates: 60
filters:
- multiply: 0.1
- platform: modbus_controller
id: faza_l2_napiecie
name: "Faza L2 napięcie"
state_class: measurement
register_type: read
address: 0x201
unit_of_measurement: "V"
value_type: S_WORD
accuracy_decimals: 2
# skip_updates: 60
filters:
- multiply: 0.1
- platform: modbus_controller
id: faza_l3_napiecie
name: "Faza L3 napięcie"
address: 0x202
state_class: measurement
unit_of_measurement: "V"
register_type: read
value_type: S_WORD
accuracy_decimals: 2
# skip_updates: 60
filters:
- multiply: 0.1
# - platform: modbus_controller
## id: czestotliwosc
# name: "Częstotliwość"
# register_type: read
# state_class: measurement
# address: 0x219
# unit_of_measurement: "Hz"
# value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 60
# filters:
# - multiply: 0.01
- platform: modbus_controller
id: faza_l1_prad
name: "Faza L1 prąd"
register_type: read
state_class: measurement
address: 0x206
unit_of_measurement: "A"
value_type: S_WORD
accuracy_decimals: 3
# skip_updates: 60
filters:
- multiply: 0.01
- platform: modbus_controller
id: faza_l2_prad
name: "Faza L2 prąd"
register_type: read
state_class: measurement
address: 0x207
unit_of_measurement: "A"
value_type: S_WORD
accuracy_decimals: 3
# skip_updates: 60
filters:
- multiply: 0.01
- platform: modbus_controller
id: faza_l3_prad
name: "Faza L3 prąd"
register_type: read
state_class: measurement
address: 0x208
unit_of_measurement: "A"
value_type: S_WORD
accuracy_decimals: 3
# skip_updates: 60
filters:
- multiply: 0.01
- platform: modbus_controller
id: faza_l1_moc_czynna
name: "Faza L1 moc czynna"
register_type: read
state_class: measurement
address: 0x209
unit_of_measurement: "W"
value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 60
filters:
- multiply: 10
- platform: modbus_controller
id: faza_l2_moc_czynna
name: "Faza L2 moc czynna"
register_type: read
state_class: measurement
address: 0x20A
unit_of_measurement: "W"
value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 60
filters:
- multiply: 10
- platform: modbus_controller
id: faza_l3_moc_czynna
name: "Faza L3 moc czynna"
register_type: read
state_class: measurement
address: 0x20B
unit_of_measurement: "W"
value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 60
filters:
- multiply: 10
- platform: modbus_controller
id: calkowita_moc_czynna
name: "Całkowita moc czynna"
register_type: read
state_class: measurement
address: 0x18
unit_of_measurement: "W"
value_type: FP32
accuracy_decimals: 0
filters:
- multiply: 1000
- platform: modbus_controller
id: moc_czynna_pobrana
name: "Moc czynna pobrana"
register_type: read
icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x034
unit_of_measurement: "kWh"
value_type: FP32
accuracy_decimals: 1
skip_updates: 60
# filters:
# - multiply: 0.01
- platform: modbus_controller
id: moc_czynna_oddana
name: "Moc czynna oddana"
register_type: read
icon: mdi:circle-slice-3
device_class: energy
state_class: total_increasing
address: 0x036
unit_of_measurement: "kWh"
value_type: FP32
accuracy_decimals: 1
skip_updates: 60
# # filters:
# # - multiply: 0.01
# - platform: modbus_controller
# id: faza_l1_cos
# name: "Faza L1 cosφ"
# register_type: read
## state_class: measurement
# address: 0x215
# unit_of_measurement: ""
# value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 5
# filters:
# - multiply: 0.001
# - platform: modbus_controller
# id: faza_l2_cos
# name: "Faza L2 cosφ"
# register_type: read
# state_class: measurement
## address: 0x216
# unit_of_measurement: ""
# value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 5
# filters:
# - multiply: 0.001
# - platform: modbus_controller
# id: faza_l3_cos
# name: "Faza L3 cosφ"
## register_type: read
# state_class: measurement
# address: 0x217
# unit_of_measurement: ""
# value_type: S_WORD
# accuracy_decimals: 2
# skip_updates: 5
# filters:
# - multiply: 0.001
- platform: wifi_signal
name: ${devicename} wifi signal
update_interval: 600s
# human readable uptime sensor output to the text sensor above
- platform: uptime
name: ${devicename} Uptime in Days
id: uptime_sensor_days
update_interval: 60s
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor_days).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? String(days) + "d " : "") +
(hours ? String(hours) + "h " : "") +
(minutes ? String(minutes) + "m " : "") +
(String(seconds) + "s")
).c_str();
time:
- platform: homeassistant
id: homeassistant_time
# Text sensors with general information.
text_sensor:
# Expose WiFi information as sensors.
- platform: wifi_info
ip_address:
name: $devicename IP
bssid:
name: $devicename BSSID
# human readable update text sensor from sensor:uptime
- platform: template
name: Uptime Human Readable
id: uptime_human
icon: mdi:clock-start
#switch:
# - platform: gpio
# pin: GPIO0
# name: "Bojler switch"
# inverted: true
Moc pobrana oddana niedostępny z pomarańczowym wykrzyknikiem
czyli esphome trzeba dokupić i wstawić ten wpis ?
No tak, d1_mini za ~20 zł i konwerter rs485-ttl za ~10 zł.
Sprawdź w narzędziach deweloperskich czy czasami nie utworzyło nowej encji z inną nazwą - może pod starą nazwą do której się odwołujesz już nie istnieje. Myślisz, że esphome coś zmieni![]()
Sprawdź w logach czy masz jakieś błędy modbus
Dobrze że się odezwałeś bo korzystam do tej pory tak jak po staremu zrobiłeś i działa,ale te nowe wersje cosik zmieniają i ja już się gubię za wszelką pomoc będę wdzieczny wszystkim,a na upartego zanim te esp bym dokupił to jest coś do zmiany żeby dopisać i żeby działało?
JAk pisałęm - już nie korzystam z tej wersji połączenia, nie pomogę.
ok Zbign dziękuję
to może koledzy sprawdzam według Robinl30 i dam znać bo na bieżąco kopię w tej 17.3
Narzędzia deweloperskie statystyki na samym dole Moc oddana Pobrana pisze brak problemów szukam dalej
O wersji czego piszesz?
Czego to wersje bo mi szklana kula nie pokazuje. (Jakkolwiek czegokolwiek by nie była siedzenie na antycznych wersjach czegokolwiek nie prowadzi w dzisiejszych czasach do sukcesu, jeśli nie robisz czegoś w pełni świadomie.)
- Zasadniczo nie musisz niczego kupować, bo modbus w HA jest do ogarnięcia na co najmniej wiele sposobów (a pewnie jakiś interfejs RS-485 już masz skoro miałeś to podłączone)
- ale jeśli chcesz mieć rozwiązanie na bazie ESPHome to i owszem potrzebujesz jakiegoś modułu na bazie MCU Espressif, ale NIE TYLKO
- ten licznik ma interfejs RS-485 więc musisz mieć także przetwornik RS-485 ↔ UART LVTTL (jeśli chcesz ESP)
- no chyba, że masz jakąś inną wersję licznika z czymś innym niż RS-485 (ale o tym nawet słowem nie pisnąłeś)
Masz nicka wskazującego na techniczne wykształcenie (a może i inżynierskie?), więc nie rozumiem czemu nie czytasz dokumentacji…
Jestem operatorem cnc tam sa G-kody a tu python czy coś a tego nie kumam bo nie jest mi potrzebne,Zbign wszystko wyjasnił dla takiego gostka jak ja zrobiłem kopuj wklej idziała w wersji 10.5 2023,teraz jest wersja 17.3 2026 i klops
wersja systemu Home Assistant patrzę system wersja
w narzedziach deweloperskich stany sensor moc oddana pobrana pisze unavailable
sieć elekrtyczna klikam ołówek czyli chyba edytuj a tam jest tak
Statistics not defined
Some entities currently have no statistics metadata. If these are newly created, it may take up to 5 minutes for this to be generated for the following entities:
-
sensor.moc_pobrana
-
sensor.moc_oddana
Encja niedostępna
Stany tych skonfigurowanych encji są obecnie niedostępne:
-
sensor.moc_pobrana (unavailable)
-
sensor.moc_oddana (unavailable)
jest licznik który ma rs485 do niego podłączyłem 2 kabelki do czytnika rs485na usb taki jak pendrive wygląda wszysko tak jak Zbign opisał wstawiłem jego kod i od strzała zaczeło działać tak do dziś jest
ale do wersji 10.5 nie mogę już dodać serwera growatt bo tam też coś pozmieniali w wersji 17.3 ten serwer mogę dodać do znowu yaml nie działa i tak to wszystko wyglada
Albo w logach musi być zapis dotyczący błedu odczytu rejestrow 0x34-0x36 albo czyta pod inną nazwą. Sprawdź dobrze skoro inne rejestry czyta to musi być dobrze?
Czego wersja ??? szklaną kulę mam odpalić czy co, że to nie G-kody to wiadomo, ale chodzi o to, że nie jesteś zbyt komunikatywny w przedstawianiu swojej sytuacji…
dobra to uzupełniłeś więc jeśli podajesz nam wersję HAOS to ta informacja jest o kant tyłka roztłuc… (bo nie ma nic do działania modbus)
z drugiej strony nogą się przeżegnałem jak zrozumiałem jak bardzo masz zapuszczone HA
Jeśli chcesz nam pokazać coś użytecznego zrób w/g tego
BTW
Ten wątek jest w dziale Home Assistant, więc powinien dotyczyć natywnej integracji modbus w HA
natomiast po twoim wołaniu o pomoc zajrzałem w ostatniego wówczas posta @Zbign i był na temat ESPHome, więc założyłem, że masz właśnie ESPHome
Jeśli będziecie robili bałagan w wątkach na forum, to nikt nie znajdzie pomocy we właściwym miejscu, a z naszego punktu widzenia - mając taki bałagan w wątku jest to nie do uporządkowania moderacyjnie…
nie mam esphome bo tam znowu jakieś wywody musiałbym całe forum z wami blokować a tego nie chcę poprostu coś gdzieś jest nie halo w tych wpisach albo nowa wersja potrzebuje jakiegoś dopisku tak to rozumuję,skoro Zbign napiał że od 2024 roku trzeba usunąć count: 2 to znaczy że coś zmienili usunąłem zaczeło działać a Moc pobrana oddana nie
Wklej YAMLa takiego jak masz w tej chwili i informację o tym jakie sensory nie działają, to zajrzymy do dokumentacji (tej z posta wyżej, co mógłbyś w sumie sam zrobić)
To nie ma nic do rzeczy, tzn. to jest prawdopodobnie skutek braku zmian gdzieś gdzie to jest ważne i tworzy sensory (jakaś zaniedbana zmiana - przy każdej aktualizacji HA core jest informacja co wymaga zmian z półrocznym wyprzedzeniem, nie liczysz chyba, że będziemy czytać notatki do comiesięcznych wydań od 2023 roku, bo sam tego nie robiłeś…)
Zacząłem czytać o tych rejetrach w tej wersji jest 0x34 0x36 a jak wchodzę w opis licznika to jest 0x034 0x036 czy to ma jakiś wpływ na to?
Jeśli licznik się nie zmienił to zmieniła się co najwyżej konfiguracja modbus dla specyficznych sensorów
zrozum też jedno ale dość kluczowe - na działanie HA nie tyle ma wpływ wersja systemu operacyjnego (która wpływu praktycznie nie ma na żadne integracje), co wersja HA core - wyżej podałem jak dzielić się użyteczną informacją o instalacji HA
Uwaga radykalna zmiana wersji systemu operacyjnego może mieć wpływ na ścieżkę do dongla RS-485, ale skoro masz jakiekolwiek wskazania, to nic takiego się nie stało.
już wiemy, że sprzętowo połączenie z licznikiem masz, bo inne sensory z niego działają OK, więc to jest tylko kwestia konfiguracji integracji, której używasz
nie masz takich sensorów w tym co nam wkleiłeś w formacie całkowicie bezużytecznym, jeszcze raz wklej tego YAMLa ale tak
twój YAML prawdopodobnie wyglądał tak (użyłem AI by go odtworzyć, więc MUSISZ SPRAWDZIĆ czy faktycznie taki masz obecnie)
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
# Text to speech
tts:
- platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# Example configuration.yaml entry for a serial connection
modbus:
- name: modbus_hub
type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: N
port: /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0
stopbits: 1
sensors:
- name: "U L1"
unit_of_measurement: V
unique_id: "L1_napiecie"
device_class: power
slave: 2
address: 0x0
input_type: input
data_type: float32
precision: 2
- name: "U L2"
unit_of_measurement: V
unique_id: "L2_napiecie"
device_class: power
slave: 2
address: 0x2
input_type: input
data_type: float32
precision: 2
- name: "U L3"
unit_of_measurement: V
unique_id: "L3_napiecie"
device_class: power
slave: 2
address: 0x4
input_type: input
data_type: float32
precision: 2
- name: "Moc pobrana"
unique_id: "mocpobrana"
device_class: energy
state_class: total_increasing
address: 0x034
unit_of_measurement: "kWh"
data_type: float32
precision: 2
- name: "Moc oddana"
unique_id: "mocoddana"
device_class: energy
state_class: total_increasing
address: 0x036
unit_of_measurement: "kWh"
data_type: float32
precision: 2
- name: "Moc chwilowa"
unit_of_measurement: W
unique_id: "mocchwilowa"
device_class: power
slave: 2
address: 0x18
input_type: input
data_type: float32
precision: 2
scale: 1000
- name: "P L1"
unit_of_measurement: W
unique_id: "L1_moc"
device_class: power
slave: 2
address: 0x12
input_type: input
data_type: float32
precision: 2
scale: 1000
- name: "P L2"
unique_id: "L2_moc"
unit_of_measurement: W
device_class: power
slave: 2
address: 0x14
input_type: input
data_type: float32
precision: 2
scale: 1000
- name: "P L3"
unique_id: "L3_moc"
unit_of_measurement: W
device_class: power
slave: 2
address: 0x16
input_type: input
data_type: float32
precision: 2
scale: 1000
no i teraz widać błędy… mylisz moc z energią i napięcie z mocą?
przy czym ja się będę upierał że energia jest typu long integer (tak twierdzi dokumentacja)
Przepuściłem go przez AI (czuję się zwolniony z odpowiedzialności, ale na oko teraz powinno działać) w celu poprawek na bazie dokumentacji integracji i dokumentacji licznika (mam na myśli typy danych, gdyby wskazania w HA były niezgodne to sobie wrócisz do float32), ale pozostały nazwy gdzie energię nazywasz mocą…
(YAML już bez nieistotnego dla wątku fragmentu kluczowej konfiguracji HA, którego broń boże nie wolno usunąć!)
modbus:
- name: modbus_hub
type: serial
baudrate: 9600
bytesize: 8
method: rtu
parity: N
port: /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0
stopbits: 1
sensors:
- name: "U L1"
unit_of_measurement: V
unique_id: "L1_napiecie"
device_class: voltage
slave: 2
address: 0x0
input_type: input
data_type: float32
precision: 2
- name: "U L2"
unit_of_measurement: V
unique_id: "L2_napiecie"
device_class: voltage
slave: 2
address: 0x2
input_type: input
data_type: float32
precision: 2
- name: "U L3"
unit_of_measurement: V
unique_id: "L3_napiecie"
device_class: voltage
slave: 2
address: 0x4
input_type: input
data_type: float32
precision: 2
- name: "Moc pobrana"
unique_id: "mocpobrana"
device_class: energy
state_class: total_increasing
slave: 2
address: 0x034
input_type: input
unit_of_measurement: "kWh"
data_type: uint32
scale: 0.01
precision: 2
- name: "Moc oddana"
unique_id: "mocoddana"
device_class: energy
state_class: total_increasing
slave: 2
address: 0x036
input_type: input
unit_of_measurement: "kWh"
data_type: uint32
scale: 0.01
precision: 2
- name: "Moc chwilowa"
unit_of_measurement: W
unique_id: "mocchwilowa"
device_class: power
slave: 2
address: 0x18
input_type: input
data_type: float32
precision: 2
scale: 1000
- name: "P L1"
unit_of_measurement: W
unique_id: "L1_moc"
device_class: power
slave: 2
address: 0x12
input_type: input
data_type: float32
precision: 2
scale: 1000
- name: "P L2"
unique_id: "L2_moc"
unit_of_measurement: W
device_class: power
slave: 2
address: 0x14
input_type: input
data_type: float32
precision: 2
scale: 1000
- name: "P L3"
unique_id: "L3_moc"
unit_of_measurement: W
device_class: power
slave: 2
address: 0x16
input_type: input
data_type: float32
precision: 2
scale: 1000
Prawdopodobnie stracisz historyczne dane licznika z 3 lat od 2023 roku do teraz dla tych encji które od zawsze miały nieprawidłową konfigurację (ale może HA zaproponuje możliwość naprawy danych)
edit mam sygnał na PW że prawdopodobnie typy danych dla energii też powinny być float32 a nie uint32 wbrew dokumentacji licznika (ale jak zawsze i dokumentacja może zawierać błędy!)
Formalnie to te same rejestry. Sprawdź może dla HA 0x034 a 0x34 robi różnicę.
Dzień dobry
Nie mogłem wczoraj nic już napisać bo wywaliło że 8 postów i mnie zablokowało udało mi się jeszcze napisać do kolegi szopen i tam też mnie zablokowało 7 razy coś i forum blokuje,ale od razu z rana piszę żeby nie było że jakiś jestem gbur.Piszę wszystko w jednym poscie żeby mnie znowu nie przyblokowało.Panowie jestem wdzięczny za pomoc i rady scrypt od szopen zadziałał wszystko już gra jest bajka daję tylko wycinek z yamal gdzie teraz wszysko ok kolega szopen będzie wiedział o co chodzi bo kazał mi sprawdzić stan z licznikiem.Na poczatku wywaliło 6 cyforowe pomiary w milionach potem kazał zmienić na float 32 zrobiło się lepiej bo już pokazywało tylko 2 pozycje zmieniłem scale: na 1 i jest już dobrze pokazuje tak jak na liczniku oto fragment który pokazuje już wszystko
- name: "Moc pobrana"
unique_id: "mocpobrana"
device_class: energy
state_class: total_increasing
slave: 2
address: 0x034
input_type: input
unit_of_measurement: "kWh"
data_type: float32
scale: 1
precision: 2
Teraz wiecie już że aż 3 linijki trzeba było zmienić żeby zadziałało i tak właśnie myślałem że coś trzeba dopisać ale to dzięki wam bo sam poległem. Co do odpowiedzi do kolegi szopen tak dane zniknęły z 3 lat ,ale mam na to sposób może go znacie ale napiszę jak to robię żeby dane wróciły.W homeas gdzie wszytko działa czyli tym starym wchodzę w ustawienia system kopie zapasowe tworzę kopię klikam na nią i tam są 3 kropki jest pobierz pobiera to na komputer jest to w formie 22_czerwca_2026.tar Zamykam stary system uruchamiam nowy w nowym musi być zainstalowany terminal ssh tam trzeba sobie hasło ustawić może być krótkie na początek pobieram filezille uruchamiam wpisuje adres ip home as użytkownik root i hasło z ssh port 22 łaczy z home as po lewej komputer po prawo home as katalog backup tam kopiuję kopię systemu .tar restart home żeby widział tą kopię potem ustawienia system kopie zapasowe i przywróć .Przywracam tylko pierwsza pozycję od góry i stare dane wracają zmieniam configuration yaml ten co dział i wszystko już jest.
Dziękuję wszystkim za pomoc na pewno bedę jej jeszcze potrzebował.Teraz muszę gnać do pracy pozdrawiam.