NEWS
ESP-Home: HLW8012 Power Sensor
-
Habe gerade mal interessiert die Erläuterung gelesen und ich würde dies leicht anders verstehen.
Das HWL812 Modul braucht natürlich Strom und Spannung um daraus eine Leistung zu errechnen. Das macht nicht der ESP. Wenn Du nur Verwendung für die Leistung hast, dann reicht eine Verbindung zum CF Pin aus und bekommst einen Wert in Watt geliefert.
Der Rest erübrigt sich. Du bekommst auf einem Pin des ESP die Leistung in Watt und brauchst keine Spannung etc. Mehrere HLW8012 benötigen dann eine entsprechende Anzahl Pins am ESP für deren Leistungswerte.
Siehe auch hier unter Outputs: https://tinkerman.cat/post/hlw8012-ic-new-sonoff-pow
Die Leistung wird als Frequenz/Pulse ausgegeben (Je größer die Leistung je je schneller die Frequenz der Pulse) und der ESP rechnet das in Watt um.
-
Ich muss ja für CF, CF1 und SEL je einen Pin eingeben (wenn ich den weglasse meckert der Compiler). Jetzt dachte ich, icch gebe einfach für mehrere Sensoren den gleichen Pin an, aber auch das geht scheinbar nicht.
Wenn ich 2 HLW Sensoren aktiviere und beide auf die exakt gleichen Pins lege kommt nur beim zweiten ein vernünftiger Wert an (angeschlossen ist eine 40W Glühbirne):
sensor: - platform: hlw8012 ## 5v gnd sel cf1 cf sel_pin: D5 # neben gnd cf1_pin: D6 # U/I cf_pin: D7 # P #sel_pin: GPIO05 #cf1_pin: GPIO03 # U/I #cf_pin: GPIO01 # P current: name: "HLW8012-1 Current" voltage: name: "HLW8012-1 Voltage" power: name: "HLW8012-1 Power" energy: name: "HLW8012-1 Energy" update_interval: 10s change_mode_every: 8 initial_mode: VOLTAGE voltage_divider: 2477 current_resistor : 0.00192 - platform: hlw8012 sel_pin: D5 cf1_pin: D6 # U/I cf_pin: D7 # P # sel_pin: GPIO05 # cf1_pin: GPIO03 # U/I # cf_pin: GPIO04 # P current: name: "HLW8012-2 Current" voltage: name: "HLW8012-2 Voltage" power: name: "HLW8012-2 Power" energy: name: "HLW8012-2 Energy" update_interval: 10s change_mode_every: 8 initial_mode: VOLTAGE voltage_divider: 2477 current_resistor : 0.00192
[22:58:18][D][hlw8012:076]: Got power=0.0W, current=0.0A [22:58:18][D][sensor:131]: 'HLW8012-1 Current': Sending state 0.00000 A with 2 decimals of accuracy [22:58:18][D][sensor:131]: 'HLW8012-1 Power': Sending state 0.00000 W with 1 decimals of accuracy [22:58:18][D][sensor:131]: 'HLW8012-1 Energy': Sending state 0.00000 Wh with 1 decimals of accuracy [22:58:20][D][hlw8012:076]: Got power=37.5W, current=0.2A [22:58:20][D][sensor:131]: 'HLW8012-2 Current': Sending state 0.16069 A with 2 decimals of accuracy [22:58:20][D][sensor:131]: 'HLW8012-2 Power': Sending state 37.46177 W with 1 decimals of accuracy [22:58:20][D][sensor:131]: 'HLW8012-2 Energy': Sending state 1.53726 Wh with 1 decimals of accuracy
Wie kann ich bein einem Wemos D1 Mini möglichst viele Leistungen mit HLW8012 messen?
-
@wolfgangfb
Ich habe probehalber den einen HLW auf D5-7 gelegt und den zweiten auf D1-3. Wenn nur an einem der beiden HLW ein Verbraucher anliegt, dann stimmen die Messwerte. Wenn an beiden etwas anliegt kommen völlig wirre Werte an. Kann es sei, dass pro ESP nur eine HLW Instanz zulässig ist? -
Wenn wie gesagt die Spannung und der Strom Dich nicht wirklich interessieren, aber für ESPHome platform: hlw8012 notwendig sind, dann würde ich das anders lösen.
# Example configuration entry sensor: - platform: pulse_meter pin: 12 name: "Pulse Meter"
Und für active power gibt es auf den GPIO eine frequenz gemäß hlw data sheet und der referenz spannung.
für den Aufbau wie den Sonoff POW, entspricht das ~1HZ pro 12W
Das Datenblatt habe ich bisher nur auf Chinesisch gesehen, aber mit einer Glühbirne sollte man selbst die Werte heraus bekommen und der IOBroker oder auch ESPHome kann dann Hz in Watt umrechnen.
-
Hallo, theoretisch scheint das zu klappen, nur praktisch habe ich 2 Probleme:
- Mit einem HLW8012 kann ich kleine Leistungen halbwegs präzise messen. Nur wenn es in den kW Bereich geht, dann kommt der Zähler des ESP scheinbar nicht mehr mit, da kommen dann einfach keine Logdaten bzw. Messwerte mehr.
- Dann habe ich 2 HLW8012 angeschlossen und mich wieder über die seltsamen Messwerte bei Parallelmessungen gewundert. Ich habe das ganze jetzt reproduzierbar auf folgende Situation runtergebrochen:
Wemos D1 Mini, über USB mit Spannung versorgt. Die 5V und GND Pins auf eine Brücke gelegt die die beiden HLW8012 mit Spannung versorgen. CF des ersten HLW hier auf D5 gelegt, der zweite HLW ist mit keinem GPIO verbunden. Schließe ich am ersten HLW eine 40W Glühbirne an wird mir dieser Wert auch angezeigt (Muliplikator ist 1.07). Aber: Wenn ich am zweiten HLW (der ja nur mit +5 und GND am ESP angeschlossen ist) einen Verbraucher anlege (hier einen 1kW Heißluftfön) dann flippen die Werte an ersten HLW völlig aus (eine reine elektromagnetische Störung des Heißluftföns kann ich ausschließen denn wenn ich +5 und GND vom zweiten HLW trenne macht der erste HLW alles richtig).
Also stört scheinbar der zweite HLW über 5V oder GND den ersten in einer Art, dass die Messwerte nicht mehr zu gebrauchen sind. Der ESP, der ja an den gleichen 5V und GND hängt, zeigt sich davon unbeeindruckt. Jetzt frage ich mich, wie ich 2 HLW so anschließen kann, dass die sich nicht gegenseitig über die Versorgungsspannung stören.
-
-
Dass der GPIO keine hohen Frequenzen packt ist normal, aber kW-Bereich d.H. ab ca. 80Hz ist Schluß? Ob man mit sowas wirklich dauerhaft solche Leistungen betreiben sollte und messen, ist ein anderes Thema aber 2-3kW d.h. 250Hz schafft der Sonoff ja auch. Hast Du Filter genutzt/geändert?
-
Ohne Deine Schaltung zu kennen schwer dazu was zu sagen.
-
-
Ich möchte natürlich keine Dauerleistung im kW Bereich messen, dazu habe ich viel zu wenig Vertrauen in die dünnen Leiterbähnchen. Mich wundert nur, dass der Sonoff es kann.
Bitte entschuldige die grausame Paint Zeichnung, aber ich hoffe es wird klar, was ich mache.
Hier die Schaltung, die nicht geht (sprich sobald an beiden HLW eine Leistung ermittelt wird stören sich die Messungen gegenseitig derart, dass man damit nichts mehr anfangen kann). Selbst wenn ich die Verbindung von CF zu GPIO5 (D1) trenne wird bei GPIO14 (D5) nur Müll ermittelt sobald am unteren HLW eine Leistung anliegt.
Wenn ich den zweiten HLW über eine separates USB Steckernetzteil mit Spannung versorge (und noch nicht einmal die Massen zusammenlege um ein gemeinsames Potential zu haben!) dann klappen beide Messungen unabhängig voneinander! Auf D1 wird mir 40 W und auf D5 1000W angezeigt. Ich hätte eigentlich erwartet, dass der ESP mit dem für ihn in der Luft hängenden Pegel auf D1 (GPIO5) nichts anfangen kann, es geht aber komischerweise.
Jetzt möchte ich aber nicht für jeden HLW ein eigenes Steckernetzteil verwenden, dann könnte ich mir von den Kosten gleich eine Tuya oder Meros Steckdose mit Leistungsmessung kaufen.
-
@wolfgangfb
Danke und nun habe ich das gesehen wie ich es vermutet habe. Schön zeichnen kann sich jemand anders drum kümmern2 Punkte: 1) Ich versuche nochmal ob man dieses Datenblatt nicht doch irgendwo in einer lesbaren Version bekommt. Der Text dürfte auch interessant sein. Bisher stolper ich nur über Frequenz CFU und mir ist noch nicht klar was das sein soll. Die Gleichung Frequenz CF und Frequenz CF1 ist logisch durch ihre Pins.
- Irgendwo bin ich auf Kommentare gestoßen, wo diese Entwicklung dringend empfohlen wurde sein zu lassen. Im Datenblatt soll etwas von Galvanischer Trennung über Optocoupler erwähnt sein. In bestimmeten Fällen hat man sonst Netzspannung an den Niederspannungs Pins liegen.
Das Risiko und die Gefahr ist eine Sache, Potentialverschiebung und Referenzspannung eine Andere. Hier kommt genau Deine Schilderung zum tragen, wenn 2 HLW angeschlossen sind. Nur leider wieder dieses Datenblatt auf Chinesisch .....grrrr und man kann es nicht ordentlich nachlesen.
Edit: Und die Aufgabenstellung/Effeckte sind nicht neu: https://github.com/xoseperez/hlw8012/issues/16
- Irgendwo bin ich auf Kommentare gestoßen, wo diese Entwicklung dringend empfohlen wurde sein zu lassen. Im Datenblatt soll etwas von Galvanischer Trennung über Optocoupler erwähnt sein. In bestimmeten Fällen hat man sonst Netzspannung an den Niederspannungs Pins liegen.
-
Wirklich fündig bin ich nicht geworden und ich kann es auch teils verstehen, da hier am Netz schon jeder genau wissen sollte was er macht bzw. solche Bastellei schwer zu vertreten ist. Dennoch hätte ich es gerne genauer gewusst, auch wenn ich persönlich für sowas lieber Shelly 1PM, 2.5 oder Pro2PM einsetze.
Am informativsten ist noch diese Projektbeschreibung mit Schaltplan:
Was ich hier sehe: Verbindung Neutralleiter mit AGND oder anders ausgedrückt keine galvanische Trennung zwischen 230V und Kleinspannung
ist mir nicht geläufig und zu dünnes Eis. -
@dieter_p was mich am meisten an diesen HLW8012 stört, es sind totale Schätzeisen. Hablwegs valide Werte spucken die eigentlich nur aus wenn man damit eine (fixe) ohmsche Last betreibt auf welche der Sensor vorher fein säuberlich kalibriert ist.
Ein CSE7766 ist schon eine ganz andere Liga und spuckt selbst ohne Kalibrierung augenscheinlich valide Werte aus.
Und wer was ordentliches für kleines Geld braucht, dem kann ich die pzem004t (v3!) empfehlen. Laut Messungen von @Johannes-Bauerstatter war der (~10€) pzem004t v3 mit einem Fluke 1735 (>2000€) gleich auf.
@wolfgangfb said in ESP-Home: HLW8012 Power Sensor:
Oder kann man dem ESP Modul fest die Spannung vorgeben so dass zur Leistungsberechnung keine Pin benötigt wird?
Wahrscheinlich kannst du dir da mit esphome tatsächlich was zusammen schustern, aber warum?
Du wirst nie eine genaue Leistung bekommen können wenn du nur die Stromstärke misst. Es ist erforderlich die tatsächliche Spannung (zum gleichen Zeitpunkt) zu wissen, die eben oft nicht 230V ist, sondern sehr gerne auch ein gutes Stück drüber oder drunter.
Das ist übrigens auch ein Grund warum der HLW8012 so bescheiden ist. Dieser kann nicht zur gleichen Zeit Stromstärke und Spannung messen, sondern nur abwechseln, was die Leistungsmessung teils extrem verfälschen kannSollte dir die Leistung egal sein und du tatsächlich nur die Stromstärke messen willst, ist das leichteste wahrscheinlich einfach eine CT clamp zu nehmen.
-
@opensourcenomad said in ESP-Home: HLW8012 Power Sensor:
Ein CSE7766 ist schon eine ganz andere Liga und spuckt selbst ohne Kalibrierung augenscheinlich valide Werte aus.
Wenigsten kann man das Datenblatt schon einmal lesen und hat eine Chance es zu verstehen
Diesmal sogar mit Beispielapplikationsschaltungen. Mmmh, VSS = Chip-Ground gar nicht angeschlossen auch eine Erkenntnis.
-
Erstmal danke für die Infos. Mir geht es nicht darum, auf das Milliwatt genau zu messen, wie viel Strom fließt. Ich kann durchaus mit Schätzeisen leben. Das ganze dient eher dazu zu erfassen, welche Geräte eingeschaltet sind und welche nicht. Dazu genügt die Genauigkeit. Da das ganze fest verdrahtet ist kann ich auch dafür sorgen, dass da keine Phase auf den ESP kommt. Ich fasse das eh nur an, wenn der Strom aus ist.
Bei allen anderen Chips habe ich einfach kein Breakout Board gefunden und beim pzem liegt man deutlich über 10€ da kann ich auch gleich einen Sonoff R3 Dual für 15€ nehmen, da bin ich dann bei 7.5€ pro Kanal.
Mit dem HLW und einem 4-fach USB Steckernetzteil bei Ali für 1,50€ und einem D1 Mini und 4 HLW komme ich fast auf 10€ für 4 Kanäle. -
Das bekannte Breaktout-Board so so. Die Kommentare im ChinaShop deuten auf das was @OpenSourceNomad sagt -> Schätzeisen von gröbster Sorte und dabei kann man sich nicht sicher sein ob dort ein Strom fließt/ Gerät an oder aus ist.
Der Shop hat noch ein Mini-Wiki und hier gibt es die Hinweise:
https://www.electrodragon.com/w/HLW8012
Die letzten beiden Punkte wären mein Ansatz für die Schaltung um dort etwas im Labor am Trenntrafo lesen zu können. Betreiben würde ich es nicht auf dieser Informationslage und Eindruck zur Qualität.
-
@wolfgangfb said in ESP-Home: HLW8012 Power Sensor:
Mit dem HLW und einem 4-fach USB Steckernetzteil bei Ali für 1,50€
Ich bin tatsächlich auch ein Pfennigfuchser, aber einige Produkte importiere ich willentlich nicht selber aus China sondern erwerbe diese von lokalen Händlern. Ganz oben auf dieser Liste stehen bei mir Netzteile. Warum? Weil diese €1,50 Artikel potentiell tödlich sein könnten. Meistens fehlt diesen Geräten so ziemlich jede Schutzvorkehrung die einem vor einer AC Verbindung am (DC) USB Ausgang schützen sollte. Im besten Fall raucht nur das angeschlossene Gerät ab , in schlechteren Fällen bekommt der geneigte user einen ordentlichen Stromschlag
Auch zu bedenken ist, wenn solche Geräte erst mal im Hause verstreut sind, steigt die Gefahr das andere Leute (welche vielleicht nicht wissen das es sich um minderwertigsten Schrott handelt), Gefahren ausgesetzt werden.
Hier gibt es ein nettes Video wo ein augenscheinlich originales Samsung USB Netzteil mit einem billigst Nachbau verglichen wird (inklusive Autopsie!)
-
@wolfgangfb said in ESP-Home: HLW8012 Power Sensor:
Mir geht es nicht darum, auf das Milliwatt genau zu messen, wie viel Strom fließt. Ich kann durchaus mit Schätzeisen leben.
Dann sollte doch jede x-beliebige ct coil ausreichen um die Stromstärke zu messen. Vorteil: deine DC Seite ist sauber von der AC Seite getrennt Lebensgefahr sollte hier als nicht mehr bestehen
Gibt z.B. so 99 Cent Teilchen hier:
Laut Spezifikation können diese bis zu 5A ab und kommen schon mit op-amp daher. Kombiniert z.B. mit einem ads-1115 und du solltest zumindest wissen ob dein Gerät an oder aus ist
Preislich kommst du damit wahrscheinlich sogar noch günstiger weg als mit deinem gewünschten/geplanter Frankensteinaufbau
-
Hallo
Ich habe mir jetzt genau so ein Coil Teil besorgt (sieht genauso aus wie Dein Bild) und einen ADS1115. Ich komme aber damit bisher überhaupt nicht zurecht.
Das Coil Teil hat die Anschlüsse GND GND OUT und VCC. die beiden GND habe ich mit dem ESP und dem ADS1115 GND verbunden. VCC mit 3.3 V des ESp und Out mit A0= des ADS1115.
Beim ADS-1115 habe ich den I2C Bus angeschlossen und eben an A0 den Ausgang des Coil.Ich habe zuerst die Basisconfiguration des yaml genommen.
ads1115: - address: 0x48 sensor: - platform: ads1115 multiplexer: 'A0_GND' gain: 6.144 name: "ADS1115 Channel A0-GND"
Der ADS1115 wird erkannt und liefert einfach zufällige Werte. Dann habe ich mit dem Gain experimentiert. Scheinbar kann man da nur vielfache von 1.024 eingeben. Wenn ich 1.024 eingebe erhalte ich Ausgang immer Werte um die 1.024 V
[21:58:24][D][ads1115:164]: 'ADS1115 Channel A0-GND': Got Voltage=1.023969V [21:58:24][D][sensor:124]: 'ADS1115 Channel A0-GND': Sending state 1.02397 V with 3 decimals of accuracy [21:58:29][D][ads1115:164]: 'ADS1115 Channel A0-GND': Got Voltage=1.023969V [21:58:29][D][sensor:124]: 'ADS1115 Channel A0-GND': Sending state 1.02397 V with 3 decimals of accuracy [21:58:34][D][ads1115:164]: 'ADS1115 Channel A0-GND': Got Voltage=1.023969V [``` Aber egal welcher Strom durch die Spule fließe, an dem Wert ändert sich nichts. Was hat es genau mit dem Gain auf sich und welchen Fehler könnte ich sonst gemacht haben?
-
@wolfgangfb am besten einfach mal das multimeter auspacken und gucken was der Sensor an
out
auswirft. Diese (blauen) pots muss man manchmal übertrieben weit drehen das was in der Messung passiertWas hat es genau mit dem Gain auf sich
Sollte alles in der Doku stehen: https://esphome.io/components/sensor/ads1115.html
Aber bevor du weiter am ads1115 doktorst würde ich sicherstellen das dieses board auch was "valides" zum messen auswirft
-
Hallo
Das mit dem ADS1115 hae ich jetzt hinbekommen. Auf Gain 2.048 gestellt, parallel zum A0 ein Multimeter angeschlossen und wenn ich eine 1.5V Batterie anschließe sehe ich auf dem Multimeter und in ESP ziemlich genau 1.5V, soweit so gut.
Nur aus dem Coil Teil bekomme ich keine Werte. Die beeiden äußeren Pins habe ich mit +5 und GND verbunden, dass innere GND auch mit GND und Out mit A0, aber egal welchen Strom ich da durchschicke, es kommt immer 0V an (sowohl bei einer 40W Glühbirne als auch einem 1000W Heißluftfön. An dem Poti habe ich in beiden Richtungen solange gedreht, bis ich ein Knacken gehört habe, das ganze mit 2 verschiedenen Cols probiert. Nach meinem elektrotechnischen Verständnis ist es bei einem, einphasigen Verbraucher egal, ob ich Phase oder den Nullleiter ducht die Prüfspule schicke. -
@wolfgangfb said in ESP-Home: HLW8012 Power Sensor:
Nach meinem elektrotechnischen Verständnis ist es bei einem, einphasigen Verbraucher egal, ob ich Phase oder den Nullleiter ducht die Prüfspule schicke.
Würde ich auch so annehmen. Vielleicht trotzdem mal mit der "heißen" Phase testen wenn irgendwie möglich?
@wolfgangfb said in ESP-Home: HLW8012 Power Sensor:
egal welchen Strom ich da durchschicke, es kommt immer 0V an (sowohl bei einer 40W Glühbirne als auch einem 1000W Heißluftfön. An dem Poti habe ich in beiden Richtungen solange gedreht, bis ich ein Knacken gehört habe, das ganze mit 2 verschiedenen Cols probiert
Hmpf, da hast du ja schon alles erdenkliche durchprobiert, inklusive hardwaretausch um ein montagsgerät auszuschließen.
Hast du zufällig ein Datenblatt zu dem board ausfindig machen können?
Eventuell stellt man mit dem Poti einen "bestimmten" Messbereich ein? Aber irgendwelche "Zuckungen" an A0 hätte ich mit deinen Tests trotzdem erwartet.
Aktuell habe ich leider keine weitere Idee für dich, eventuell ein bissl Internetzrecherche, vielleicht gibt es Leidensgenossen mit dem gleichen board die bereits den Schlüssel zum Erfolg gefunden haben?
-
So, ich habe jetzt die Seite
https://electropeak.com/learn/interfacing-zmct103c-5a-ac-current-transformer-module-with-arduino/
gefunden. Dabei ist mir aufgefallen, dass das Modul ja eine AC Spannung und keine DC Spannung (wie ich erwartet/geglaubt habe) ausgibt. Ds wäre ja immerhin eine Erklärung dafür, dass ich immer 0V DC messe.
Also beim ESP den Code erweitert:
i2c: sda: D2 scl: D1 scan: True id: bus_a ads1115: - address: 0x48 sensor: - platform: ads1115 multiplexer: 'A0_GND' gain: 2.048 name: "ADS1115 Channel A0-GND" update_interval: 10s id: ads_sensor - platform: ct_clamp sensor: ads_sensor name: "Measured Current" update_interval: 10s
Aber selbst da messe ich nichts.
Hast Du denn die Kombination zmct103c ADS115 selbst im Einsatz? Wenn ja, wie hast Du das konkret verkabelt und wie sieht bei Dir die Software aus?