NEWS
Gaszähler mit ESPEasy und Honeywell IN-Z65
-
und hier nun das fertige Skript, wenn ihr verbesserungsvorschläge habt gerne her damit
Danke für die Hilfe aus der FB Gruppe
-
Hi in die Runde,
ich habe mir auch den IN-Z62 geholt und würde nun gerne meinen Honeywell BK-G2 auslesen.
Leider werde ich aus dem Schaltbild nicht ganz schlau... und denke mir- irgenwie kann ich das doch vielleicht via USB direkt an meinen Raspberry4 anschließen. Der ist direkt in der Nähe des Gaszählers.
Auf dem läuft der ioBroker mit diversen Instanzen und auch beispielsweise auch Smartmeter um meinen Stromzähler abzufragen. Das war sehr schön via plug&play.
Ich habe auf dem Raspi4 ein PoE-Hat und bin mir unsicher ob ich etwas an den GPIOs machen kann. Der Kollege hier hat das via Python-Script und GPIO gemacht. http://blog.bubux.de/gaszaehler-auslesen/
Habt Ihr einfache Ideen oder soll ich lieber bei der vorgeschlagenen Schaltung mittels ESP bleiben? Da ist mir nämlich noch unklar... wo kommt da der Strom her? Außerdem warum muss da ein Widerstand ran... und kann ich da auch noch ne LED "zur Bestätigung" bei Impuls einbauen.
Könnt Ihr mir bitte einen netten Anstoß geben...
Danke im Voraus.
-
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
irgenwie kann ich das doch vielleicht via USB direkt an meinen Raspberry4 anschließen.
"Irgendwie" schon, aber kompliziert und aufwändig...
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
ob ich etwas an den GPIOs machen kann.
Wenn noch ein GPIO frei ist wäre das die erste Wahl.
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Da ist mir nämlich noch unklar... wo kommt da der Strom her? Außerdem warum muss da ein Widerstand ran... und kann ich da auch noch ne LED "zur Bestätigung" bei Impuls einbauen.
Der kommt von "Links", z.B. von einem USB-5V-Steckernetzteil. Da der ESP nur mit 3.3V arbeitet hängt dann noch ein sog. Stepdown-Regler (5V --> 3.3V) davor. Du brauchst eigentlich nur den Widerstand. Der kommt an VCC vom PI und an die Leitung vom Sensor. Dies ist ein PullUp-Widerstand. Der sorgt dafür, dass die Impulse aus dem Sensor "eindeutig" sind (0 oder 1). Sollte mal der Wert gerade so an der Schwelle sein, weiß die Elektronik sonst nicht genau "ist das nu ein Impuls oder nicht?"
Damit hast du ein auswertbares Signal an GPIOxx. Jetzt kommt es nur noch darauf an, wie du das in den Broker bringen willst. Python. bash, SimpleAPI, MQTT...
Da wäre dann der Weg mittels eines ESPs einfacher -
@SBorg said in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Wenn noch ein GPIO frei ist wäre das die erste Wahl.
Ich habe mich mal etwas belesen- ja man kann die GPIOs wohl trotz PoE Hat benutzen.
Aufgrund Deiner Rückmeldung & letztem Satz lesen ich raus, dass ich den Aufwand mit GPIO lassen soll und einfach ein rumliegendes USB-Netzteil (5V, 0,5 A) und das Zubehör für wenig Geld bestellen soll und dann dann via Wlan mache...
Also so wie die Anleitung von dem Frank im 1. Post?
Und wenn ich einen WemosD1 oder NodeMCU dazwischenklemme, "spare" ich mir den Spannungswandler. Bei einem NodeMCu hätte ich den Vorteil, dass ich das Micro-USB Kabel da direkt anschliessen kann? Nicht über meine Fragen wudnern, habe bisher noch nicht mit einem ESP826 rumgewerkelt.In seiner Lösung setzt der Frank ja auf FHEM. Komme ich erst einmal ohne zurecht? Hatte das schon mal für andere Zwecke eingesetzt, wenn es geht würde ich die Werte aber lieber direkt in den ioBroker oder die DB bekommen.
Sorry...ich bin noch ganz am Anfang... und Danke im Voraus.
-
Habe ich noch vergessen:
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:und kann ich da auch noch ne LED "zur Bestätigung" bei Impuls einbauen.
Ja, ein 330 Ohm Vorwiderstand an einen freien GPIO und dann die LED gegen GND da dran, dann kannst du die auch bspw. blinken lassen bei einem Impuls.
Zuerst: vergiss mal FHEM, brauchst du nicht. Du kannst zwei Wege gehen.- Weg: mit dem PI. Da benötigst du außer dem Sensor, der LED und zwei Widerständen nichts weiter
- Weg: mittels ESP (egal ob Wemos, NodeMCU etc.). Auch hier Sensor, LED und zwei Widerstände
Für beides natürlich eine geeignete 5V Spannungsversorgung (Wemos & Co. können mit 5V betrieben werden).
Mit beiden Wegen hast du nun aber das Problem, dass du zwar die Impulse vom Zähler bekommst und die LED theoretisch schalten kannst, aber du brauchst noch Software für die Verbindung zum ioB.
Für Weg #1 musst du nun programmieren/dir was passendes suchen. ZB. pigpio (https://www.elektronik-kompendium.de/sites/raspberry-pi/2202121.htm), dann die passenden Befehle in ein Bash-Script und mittels SimpleAPI an den ioB schicken. Oder ein Python-Script, oder...
Weg #2 ist da etwas einfacher, denn du flashst auf den Wemos oä. ESPEasy, ESPurna, Tasmota... drauf und musst nur noch die Einstellungen vornehmen wie bspw. im FHEM-Beispel von oben (bei ESPEasy) nur das dann hier der MQTT vom ioB eingetragen wird. Schon hast du die Zählimpulse im Broker und kannst sie auswerten. Noch eine "rule" definiert, wenn GPIOxx low (=Zählimpuls) dann GPIOyy high für 500ms, schon blinkt auch die LED bei einem Zählimpuls.@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Bei einem NodeMCu hätte ich den Vorteil, dass ich das Micro-USB Kabel da direkt anschliessen kann?
Jein, zumindest anders als du es möchtest (du denkst wahrscheinlich als Verbindung zum PI?). Über den µ-USB kannst du Wemos & Co. nur mit Spannung versorgen, programmieren und per Terminal auf dem Rechner Daten auslesen. Man kann es auch so programmieren, dass man die Daten dann bspw. am PI abgreift, aber das ist schon nicht mehr so einfach. Da die Teile aber WLAN haben, kann ich die Daten auch direkt zum ioB funken.
Und nix "sorry", jeder hat mal angefangen und musste Fragen stellen
-
@SBorg Danke für die ausführliche Antwort.
Ich werde mich wohl erstmal um die Variante mit dem NodeMCU kümmern & bestellen.
Woran ich nicht gedacht habe... einfach mal den Raspi zur Spannungsversorgung hijacken! Wie ich meine Daten bekomme (WLAN vs. USB) ist mir vorerst nicht so wichtig. Wichtig ist erst einmal, dass es grundsätzlich läuft.
Ich werde berichten....jetzt erstmal den NodeMCU bestellen und dann weiter sehen. Wenn es erfolgreich war, poste ich mal hier eine Step-by-step Anleitung for Beginners
-
@GeorgS Hallo die werte über mqtt kommen fehlerfrei an, aber was muss ich mit deinem Script machen wo und wie muss ich welche Werte setzen, bei mir passiert leider nichts. Kannst du mir helfen.
Danke -
@bumbumb Wie hast du das umgesetzt. genau wie in der Schalte? Wieviel Widerstände (und welche?) hast Du verbaut. Bin da gerade etwas lost. In der Schalte sehe ich nur 1nen 10k Widerstand.
-
So mal in die Runde.
Ich habe den NodeMCU mit ESPEasy geflasht. Spannungsversorgung via USB. Danach entsprechend dem Blogeintrag eingerichtet. Den Reedkontakt einfach mal an GPIO-14 (4 war im Pulse Counter nicht möglich).
Jetzt explodiert mir die Zeit...!?! Ideen?
Wie mache ich nun weiter. Muss ich ein Script bauen, welches die Absoluten Werte dann aufsummiert...?
Sehr ich das richtig, dass die Werte alle 5 Minuten (Delay) übertragen werden? Die Zeit-Werte sind wirklich seltsam...
Soweit ich das sehe, ist der Absolut-Wert der "Zählerstand" und der Delta-Wert der Unterschied zur letzten Übertragung?
-
@SBorg Vielen Dank für Deine Unterstützung.
Habe nun ermittelt, wofür ich die beiden Widerstände benötige. Einen 10KOhm-Widerstand ans VCC zusammen mit dem entsprechenden GPIO udn den anderen 1KOh-Widerstand zsuammen mit einer LED.
Naja- das mitd em blinken beim Puls habe ich mit ESpEasy noch nicht rausbekommen. Mal weitersuchen.
-
@oberfragger Da ich aktuell kein ESPEasy nutze kann ich da auch nicht richtig hilfreich sein, aber schau dir mal die "rules" an.
Die Syntax ist in etwa Trigger --> tue etwas
Hier wird GPIO 14 überwacht und GPIO 2 (z.B. angeschlossene LED) auf High/Low geschaltet:on System#Boot do Monitor GPIO,14 endon on GPIO#14=1 do GPIO,2,1 endon on GPIO#14=0 do GPIO,2,0 endon
-
@SBorg Also Du hast "irgendeinen Arduino-Kram" direkt drauf?
Dann via Funk/ MQTT an den IO-Broker? -
@oberfragger Jepp, entweder Tasmota (sonoff), direkt shelly oder eigener Sketch und dann alles per MQTT an den ioB.
-
@SBorg Aha. Mit Tasmota. Werde den zweiten NodeMCU mal umflashen, da ich eh Tasmota auf den Sonoffs drauf habe. Habe aber gerade gesehen- in EspEasy gibts eine Rules Section... Gleiche Syntax! Sollte dann vermutlich gleich sein. Da teste ich mal. So langsam wird das was.
Nutzt hier jemand die Spiffs zum Zwischenspeichern des Zählerstandes...?
-
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Nutzt hier jemand die Spiffs zum Zwischenspeichern des Zählerstandes...?
Würde ich nicht unbedingt empfehlen. Spiffs ist nur ein Teil des normalen Flashspeichers und der hat nur eine sehr begrenzte Lebenszeit was Schreibzyklen betrifft. Da du jeden Impuls sowieso an den ioB schickst, würde ich den Zählerstand auch dort erfassen/speichern. Du wirst ja wohl kaum eine (VIS-)Anzeige haben/möchten ala 14526 Impulse, sondern eher Gesamt 4345,533 m³, Verbrauch heute, gestern, Woche, Monat, Jahr...
-
@SBorg Danke läuft.
Musste den Code Umdrehen- nun leuchtet die LED so lange der Reed-Kontakt ausgelöst ist. Wenn ich ehrlich bin... ist die LED nur zur Kontrolle da und macht auf Dauer mal garkeinen Sinn. Eigentlich sieht man das ja via MQTT viel besser... Jedanfalls werde ich der Leuchtdiode noch einen Timer mitgeben, falls der Zähler mal auf der "0" stehen bleibt.
In ESPEasy-Mega (also die 2.0er Version) hat man dann ein extra Register mit "Rules". Bei Tasmota gibt man das ja soweit ich gesehen habe via Commando-Zeile ein.
Wenn man weiss wie es geht- echt einfach Nun muss ich nur noch das ioBroker-Script ergänzen. Dann gibts eine Anleitung....
Werden echt heiss die NodeMCUs mit Stromversorgung via USB-Port.
-
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Musste den Code Umdrehen
Ist halt abhängig davon ob du den GPIO per Reedkontakt auf High setzt (dafür ist obige rule), oder den GPIO mit dem Kontakt auf Low ziehst.
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
ist die LED nur zur Kontrolle da und macht auf Dauer mal garkeinen Sinn.
Zumindest siehst du ob das Teil noch "lebt". Ich gehe auch öfters soweit, dass ich sie im Minutentakt bspw. für 2 Sekunden blinken lasse, oder 3x schnell... So sehe ich schon optisch nach spätestens 1 Minute, dass der ESP noch lebt. Auf das blinken eines Impulses wartet man uU. ziemlich lang
@oberfragger sagte in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Werden echt heiss die NodeMCUs mit Stromversorgung via USB-Port.
Ist auch "normal", da die ESP-Chips mit 3.3V laufen. Die überschüssigen 1.7V (5V USB - 3.3V ESP) müssen "verbraten" werden = in Wärme umgesetzt.
-
@SBorg said in Gaszähler mit ESPEasy und Honeywell IN-Z65:
Zumindest siehst du ob das Teil noch "lebt". Ich gehe auch öfters soweit, dass ich sie im Minutentakt bspw. für 2 Sekunden blinken lasse, oder 3x schnell... So sehe ich schon optisch nach spätestens 1 Minute, dass der ESP noch lebt. Auf das blinken eines Impulses wartet man uU. ziemlich lang
Auch eine gute Idee!
-
@SBorg Hi, Danke für Deine Hilfe. Es läuft jetzt soweit alles.
Wie versprochen habe ich ganz Änfängerfreundlich mal eine ausführliche Doku geschrieben.
https://forum.iobroker.net/topic/27923/anleitung-gaszähler-mit-nodemcu-espeasy -
@GeorgS Hi Georg,
es ist bei Dir zwar schon einige Zeit her. Leider läuft mein "Minimal"-Blockly welches auf den Delta-Wert setzt nicht so wie ich es mir gedacht habe. Deshalb versuche ich Deine fertige und funktionierende Lösung zu durchdringen bzw. umzusetzen (da ist ja bereits alles/ sehr viel drin).
Welches Delay hast Du bei Dir im ESP gesetzt. Auch 300 wie in der Anleitung? Ich bin mir unsicher ob es am Script oder ESP liegt. Ebend ist der Gaszähler von 994,58 auf 994,59 umgesprungen und der Absolut-Wert um 2 gestiegen.
Welche Debounce-Time hast Du gesetzt? Ich versteh das gerade nicht was die Hardware macht...Im Moment bin ich unsicher wo der Wurm drin ist.
Ich verstehe Deine Variablen noch nicht (ist ja nicht so klein das Script).
IBrennwert, iGrundGebuehr, iArbeitspreis sind die Werte aus Deiner Rechnung damit Du den Preis errechnen kannst.
Via MQTT wird ja Delta, Total und Zeit übertragen. Ich vermute iTotal entspricht dem ""Total"-Wert aus MQTT.
Was sind die "liMQTT" und "LiTotal"-Werte?Das Delta benötigst Du garnicht? Der Rest sind selbst errechnete Datenpunkte? Was ist bei Stromausfall/ Neustart des ESP? Musst Du dann den Zählerstand neu abgleichen?
Ich versuche mir das nun gerade Schritt für Schritt herzuleiten damit ich das besser nachvollziehen und verstehen kann.