9 469 läst · 41 svar
9k läst
41 svar
Bästa adaptern till elmätare med P1/HAN-port för interaktion med Home Assistant?
Tänkte försöka göra en jag också. Men har inte huvudet med mig för tillfället..
Hur gör jag efter att ha lödat ihop hårdvaran?
Ska jag ladda ner koden från Github och flasha den på ESP-kortet, och sedan gå in och skapa en p1mini.yaml genom HA?
Secrets.yaml har jag redan, så antar att jag helt enkelt lägger till p1mini_password och p1mini_api_key i den?
Väldigt tacksam för en steg för steg förklaring, på mellanstadienivå!
Hur gör jag efter att ha lödat ihop hårdvaran?
Ska jag ladda ner koden från Github och flasha den på ESP-kortet, och sedan gå in och skapa en p1mini.yaml genom HA?
Secrets.yaml har jag redan, så antar att jag helt enkelt lägger till p1mini_password och p1mini_api_key i den?
Väldigt tacksam för en steg för steg förklaring, på mellanstadienivå!
Nej jag lyckas inte.. Saknar uppenbarligen basala kunskaper.
Får upp enheten via USB på en PC, lyckas installera esphome genom Home Assistant, men sen begriper jag inte hur jag ska få in koderna/filerna från Github..
Får upp enheten via USB på en PC, lyckas installera esphome genom Home Assistant, men sen begriper jag inte hur jag ska få in koderna/filerna från Github..
Min mätare skickar telegram kontinuerligt och om jag tolkar koden rätt så letar den inte rätt på starten på telegrammet utan antar att första tecknet är starten. Om det inte är starten så kastar den bort alla tecken som kommit... Min teori är att min elmätare inte bryr sig om RTS (eller att jag lött fel, men tycker jag dubbelkollat allt) och att koden inte hanterar att det sprutar in meddelanden kontinuerligt. Ska försöka skriva om, men om det funkar fint för dig så känns det lite konstigt. Hur ofta får du ett telegram från din elmätare?Johan Gunverth skrev:
Du behöver komma åt filsystemet på HA maskinen och lägga dit filerna enligt strukturen nederst i instruktionerna på Github. För att komma åt filsystemet kan du antingen köra SSH mot HA och jobba därifrån (linux) ELLER så installerar du SAMBA share addon och kör från en windows maskinV Vardagsrum skrev:
Om jag förstår dataformatet rätt så kommer '/' enbart vid start på meddelande. Då borde det räcka med att kommentera ut raderna:J jerval skrev:Min mätare skickar telegram kontinuerligt och om jag tolkar koden rätt så letar den inte rätt på starten på telegrammet utan antar att första tecknet är starten. Om det inte är starten så kastar den bort alla tecken som kommit... Min teori är att min elmätare inte bryr sig om RTS (eller att jag lött fel, men tycker jag dubbelkollat allt) och att koden inte hanterar att det sprutar in meddelanden kontinuerligt. Ska försöka skriva om, men om det funkar fint för dig så känns det lite konstigt. Hur ofta får du ett telegram från din elmätare?
ESP_LOGW(TAG, "Unknown data format (0x%02X). Resetting.", read_byte);
ChangeState(states::ERROR_RECOVERY);
Men ha kvar "return;" på nästföljande rad för att söka tills den hittar '/'.
Tack snälla!J jerval skrev:
Jag kommer åt filsystemet, genom ”File editor”.
Men hur menar du att filerna ska läggas dit..? Hur gör man?
Vad ska jag flasha in på ESP-kortet och vad ska jag lägga till i filsystemet..?
Flashar genom HA’s ESPhome tillägg.
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Ska filerna ligga i en egen mapp inne i esphomemappen kanske..?
T.ex: config/esphome/beakymätaren
T.ex: config/esphome/beakymätaren
Under components, se bild. Så först flashar du igång din ESPhome så den dyker upp i HAs filsystem, sen lägger du dit components filerna.Sen går du in på rätt device under ESPHome delen i HA intefacet (ute till vä asså) och väljer rätt device, Edit, stoppa dit yaml delarna och sedan Install.V Vardagsrum skrev:
Tack för idén. Jag har provat och den fångar ett meddelande här och där, ibland flera i rad men sen missar den under flera minuter. Kanske ingen stor praktisk betydelse, men jag gillar när det funkar hela tiden, så ska datorer bete sigredarn skrev:Om jag förstår dataformatet rätt så kommer '/' enbart vid start på meddelande. Då borde det räcka med att kommentera ut raderna:
ESP_LOGW(TAG, "Unknown data format (0x%02X). Resetting.", read_byte);
ChangeState(states::ERROR_RECOVERY);
Men ha kvar "return;" på nästföljande rad för att söka tills den hittar '/'.
Jag tror att det går för fort utan fungerade RTS handskakning, med 115200 baudrate kommer ca 11500 tecken / s , dvs mer än 10 per millisekund. Ska nog skriva om den så att den fyller inbufferten och sedan letar och parse:ar ett meddelade ur den. Sen kastar resten och börjar om. Men först dubbelkolla med Gbg energi om de kan justera baudrate eller om de ställt in nåt annat knepigt som att ignorera flödeskontrollen.
Vad händer om du sätter RTS att aldrig bli aktiv?
Alltså såhär:
buffer_size: 3072 # Needs to be large enough to hold one entire update from the meter.
secondary_p1: false
on_ready_to_receive:
then:
- switch.turn_off: p1_rts #org ON
- switch.turn_on: status_led
on_update_received:
then:
- switch.turn_off: p1_rts #org off
- switch.turn_off: status_led
on_communication_error:
then:
- switch.turn_off: p1_rts #org off
- switch.turn_off: status_led
sensor:
- platform: wifi_signal
Tack, verkligen! 👍 Snällt av dig! Nu börjar jag få lite bättre kläm på det.J jerval skrev:
Har inte lyckats helt än, då installationen lipar över [platform] is an invalid option for [ota] samt ”Reading failed: BAD_INDICATOR errno11”.
Har väl någonting med API:n att göra..
Jag använder en API-nyckel som jag genererat på sidan som länkas från Github, dvs det är den jag angett i secrets.yaml
På tal om secrets, ska wifi SSID skrivas in i ”huvud” secrets.yaml som ligger i config/ eller ska man skapa en till och lägga i esphome-mappen eller någon av subfoldrarna där?
Och en hårdvarufråga! Lyser eller blinkar era P1r när de är anslutna till HAN-porten i elmätaren?
Min lös med fast blått sken under hela tiden den var ansluten till PC, när jag skulle testa den i elmätaren så hände det inte ett smack dock, varken sken eller blink 🤔
Mätte med USB-multimeter 2mA med reset-knappen intryckt (dioden är då släckt), 5mA med dioden tänd. Girig diod, men elmätaren ska väl ge åtminstone 250mA genom HAN-porten, så det torde inte vara där felet ligger.
Jag provar att löda en till, så får vi se.
Redigerat:
Produkter som diskuteras: "multimeter"
Multimetrar
Multimetrar är mångsidiga instrument som används inom elektronik och elteknik för att mäta olika parametrar som ström, spänning och resistans. De kan vara digitala eller analoga och är ett oumbärligt verktyg för alla som regelbundet
Läs mer
Den nya lyser/blinkar, och jag lyckas även se värden från elmätaren! 😀
Stort tack för hjälpen @jerval
Tyvärr kan jag inte se något genom HA, utan endast genom visit/p1mini.local
Försökte använda p1mini.yaml rakt av, från Github, men HA klagade hela tiden vid installationen, så jag fick stryka vissa delar för att det ens skulle gå att installera.
Såhär ser min p1mini.yaml ut:
Hur ser era .yamls ut?
[edit]Äh, indentationen blir helt fel när jag postar koden här, men HA klagar inte på den iaf
Bilderna ovan visar vad jag ser i tillägger, och sen när jag klickar på ”visit”.
Kan tyvärr inte skapa några sensorer till HA, fören jag vet vad jag gjort fel i installationen.
Stort tack för hjälpen @jerval
Tyvärr kan jag inte se något genom HA, utan endast genom visit/p1mini.local
Försökte använda p1mini.yaml rakt av, från Github, men HA klagade hela tiden vid installationen, så jag fick stryka vissa delar för att det ens skulle gå att installera.
Såhär ser min p1mini.yaml ut:
Sen fortsätter det, det är bara parametrarna ”där uppe” som jag ändrat.substitutions:
device_name: p1mini
device_password: !secret p1mini_password
device_api_key: !secret p1mini_api_key
esphome:
name: ${device_name}
esp8266:
board: d1_mini
wifi:
ssid: XXX
password: XXX
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "esp-${device_name}"
password: "${device_password}"
captive_portal:
# Enable logging
logger:
level: INFO # Set to DEBUG if you are having issues!
baud_rate: 0 # disable logging over uart
# Enable Home Assistant API
web_server:
port: 80
ota: false
# auth:
# username: admin
# password: "${device_password}"
external_components:
- source: components
switch:
- platform: gpio
id: p1_rts # Not needed if the RTS signal is not connected to a GPIO
pin:
number: D2
- platform: gpio
id: status_led
pin:
number: D4
inverted: true
binary_sensor:
- platform: gpio
id: secondary_p1_rts # Currently not used, but make sure D0 is configured as input in case it is connected.
pin:
number: D0
mode: INPUT_PULLDOWN
inverted: false
uart:
- id: my_uart_1
tx_pin:
number: TX
inverted: true
mode: OUTPUT_OPEN_DRAIN
rx_pin:
number: RX
inverted: true # Set to false if inverting in hardware
mode: INPUT_PULLUP # Set to INPUT if inverting in hardware
baud_rate: 115200
rx_buffer_size: 512 # Probably not needed, but it is good to have some margin.
# - id: my_uart_2
# ...
p1_mini:
- id: p1_mini_1
uart_id: my_uart_1
minimum_period: 2s # Should be 0 (zero) if the RTS signal is not used.
buffer_size: 3072 # Needs to be large enough to hold one entire update from the meter.
secondary_p1: false
on_ready_to_receive:
then:
- switch.turn_on: p1_rts
- switch.turn_on: status_led
on_update_received:
then:
- switch.turn_off: p1_rts
- switch.turn_off: status_led
on_communication_error:
then:
- switch.turn_off: p1_rts
- switch.turn_off: status_led
# - id: p1_mini_2
# uart_id: my_uart_2
# ...
Hur ser era .yamls ut?
[edit]Äh, indentationen blir helt fel när jag postar koden här, men HA klagar inte på den iaf
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Bilderna ovan visar vad jag ser i tillägger, och sen när jag klickar på ”visit”.
Kan tyvärr inte skapa några sensorer till HA, fören jag vet vad jag gjort fel i installationen.
Redigerat:
Min förhoppning var att kunna ge bort några sådana här till vänner och bekanta som saknar både HA och teknikintresse.Johan Gunverth skrev:Det är ett rent interface med ett webinterface i form av ESPhome. I princip läser du bara av momentana värden. Man behöver ha något i ”bakändan” som lagrar de momentana värdena kontinuerligt och kan presentera dem via beräkningar. Home Assistant är ett av de verktygen. Om det finns några andra verktyg i form av appar vet jag inte.
http://p1mini.local/ ger ju iaf de momentana värdena, åtkomligt från telefon/dator/Westerberg på samma nätverk.
Så för enkel felsökning/”vad ligger på vilken huvudsäkring”/”hur mycket drar mitt SPA-bad”, så borde folk kunna ha nytta av en sådan här läsare!
Torde väl ”bara” vara att ange aktuellt SSID samt PW, till det nätverk där ens vän tänkt ansluta Beakyn? Eller tänker jag fel?
Jag skapade en egen secrets.yaml i ESPhome mappenV Vardagsrum skrev:Tack, verkligen! 👍 Snällt av dig! Nu börjar jag få lite bättre kläm på det.
Har inte lyckats helt än, då installationen lipar över [platform] is an invalid option for [ota] samt ”Reading failed: BAD_INDICATOR errno11”.
Har väl någonting med API:n att göra..
Jag använder en API-nyckel som jag genererat på sidan som länkas från Github, dvs det är den jag angett i secrets.yaml
På tal om secrets, ska wifi SSID skrivas in i ”huvud” secrets.yaml som ligger i config/ eller ska man skapa en till och lägga i esphome-mappen eller någon av subfoldrarna där?
Och en hårdvarufråga! Lyser eller blinkar era P1r när de är anslutna till HAN-porten i elmätaren?
Min lös med fast blått sken under hela tiden den var ansluten till PC, när jag skulle testa den i elmätaren så hände det inte ett smack dock, varken sken eller blink 🤔
Mätte med USB-multimeter 2mA med reset-knappen intryckt (dioden är då släckt), 5mA med dioden tänd. Girig diod, men elmätaren ska väl ge åtminstone 250mA genom HAN-porten, så det torde inte vara där felet ligger.
Jag provar att löda en till, så får vi se.
Så här ser min yaml-fil ut (notera att jag har viss problem själv, se tråden...):V Vardagsrum skrev:Den nya lyser/blinkar, och jag lyckas även se värden från elmätaren! 😀
Stort tack för hjälpen @jerval
Tyvärr kan jag inte se något genom HA, utan endast genom visit/p1mini.local
Försökte använda p1mini.yaml rakt av, från Github, men HA klagade hela tiden vid installationen, så jag fick stryka vissa delar för att det ens skulle gå att installera.
Såhär ser min p1mini.yaml ut:
Sen fortsätter det, det är bara parametrarna ”där uppe” som jag ändrat.
Hur ser era .yamls ut?
[edit]Äh, indentationen blir helt fel när jag postar koden här, men HA klagar inte på den iaf[bild][bild]
Bilderna ovan visar vad jag ser i tillägger, och sen när jag klickar på ”visit”.
Kan tyvärr inte skapa några sensorer till HA, fören jag vet vad jag gjort fel i installationen.
substitutions:
device_name: HAN-reader
name: esphome-web-c9ccc9
friendly_name: ESPHome U3
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: esphome.web
version: dev
esp8266:
board: esp01_1m
# Enable logging
logger:
level: WARN # Set to DEBUG if you are having issues!
baud_rate: 0
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
# Allow provisioning Wi-Fi via serial
# improv_serial:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome-Web-xxxxx"
password: "xxxxxxxxxx"
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:
external_components:
- source: components
switch:
- platform: gpio
id: p1_rts # Not needed if the RTS signal is not connected to a GPIO
pin:
number: D2
- platform: gpio
id: status_led
pin:
number: D4
inverted: true
# binary_sensor:
# - platform: gpio
# id: secondary_p1_rts # Currently not used, but make sure D0 is configured as input in case it is connected.
# pin:
# number: 0
# mode: INPUT_PULLDOWN
# inverted: false
uart:
id: my_uart
tx_pin:
number: TX
inverted: true
mode: OUTPUT_OPEN_DRAIN
rx_pin:
number: RX
inverted: true # Set to false if inverting in hardware
mode: INPUT_PULLUP # Set to INPUT if inverting in hardware
baud_rate: 115200
data_bits: 8
parity: NONE
stop_bits: 1
rx_buffer_size: 512 # Probably not needed, but it is good to have some margin.
p1_mini:
id: p1_mini_1
uart_id: my_uart
minimum_period: 2s # Should be 0 (zero) if the RTS signal is not used.
buffer_size: 3072 # Needs to be large enough to hold one entire update from the meter.
secondary_p1: false
on_ready_to_receive:
then:
- switch.turn_on: p1_rts #org ON
- switch.turn_on: status_led
on_update_received:
then:
- switch.turn_on: p1_rts #org off
- switch.turn_off: status_led
on_communication_error:
then:
- switch.turn_on: p1_rts #org off
- switch.turn_off: status_led
sensor:
- platform: wifi_signal
name: "${device_name} WiFi Signal"
update_interval: 10s
- platform: p1_mini
obis_code: "1.8.0"
name: "Cumulative Active Import"
unit_of_measurement: kWh
Jag misstänker att detta fungerarJ jerval skrev:Tack för idén. Jag har provat och den fångar ett meddelande här och där, ibland flera i rad men sen missar den under flera minuter. Kanske ingen stor praktisk betydelse, men jag gillar när det funkar hela tiden, så ska datorer bete sig
Jag tror att det går för fort utan fungerade RTS handskakning, med 115200 baudrate kommer ca 11500 tecken / s , dvs mer än 10 per millisekund. Ska nog skriva om den så att den fyller inbufferten och sedan letar och parse:ar ett meddelade ur den. Sen kastar resten och börjar om. Men först dubbelkolla med Gbg energi om de kan justera baudrate eller om de ställt in nåt annat knepigt som att ignorera flödeskontrollen.
Vad händer om du sätter RTS att aldrig bli aktiv?
Alltså såhär:
buffer_size: 3072 # Needs to be large enough to hold one entire update from the meter.
secondary_p1: false
on_ready_to_receive:
then:
- switch.turn_off: p1_rts #org ON
- switch.turn_on: status_led
on_update_received:
then:
- switch.turn_off: p1_rts #org off
- switch.turn_off: status_led
on_communication_error:
then:
- switch.turn_off: p1_rts #org off
- switch.turn_off: status_led
sensor:
- platform: wifi_signal
case states::IDENTIFYING_MESSAGE:
if (!available()) {
constexpr unsigned long max_wait_time_ms{ 60000 };
if (max_wait_time_ms < loop_start_time - m_identifying_message_time) {
ESP_LOGW(TAG, "No data received for %d seconds.", max_wait_time_ms / 1000);
ChangeState(states::ERROR_RECOVERY);
}
break;
}
while (available()) {
char const read_byte{ GetByte() };
if (read_byte == '/') {
ESP_LOGD(TAG, "ASCII data format");
m_data_format = data_formats::ASCII;
m_message_buffer[m_message_buffer_position++] = read_byte;
ChangeState(states::READING_MESSAGE);
break;
}
else if (read_byte == 0x7e) {
ESP_LOGD(TAG, "BINARY data format");
m_data_format = data_formats::BINARY;
m_message_buffer[m_message_buffer_position++] = read_byte;
ChangeState(states::READING_MESSAGE);
break;
}
else {
//ESP_LOGW(TAG, "Unknown data format (0x%02X). Resetting.", read_byte);
//ChangeState(states::ERROR_RECOVERY);
//return;
}
}
// Not breaking here! The delay caused by exiting the loop function here can cause
// the UART buffer to overflow, so instead, go directly into the READING_MESSAGE
// part.
case states::READING_MESSAGE:
Efter att ha läst meddelandet på slutet så ja, det är nog inte snabbt nog att göra exit ur denna klass för att sedan bli återropad lite senare.
(beskyll inte mig för den hemska kodformateringen, behåller bara vad som var där innan)