D0 Zähler SML auslesen mit Tasmota

  • meierchen006 Also ich habe auch noch Probleme mit meinem Näherungssensor. Er zählt zu wenig. Probiere gerade die Pollzeit von 1ms aus. Mal schauen ob es hilft. Hatte bisher 10ms und 50ms ausprobiert. bei beiden wurde zu wenig gezählt. Angeschlossen ist er zur Zeit an 5v und via Spannungsteiler an GPIO14. Habe auch schon den IRQ Modus probiert, leider startet dann mein WemosD1Mini alle halbe Minute in etwa neu und gezählt wird erst recht nicht. Probiert an D2 und D5. Woran könnte es liegen? Bin auf uni5.


    Ich möchte nochmal sagen, dass ich das Projekt wirklich super finde. Allerdings gibt es auch etwas schlechtes, die Dokumentation. Man kann von niemanden verlangen hier 25 Seite durchzulesen um dieses System zum laufen zu bekommen. Zumal Github ja eine Wiki-Funktion bietet. Vielleicht kann man mal gemeinsam an so etwas wie ein Tutorial o. FAQ etc. arbeiten und eine gescheite Readme.md + Changelog erstellen?!

  • hallo sunburst


    da man mir nachsagt ich könne Anfängern nichts richtig erklären da ich viel zu viel voraussetze müsste das am besten gerade ein Anfänger mal versuchen.


    als Start kann man ja die Einführung im Source code selbst hernehmen.


    durch die neue Möglichkeit die Zähler im Script zu definieren entfällt das mühsame neu kompilieren nach jeder Änderung.


    direkt nach dem Abspeichern des Script werden alle Änderungen sofort übernommen und der Treiber neu gestartet.


    Leider weigert sich Theo Arends diesen Treiber in Tasmota zu übernehmen, da er behauptet das könne man nur in Deutschland gebrauchen.


    kann mir aber vorstellen dass solche IR Interfaces auch in allen möglichen zumindest europäischen Ländern gebräuchlich sind.


    bezüglich IRQ countern hat ja auch Wolfi Probleme. bei mir stürzt aber nix ab.


    vielleicht könnt ihr mir ja mal eure Definitionen schicken (am besten nach dem ihr auf script umgestellt habt)

  • Hi!


    Ich habe ein Problem, was mir jetzt zum zweiten Mal passiert ist:


    Ohne das ich den esp8266 manuell neu gebootet habe oder das Netzteil entnommen wurde, haben sich meine Werte für Gas und Wasserzähler auf den eingegebenen Wert zurückgesetzt.


    Ist es ein Softwareproblem oder ein instabiles Netzteil?

    Softwarestand 6.5.0.16 Build 2019-07-13 vom damaligen aktuellen Branch, Core 2.4.2/2.2.1 (cfd48f3)


    Was bedeutet Blocked Loop? Beim Grund für Neustart


    Gibt es keine Möglichkeit die Werte, für den Fall eines Reboots, zu puffern?


    Noch was:


    Können die MQTT Werte jetzt direkt ohne iobroker abgefangen werden oder muss iobroker noch verwendet werden?


    Danke


    URBANsUNITED

  • die counter werden automatisch gespeichert (jede Sekunde) weil sie teil der Tasmota Settings sind (hast du SaveData an?)


    blocked loop bedeutet dass die software mehrere Sekunden in einem Loop feststeckt


    was meinst du mit MQTT abgefangen?

    was von iobroker willst du denn ersetzen?

  • Hi!


    Savedata an? Bestimmt nicht, weil ich die Funktion nicht kenne. Wo muss das gesetzt werden?


    Zitat

    blocked loop bedeutet dass die software mehrere Sekunden in einem Loop feststeckt

    Kann der ESP sich dadurch dann auch neu starten?


    Ich hatte iobroker mit deiner Extension (iobroker.sonoff) benutzt, um an die MQTT Werte zu kommen, die ich dann weiter an Grafana/inFluxDB geleitet hatte. Wollte iobroker jetzt raushaben und die Werte über meinen MQTT Server direkt abfragen und speichern.


    Danke

  • Hi!


    Savedata an? Bestimmt nicht, weil ich die Funktion nicht kenne. Wo muss das gesetzt werden?

    Beantworte ich selber:


    Findet man in der Console:


    SaveData 0 = save parameter changes only manually

    1 = save parameter changes every second (default)

    2..3600= save parameter changes every x second

    Console aufrufen

    SaveData 1 eingeben enter drücken


    Im Log schauen ob dort ... "SaveData".""ON" steht, wenn ja, alles ok!



  • Wolfi

    sunburstc


    ok, dann liegt es vielleicht am Prellen, habe jetzt eine IRQ Entprellung eingebaut.


    IRQ mode : eine negative Zahl schaltet auf IRQ mode und die Zahl ist die Entprellzeit in Millisekunden.


    wenn es immer noch abstürzt schickt mir bitte eine Definition mit der der Fehler auftritt damit ich den Fehler suchen kann.


    bei mir funktioniert es einwandfrei.



    URBANsUNITED


    die Speicherung erfolgte bisher nur bei gewolltem Neustart. Habe jetzt analog zum Tasmota counter eine Speicherung um Mitternacht hinzugefügt.

  • Ich komme vermutlich erst morgen dazu, mich damit weiter zu befassen, hatte heute morgen allerdings die aktuelle Version von dir (uni7) runtergeladen und in config_override rules deaktiviert und script aktiviert. Hab es auch direkt in der Config probiert. Brachte keinen unterschied. Er schreibt immer, "web" wäre nicht deklariert in der Datei xdrv_webserver.ino (oder ähnlich, hab die genaue Fehlermeldung auf dem Laptop.) Also alle Sachen die sich auf web beziehen, zb. "web.error=0" werden angeprangert beim kompilieren. An der Platform.ini habe ich nichts abgeändert. Auch sonst keine Einstellungen geändert. Hab es quasi direkt von Github runtergeladen, in der config_override meine WLAN Daten angegeben und wie oben erwähnt, die Script Geschichte.

    Hatte leider keine Zeit mehr mich noch weiter damit zu beschäftigen. Aber vielleicht hast du ja eine Idee gemu2015 .


    Werde das mit dem IRQ morgen mal austesten. Und bzgl. Tutorial oder ähnlichem, würde ich mithelfen!



    Hier noch kurz der Log:fehlerlog_uni7.txt



    Grüße!

  • gemu2015


    Danke! Mitternacht macht sinn. Die meisten Geräte und Wasser sind dann inaktiv. Top!


    Kannst du meine zwei Themen aus 505 auch bitte noch beantworten?

    Bezügl- MQTT - wenn es noch einen anderen Weg gibt. Magst du denn dann verraten? Danke



    Danke dir!!

    Auch nochmals Danke für deine tolle Arbeit an Tasmota mit deinen Erweiterungen! Damit ist es die Eierlegendewollmilchsau!


    Cheers

  • Hallo zusammen.

    Ich bin noch relativ frisch in der Materie und hänge an genau den gleichen Schlauch, kann aber mit der Lösungsbeschreibung leider nichts anfangen.

    Der erste Sensor funktioniert super nur der zweite will nicht. Habe den zweiten Sensor an D5 (für mich GPIO14) am d1 Mini gelötet und kann mit dem Ausdruck „Software Pin“ nichts anfangen.

    Kann mir da jemand auf die Sprünge helfen? Muss der zweite Sensor an einen anderen Pin?

  • sunburstc


    habe meine universal7 auf den heutigen Stand von Tasmota dev gebracht. sollte jetzt fehlerfrei kompilieren.


    giulup


    du must schon etwas genauer beschreiben was du erreichen willst. normalerweise hängt der erste SML sensor am HARDWARE serial pin 3, alle weiteren und auch counter hängen an anderen pins, bei denen die serielle Schnittstelle per software emuliert wird.


    URBANsUNITED


    wenn ich das richtig verstanden habe, hast du ausser iobroker noch einen 2. MQTT server auf dem die Daten eigentlich landen sollen.

    warum schickst du nicht die Tasmota Daten direkt dorthin ? (indem du diesen Server statt iobroker in Tasmota definierst)



    an alle user dieses Treibers:


    kann allen nur empfehlen die neue Version mit der script Definition zu verwenden. die per source code definierten Zähler werde ich nicht weiter unterstützen.


  • Ich versuche es mal. Ich habe einen d1 Mini, an dem ich zwei identische Stromzähler ablesen will. Dafür habe ich mir zwei tekst5400s besorgt. Einen habe ich zwischen RX und Gnd gelötet und den anderen zwischen D5 und Gnd. Beide habe ich so definiert:


    Für den Zähler an RX bekomme ich immer die richtigen Daten. Nur der zweite Zähler spuckt gar nichts aus. Deswegen meine Frage ob ich den Software Serial pin noch an anderer Stelle definieren muss oder ob ich was anderes vergessen habe.


  • giulup


    die Definition ist schon richtig. Hast du meine universal7 genommen oder nur den Treiber in eine Tasmota Installation kopiert?

    du brauchst auf jeden Fall auch die modifizierte Tasmota_Serial LIB aus meinem Fork.


    hast du mal die beiden Inputs vertauscht? Vielleicht ist ja bei deinen Kopplern was nicht in Ordnung.

  • Ich habe die universal6 benutzt die gestern noch die aktuellste war. Die beiden Koppler habe ich auch schon gegeneinander getauscht und beide funktionieren an RX. Zusätzlich habe ich auch verschiedene Pins durchprobiert.Auch an beiden Zähler alle Variationen versucht. Beide Zähler senden ordentliche Daten mit beiden Kopplern. Aber eben nur an RX.

    Irgendwo habe ich gelesen, dass ein Widerstand noch zwischen die Koppler und die Pins gehört. Liegt es evtl daran? Dann dürften die aber doch nicht an RX funktionieren. Oder muss ich in der Konsole noch etwas einstellen?

  • du hast keine Pullups verwendet?


    du brauchst unbedingt einen Pullup von ca 4,7 Kiloohm zwischen dem Pin und 3.3V


    beim Mini gibt es einen Pullup an RX, dort brauchst du keinen.

    Aaaaaaah vielen Dank. Das werde ich dann gleich mal probieren. So viel verstehe ich leider noch nicht von den Zusammenhängen.

  • gemu2015


    Hallo gemu2015


    Also momentan funktioniert mein Niederschlagsmesser mit meiner zusätzlichen Hardware ( Monostabile Kippstufe zur puls Verlängerung.

    (warte auf Regen) werde noch berichten

    Frage wie bekomme ich am einfachsten meine Arduino Umgebung auf den Neusten Stand? (bzw. deinen Stand mit Änderungen)

    Kochbuch?

    Einfachstes Vorgehen?

    Trick?

    Oder alles ersetzen?

  • sunburstc


    habe meine universal7 auf den heutigen Stand von Tasmota dev gebracht. sollte jetzt fehlerfrei kompilieren.

    Habe es ausprobiert! Es läuft als Skript Version. Jetzt muss ich testen, ob es nun mit dem IRQ bei mir funktioniert. Bisher wurde bei mir ja ein zu geringer Wasserverbrauch aufgezeichnet. Auch die negativen Pollzeiten scheinen zu funktionieren.

    Was allerdings nicht funktioniert: Direktes publishing durch addieren der Nachkommastellen mit 16. Das führt bei mir (skript version) dazu, dass es ein "Hardware Watchdog" Reset gibt. Zumindest steht das als Reset Grund unter Informationen.


    Offensichtlich muss auch immer noch

    Code
    #define USE_SML_M

    und zumindest ein Meter(Zähler) muss definiert werden.


    Dementsprechend definert man ja eigentlich 2 mal einen Zähler. Einmal im Quellcode und einmal im GUI Skript.


    Nachdem verändern des GUI Skripts, springen die Zählerstände wieder zurück auf den letzten gesicherten Stand. Was u.U. auch mal 0 sein kann.


    Ich melde mich wieder wenn es was neues gibt!

  • sunburstc


    es braucht einen default Zähler in der Definition damit die Initialisierung auch ohne script klappt.


    der Vorteil der script Version ist auch, wenn etwas schief läuft disabled Tasmota das script und der Treiber nimmt wieder die default Definition


    und natürlich muss #define USE_SML_M gesetzt sein damit der Treiber überhaupt kompiliert wird.


    das Rücksetzen der Zählerstände beim Neustart des Scripts ist behoben. (neue Version auf Github)


    Die Watchdog Fehler beim direkt MQTT können auftreten wenn zu viele Ereignisse hintereinander kommen, oder der MQTT Server nicht reagiert.


    Bei mir funktioniert das, hängt aber sehr vom individuellen Zähler ab. Versuchs erst mal nur mit einer Zeile.


    hast du das mit einem counter versucht?


    direkt MQTT funktioniert nicht mit einem Counter und hängt sich auf wenn der counter im IRQ mode ist.

    dann wird nämlich der MQTT transfer im Interrupt aufgerufen was immer schief geht.