NEWS
Ferraris Zähler mit TCRT5000 und esp8266
-
@eisbaeeer
Ich habe anhand der Infos aus https://nachbelichtet.com/so-funktioniert-der-tcrt5000-mit-espeasy-als-pulse-counter/
meinen TCRT5000 mit einem Schmitt-Trigger versehen, damit ein klar definierter Rechteck-Impuls übermittelt wird.Ggf. hilft dies weiter?
-
Sodele sagt der Schwabe
Ich habe jetzt einiges am Code umgebaut. Ich musste die Interrupt Routinen umbauen, damit die Entprellung ohne "delay" realisiert werden konnte. Im Moment sieht es bei mir sehr gut aus. Der TCRT5000 hat bei meiner zweiten Zählstelle, bei der abfallenden Flanke derart geprellt, dass er 4 Impulse detektiert hat. Wer gerne testen möchte, hier das Binary für den ESP8266 NodeMCU1.0 und höher.
a73280a4-8a14-4485-95ce-b256cf3ff18a-firmware.bin
Falls ich auf die Schnelle noch das Binary für den Wemos-mini hinbekomme, füge ich die hier noch ein.
Gebt mal Rückmeldung, ob ihr jetzt passende Zählerstände bekommt. -
@w00dst0ck , wenn man diesen Thread aufmerksam gelesen hätte, wäre der Hinweis hinfällig. Das schrieb ich schon in meinen Posts, das ich einen Schmittrigger vorgeschaltet habe.
-
@eisbaeeer , jetzt noch MQTT Import und ein OLED einbauen....sowie ein Eingang für Gas und einer für Wasser....dann wäre ich Happy.....
btw....habe nur laut gedacht.
-
@menne Wenn das jetzt mal passt, könnte ich mir das schon noch vorstellen. OLED ist ja kein Problem. Hast du ein Beispiel wie das aussehen könnte? Was soll drauf?
-
@menne
Sorry, das Detail habe ich bei über 270 Antworten leider übersehen.
Denke aber, dass mein Hinweis nicht so schlimm war. -
@eisbaeeer , antworte später, muss weg.
@w00dst0ck , das sollte kein Vorwurf sein, nur ein Hinweis...... -
@eisbaeeer
Hab noch dieses Projekt aus dem Home Assistent Universum entdeckt, das Deinem sehr ähnelt.
Hier wurde schon ein OLED eingebunden.Vielleicht sind da Anregungen dabei?!
-
Die Impulse funktionieren bei mir jetzt zuverlässig. Kein Prellen mehr.
Die liebe Nachkommastelle macht aber noch Probleme. Ich habe in der aktuellen Version die Nachkommastelle entfernt, da hier bei jedem Impuls falsch addiert wird, wenn der Zählerstand größer ist (bei mir 5 stellig). Deshalb hatte ich auch nach der Verbesserung immer zu viel KWh auf dem Zähler.
Der Grund liegt darin, dass die Variable float bei krummen Teilern (bei mir z.B. 75 Umdrehungen pro KWh) beim Addieren überläuft. Ich muss mir erst noch überlegen, wie ich den Zählwert vor dem Komma von der Nachkommastelle entkopple, da float für den Zählerstand dann zu klein ist.
Jetzt teste ich erstmal eine längere Zeit ohne Nachkomma, ob alles passt. Wer mitmachen möchte, hier die Binary:
firmware.bin
Grüße Eisbaeeer -
also irgendwie habe ich mit den zwei letzten Updates Probleme.
Ich habe jetzt drei NodeMCU getestet. Alle drei verlieren die Mqtt Einstellungen
und den Zählerstand. Das einzigste, was erhalten bleibt, sind die WLAN Einstellungen.Bin ich der einzige, der die "Probleme" hat?
-
@eisbaeeer darauf hab ich gewartet, danke
-
@falke69 Das liegt daran, dass sich die Konfiguration geändert hat. Ist also richtig so. Zusätzliche Felder auf der Konfigurationsseite zieht nach sich, dass man die Einstellungen neu machen muss.
-
das bedeutet also, dass das normal und gewünscht ist, das es immer wieder die Standardwerte einträgt?
Edit: habe soeben nochmal getestet. Sobald ich den Namen "Messplatz" gegen "Stromzaehler"
ersetze, löscht es meine eingetragenen Mqtt Einstellungen, auf die Standartvorgabe und
ich verliere damit jedesmal die Verbindung zu iobroker. -
Hallo Zusammen,
Erstmal Vielen Dank @Eisbaeeer für dieses Projekt.
Ich bin auch ein wenig am testen und habe wohl ein ähnliches oder das gleiche Problem wie falke69 mit dieser neuen v.0.91.
Im Serial Monitor ist mir aufgefallen dass der NodeMCU irgendwann abstürzt:...
3fffffb0: feefeffe feefeffe 3ffe8900 401012c5
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v000d6620
~ld
Connected to stored WiFi details
192.168.1.78
Config data checksum mismatch
Internal data checksum mismatch
Connected.
IP-address : 192.168.1.20
Silver detected; waiting for red
Red detected; Waiting for silver
New WS client
Attempting MQTT connection...
failed, rc=-2 try again in one minuteAb diesem Zeitpunkt sind alle Einstellungen unter Configuration wieder auf Standard gesetzt (auch wenn ich den Namen Messplatz nicht geändert hatte, nur die IP).
Mir ist etwas Ähnliches schon ab Version 0.8 aufgefallen - hier musste ich einen MQTT zwingend konfigurieren sonst kam es wiederholt zum Absturz, aber da wurde die Konfiguration nie auf Standard zurück gesetzt. (das ist jetzt neu)
Auch die Einträge zu Config data checksum mismatch und Internal data checksum mismatch sind neu, die v0.9 war mit konfigurietem MQTT auch stabil.Ich habe hier NodeMCUv3 im Einsatz, vielleicht mach ich auch etwas falsch ? Ich teste bis jetzt nur am Basteltisch da ich den Ferraris Zähler den ich smart machen möchte erst im November besuche
-
@falke69 Ähm, nein, das sollte nicht so sein. Ich habe mich eben auch gewundert, dass meine Werte weg waren. Ich schau gleich mal in den Code, was da noch schief läuft.
-
@mahumuc sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Config data checksum mismatch
Internal data checksum mismatchDanke für den Hinweis. Das kann ich bei mir nachstellen. Ich vermute gerade noch ein Problem beim Speichern der Werte und den Interrupt Routinen. Scheinbar mögen sich die beiden nicht
Das Problem beim ESP8266 ist ja, dass es keinen wirklichen EEPROM gibt und das ganze über den Flash Speicher realisiert wird. Und das ganze scheint sich wohl mit den Interrupts zu beißen.
Eure Rückmeldungen helfen auf jeden Fall! Danke dafür.
Grüße Eisbaeeer -
kein Problem, dann warten wir auf ein Update
-
Ich weiss nicht ob es bei der Fehlersuche hilft, aber vielleicht lässt es sich doch weiter eingrenzen, da ich vermute dass es mit dem MQTT connect zusammenhängt:
Mit Version 0.9 hatte ich ja erst vermutet dass ich einen mqtt broker zwingend eintragen muss damit der NodeMCU nicht abstürzt aber ich habe jetzt festegestellt dass wenn ich den mqtt adapter am iobroker stoppe, der nodemcu auch irgendwann abstürzt. Also wenn das Übermitteln der Werte nicht klappt scheint es die Exception irgendwann auszulösen.
Dann habe ich nochmal Version 0.6 aus diesem Thread weiter oben geflasht weil die Version immer stabil war, allerdings ist mir hier jetzt auch etwas aufgefallen. Wenn der mqtt nicht erreichbar ist erscheint im serial log "Attempting MQTT connection..." in dieser Zeit (ich weiss nicht genau wie der timeout hier gewählt ist) zählt er nicht weiter. Also weitere Impulse werden komplett ignoriert. Aber die v0.6 stürzt dafür nicht ab.
Als Laie würde ich vermuten dass das Zählen und die mqtt Meldung nicht parallel laufen können sondern in Schleife hintereinander abgearbeitet werden müssen ?
VG
-
Zu der Kommastellen probelamtik denke ich man könnte sich dann komplett von den floats trennen und alles mit dem Faktor 1000 höher "setzen" und damit 3 Kommastellen in den "ganzzahlen" Bereich bringen. Damit hat man vor allem die Float ungenauigkeit bei der Addition von kleinen Zahlen mit großen Zahlen umgangen, die hier in der Natur der Zählweise der Floats besteht.
Damit hat man auch nur "3 Nachkommastellen" aber über die Zeit/Impulsauswertung auf 1 Watt genau zu sein ist hier auch eher ein Schätzeisen.
Nur so als "Gedanke".Gruß
DerDani -
@dan-master Ja, das ist wohl die einzige Möglichkeit, das vernünftig zu realisieren. Leider gibt es Rechenfehler mit float und ausserdem reicht die Stellenzahl bei weitem nicht. Ich bin mir nur noch nicht sicher, ob ich das wirklich realisiere oder ob ich einfach die aktuelle Anzahl der Umdrehungen per MQTT mitsende. Dann kann sich das jeder selbst zusammenbasteln. Ich selbst habe für die Nachkommastelle keinen usecase. Mir reichen die vollen KWh.
Gruß Eisbaeeer