Open nldroid opened 4 years ago
Is er een mogelijkheid om UART0 te gebruiken via ESPHome? Want die kan je volgens mij de boolean Inverted
meegeven, misschien is het dan mogelijk om de meter uit te lezen zonder extra hardware?
Ik ben niet zo van de software, meer van de hardware.
Een ESP8266 (D1mini ESP8266) heeft slechts 1 hardware UART (UART0). Deze wordt in ESPHome gebruikt voor de logger met output via de USB poort.
Daarom wordt de software UART van ESPHome gebruikt voor applicaties. En die heeft helaas geen Inverted
boolean. De logger kan uitgezet worden in ESPHome, zodat de UART0 voor andere dingen ingezet kan worden.
Misschien kan iemand voor ESPHome een Inverted
boolean voorstellen/maken?
Een ESP32 (D1mini ESP32) heeft daarentegen 4 hardware UARTs (UART 0-3). Die is met ESPHome zeer geschikt voor het uitlezen van de slimme meter.
Waarom is de D1mini ESP32 minder populair? De vormfactor is hetzelfde als de D1mini 8266, maar de prijs is circa 3x hoger. Een D1mini EPS8266 kost ongeveer EUR 1,50. Een D1mini ESP32 kost ongeveer EUR 5,00.
Voor mijn slimme meter zou ik liever een ESP32 willen gebruiken, want extra hardware om een signaal te inverteren is niet handig. Bovendien heeft de ESP32 een stabielere WiFi omdat het meerdere processor cores heeft. (hogere prijs komt uiteraard door extra hardware functionaliteit)
Ja ik beschik ook over een ESP32. Heb het uart component al aangepast naar Inverted
, vanavond eens kijken of 't werkt met dit custom_component eroverheen.
Misschien dat ik ga kijken of ik die boolean configureerbaar kan maken.
Het principe zou iig moeten werken, volgens deze gast: https://www.esp32.com/viewtopic.php?t=4719#p20712
Dat zou mooi zijn. Dan heeft een ESP32 ineens extra toegevoegde waarde. Scheelt extra hardware.
Ik heb een ESP32 board besteld. Moet uit China komen maar als hij binnen is, kan ik er mee testen.
Ik heb een ESP32 board besteld. Moet uit China komen maar als hij binnen is, kan ik er mee testen.
Ik heb er nog wel eentje liggen. Zal ik die via PostNL naar je sturen?
Ik heb een ESP32 board besteld. Moet uit China komen maar als hij binnen is, kan ik er mee testen.
Ik heb er nog wel eentje liggen. Zal ik die via PostNL naar je sturen?
Alleen als je zelf haast hebt :) Ik heb mijn Wemos (en de rest) inmiddels op een PCB gesoldeerd en vanavond print ik het laatste onderdeel van het kastje met de 3D printer. Voor mijzelf is het goed zo.
Ik heb een ESP32 board besteld. Moet uit China komen maar als hij binnen is, kan ik er mee testen.
Ik heb er nog wel eentje liggen. Zal ik die via PostNL naar je sturen?
Alleen als je zelf haast hebt :) Ik heb mijn Wemos (en de rest) inmiddels op een PCB gesoldeerd en vanavond print ik het laatste onderdeel van het kastje met de 3D printer. Voor mijzelf is het goed zo.
Altijd leuk om voortgang te boeken., maar.... het moet voor jou niet op werk gaan lijken. Dus ik wacht je resultaat af zonder tijddruk van mijn zijde.
Misschien wel leuk om foto's van jouw eindresultaat te posten.
Deze ligt nu in mijn meterkast. Zal wel een plaatje schieten met het kastje er omheen.
waar halen jullie die rj11/rj12? kabels. Ik heb alleen maar rj11 telefoon kabel liggen met maar 2 aangesloten aderen :tada:
verder lijkt alles te werken, hij is al zichtbaar in home-assistant, nu nog een donor kabel vinden dus.
waar halen jullie die rj11/rj12? kabels. Ik heb alleen maar rj11 telefoon kabel liggen met maar 2 aangesloten aderen π
verder lijkt alles te werken, hij is al zichtbaar in home-assistant, nu nog een donor kabel vinden dus.
Ik heb nog wel een kabeltje liggen van de tijd waarin we met een modem werkten. Stuur me een PM met je adres en ik doe 'm in een envelop voor je. Of anders bij een lokale elektronica hobby zaak. Die knijpen ook wel een stekkertje aan een stukje kabel voor je.
De Gamma heeft ze (in de winkel goedkoper dan online). En je hebt speciale kabelshops zoals allekabels.nl en onlinekabelshop.nl.
Het werkt!
Nog wel hardcoded, maar naast een 1.5k weerstand geen extra hardware nodig dus met een ESP32! (Landis Gyr E350 DSMR 4.0)
Wow, dat is mooi!! Een werkende oplossing met ESP32.
Wil je de code in je repository updaten? Dat zou voor mij heel fijn zijn want dan kan ik aan de slag met mijn SAGEMCOM XS210 ESMR5 meter.
Het werkt!
Nog wel hardcoded, maar naast een 1.5k weerstand geen extra hardware nodig dus met een ESP32! (Landis Gyr E350 DSMR 4.0)
Laat maar weten wat er voor aanpassing nodig is. Dan kan ik het er bij zetten.
Ik probeer deze week m'n forks van deze repo en esphome te updaten. :+1:
Ik probeer deze week m'n forks van deze repo en esphome te updaten. π
Hoi @tbrasser Heb je nog even tijd om jouw esphome Landis Gyr E350 DSMR 4.0 project te updaten. Ik zou er graag mee gaan werken voor mijn SAGEMCOM XS210 ESMR5. Dank bij voorbaat !
Hoi! Zie ik het goed dat je hier een 5V signaal direct op een 3.3V gpio aansluit? Heeft er niemand problemen gehad met dat je er een poort uitblaast zo? Of heeft die esp iets van ingebouwde beveiliging?
Op welke gpio staat er 5 volt dan?
Op welke gpio staat er 5 volt dan?
Volgens schema zit D2 aan pin 2 van 74HC04. Deze 74HC04 wordt door 5 Volt gevoed. D2 wordt dus 5 Volt bij logisch hoog.
De gpio pinnen op iig de esp8266 zijn 5v tolerant. Had ooit dezelfde vraag en heb 't uiteindelijk aan iemand van espressif gevraagd (kan 't zo even niet meer terugvinden). m'n esp32 lijkt 't ook prima te handelen.
(PS Ik ga echt binnenkort m'n no-extra-hardware esp32 config laten zien, maar ben er wegens drukte nog niet aan toegekomen om m'n private info ertussenuit te halen.)
Op welke gpio staat er 5 volt dan?
Volgens schema zit D2 aan pin 2 van 74HC04. Deze 74HC04 wordt door 5 Volt gevoed. D2 wordt dus 5 Volt bij logisch hoog.
Je hebt helemaal gelijk :)
(PS Ik ga echt binnenkort m'n no-extra-hardware esp32 config laten zien, maar ben er wegens drukte nog niet aan toegekomen om m'n private info ertussenuit te halen.)
Top!
staan erop! Wel dus hardcoded en niet netjes. Maar het is er iig.
https://github.com/tbrasser/CustomP1UartComponent https://github.com/tbrasser/esphome
FF een vraagje. Ik ben deze aan het proberen in elkaar te zetten maar krijg het niet voor elkaar. Eerste instantie heb ik een 7404 besteld voor de wemos d1 mini maar kreeg daar geen data door van mijn iskra ME382 ook met en zonder weerstand geprobeerd. Nu heb ik een wemos esp32 binnen gekregen maar de "no extra hardware" optie is dat dan zonder de 7404? Heeft er iemand een aansluit schema van? Heb je voor esphome een andere versie nodig voor de invert optie of zit dit al in esphome?
Thanks
FF een vraagje. Ik ben deze aan het proberen in elkaar te zetten maar krijg het niet voor elkaar. Eerste instantie heb ik een 7404 besteld voor de wemos d1 mini maar kreeg daar geen data door van mijn iskra ME382 ook met en zonder weerstand geprobeerd. Nu heb ik een wemos esp32 binnen gekregen maar de "no extra hardware" optie is dat dan zonder de 7404? Heeft er iemand een aansluit schema van? Heb je voor esphome een andere versie nodig voor de invert optie of zit dit al in esphome?
Thanks
Hoi Gijsje, Ik heb hetzelfde doorgemaakt, maar uiteindelijk is het mij gelukt. Mijn voorkeur is ESP32 te gebruiken vanwege stabiliteit (deze heeft separate cores voor programma en wifi verwerking). Ik wilde eigenlijk zonder 74HC04 (no extra hardware), maar dat vereiste ingrijpen in ESPHome met eigen source-code aanpassingen. Dat is mij niet gelukt, ondanks dat @tbrasser zijn repository beschikbaar heeft gesteld. Ik ben minder van software en meer van hardware. Dus daarom dan de 74HC04 toevoeging in mijn uiteindelijk werkende resultaat.
Mijn schema zal ik nog posten (moet ik even maken). En ik heb een SAGEMCOM XS210 ESMR5 meter, dus ik weet niet of mijn oplossing ook voor jou gaat werken.
Mijn schema zal ik nog posten (moet ik even maken). En ik heb een SAGEMCOM XS210 ESMR5 meter, dus ik weet niet of mijn oplossing ook voor jou gaat werken.
Hierbij mijn gegevens: Volgens de specificaties van mijn Dutch Smart Meter (DSM) is 5 Volt benodigd, maar het werkt perfect met 3,3 Volt rechtstreeks uit het ESP32 board.
De 74HC04 (de cmos versie) is ook gemaakt te werken op 3,3 Volt. Let op: de 74HCT04 (de TTL versie) werkt niet op 3,3 Volt. Dus 3,3 Volt op pin 14 en GND op pin 7.
Mijn schema:
Nu de software nog: Ik ga uit van de twee bestanden (dsmr.yaml en _dsmr_p1sensor.h ) zoals beschikbaar gesteld door @nldroid in CustomP1UartComponent, daar is deze post ook gedaan.
Afhankelijk van de ESP32 board uitvoering heb je meer of minder GPIOβs tot je beschikking. Ik heb de MH-ET LIVE ESP32 miniKIT https://www.aliexpress.com/item/32816065152.html De ESP32 heeft 4 UARTs. In de ESPHome yaml file (dsmr.yaml) wordt debug logger gedefinieerd, deze gebruikt UART1:
Ik heb gekozen om UART2 te gebruiken voor DSM data input. De RX pin van UART2 is GPIO16. Dit betekent dat in de ESPHome yaml file (dsmr.yaml) dit gedefinieerd moet worden:
Omdat de origineel gedefinieerde data-request output pin (D5) niet beschikbaar is op mijn ESP32 board, heb ik die ook moeten wijzigen. Ik heb gekozen voor GPIO18. Die pin wordt gedefinieerd en gebruikt in het bestand _dsmr_p1sensor.h helemaal onderaan op vier plaatsen:
ESPHome eerst een clean build laten doen:
Voor de zekerheid een Validate
en dan Upload.
Voor mijn SAGEMCOM XS210 ESMR5 werkt het perfect.
Dank je voor de uitleg ik zal morgen eens kijken of ik het werkend krijg
Hi allemaal,
Ik aan het proberen dit na te bouwen met esphome in hassio.
Waar moet ik de component dsmr laten? In de config die van de esp of ergens anders?
dsmr_p1_sensor.h kan (moet) gewoon bij de yaml file staan
Die heb ik goed staan gaat meer om de dsmr.h en de folder dsmr. Ik krijg nu alleen maar header found, footer found en trying to parse message. De status van de sensoren blijft op unknown staat in Home Assistant en in de web interface van de esphome
Hi allemaal,
Ik aan het proberen dit na te bouwen met esphome in hassio.
Waar moet ik de component dsmr laten? In de config die van de esp of ergens anders?
@mosjonathan Mijn werkende configuratie ziet er zo uit:
ESPHome folder
(1) energie_gebruik wordt gegenereerd door ESPHome (2) includes heb ik aangemaakt met daarin: dsmr_p1_sensor.h
In de energie_gebruik.yaml (zo heb ik uiteindelijk mijn ESP32 genoemd, dus niet dsmr.yaml) is dit opgenomen:
Verder helemaal niets toegevoegd of aangepast. Hoop dat dit je verder helpt.
Hi Wiebkastanje,
In dsmr_p1_sensor.h zit een include naar dsmr.h die moet dan in de zelfde map? Of is die niet nodig om te downloaden bij Matthijs kooiman? Of is die include helemaal niet nodig?
Hi Wiebkastanje,
In dsmr_p1_sensor.h zit een include naar dsmr.h die moet dan in de zelfde map? Of is die niet nodig om te downloaden bij Matthijs kooiman? Of is die include helemaal niet nodig?
De verwijzing naar de dsmr.h file moet zeker als include in dsmr_p1_sensor.h aanwezig zijn.
Maar jij hoeft deze nergens op te halen of op te slaan. Die file dsmr.h zit in deze library:
Deze library is bekend bij ESPHome, hoef je niets voor te doen.
ik heb hem nu opnieuw gecompiled met de bestanden zoals aangegeven. dit is het enige wat er gebeurd:
[20:42:26][D][DmsrCustom:061]: Read message [20:42:26][D][DmsrCustom:083]: Header found [20:42:26][D][DmsrCustom:091]: Footer found [20:42:26][D][DmsrCustom:097]: Trying to parse
Okay, dat ziet er goed uit. Want je ESP ontvangt data van de slimme meter. De header van het bericht uit je slimme meter wordt gevonden, alsook de footer. Het hele bericht is binnengekomen.
Het proces stopt bij het verwerken van de ontvangen gegevens (trying to parse). Als eerste bepalen of het decoderen wel goed gaat.
In dsmr_p1_sensor.h is de volgende debug regel opgenomen:
Je voegt hier toe: ESP_LOGD("dsmr_p1_sensor.h","Parsing error");
In ESPHome een clean build aanklikken, Verificatie en Upload.... Ben benieuwd of deze error zichtbaar wordt in je output.
ja die wordt zichtbaar, zie alleen niet waarom hij de error geeft de log ziet nu zo uit:
[21:11:54][D][DmsrCustom:061]: Read message [21:11:54][D][DmsrCustom:083]: Header found [21:11:54][D][DmsrCustom:091]: Footer found [21:11:54][D][DmsrCustom:097]: Trying to parse [21:11:54][D][DmsrCustom:101]: Error found
ik gebruik nu trouwens een nodemcu v2 met een bs170 zou dat het probleem kunnen zijn?
heb een wemos d1 mini en een 74hc04 besteld die krijg ik morgen als het goed is binnen.
Ik denk niet dat het kan liggen aan de hardware. Want de header en de footer van het bericht worden netjes gedetecteerd.
Zoals het er nu uitziet kan het ontvangen bericht niet gedecodeerd worden. Wat is het merk/type van jouw slimme meter? Stuurt jouw meter de volgende gegevens in elk bericht (zoals gedefinieerd in dsmr_p1_sensor.h)
Overigens: met een D1 mini is het gebruik van meerdere UARTS niet mogelijk, zoals ik heb gedaan met UART1 en UART2. Dat kan alleen met een ESP32.
ik heb een iskra am550 esmr5.0
ik zal even espeasy moeten flashen om te kijken hoe de telegrammen eruit zien
nodemcu heeft toch ook maar 1 uart?
Hallo WiebKastanje
dit is wat ik uit de meter krijg: /ISK5\2M550E-1012
1-3:0.2.8(50) 0-0:1.0.0(200425233332S) 0-0:96.1.1(serie nummer) 1-0:1.8.1(003895.393kWh) 1-0:1.8.2(004150.277kWh) 1-0:2.8.1(000000.000kWh) 1-0:2.8.2(000000.000kWh) 0-0:96.14.0(0001) 1-0:1.7.0(00.463kW) 1-0:2.7.0(00.000kW) 0-0:96.7.21(00014) 0-0:96.7.9(00004) 1-0:99.97.0(2)(0-0:96.7.19)(170503043837S)(0000338212s)(190621092844S)(0000002602s) 1-0:32.32.0(00001) 1-0:32.36.0(00001) 0-0:96.13.0() 1-0:32.7.0(227.0V) 1-0:31.7.0(002A) 1-0:21.7.0(00.460kW) 1-0:22.7.0(00.000kW) 0-1:24.1.0(003) 0-1:96.1.0() 0-1:24.2.1(700101010000W)(00000000) 0-2:24.1.0(003) 0-2:96.1.0(serie nummer) 0-2:24.2.1(200425233004S)(01524.944*m3) !1672
ik heb het probleem gevonden!
toen ik naar het telegram keek zag ik dat mijn gasmeter op mbus channel 2 zit. de library verwacht deze op 1 aangezien daar geen meter aanhangt krijgt de library een verkeerde meting en dus een error.
nadat ik de gas sectie weg heb gehaald door er een comment van te maken werkt hij en krijg ik de standen door.
nu alleen nog uitvogelen hoe ik de mbus channel aanpas naar 2 zodat ik ook de gasstand kan meenemen
@mosjonathan Goed gedaan! Hoe heb jij de hardware met de BS170. Ben benieuwd naar je schema. Wil je die delen?
@mosjonathan Om de gasmeter te kunnen uitlezen zal je een aanpassing moeten doen in de library van DSMR zelf. Voor de Belgische DSMR heb ik dat ook moeten doen. De gasmeter zit daar op een ander ObisId. Ik heb dit kunnen oplossen door in de yaml file de deze lijnen in commentaar te zetten:
#libraries:
# - "Dsmr"
En dan mijn aangepaste versie van de dsmr library in de folder config\esphome\esp_energy_monitor\src te zetten.
@WiebKastanje Ik ben op het moment niet thuis zal proberen deze te tekenen met mijn gelimiteerde teken vaardigheden π Ik heb hem trouwens parasitair aangesloten
Top! Heb als inverter een BC547 gebruikt. Dat werkt ook prima. Zeer handig dat het nu via ESPHOME kan worden geconfigureerd.
De uitgang van de meter gaat naar de basis van de transistor (via een 1 K weerstand). De 1K pull up is nodig bij de meter die ik heb. Dan de collector aan de RX van de D1 mini (hier ook een pull up gebruikt.) Via D7 wordt de meting gestart.
Interessant dit! Ik ga dit ook op een van mijn readers testen.
Ik maakte voorheen gebruik van de bs170 als inverter (lees dat die hier ook gebruikt is door een of meerdere).
Zelf ben ik overgestapt maar een Logic inverter (SN74LVC1G04DBVR) welke de signaal Γ©n inverteerd en een uitgangsspanning van 3v3 heeft (5v werkt ook, maar 3v3 is netter).
Kan je ook gebruik maken van de 2e uart (gpio13) van de esp12f?
Grote kans dat je ook de D7 (= GPIO13) van D1Mini kunt gebruiken. ESPHOME klaagt niet als D7 invult bij de uart: config ;-).
uart:
Nice! Even binnen kort maar testen π
Works like a charm! Ik heb een oud modelletje gepakt om het te testen en de default GPIO3 gebruikt:
esphome:
name: esp1reader
platform: ESP8266
board: d1_mini
includes:
- dsmr_p1_uart.h
libraries:
- "Dsmr"
wifi:
ssid: "***"
password: "***"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp1 Reader Fallback Hotspot"
password: "esp1reader"
captive_portal:
# Enable logging
logger:
level: DEBUG
esp8266_store_log_strings_in_flash: False
# Enable Home Assistant API
api:
password: ""
ota:
password: ""
uart:
- rx_pin: GPIO3
baud_rate: 115200
id: uart_bus
sensor:
- platform: custom
lambda: |-
auto dsmr_p1_sensor = new CustomP1UartComponent(id(uart_bus));
App.register_component(dsmr_p1_sensor);
return {dsmr_p1_sensor->s_energy_delivered_tariff1, dsmr_p1_sensor->s_energy_delivered_tariff2, dsmr_p1_sensor->s_energy_returned_tariff1, dsmr_p1_sensor->s_energy_returned_tariff2, dsmr_p1_sensor->s_power_delivered, dsmr_p1_sensor->s_power_returned, dsmr_p1_sensor->s_voltage_l1, dsmr_p1_sensor->s_voltage_l2, dsmr_p1_sensor->s_voltage_l3, dsmr_p1_sensor->s_current_l1, dsmr_p1_sensor->s_current_l2, dsmr_p1_sensor->s_current_l3, dsmr_p1_sensor->s_power_delivered_l1, dsmr_p1_sensor->s_power_delivered_l2, dsmr_p1_sensor->s_power_delivered_l3, dsmr_p1_sensor->s_power_returned_l1, dsmr_p1_sensor->s_power_returned_l2, dsmr_p1_sensor->s_power_returned_l3, dsmr_p1_sensor->s_gas_device_type, dsmr_p1_sensor->s_gas_valve_position, dsmr_p1_sensor->s_gas_delivered};
sensors:
- name: "Consumption Low Tarif Sensor"
unit_of_measurement: kWh
accuracy_decimals: 3
- name: "Consumption High Tarif Sensor"
unit_of_measurement: kWh
accuracy_decimals: 3
- name: "Return Low Tarif Sensor"
unit_of_measurement: kWh
accuracy_decimals: 3
- name: "Return High Tarif Sensor"
unit_of_measurement: kWh
accuracy_decimals: 3
- name: "Actual Consumption Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Actual Delivery Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Instant Voltage L1 Sensor"
unit_of_measurement: V
accuracy_decimals: 3
- name: "Instant Voltage L2 Sensor"
unit_of_measurement: V
accuracy_decimals: 3
- name: "Instant Voltage L3 Sensor"
unit_of_measurement: V
accuracy_decimals: 3
- name: "Instant Current L1 Sensor"
unit_of_measurement: A
accuracy_decimals: 3
- name: "Instant Current L2 Sensor"
unit_of_measurement: A
accuracy_decimals: 3
- name: "Instant Current L3 Sensor"
unit_of_measurement: A
accuracy_decimals: 3
- name: "Power Delivered L1 Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Power Delivered L2 Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Power Delivered L3 Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Power Returned L1 Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Power Returned L2 Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Power Returned L3 Sensor"
unit_of_measurement: W
accuracy_decimals: 3
filters:
- multiply: 1000
- name: "Gas device type Sensor"
- name: "Gas valve position Sensor"
- name: "Gas Meter M3 Sensor"
unit_of_measurement: m3
accuracy_decimals: 3
Waar is de "Buy Me A Coffee" link? Hier was ik al tijden naar op zoek!
Issue topic voor algemene vragen en opmerkingen. Gooi hier alles in wat je wilt. Dan kunnen we de issues echt gebruiken voor bugs.