NEWS
Ferraris Zähler mit TCRT5000 und esp8266
-
@jmeister79 , eins vorweg. Nimm nicht die letzte ESPeasy Version. Die spinnt....da wurden wieder so viele Fehler im Pulscounter eingebaut, das ich wieder zurück zur Mai Version bin. Die zählt zuverlässig. Das mache ich alles über OTA.
Wenn es um was neues geht, loge ich mich grundsätzlich mit einem Tablet unter 192.168.1.4 ein. Da dort die Zugangsdaten gespeichert sind, geht das Ratz Fatz. Dann bestätige ich nochmal, es wird rebootet und ist dann in der Fritte.
Man kann das alles umgehen, wenn man selbst compiliert und die Zugangsdaten zuvor in die Config eingibt und AP abschaltet. Es steht auch in der Config erkärt, was zu beachten ist, wenn mit Arduino IDE compiliert wird. -
@menne Hi, ja das ist ja nun der jetzige Stand,
da bekomme ich imemr nur Inkremente und keine Absolutwerte. DEshalb suche ich ja n Code, der den Absoluten Zählerwert im NodeMCU speichert.Hatte gehofft einfach das bin File zu benutzen und Happy zu sein.
@Eisbaeeer Hast Du n Guide für Visual Studio für nodemcu?
-
@jmeister79 , das ist Quatsch. Der Counter zählt weiter. Da kann iobroker aus oder kein MQTT connected sein. Was machst du denn da? Man muss auch via Script anweisen was nach einem connect zu machen ist....die Ticks Unterschiede ermitteln.
-
// Stromzähler 1 on({id: 'mqtt.0.Zählerschrank.Stromzähler1.Total', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("mqtt.0.Zählerschrank.Stromzähler1.Total").val > getState("mqtt.0.Zählerschrank.Stromzähler1.Variable1Total").val) { setStateDelayed("mqtt.0.Zählerschrank.Stromzähler1.Variable2Total"/*Variable2Total*/, (getState("mqtt.0.Zählerschrank.Stromzähler1.Total").val - getState("mqtt.0.Zählerschrank.Stromzähler1.Variable1Total").val), 500, false); setState("0_userdata.0.Zählerschrank.Stromzähler1.Aktueller Monat"/*Aktueller Monat*/, formatDate(new Date(), "OO", "de")); timeout3 = setTimeout(async function () { setState("0_userdata.0.Zählerschrank.Stromzähler1.Variable"/*Variable*/, (getState("0_userdata.0.Zählerschrank.Stromzähler1.Variable").val + getState("mqtt.0.Zählerschrank.Stromzähler1.Variable2Total").val)); timeout4 = setTimeout(async function () { setState("0_userdata.0.Zählerschrank.Stromzähler1.Zähler"/*Zähler*/, (getState("0_userdata.0.Zählerschrank.Stromzähler1.Zählerstand").val + Math.round((getState("0_userdata.0.Zählerschrank.Stromzähler1.Variable").val / 75)*100)/100)); timeout = setTimeout(async function () { setState("mqtt.0.Zählerschrank.Stromzähler1.Variable2Total"/*Variable2Total*/, 0); }, 7000); }, 2000); }, 2000); }
Das ist nur ein Beispiel für dich....da ist auch noch die Nachkommastelle und für dich eine nicht relevante Monatsfuniktion mit drin.
-
@menne Ja, klassischer Inkrementen Zähler, ich hatte zunächst mit der Count Variable gearbeitet und nicht das Inkrement wie Du im ioBroker durch Subtraktion gebildet. Die gehen dir dann flöten sobald Du mal keinen Kontakt hast.
Habe dann angefangen die Inkremente selebr zu Bilden aber theoretisch ist das auch keine Lösung, da der Absolutwert ja regelmäßig vollläuft und wieder bei Null anfängt.LG
Nils -
@jmeister79 , bei mir geht nichts flöten....mein System läuft seit Februar....und schon genügend die SSD ausgelesen, das dauert ca. eine halbe Stunde. Die Ticks werden nach dem Hochfahren wieder säuberlich hinzugefügt. Ich habe das nicht so gern, das ewig auf dem Eprom rumgerödelt wird....
Die 2. Zeitmessung ist in der neusten ESPeasy Version nötig.....und muss via Script angestossen werden, weil sich die Zeit sofort wieder Nullt. Also jetzt ignorieren....sonst gibt es keinen aktuellen Verbrauch mehr.
-
@menne hast du denn mal total im iobroker aufgezeichnet?
Bei mir gibt das n Sägezahn. Man sollte meinen, dass der immer bis zu einem bestimmten Wert läuft und dann auf 0 fällt. Leider tut er das total willkürlich..
Jedes Mal beim Nulldurchgang hätte ich ja Müllwerte, da das Inkrement dann riesig wäre, darum hatte ich mir gedacht dort dann auf das Inkrement auszuweichen aber das ist keine richtige Lösung.
Deshalb möchte ich ja gerne dieses Programm nutzen das @Eisbaeeer geschrieben hat. Das würde die Verbindung als Schwachstelle beseitigen. -
@jmeister79 , ich gehe eher davon aus, das du den Sensor nicht richtig positioniert hast..
Lies dir mal die Wiki über den Pulsecounter (ESPeasy) durch mit der Einstellung High oder Low....
Wenn die nicht 100% stimmt.....gehen dir Ticks verloren. Es geht zwar die LED Aus/Ein aber es findet keine Registrierung statt. Weil der Flag nicht stimmt.....
Ich habe schon Stunden im Keller verbracht, auch mit einer Kamera überwacht. Jetzt habe ich noch eine Abweichung von - 0,3 Kwh in der Woche....heute habe ich nochmal die Sensorposition geändert und zusätzlich mit Klebeband fixiert. Die Klebe Pads sind wohl nicht das ware....
Das Problem besteht aber nur bei dem Zähler, der auch mal gefordert wird. Der andere läuft extrem Stabil bei einer täglichen Last von ca. 41 - 47 Watt....7/24 -
Redet Ihr jetzt über Lösungen per ESPAesy?
Solche habe ich mehrfach implementiert und mit ESPHome (ioBroker Adapter verfügbar) geht das auch, vermutlich auch mit Tasmota. Mit ESPHome kann man noch 20kHz Impulse zählen mit einem ESP8266.
Habe dort was dazu geschrieben. -
@klassisch , hat das auch MQTT Import und eine OLED SSD1306/SH1106 Ansteuerung? Sonst ist das für mich unrelevant.
-
@menne Dieses Display scheint es auch für ESPHome und ESPEasy zu geben. Habe es aber weder da noch dort verwendet. Sowohl mein S0 Zähler als auch meine Wasserzähler kann man nach wie vor auch noch analog ablesen.
-
@klassisch , Merci.
Werde die Tage mein Zähler noch beobachten, dann werde ich mich mal in ESPHome einarbeiten..... -
[OT]
@menne sagte in Ferraris Zähler mit TCRT5000 und esp8266:dann werde ich mich mal in ESPHome einarbeiten.....
Es gibt einen ESPHome Adapter von @Dutchman. Wenn Dein ioBroker auf eine Linux Maschine läuft, instaliert der anscheinend alles automatisch. Ich habe Windows und da mußte ich esphome manuell installieren. Kein Thema, wenn man die passende python Version aktiv hat. Unter Windows gibt es allerdings das "Dashboard" nicht. Geht aber auch so. Konfiguriert wird in einer Sprache namens yaml, die das gleiche kann wie json, nur halt (unnötig) anders ist. Dann wird nur das Erforderliche auf den ESP geflasht. Dadurch erreicht man dann schlankere codes und höhere Arbeitsgeschwindigkeiten. Und zahlt mit einer reduzierten Konfiguriertbarkeit über den ESP Webserver.
-
@klassisch , schon installiert. Mein System läuft auf einem RPI 4....
-
@eisbaeeer komme seit gestern nicht mehr auf das webinterface drauf.... Ip gleich geblieben, alles online , nur kein interface mehr. Neu flashen wird wohl nix bringen denke ich
// Komisch am handy kappts nicht dafur am rechner klappts.... Ich nehme es zurück ... Aber trotzdem er hat in knppen 10 tagen 18 kw mehr gezählt...
-
Ich lese hier mit, kann aber derzeit nicht am Projekt weiterarbeiten. Ich denke in frühestens 3-4 Wochen.
Grüße Eisbaeeer -
@eisbaeeer
Kann man Deinen Ferraris_MQTT_Energy_Counter_Meter_TCRT5000 auch OTA in einen bestehenden Wemos D1 mit EspEasy flashen?
Oder ist initial die Arduino IDE zu nutzen?Gruß
Kai -
@w00dst0ck kannst du direkt flashen. Über OT A oder per upload.
-
@jmeister79 sagte in Ferraris Zähler mit TCRT5000 und esp8266:
Zur Zeit behauptet er, er könne webserver.h nicht finden
Konntest Du das Problem mit der webserver.h in der Arduino IDE lösen?
Komme hier leider auch nicht weiter.. -
@w00dst0ck Das wird mit der Arduino IDE nicht funktionieren! Die Webseite, die er nicht findet, wird dynamisch compiliert. Das kann Arduino IDE nicht. Du musst dafür VSCode verwenden damit das compiliert. Gruß Eisbaeeer