lauantai 22. helmikuuta 2025

RJ12-kotiautomaatioliitynnän HAN portin lukeminen, osa 2

Jatkoa edelliselle postaukselleni (https://omakotikotitalomme.blogspot.com/2022/10/elenian-aidon-rj12-kotiautomaatioliityn.html) kun uusin ESPHome 2025 versio tiputti tuen Custom Componenteista, niin vanhoja ohjeita seuraamalla pitää käyttää vuoden 2024 ESPHome versioita. Joten alla sitten uusi ohjeistus, mikä toimii myös tällä hetkellä uusimman ESPHome 2025.2.0 version kanssa.

* EDIT: 07.03.2025, näyttää myös alkuperäinen repo (https://github.com/psvanstrom/esphome-p1reader) alkanut tukemaan uusinta ESPHomea, joten voi käyttää kumpaa vaan repoa haluaa.

Vanhat ohjeet pääasiassa toimivat (esim Home Assistant näkymien conffaus samalla tavalla), ainoa ero on, että mistä asentaa uusin firmis joka tukee uusinta ESPHome versiota, jossa koodi on muutetu käyttämään custom componentin sijasta nykyisin tuettua external componenttia.

Eli haetaan koodi https://github.com/Beaky2000/esphome-p1mini, ja muutetaan muutama rivi .yaml rivistä tukemaan laitettamme (RTS on pullup ja sitä ei ole kytketty GPIO pinniin). Ja asennus samaan tapaan kuin ennenkin. Hyvänä puolena Beaky2000 versio osaa automaattisesti ascii- ja binaari-formaatit, joten ei tarvi arvuutella minkä version lataa, kun kaikki laitteet toimivat samalla koodilla.

Linuxissa asennus menee tyyliin:

$ pip3 install esphome -U
$ git clone https://github.com/Beaky2000/esphome-p1mini.git
$ cd esphome-p1mini/
# Alle lisäät esim wifi salasanat ja api-keyn generoinnissa seuraa README:n ohjeita (api.html).
$ nano secrets.yaml
# editoidaan p1mini.yaml tiedostosta muutamaa riviä:
$ git diff p1mini.yaml
diff --git a/p1mini.yaml b/p1mini.yaml
index ab56611..cc1e2d3 100644
--- a/p1mini.yaml
+++ b/p1mini.yaml
@@ -72,8 +72,8 @@ uart:
       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
+      inverted: false        # Set to false if inverting in hardware^M
+      mode: INPUT            # Set to INPUT if inverting in hardware^M
     baud_rate: 115200
     rx_buffer_size: 512      # Probably not needed, but it is good to have some margin.
 #  - id: my_uart_2
@@ -82,7 +82,7 @@ uart:
 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.
+    minimum_period: 0s       # Should be 0 (zero) if the RTS signal is not used.^M
     buffer_size: 3072        # Needs to be large enough to hold one entire update from the meter.
     secondary_p1: false
     on_ready_to_receive:
# asennetaan firmis /dev/ttyUSB0:n läpi run komennon avulla
$ esphome run p1mini.yaml     
# asennetaan laite paikoilleen ja katsotaan logeja wifin yli ja/tai http sivun yli
$ esphome logs p1mini.yaml    
Eli muutokset lyhyesti: 2s -> 0s ja inverted arvo falseksi ja mode INPUT_PULLUP:sta INPUT:ksi. Ja laitteen lisääminen esim Home Assistant:n puolelle käy samalla lailla kuin ennenkin, nykyisin pitää vain generoitu API key kopioida secrets tiedostosta.

Minulla on edelleen itse rakennettuja readereitä tarjolla pikkuisessa sumupstoressani ja ja myös tori.fi:ssä (25e+5e kirjeposti), jos kiinnostaa, niin https://p1reader.sumupstore.com/tuote/koteloitu-p1-reader-rj12-kaapeli tai viestiä tori.fi:n kautta: https://www.tori.fi/recommerce/forsale/item/2035004. Sillä disclaimerillä, että sinun pitää olla tuttu Linuxin kanssa, että osaat ESPHomen flashata laitteeseen (D1 mini laite tulee ilman firmistä, kun oman verkon ssid ja salasana määritellään flashauksen yhteydessä).

9 kommenttia:

  1. Kiitos! Tällä päivittyi reilu vuosi sitten sinulta ostamani palikka taas. ESPhome tosiaan valitti tuosta customista luonnollisesti.

    VastaaPoista
    Vastaukset
    1. hienoa, että postauksesta oli apua päivittämisen suhteen :)

      Poista
  2. Minulla ollut tämä sinun P1 lukija jo pidemmän aikaa käytössä ilman mitään ongelmia. Itse päivitin käyttämällä tätä samaa https://github.com/psvanstrom/esphome-p1reader repoa, joka oli sinun alkuperäisissä ohjeissa. Kyseinen esphome-p1reader on päivitetty käyttämään external componenttia, joten pävitys oli todella helppo.

    VastaaPoista
    Vastaukset
    1. Kiitos tiedosta, tosiaan näyttää alkuperäinenkin repo heti tän mun postauksen jälkeen myös alkanut tukemaan uusinta ESPHomea.

      Poista
    2. Muuten on aika selkeätä, mutta kuten aina tuo githubin jargoni ja meikäläinen ei vaan sovi yhteen. Miten siis saan esphomen hakemaan tuon external componentsin filuineen githubista. Ilmeisesti tämä on ainakin jotenkin väärin:
      external_components:
      source: github://cadwal/esphome-p1reader@main

      Onko kirjoitusasussa joku vika? En tajua kun täysin ohjeiden mukaan yritän tehdä.

      Poista
    3. Minkähän ohjeen mukaan? Kun yaml tiedoston external_components kohtaa ei tarvi minun seuraamissa ohjeissa koskea, joten ensimmäinen kysymys kuuluu missä ohjeissa käsketään pistää sourceksi github?

      Poista
    4. Sori, tarkoitin esphomen omia ohjeita heidän sivuillaan external componentsien käyttöä koskien :) En kyllä localinakaan saanut toimimaan niin siksi kokeilin tuota github menetelmää...

      Poista
    5. Noniin, sain toimimaan eli minulla vaatii tuon local folderin määrittämisen näin esphomessa:
      external_components:
      - source:
      type: local
      path: esphome-components

      Lyhyt yhden rivin tapa joka muilla näyttää olevan ok ei toiminut... Tiedoksi jos jollakin tulee samanlaisia ongelmia :)

      Poista
  3. Onkohan kokemuksia tarvitseeko ESP32-C3-Zero puolella myös ottaa käyttöön tuo inverted: false ja mode: INPUT vai meneekö ilman tuota jos laittaa siihen vastuksen ohjeiden mukaan. Muuttaen toki tuota minimum_period arvoa

    VastaaPoista