2 Leseköpfe wollen nicht gleichzeitig

  • HI,

    Ich habe einen ESP32 c3 mini.

    2 Leseköpfe, einer an Gpio 3, einer an 4

    Wenn Ich das Skirpt so mache:

    Bekomme Ich diese Anzeige:

    Code
    Haus Zählerstand Verb. 	280.00 kWh
    Haus Zählerstand Einsp. 	0.00 kWh
    ==================
    H Aktuell 	0 W
    H Zählerstand Verb. 	0.00 kWh
    H Zählerstand Einsp. 	0.00 kWh

    280kwh, das ist der Wert von dem Lesekopf an Gpio 4. Also der erste Kopf


    Ändere Ich den Skript so:

    Bekomme Ich diese Anzeige:

    Code
    Haus Zählerstand Verb. 	34.00 kWh
    Haus Zählerstand Einsp. 	6489.00 kWh
    ==================
    H Aktuell 	0 W
    H Zählerstand Verb. 	0.00 kWh
    H Zählerstand Einsp. 	0.00 kWh

    Ich habe die Gpios im Skript getauscht, nun bekomme Ich die Anzeige von dem Lesekopf an Gpio 3.


    Das zeigt das die Verdrahtung ok ist.

    Es kommen immer nur die Werte vom Lesekopf der grade bei +1, eingetragen ist.

    Aber die Werte von +2, bekomme Ich nicht.


    Ein dump mit sensor53 d2 bringt auch keine Werte.

    Der dump mit sensor53 d1 bringt immer die Werte von dem Kopf der an dem Gpio hängt welcher grade im Skript eingetragen ist.


    Auf einen ESP8266 hatte Ich es schon öfters mal mit 2 gemacht.

    Ich nutzte Tasmota 13.2.0 by Theo Arends 

    Selber compilliert mit Visual Studio.


    Hat einer einen Vorschlag was Ich testen könnte, damit beide gleichzeitig funktionieren?


    lg

    Hichi

  • Zur hilfreichsten Antwort springen
  • 1. Versuch - ohne das letze Komma in den Zeilen
    +1,3,s,0,9600,Haus
    +2,4,s,0,9600,NT

    2. Versuch- mich von dem Port 3 zu trennen und auf 5 zu wechseln


    +1,5,s,0,9600,Haus

    3. Versuch - Welche Zähler hast du und was wird auf der Konsole ausgegeben und weshalb kein 13.x. Release am Start

  • HI,

    Das Komma habe Ich weg gemacht

    12.3.1 funktioniert

    13.2.0 funktioniert nicht

    13.3.0 funktioniert nicht


    Der GPIO kann Ich leider nicht so einfach ändern, das ist eine fertiges PCB.

    Apator Zähler sind das, Der Skript passt so zu den Zählern.

    lg

    Hichi

  • eigentlich hat der C3 2 Hardware uarts. Theo Arends hat aber da neulich was geändert. Auch beim ESP32 gehen jetzt nur noch 2 von früher 3 uarts

    muss noch herausfinden was er da gemacht hat.

    du kannst aber bis zu 4 Software Serielle Schnittstellen dazu nehmen.

    #define USE_ESP32_SW_SERIAL

    die Pins werden dann mit einem Minuszeichen gekennzeichnet

    also z.B.

    +1,3,s,0,9600,Haus

    +2,-4,s,0,9600,H

  • Hi,

    Mit der 13.1 funktioniert es auch. Das reicht mir erstmal.

    #define USE_ESP32_SW_SERIAL - Das habe Ich mit der 13.3 getestet, funktioniert aber leider nicht.

    Die developer Version lies sich grade nicht auf Anhieb kompillieren, Ich versuche das heute Abend noch mal.


    Vielen Dank für die ganze Hilfe


    lg

    Hichi

  • HI,

    Ich muss doch nochmal fragen,

    Ich hab nun die 13.4 drauf.

    2 Leseköpfe funktionieren.

    Das Ziel sind allerdings 3 Leseköpfe.


    Das Problem ist das Ich in den dritten Slot nie was rein bekomme,

    Hier bei ANNE:

    Code
    PV Zählerstand Verb.	2020.00 kWh
    PV Zählerstand Einsp.	0.00 kWh
    ==================
    FLUR Zählerstand Verb.	300.00 kWh
    FLUR Zählerstand Einsp.	0.00 kWh
    ==================
    ANNE Zählerstand Verb.	0.00 kWh
    ANNE Zählerstand Einsp.	0.00 kWh

    Dazu der Skript:


    Je nachdem wie Ich die GPIOS ändere bekomme Ich andere anzeigen.

    zb:

    Code
    PV Zählerstand Verb.	38.00 kWh
    PV Zählerstand Einsp.	6819.00 kWh
    ==================
    FLUR Zählerstand Verb.	300.00 kWh
    FLUR Zählerstand Einsp.	0.00 kWh
    ==================
    ANNE Zählerstand Verb.	0.00 kWh
    ANNE Zählerstand Einsp.	0.00 kWh

    mit dieser Reihenfolge:

    Code
    +1,3,s,0,9600,PV,1
    +2,20,s,0,9600,FLUR,21
    +3,4,s,0,9600,ANNE,5


    Aber egal wie Ich es sonst drahe bekomme Ich nur noch eine Zeile zb:

    Code
    PV Zählerstand Verb.	38.00 kWh
    PV Zählerstand Einsp.	6819.00 kWh
    ==================
    FLUR Zählerstand Verb.	0.00 kWh
    FLUR Zählerstand Einsp.	0.00 kWh
    ==================
    ANNE Zählerstand Verb.	0.00 kWh
    ANNE Zählerstand Einsp.	0.00 kWh

    mit dieser Reihenfolge:

    Code
    +1,3,s,0,9600,PV,1
    +2,4,s,0,9600,FLUR,5
    +3,20,s,0,9600,ANNE,21


    Wenn Ich Software Serial Verwende, füllt Sich der dritte Slot, aber dann der zweite nicht:

    Code
    PV Zählerstand Verb.	38.00 kWh
    PV Zählerstand Einsp.	6819.00 kWh
    ==================
    FLUR Zählerstand Verb.	0.00 kWh
    FLUR Zählerstand Einsp.	0.00 kWh
    ==================
    ANNE Zählerstand Verb.	300.00 kWh
    ANNE Zählerstand Einsp.	0.00 kWh
    Code
    +1,3,s,0,9600,PV,1
    +2,-4,s,0,9600,FLUR,-5
    +3,20,s,0,9600,ANNE,21


    Ich bekomme Es einfach nicht hin das Alle Slots gefült werden.


    lg

    Hichi

  • leider wieder schlechte Nachrichten wegen Softwareserial.

    Das ist auch ein Fehler im core der seit Ende 2022 gemeldet wurde und immer noch nicht behoben ist. die machen auch keinerlei Anstalten das zu beheben. (die Funktion ESP.getCycleCount liefert falsche Werte, die wird unbedingt gebraucht für das Timing von Softwareserial)

    damit geht es prinzipiell nicht mit 3 Metern auf dem C3.

    der core Fehler mit den Hardware UARTS ist in Arbeit und soll in Kürze behoben sein.

  • hier noch mal eine Zusammenstellung was mit welcher CPU geht:

    ESP8266:

    UARTS: 1

    Software serial: ca 3

    also max: 4 serielle Meter


    ESP32, ESP32-S3

    UARTS: 3

    Software serial: 4, allerdings nur empfangen, also RX, kein TX

    also bis zu 7 serielle Meter


    ESP32-S2

    UARTS: 2

    Software serial: 4 (nicht getestet, sollte aber wohl gehen)

    also max 6 serielle Meter


    ESP32-C3

    UARTS: 2

    Software serial: 0

    also max 2 serielle Meter


    durch einen Bug im Core kann man bei allen ESP32 zur Zeit nur jeweils 1 UART weniger nutzen.

    das soll aber bald behoben werden.


    Meter mit counter, sowie TCP meter können zusätzlich definiert werden

  • HI,

    Danke für die ganzen Infos gemu2015

    Schade das es nicht geht.


    Ich habe noch eine Verständniss Frage.

    Laut Datenblatt sind Gpio 20/21 die Hardware Uart Gpios

    https://www.espressif.com/sites/default/files/documentation/esp32-c3-mini-1_datasheet_en.pdf

    Über den zweiten Hardware Uart finde Ich nichts im Datenblatt.

    Scheinbar ist der frei wählbar und daher geht es entweder mit gpio 4/5 oder mit 3/1 aber nie mit allen 3 gleichzeitig.

    Die Kombination 4/5 und 3/1 funktioniert ja auch ohne die im Datenblatt angegebenen Gpio 20/21.


    lg

    Hichi

    • Hilfreichste Antwort

    Also bei allen ESP32 kann man die meisten Funktionen auf beliebige Pins umschalten. Pin20/21 ist halt der default für RX/TX kann aber beliebig umdefiniert werden.

    du must dir das Datenblatt für die CPU selbst ansehen, dort sind alle Funktionen verzeichnet.

    aber jetzt die gute Nachricht. Habe einen Workaround für software serial gefunden, der erst mal funktioniert bei nicht so hohen Baudraten, also bis 9600 oder so.

    es kann sein dass es gelegentlich Lesefehler gibt, aber das kann man mit dem Medianfilter ausgleichen.

    du kannst dir meinen Fork herunterladen, oder die SML Datei hier im Anhang in dein Tasmota kopieren.


    xsns_53_sml.ino.zip

  • Hichi 19. Februar 2024 um 10:26

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Hi,

    Ja es läuft. Das ist echt Klasse :)

    Ich habe versucht deine Änderung nach zu vollziehen . Scheinbar wird jetzt statt ESP.getCycleCount(), micros() benutzt.

    Ich mache jetzt eine Aufzeichnung, um mal zu schauen wieviele Lesefehler es gibt.


    Vielen lieben dank schonmal, super gut


    lg

    Hichi