NEWS
Ferraris Zähler mit TCRT5000 und esp8266
-
@FredF Freut mich, wenn es doch noch mehr Leute gibt, die noch sowas brauchen.
Was mir jetzt schon aufgehalten ist. Ich muss noch einen Timeout für die Umdrehugen setzen. Meine Wärmepumpe läuft ja nur ab und zu. Ohne Timeout zeigt sie mir aber immer noch die 1,7KW an, weil ja keine rote Marke mehr vorbei kommt. Aber das lässt sich ja noch ändern .
Wenn es stabil ist, stelle ich es auf Guthub, dann könnt ihr auch testen.
Denke nächste Woche irgendwann.
Gruß Eisbaeeer -
Hallo,
meine zwei TCRT5000 sind auch angekommen und ein Gehäuse hab ich auch ausgedruckt. Hab das ganze mal mit espeasy getestet um die Impulse anzuzeigen. Angeschlossen hab ich das ganze mal an einen Wemos D1 im Arduino Uno Format. Mit einer Powerbank hat er die Impulse genau gezählt, aber wenn ich den Wemos mit einem 12V Schaltnetzteil versorge dann waren die Impulse meistens doppelt, die LED am TCRT5000 geht aber nur einmal aus pro Umdrehung.
Ich freue mich schon aufs testen. -
@Ritter Hallo "Ritter"
Herzlich willkommen als tester. Ich mag keine "Bastel" Lösungen. Deshalb hab ich mich dazu entschlossen, ein Image für einen ESP8266 zur Verfügung zu stellen. Ich bin schon so lange dabei, dass ich inwzischen vergessen habe, wie iobroker vorher gehiesen hat (irgend was mit ccu.io). Wie schon geschrieben, denke ich, dass ich noch diese Woche eine Release für zwei Zähler veröffentliche. Du kannst gerne Bescheid geben, wenn es bei dir dann funktioniert hat.
Grüße Eisbaeeer -
@Eisbaeeer soll ich dann einen nodemcu nehmen oder geht auch ein Wemos D1 mini?
-
@Ritter Guten Morgen.
Es spielt keine Rolle, ob du einen D1 Mini oder NodeMCU verwendest. Die Basis ist die selbe. Du kannst auch einen esp32 verwenden, habe ich aber noch nicht getestet. Gruß Eisbaeeer -
Version 0.1 ist online
Ich habe heute die initiale Version 0.1 hochgeladen. Ich lade hiermit alle dazu ein, den Code zu testen. Falls jemand kein IDE (Arduino IDE) installieren "will / kann", bitte kurz Bescheid geben. Ich kann auch gerne die Binary zur Verfügung stellen. Allerdings sollte das Board dann ein "NodeMCU Ver.1" mit 4MB flash sein, da dies mein Entwicklungsboard ist und ich keine Sonderlösungen compilieren werde!
Falls ihr (vermeintliche) Fehler findet, bitte hier posten oder noch besser ein issue auf Github erstellen. Dann kann ich direkt auf die Fehler reagieren.
Ich habe mich dazu entschlossen, den Code auf max. 4 Zähler zu beschränken (sorry @Jey-Cee). Wer noch mehr Zähler erfassen möchte, kann den Code gerne selbst auf die maximalen Eingänge des Prozessors erweitern oder mich nach den Kosten fragen . Der Code ist soweit verständlich beschrieben.
Im README.md sind auch noch Links zu Thingiverse. Dort habe ich einen Halter für die TCRT5000 entworfen. Über einen Thumb-up würde ich mich freuen. Auch hier im Forum gibt es die Möglichkeit, den Post zu bewerten. Ich verdiene NULL KOMMA NIX damit.
Und bitte nehmt das ernst, was im Footer steht. Ich werde keinen Support per E-Mail anbieten. Wenn, dann bitte nur hier im Forum. Dann haben alle etwas davon!
Nun wünsche ich Euch viel Spaß beim testen. Ich freue mich auf Eure Rückmeldungen!
Github Code: Link Text
Thingiverse: Link TextGrüße Eisbaeeer
-
@Eisbaeeer sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Ich habe mich dazu entschlossen, den Code auf max. 4 Zähler zu beschränken (sorry @Jey-Cee).
Kein Ding ich versteh das. Werd es schon irgendwie hinbekommen.
-
@Jey-Cee Melde dich, wenn du die Stellen nicht findest! Sonst bist halt 8 Euro mehr für einen weiteren NodeMCU los
-
@Eisbaeeer Hallo, vielen Dank fürs bereitstellen. Ich teste es gerade auf einem Wemos D1 mit einem Zähler. Bis jetzt läuft alles.
-
Was mir noch so in den Kopf kommt. Die Firmware sollte sich auch für S0 und die Impulsausgaben von digitalen Zählern, Wasserzählern, Gaszählern, etc. nutzen lassen. Lediglich die Eingangsbeschaltung müsste man ändern. Aber ein Impuls bleibt ein Impuls. Hat das schon jemand getestet oder umgesetzt?
Grüße Eisbaeeer -
@Eisbaeeer
Das wäre meine nächste Frage gewesen...
Z.Zt zähle ich die Gasimpulse mit einem Tasmota geflashten D1 mini. Damit alles im Haus an einer Stelle ankommt bin ich gerade am umverkabeln... Ziel wäre Strom, Gas und 2 Wasserzähler (fehlen auch noch) mit deiner Lösung zu erfassen.
Wenn mein TSCT5000 (endlich) kommt, werde ich das mit testen... -
@FredF Prima. Ich habe selbst kein Gas und auch noch keinen Intelligenten Zähler, mit dem ich das testen könnte. Mein Wasserzähler hat auch noch keinen Impulsausgang. Falls das funktioniert, könnte man die Firmware noch soweit anpassen, dass man auswählen kann, was man am Eingang messen will (Gas, Strom, Wasser, etc) und dementsprechend auch andere MQTT Daten senden.
Bisher laufen meine zwei Zähler ohne Ausfälle. Die Zählerstände an den Rollenzählwerken stimmen auch mit dem im ESP überein. Scheint also ganz gut zu laufen.
Grüße Eisbaeeer -
Kurzer Zwischenbericht, es läuft.
-
@Eisbaeeer super. Meine sensoren sind da, hatte aber noch keine Zeit damit was zu machen.
Musstest du deine Sensoren modifizieren? -
@Jey-Cee nein, die waren ohne Modifizierung super zum einstellen. Ich musste aber die IR Dioden von einem Sensor nachlöten. Die waren so krumm bestückt, dass sie sonst wo hingeleuchtet haben, nur nicht gerade aus auf die Zählerscheibe. Aber was will man von Chinaware erwarten. Wenigstens war die Beschaltung korrekt.
Gruß Eisbaeeer -
@Eisbaeeer sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Was mir noch so in den Kopf kommt. Die Firmware sollte sich auch für S0 und die Impulsausgaben von digitalen Zählern, Wasserzählern, Gaszählern, etc. nutzen lassen. Lediglich die Eingangsbeschaltung müsste man ändern. Aber ein Impuls bleibt ein Impuls. Hat das schon jemand getestet oder umgesetzt?
Das geht schon mit den üblichen Verdächtigen wie ESPEasy sehr gut. Dazu braucht es keine Eigenentwicklung.
Man muß sich dann noch lediglich um die Totalisierung kümmern, da ESPEasy zwar auch die Summe übertragen kann, die aber bei Reset wieder nullt. Hier kann ioBroker mit einem Skript aushelfen, welches den "Rückwärtssprung" des ESP Summierers erkennt und berücksichtigt. So überlebt die Gesamtsumme sowohl ein Update von ioBroker als auch einen Neustart des ESP.Die TCRT5000 Module kann man auch einfach zu einem Lesekopf für die optische Info-Schnitstelle der "modernen Meßeinrichtung", welche für Verbraucher bis 6000kWh/a den Ferraris Zähler ersetzen wird, umbauen.
-
@klassisch Ja das stimmt sicher, dass man das mit ESPEASY und Scripten in iobroker erschlagen kann. Ich denke da immer an die "User", welche nicht so viel Erfahrung mit Javascript oder Blockly haben und möchte einen leichten Einstieg in iobroker ermöglichen. Die ganzen Funktionen erschlagen den "Erstbenutzer" meist. Da ist es doch schön, wenn man eine "fertige" Lösung hat.
Meine Philosophie von Adaptern (bzw. Anwendungen, wie dieses Projekt) ist, möglichst alle Funktionen die benötigt werden, direkt zur Verfügung zu stellen. Was passiert z.B. mit dem Zählerstand, wenn ich iobroker warten muss, oder ich eine downtime des Servers habe? Dann stimmt der Zählerstand auch nicht mehr.
Glaub mir, ich habe schon Erfahrung mit iobroker und vorher ccu.io. Es ist und bleibt open-source. Da ist man nach einem Update nicht davor geschützt, dass etwas nicht läuft. Es wurde schon mega viel getan, damit nichts passiert, aber in der Vergangenheit gab es immer wieder mal Probleme. Deshalb habe ich meine Wärmepumpensteuerung, ehemals Raspi, auf ein MEGA2560 umgestellt und die Firmware selbst geschrieben. Ein Microcontroller ist für Steuerungen gebaut und iobroker ist eben kein Echtzeitbetriebssystem.
Kurzum, ich finde schon, dass man es den Usern einfacher machen kann und genau deshalb hab ich dieses Projekt gestartet. Ich kann mir gut vorstellen, dass dies die Basis für ein "all-in-one" Zählersystem werden kann. Und Dein Hinweis, dass man den TCRT5000 auch für die Datenkommunikation per IR-Auge verwenden kann, bringt noch eine neue Idee.
Warum nicht das Projekt auch für smarte Stromzähler verwenden und die Werte 1.8.0 - 1.8.2 und 2.8.0 - 2.8.2 mit auslesen?
Also meine Idee wäre ein universelles Image für den ESP mit folgenden Möglichkeiten:- Strom (Ferraris, smart mit IR-Auge, S0)
- Gas (Reed-Kontakt, S0) (gibt es den auch schon smart?)
- Wasser per Impuls (S0)
- Modbus
Somit hätte man ein günstiges System, mit dem man alle Energiearten erfassen bzw. auslesen kann.
Leider (oder zum Glück ) habe ich bisher nur einen Ferraris, Gas werde ich nie brauchen, da ich eine Wärmepumpe habe. Solar habe ich auch nicht, also kommt eine Rückspeisung erstmal auch nicht vor. Das ganze soll auch nur ein Denkanstoß sein, falls jemand diese ganzen Medien hat und braucht und eventuell auch Arduino IDE oder C beherrscht, kann er hier gerne weiter machen oder mich ansprechen. Mich freut es auf jeden Fall immer wieder (siehe auch Onkyo Adapter), wenn andere auch davon einen Nutzen haben.
Danke auch an Dich für deine Unterstützung von iobroker. Du hilfst ja auch an jeder Ecke!
Gruß Eisbaeeer -
@Eisbaeeer sagte in Ferraris Zähler mit TCRT5000 und esp8266:
@klassisch Ja das stimmt sicher, dass man das mit ESPEASY und Scripten in iobroker erschlagen kann. Ich denke da immer an die "User", welche nicht so viel Erfahrung mit Javascript oder Blockly haben und möchte einen leichten Einstieg in iobroker ermöglichen. Die ganzen Funktionen erschlagen den "Erstbenutzer" meist. Da ist es doch schön, wenn man eine "fertige" Lösung hat.
Genau deswegen wo immer möglich "Fertigsysteme" einsetzen, die von einer möglichst großen Community gepflegt werden. Das ist über längere Zeit stabil. Ich habe auch einiges mit dem ESP8266 gemacht und bei mir funktioniert das auch alles sehr stabil. Aber zum Weitergeben reicht die Codequalität leider nicht. Nicht richtig sauber und zeitgemäß programmiert, alles zusammengestückelt. Damit kann keiner was richtig anfangen.
So eine Standardsache wie Impulse zählen kann ESPEasy gut und dank der guten Doku ist das schnell eingerichtet. Und wenn wieder eine neue Sicherheitslücke im WLAN Bereich des Espressiv-Codes endeckt wird, dann kümmert sich jemand von der Commuinity drum, der was davon versteht. Ähnliches gilt für Tasmota, ESPHome.Meine Philosophie von Adaptern (bzw. Anwendungen, wie dieses Projekt) ist, möglichst alle Funktionen die benötigt werden, direkt zur Verfügung zu stellen. Was passiert z.B. mit dem Zählerstand, wenn ich iobroker warten muss, oder ich eine downtime des Servers habe? Dann stimmt der Zählerstand auch nicht mehr.
Genau dieses Problem habe ich bei meinem Konzept gelöst. Normalerweise nehme ich die Gesamtsumme der Ticks, welche der ESP8266 zählt und berechne daraus den Zählerwert. Das mache ich mit einem JavaScript in ioBroker. Dazu brauche ich die Steigung (Ticks per kWh) und einen Offset, z.B. den Zählerwert bei Inbetriebnahme des Konglomerats.
Wenn ioBroker gewartet wird, zählt der ESP8266 weiter. Wenn ioBroker wieder an Bord ist, bekommt er die Summe vom ESP, setzt sie in die Formel ein und die kWh Anzeige stimmt perfekt. Das Einzige was fehlt ist der zeitliche Verlauf in der History während der Downtime des ioBroker.
Andererseits kann auch mal der ESP einen Reset bekommen. ESPEasy ist sehr stabil, also abgestürzt ist da bei mir noch nichts. Aber eine Stromabschaltung an dieser Meßstelle hatte ich schon. Während dieser Abschaltung gab es natürlich keinen Verbrauch an der Meßstelle. Und der ESP hängt bewußt am selben Stromkreis und hatte beim Wiederkehren des Stroms einen Neustart. Also startet der Summenzähler wieder bei Null. Bei der nächsten Übertragung bemerkt das der ioBroker und justiert den Offsetwert neu. Und kein Tick wird vergessen.
Also robust gebaut.
JavaScript ist nicht meine Lieblingssprache, aber die Community ist groß, es gibt Literatur und an vielen Stellen Hilfe.Glaub mir, ich habe schon Erfahrung mit iobroker und vorher ccu.io.
Ja, ich komme auch von ccu.io her.
Es ist und bleibt open-source. Da ist man nach einem Update nicht davor geschützt, dass etwas nicht läuft. Es wurde schon mega viel getan, damit nichts passiert, aber in der Vergangenheit gab es immer wieder mal Probleme.
Ja, das wird sich nicht vermeiden lassen. Auch bei kommerziellen Produkten.
Es sei denn man macht keine Updates mehr. Aber darunter leidet die Security und irgendwann sind die Randbedingungen komplett weg.Deshalb habe ich meine Wärmepumpensteuerung, ehemals Raspi, auf ein MEGA2560 umgestellt und die Firmware selbst geschrieben. Ein Microcontroller ist für Steuerungen gebaut und iobroker ist eben kein Echtzeitbetriebssystem.
Genau! Weder echtzeittauglich noch geeignet für sicherheitsrelevante Dinge. Deshalb macht ioBroker für mich die Datenaufzeichnung und Komfortdinge. Und dazu zähle ich auch Aufzeichnen der Stromzähler etc.
Wasser zähle ich ja auch mit ESP8266. Hochaufeglöst, sehr stabil, uptime 756 Tage seit dem letzten Stromausfall. 2 Stück ESP8266. Einer der nur zählt und ein zweiter der die Daten aufarbeitet und überträgt. Aber eben ein zusammengestückelter, Code, abgeleitet aus einem Multisensorprojekt. Nichts zum Weitergeben, damit kann keiner wirklich was anfangen. Und ich kann das auch nicht richtig supporten. War interessant für mich zu programmieren. Habe viel gelernt, aber andere wie z.B. die ESPEasy Community machen einfach den besseren Code und warten den auch besser. Face Reality.
-
@klassisch sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Genau deswegen wo immer möglich "Fertigsysteme" einsetzen, die von einer möglichst großen Community gepflegt werden. Das ist über längere Zeit stabil.
Ja aber nur, wenn sie auch für den normalen Benutzer tauglich sind. Und die von Dir beschriebene Lösung ist es nicht. Genau das wird iobroker oft vorgeworfen. Zu kompliziert für Einsteiger.
Zu den Sicherheitslücken möchte ich noch bemerken, dass easyesp die selben libraries verwendet. Also das ist kein Argument. Source easyesp: https://github.com/letscontrolit/ESPEasy/blob/mega/src/ESPEasyWifi.hEs muss eben jeder für sich entscheiden, welchen Weg er geht.
Grüße Eisbaeeer -
@Eisbaeeer Gibt es eine einfachere oder bessere Lösung für das Totalisierungsproblem? Also die Erhaltung der Gesamtsumme auch über Restarts hinweg?
Man könnte das Flash des ESP nutzen, aber dann muß man sich auch ums wear levelling kümmern.
Bei meinem selbstgebauten Wasserzähler habe ich ein I2C EEPROM genutzt. Aber das ist für den Anfänger wahrscheinlich keine Option, obwohl es da mittlerweile fertige Breakout-Boards gibt.Edit: Vor dem Einsatz des EEPROMs hatte ich bei Start des Wemos den letzten übertragenen Zählestand von der Zentrale geholt. Damals noch CCU, was schwieriger ist. Aber mit smpleAPI Adapter könnte man das mit ioBroker machen. Vielleicht die Benutzerfreundlichste Lösung. Da müßte der User nur den simpleAPI Adapter installieren, einen Datenpunkt anlegen und dem ESP sagen, wie der Datenpunkt heißt. ESPEasy etc kann das nicht. Aber wenn Du selbst programmierst, könntest Du das so tun.