NEWS
Ferraris Zähler mit TCRT5000 und esp8266
-
Nabend,
ich bin ein Neuling, was das Thema angeht, also seht mir bitte mein Unvermögen nach.
Ich habe mein TRCT5000 über A0 an A0 an meinem NodeMCU Lolin V3 angeschlossen und die binary aus dem Git geflasht, was soweit auch funktioniert hat. Danach habe ich die mqtt Verbindung konfiguriert, der Connect zum Sonoff Adapter im ioBroker funktioniert auch. Anschließend habe ich meinen Zählerstand hinterlegt. Allerdings wird im ioBroker/Sonoff kein Baum erzeugt
und im Dashboard füllen sich die Felder nicht. Es sieht die ganze Zeit so aus:
Das ist meine Config:
Und das mein Stromzähler:
Habt ihr Tipps bzw. habe ich was falsch gemacht?
Danke im Voraus!
Gruß
Kai -
@viruz Hi. Der A0 dient nur zum Ausrichten des Sensors. Du muss nach dem Ausrichten des Sensors auf einen der Eingangspins umstecken!
Gruß Lars -
@eisbaeeer moin. Du meinst, am Sensor D0 und am Board dann auch?
Gruß und frohe Weihnachten
Kai -
@eisbaeeer Danke dir für die schnelle Antwort. Allerdings hat das Programm bei mir leider eine für mich nicht nachvollziehbare Ungenauigkeit bei der Impulserkennung und da ich bereits meinen Gaszähler über einen Reedkontakt auslese, war eine Umstellung Tasmota eine einfache Sache. Jetzt bekomme ich die Impulse vom D1 Mini mit dem RPR220 über MQTT direkt und kann sie problemlos weiterverarbeiten und alle benötigten Werte in FHEM berechnen. Trotzdem nochmal ein Kompliment für deine Arbeit.
Viele Grüße
Karlheinz
P.S. Falls jemand an den Tasmota- und FHEM-Definitionen interessiert ist, bitte melden. -
@Eisbaeeer da die aktuelle Version nicht richtig funktuniert würde ich gerne meine eigene
.bin
bauen. Also habe ich platformio installiert und das bauen funktioniert auch bereits bei anderen Projekten. Nun versuche ich dein Projekt zu bauen aber bekomme dabei folgenden Fehler:File "C:\Users\user\.platformio\penv\lib\site-packages\platformio\__main__.py", line 102, in main ...
Natürlich habe ich mir bereits deine "Installation Guide" Seite durchgelesen, wo auch beschrieben wird dass das Programm nicht direkt gebaut werden kann weil es keine default
main.cpp
gibt. Das verstehe ich allerdings nicht ganz, dort liegt doch diemain.cpp
im src folder. Ich würde eher einen Buildfehler erwarten das die Librarys wiewebServer.h
nicht gefunden werden. Könntest du mir das bitte erklären?Ich danke dir schon mal und wünsche allen frohe Weihnachten
-
@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 . . .