Olimex esp32 poe IR Lesekopf TTL ESPHome

Moin zusammen,

ich habe vor ca. einen Monat meinen Olimex ESP32 POE mit einenm TTL IR Lesekopf in Betrieb. Soweit so gut.

Jetzt kommt der spaßige Teil ich möchte noch 2 weitere Leseköpfe anschließen. Ein weiterte sollte kein Problem sein. Ob ein 3er auch noch funktioniert bin ich mir schon nicht mehr so sicher.

Aktuell scheiter ich allerdings bei der Programmierung des 2. Lesekopf’s.

Vielleicht hat sich ja jemand sowas ähnliches auch schon gebastelt.

LG Phillipp

Verwendest du Tasmota oder ESP Home?

Für Tasmota kann ich vielleicht helfen:
Ich betreibe zwar nur zwei Leseköpfe an einem ESP32 D1 mini aber von der Programmierung sollte es bei dir auch funktionieren:
Ich würde vermuten, dass deine Netzwerkbuchse einen der beiden Hardware Serials des ESP32 belegt. Dann kannst du einen Lesekopf mit Hardware Serial laufen lassen, den anderen als Software Serial.
Das “-” vor dem Empfangspin gibt Tasmota das Signal für den Software Serial, die 16 statt der 0 aktiviert den Medianfilter zur Verringerung von Lesefehlern.

+1,20,s,0,9600,PV,21
+2,-4,s,16,9600,Heizung,5

Pins sind jetzt frei gewählt.

Moin Bigmirror,

wie im Titel angegeben ESPHome :wink:

Der pinout reference konnte ich entnehmen:

Für den 1. Lesekopf
3,3v
Gnd
GPIO1 TX
GPIO3 RX

Dieser funktioniert ja auch.

Den 2. Lesekopf habe ich jetzt auf den UEXT connector gesteckt.

Wieder 3,3v und GND
Und 2 von den 8 vorhandenen GPIO
GPIO 4. TX
GPIO36 RX

Jetzt hänge ich an der Programmierung und würde natürlich noch gerne den 3. Lesekopf anschließen.

Der GPIO 16 wäre noch ein RX pin
Fehlt mir also ein TX pin da bin ich bei der Beschriftung leider auch überfragt.
In der Reference steht jetzt noch EMAC_TXD2 kann man den auch nehmen?

Ich werde heute mal weiter basteln.

Grüße :v:

Nachtrag: aktuell bekomme ich Daten von beiden Sensoren wenn ich in der Yaml Datei nur ein UART angebe. Wenn ich 2 hinterlege wird einer korrekt angezeigt der zweite läuft mit einer Fehlermeldung durch.
[23:06:21][W][sml:128]: Checksum error in received SML data.

[23:06:19][D][sml:078]: OBIS info:
[23:06:19][D][sml:084]:   (0123456789abcdef) 1-0:96.50.1 [0x484c59]
[23:06:19][D][sml:084]:   (0123456789abcdef) 1-0:96.1.0 [0123456789abcdef]
[23:06:19][D][sml:084]:   (0123456789abcdef 1-0:1.8.0 [0x00d33406]
[23:06:19][D][sml:084]:   (0123456789abcdef) 1-0:2.8.0 [0x00]
[23:06:19][D][sml:084]:   (0123456789abcdef) 1-0:16.7.0 [0x00c7]
[23:06:19][D][sml:084]:   (0123456789abcdef) 1-0:36.7.0 [0x48]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:56.7.0 [0x22]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:76.7.0 [0x5c]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:32.7.0 [0x0935]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:52.7.0 [0x0932]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:72.7.0 [0x093c]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:31.7.0 [0x41]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:51.7.0 [0x28]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:71.7.0 [0x30]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:81.7.1 [0x78]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:81.7.2 [0x00f0]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:81.7.4 [0x012a]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:81.7.15 [0x0122]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:81.7.26 [0x0143]
[23:06:20][D][sml:084]:   (0123456789abcdef) 1-0:14.7.0 [0x01f3]
[23:06:21][D][sml:084]:   (00123456789abcdef) 1-0:0.2.0 [0x353031303032]
[23:06:21][D][sml:084]:   (0123456789abcdef) 1-0:96.90.2 [0x36313339]
[23:06:21][W][component:237]: Component sml took a long time for an operation (1945 ms).
[23:06:21][W][component:238]: Components should block for at most 30 ms.
[23:06:21][W][sml:128]: Checksum error in received SML data.
[23:06:21][W][sml:128]: Checksum error in received SML data.
[23:06:22][D][sensor:094]: 'Zaelerstand Haus 1 PK': Sending state 1384.14148 kWh with 4 decimals of accuracy
[23:06:22][D][sensor:094]: 'Aktueller Verbrauch Haus 1 PK': Sending state 198.00000 W with 0 decimals of accuracy

esphome:
  name: "olimex-stromzaehler"
  friendly_name: Olimex Stromzähler

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
  level: DEBUG

  logs:
    sml: DEBUG
    text_sensor: DEBUG

api:
  encryption:
    key: xxxxxxxxxxxxxxx

ota:
  - platform: esphome
    password:xxxxxxxxxxxxxxxxxxxxxxxxxx

# wifi:
#  ssid: !secret wifi_ssid
#  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
#  ap:
#    ssid: "Olimex-Stromzahler"
#    password: "xxxxxxxxxxxx"

ethernet: #olimex-esp32-poe-iso
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO17_OUT
  phy_addr: 0
  power_pin: GPIO12

uart:
  - id: uart_0
    baud_rate: 9600
    tx_pin: GPIO1
    rx_pin: GPIO3
  - id: uart_1
    baud_rate: 9600
    tx_pin: GPIO4
    rx_pin: GPIO36
  - id: uart_2
    baud_rate: 9600
    tx_pin: GPIO32
    rx_pin: GPIO33

sml:
 - id: mysml_0
   uart_id: uart_0

 - id: mysml_1
   uart_id: uart_1

text_sensor:
  - platform: sml
    name: "EHZ541-ZE_0"
    sml_id: mysml_0
    server_id: "abcdef123456789"
    obis_code: "129-129:199.130.3"
    format: text
  
  - platform: sml
    name: "EHZ541-ZE_1"
    sml_id: mysml_1
    server_id: "0123456789abcdef"
    obis_code: "129-129:199.130.3"
    format: text
    
sensor:
  - platform: sml
    name: "Zaehlerstand Gemeinschaftsbereich"
    sml_id: mysml_0
    server_id: "abcdef123456789"
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 4
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.0001
 
  - platform: sml
    name: "Zaelerstand Haus 1 PK"
    sml_id: mysml_1
    server_id: "0123456789abcdef"
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 4
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.0001

  - platform: sml
    name: "Aktueller Verbrauch Gemeinschaftsbereich"
    sml_id: mysml_0
    server_id: "abcdef123456789"
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    accuracy_decimals: 0
    device_class: energy
    filters:

  - platform: sml
    name: "Aktueller Verbrauch Haus 1 PK"
    sml_id: mysml_1
    server_id: "0123456789abcdef"
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    accuracy_decimals: 0
    device_class: energy
    filters:

Hallo Philipp,

Könntest du mir das Binary für Olimex zur Verfügung stellen mit der Aktivierung des Skripts?

Wenn ich von Github 14.x binaries lade, dann bekomme ich einen Fehler.

Wie werden dann der TXT und Rx Port definiert?

Vorab vielen Dank

Ardunas