NEWS
Ferraris Zähler mit TCRT5000 und esp8266
-
@khkissel hi. Wie hast du das über Tasmota realisiert? Ich tracke damit auch schon meinen Gasverbrauch. Allerdings arbeite ich dann mit ioBroker, InfluxDB und Grafana.
Gruß
Kai -
@mazzzon Hi. Ich habe gerade die finale Version hochgeladen. Jetzt funktioniert auch das Dashboard und Configuration im Web. Dies wird aber meine letzte Version sein. Ich werde diesen Pfad nicht weiterentwickeln. Für weitere Entwicklungen bitte den Forks auf Github folgen. Grüße Lars
-
@viruz Hab Tasmota auf dem D1 mini installiert. Anbindung des RPR220 an Ground, 5V und D1. Relay_i an GPIO2 und Switch an GPIO5 definiert. Siehe folgende Vorlage:
{"NAME":"D1_mini_RPR220","GPIO":[1,0,256,1,1,160,0,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
MQTT mit den entsprechenden Definitionen angeklinkt. Dann noch folgende Einstellungen in der Tasmota-Konsole, damit auch der Zustand des Switches über MQTT weitergereicht wird:
Backlog Switchmode 1; PowerOnState 0; Setoption0 0; Setoption63 0 Rule1 on Switch1#state do Publish stat/DVES_00941B/ElektroZaehler %value% endon on Switch1#state do POWER %value% endon Rule1 1
Bin mir aber momentan nicht sicher, ob alle Setoptions benötigt werden. Aber es fuktioniert:
12:11:09.107 RUL: SWITCH1#STATE performs "Publish stat/DVES_00941B/ElektroZaehler 1" 12:11:09.113 MQT: stat/DVES_00941B/ElektroZaehler = 1 12:11:09.124 RUL: SWITCH1#STATE performs "POWER 1" 12:11:09.130 MQT: stat/DVES_00941B/RESULT = {"POWER":"on"} 12:11:09.133 MQT: stat/DVES_00941B/POWER = on 12:11:14.244 RUL: SWITCH1#STATE performs "Publish stat/DVES_00941B/ElektroZaehler 0" 12:11:14.251 MQT: stat/DVES_00941B/ElektroZaehler = 0 12:11:14.261 RUL: SWITCH1#STATE performs "POWER 0" 12:11:14.270 MQT: stat/DVES_00941B/RESULT = {"POWER":"off"} 12:11:14.275 MQT: stat/DVES_00941B/POWER = off
In FHEM wird jetzt jeder Impuls gezählt. Dazu gibt es im entsprechenden Device die Attribut-Definitionen
readinglist stat/DVES_00941B/ElektroZaehler:.* StromZaehler userReadings StromCounter monotonic { ReadingsNum($name, "StromZaehler", 0) }, StromVerbrauchHeutekWh {sprintf("%.1f",ReadingsNum($name,"StromVerbrauch_Tag",0)/75)}, StromKostenHeuteEuro {sprintf("%.2f",ReadingsNum($name,"StromVerbrauchHeutekWh",0)*0.208072)}
monotonic bedeutet, das der Zähler StromCounter immer um 1 höchgezählt wird, wenn StromZaehler auf 1 steht.
So läuft es bei mir seit Tagen mit ganz geringen Abweichungen, die aber daher kommen, dass mein MQ-Broker manchmal über das WLAN nicht erreicht werden kann. Ist aber selten. Da nun alle Impulse in FHEM ankommen,
kann ich alles andere weiterberechnen und verarbeiten.
Viele Grüße
Karlheinz -
Hallo miteinander,
ich beschäftige mich erst seit kurzem mit diesem Thema und habe den Beitrag mit großem Interesse verfolgt und würde dieses Projekte gerne nutzen um die Daten meines analogen Stromzählers zu erfassen.
Bisher habe ich ein Projekt von Github genutzt um die Daten per Mqtt zu erfassen aber nach paar Tagen stimmt der ermittelte Zählerstand nicht mehr.
Nun möchte ich dieses Projekt testen aber ich scheitere beim erstellen des Frameworks.Wenn ich nach der Anleitung, wie auf Github verlinkt, vorgehe bekomme ich beim laden der lib_deps = ESP8266 IoT Framework einen Fehler.
Er findet dann die libaries nicht bsp. abc.h usw.
Nehme ich aber zum Beispiel das Github Projekt was ich vorher genutzt habe und schmeiße die Main raus, ersetze sie gegen ein example aus der Framework Anleitung und nehme eine leere Platformio.ini, schreibe dort lib_deps = ESP8266 IoT Framework und zusätzlich me-no-dev/ESP Async WebServer @ ^1.2.3 dann bekomme ich nach dem Build ein Success!?Ich habe dies aber noch nicht auf den ESP (Wemos D1 Mini) geladen und geschaut was passiert.
Bitte verzeiht mir diese Frage aber wie erwähnt ich beschäftige mich erst seit kurzen damit aber:
Wie geht es weiter nachdem das Framework erstellt ist?Bitte entschuldigt vielmals und ich möchte diesen Thread auch nicht mit meiner Frage zumüllen aber vielleicht findet sich ja jemand der mich vielleicht unterstützen würde (per PN?)
-
@slevin Hi. Warum nimmst du nicht die fertigen Binaries von hier? https://github.com/Eisbaeeer/Ferraris_MQTT_Energy_Counter_Meter_TCRT5000/releases/tag/0.94
Gruß Lars
-
Oh man...
Vielen Dank, hat auf anhieb geklappt!
Wobei ich gerne wissen würde wie es mit Platformio funktioniert...ich werde da noch etwas testen.D0 vom TCRT5000 ist mit D5 vom Wemos D1 Mini verbunden liefert aber keine Daten.
Woran könnte das liegen?Gruß Slevin
-
@eisbaeeer Danke für den Upload der letzten Version. Klappt jetzt bei mir auch mit dem Compilieren.
Viele Grüße
Karlheinz -
Hi,
ich habe heute meinen SmartMeter bekommen, aber leider kriege ich den PIN erst irgendwann in 2-3 Wochen per Post Da ich noch einige TCRT5000er in der Ecke liegen habe, wollte ich übergangsweise dann mit diesem Projekt Impulse zählen (5000 per kWh). Beim Ferraris habe ich optisch mit dem "AI on the Edge Device" gearbeitet.
Ich habe also die 0.94 geladen und geflasht, im Dashboard steht 0.92 und warum auch immer resetet sich die Konfig alle 30-60 Sekunden auf Standard (MQTT und Zähler).
Kennt das Problem jemand? -
@slevin Der Wemos D1 mini hat aufgedruckte Bezeichnungen für die Pins, da musst Du D1 nehmen. Das ist dann intern für den Wemos ein D5 wie in den Pin-Schaubildern angegeben.
Also D1 .. D4 wie aufgedruckt und nicht D5 wie überall geschrieben.
(Ich habe meinen gestern angeklebt) -
@Eisbaeeer ich habe mir Deinen Code mal angeschaut und eine Frage dazu (kompilieren kann ich noch nicht, das Framework müsste noch installiert werden):
In Version 0.92 hast Du als Bugfix die Interrupts für länger laufende Routinen unterbrochen. Die werden auch sonst öfter mal ab- und wieder angeschaltet.
Ich meine, dass dadurch Impulse verloren gehen können. Immer dann, wenn ein Interrupt reinkommt und die Interrupts gerade abgeschaltet sind, wird der ja nicht bearbeitet.Kannst Du mal genauer erklären, welche Fehler Du hattest damit das Abschalten notwendig war?
"Eigentlich" dürfte das nicht nötig sein.(und Danke für dieses Projekt!)
-
@etlam sagte in Ferraris Zähler mit TCRT5000 und esp8266:
In Version 0.92 hast Du als Bugfix die Interrupts für länger laufende Routinen unterbrochen. Die werden auch sonst öfter mal ab- und wieder angeschaltet.
Hi. Ohne Interrupts verliert man mehr Impulse. Das kommt vor allem von der MQTT Routine. Diese braucht leider etwas lange, bis sie die Werte an den MQTT Server gesendet hat. Die Interrupts werden immer beim senden per MQTT abgeschaltet, sonst sind die aktiviert. Bei dauerhaft aktivierten Interrupts kam es vor, dass der ESP beim Übertragen mit MQTT rebootet hat. Auch das Framework ist da leider etwas anfällig. Falls es einen besseren Weg gibt, gerne einen Pull-request in Github stellen. Ich werde das Projekt jedoch nicht weiterentwickeln, da es bei mir obsolet ist.
Grüße Lars -
@eisbaeeer Danke für die Erklärung.
Ich denke auch dass es mit Interrupts besser sein sollte. Der Reboot hört sich irgendwie nach einen zuschlagenden Watchdog an. Ist meist kniffelig das zu debuggen.
Würdest Du denn PullRequest noch annehmen?
Das würde wenn aber noch dauern, da ich nicht viel Zeit zum basteln habe. -
@etlam Klar. Pull-requests mach ich schon. Ich entwickle das nur nicht mehr selbst aktiv weiter, da ich keine Ferraris mehr habe.
-
Hallo zusammen,
ich bräuchte mal eure Unterstützung. Da es mein erstes mal ist, mit Arduino und Sensoren und etc, zu spielen, verstehe ich leider nur Bahnhof. Ich habe mir den letzten .bin heruntergeladen und geflasht. Es hat gebootet, es hat WLAN, ich kann Dinge anpassen, den Sensor habe ich angeschlossen (3V3, GND, A0 und D5).
Mein Setup ist:
- NodeMCU Lua Amica Module V2 ESP8266
- KY-033 Line successor module with TCRT5000
- Eclipse Mosquitto
Ich sehe ab und zu:
Red detected; Waiting for silver Silver detected; waiting for red Red detected; Waiting for silver Silver detected; waiting for red 33.61 kW @ 1428ms loops_actual_4 :0 / 75 meter_counter_reading_4 :1000 KWh Red detected; Waiting for silver
aber dann kommt
Attempting MQTT connection... connected subscribed to Ferraris/Messplatz/Zähler1/UKWh/set subscribed to Ferraris/Messplatz/Zähler2/UKWh/set subscribed to Ferraris/Messplatz/Zähler3/UKWh/set subscribed to Ferraris/Messplatz/Zähler4/UKWh/set subscribed to Ferraris/Messplatz/Zähler1/Stand/set subscribed to Ferraris/Messplatz/Zähler2/Stand/set subscribed to Ferraris/Messplatz/Zähler3/Stand/set subscribed to Ferraris/Messplatz/Zähler4/Stand/set --------------- CUT HERE FOR EXCEPTION DECODER --------------- Soft WDT reset >>>stack>>> ctx: sys sp: 3ffffcf0 end: 3fffffb0 offset: 01a0 3ffffe90: 00000777 00000000 00000000 40230826 3ffffea0: 00000000 00000000 3fff4eb4 402124b0 3ffffeb0: 00000000 00000009 3fff5d7c 401013a2 3ffffec0: 3ffe8e58 3fffff6c 3fffff6c 00000000 3ffffed0: 3fff195c 3fff549c 00000033 40212544 3ffffee0: 00000331 3ffe8908 00001abc 4022a9f2 3ffffef0: 00000140 3fff50cc 3fff195c 4022aa94 3fffff00: 3fffdad0 00000020 3fff50b4 3fff1c68 3fffff10: 3fffdad0 00000002 00000001 4022aac0 3fffff20: 3fffdad0 00000002 00000001 4020fe8d 3fffff30: 00000000 000c000f 00000000 00000000 3fffff40: 74616c70 00000000 68574b55 00000000 3fffff50: 04000000 6e617453 00000064 05000000 3fffff60: 3fff509c 000c000f 80000000 3fff50cc 3fffff70: 002c002f 80000000 3fff4f84 0018001f 3fffff80: 80000000 00000006 3fff16c0 3fff1c68 3fffff90: 3fffdad0 3fff15b4 3fff16c0 40210055 3fffffa0: feefeffe 00000000 3ffe8904 4022ff9a <<<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 v000f2f10 ~ld
und mein MQTT bekommt keine Daten obwohl er sich anmeldet:
1673941018: New client connected from 10.42.4.0:15779 as FerrarisClient-Messplatz (p2, c1, k15, u'[redacted]'). 1673941032: Client FerrarisClient-Messplatz closed its connection.
Sorry wenn ich irgendwo irgendwas übersehen habe...
P.S. alles liegt noch auf meinem Arbeitstisch und teste es indem ich meine Hand vor dem Sensor vorbei bringe
Danke u. Gruss,
Andrei -
@gavu das ist bei einem meiner Testgeräte exakt genauso, das andere geht. Also recht komisch, das es geräteabhängig ist.
"Soft WDT reset" bedeutet dass er für irgendwas zu lange braucht und der Watch Dog dann einen Reset macht. Damit ist auch klar, das niemals etwas am MQTT ankommen wird. Ich wollte mir das anschauen wenn ich mal Zeit habe, also eventuell noch dieses Jahr . . . -
@etlam Danke für die Info, hatte mir auch Hoffnung gemacht dass es doch gehen würde... Ich habe 3 Geräte bestellt, und 3 Sensoren. Keins der Geräte funktioniert... ich warte mal ab, vielleicht wird es bald ein Update geben... Oder kannst du mir einen anderen Board-Typ empfehlen? evtl. einen anderen Hersteller?
-
@gavu sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Oder kannst du mir einen anderen Board-Typ empfehlen? evtl. einen anderen Hersteller?
Ich hatte mir seinerzeit 3 Stk. von AZ-Delivery bestellt (AZDelivery NodeMCU Lolin V3 Module ESP8266 ESP-12F) und dazu vom gleichen Hersteller 3x TRCT5000.
Gleich beim ersten Versuchsaufbau hat die Kombi am MQTT-Adapter problemlos funktioniert.
Inzwischen habe ich einen zweiten Controller mit Tasmota geflasht und über den Sonoff-Adapter angebunden. Völlig problemlos. -
@gavu Auf der Config-Seite gibt es einen Eintrag "Home-Assistant Auto Discovery". Wenn ich den auschalte, hat er weniger MQTT Daten zu schicken und es geht "besser". Du musst allerdings schnell genug klicken und den save Button erwischen, bevor es wieder bootet.
Ich habe gerade mein "nicht funktionierendes" NodeMCU neu aus der PlatformIO geflashed, jetzt geht es auch. Vorher hatte ich es über esptool von der Kommandozeile aus gemacht. Eventuell waren da Parameter falsch? Womit flashst Du? -
@eisbaeeer wie Du schon gesehen hast, habe ich einfach mal angefangen Bugs auszubauen die hier bei mir noch aufgetreten sind.
Kannst Du selber noch testen? Oder wie machen wir das mit einem neuen Release auf der GitHub Seite? Hier hatten ja auch andere zufällige Re-Boots, denen könnte das ja auch helfen.
Ich würde mit einem Refactoring des Codes weitermachen um langfristig die Interrupts dauerhaft aktiv lassen zu können. Möchtest Du vorab etwas mit mir absprechen, oder soll ich einfach loslegen? (Ich denke dass man hier auch Direktnachrichten schicken kann?)
-
@etlam sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Möchtest Du vorab etwas mit mir absprechen, oder soll ich einfach loslegen?
Hi. Ich habe dich in Github berechtigt. Kannst direkt loslegen. Ich selbst kann leider nicht mehr testen, da ich keinen Ferraris mehr habe. Ich werde mir auch keinen reinschrauben . Aber es würde mich freuen, wenn das Projekt jemand weiter betreut! Go, go, go!
Gruß Lars