NEWS
Ferraris Zähler mit TCRT5000 und esp8266
-
@eisbaeeer said in Ferraris Zähler mit TCRT5000 und esp8266:
@alex_k Die einzelnen Impulse werden derzeit nicht mit MQTT übermittelt. Macht irgendwie auch keinen Sinn. Was willst du denn mit den Impulsen in iobroker?
Naja, es gibt noch andere Systeme neben iobroker. Mit den Impulsen könnte ich z.B. in FHEM den
ElectricityCalculator verwenden und alle Berechnungen hinsichtlich des Verbrauchs und der Kosten durchführen lassen.Mittlerweile lauft die V0.92 mit dem Grove Infrared Reflective Sensor v1.2 auf einem Wemos D1 mini. Auf dem Wemos D1 mini pro habe ich es nicht zum Laufen bekommen. Probleme habe ich z.Zt. noch mit den Impulsen. Anscheinend muss die Entprellzeit niedriger oder evtl. auch 0ms sein.
Nebenbei: Im Forum wurde mal nach der V0.93 gefragt. In GitHub liegt nur eine V0.92.
Viele Grüße
Karlheinz -
@khkissel Noch ne Frage: Auf max. wieviel Sekunden kann ich das MQTT Publish Interval einstellen? Mir kommen da zuviel Werte über MQTT an.
-
@khkissel Der maximale Wert derzeit sind 255 Sekunden.
In main.cpp:
int mqttPublishTime; // last publish time in seconds
In configuration.json:
{ "name": "mqtt_interval", "label": "MQTT Publish Interval (seconds)", "type": "int8_t", "value": "30" },
Das ist der maximale Wert, der mit "int" möglich ist. Wer länger möchte, muss diese Variablen höher deklarieren.
Zu der Version 0.93 muss ich zugeben, dass ich wohl verpennt habe, diese auf Github zu pushen. Leider finde ich die V0.93 auch lokal nicht mehr. Was war denn in der v0.93 noch geändert? Ich habe inzwischen keine Ferraris Zähler mehr. Aber der Code lief bei mir über 12 Monate mit der Version 0.92 ohne Probleme.
Gruß Lars -
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.