Strom und Spannung mit INA219 messen und Meßwerte in Grafana darstellen

Einleitung

@didilamken und @roh wollen Spannung und Strom vom Solar-Modul, Akku und Last mit einer INA219 messen. Man könnte die INA219 über MicroPython-Treiber ansteuern, die Meßdaten über MQTT publizieren und in Grafana visualisieren, um sie kollektiv analysieren zu können.

Auch bei der Autonomen Zelle #2 kam die INA219 schon für den selbst-überwachten Solarbetrieb zum Einsatz. Ping @wtf und @weef.

Hardware

Die INA219 gibt’s bei Adafruit beispielsweise als:

oder:

Schön dass sich hier Interessierte zusammenfinden. Find ich gut.

Wie Du weißt, sind wir Grafana-Fans, @didilamken. Meinst Du, wir könnten Dich dazu inspirieren und gemeinsam realisieren, dass Deine Messwerte ebenfalls direkt im Grafana landen würden, das wir zu Forschungszwecken für genau solche Dinge kollektiv betreiben?

Wir würden Dir dazu entsprechende Code-Schnipsel zur Verfügung stellen, damit Du nicht unnötige Zeit damit verbringen müsstest.

1 Like

Strommessungen zur gemeinsamen Analyse

Einleitung

Beispiele

Wir haben schon bei mehreren Versuchen Messungen in der Stromdomäne veranstaltet, anbei zwei drei Beispiele, wie sie uns bisher über den Weg liefen.

Open Hive Teststand

Der Teststand von @clemens für Langzeitmessungen an Akku und Wiegung.

image

Solarlader EP-Solar

Wir haben bereits einmal die Betriebsparameter eines Solarladers über einen Zeitraum hinweg aufgezeichnet. Ein Beispiel dazu findet sich im :nerd_face: Labor / ratrack-tonke. Visuell geht das aber natürlich noch deutlich besser. @wtf kann dabei dann vielleicht ggf. nachhelfen, wenn wir lieb fragen.

energy-panel-01 energy-panel-02 energy-panel-03

FiPy Libero

Hier haben wir erstmalig (bisher noch manuell) technische Betriebsereignisse der Hard- und Softwarekonfiguration annotiert. Also Änderungen durch den Betrieb selbst oder durch Eingriffe von außen. Dadurch ergibt sich ein schönes Gesamtbild, gerade weil die Ereignisse optisch exzellent innerhalb des Graphen dargestellt werden können.

Solarladerforschung: Erste Schritte zur Meßdatenübermittlung per MQTT

Wir haben gschwind ein einfaches Beispiel zusammengestellt, dank Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy lag alles schon parat.

Telemetrieinfrastruktur bereitstellen

# Telemetrieinfrastruktur bereitstellen.
import json
from mqtt import MQTTClient
client = MQTTClient(get_device_id(), "weather.hiveeyes.org", port=1883)
client.settimeout = 60
client.connect()

# Datenkanaladresse für Messungen mit MPP-Lader "foobar" festlegen.
channel_adress = "umwelt/bremen/research-ina219/mpp-foobar/data.json"

# Datenkanaladresse für Messungen mit MPP-Lader "bazqux" festlegen.
channel_adress = "umwelt/bremen/research-ina219/mpp-bazqux/data.json"

Meßdaten definieren und übermitteln

# Meßdaten definieren.
data = {
  'pv_voltage': 14.72,
  'pv_current': 2.31,
  'battery_voltage': 12.82,
  'load_current': 0.22,
  'charging': True,
  'full': False,
  'overdischarged': False,
  'overloaded': False,
  'shortcircuit': False,
}

# Meßdaten übermitteln.
client.publish(channel_address, json.dumps(data))

Hilfsfunktion zur Bereitstellung einer eindeutigen Client-ID

def get_device_id():
    import machine
    from ubinascii import hexlify
    return hexlify(machine.unique_id()).decode()

Würde das auch gerne für mein Solarsetup machen.
Theoretisch reicht ja auch ein ESP8266 ESP-01 und ein ADS1115, die ich hier schon liegen habe. Wahrscheinlich brauch ich dort gar nicht programmieren sondern nur ESPEasy drauf machen und Configurieren.
Müsste Eigentlich funktionieren, hab aber bisher weder mit dem ESP-01 noch mit ESPEasy gespielt. ein versuch ist es aber denke ich wert.

Das wäre praktisch. Da wir neulich erst gemeinsam mit @roh die Datenannahme von Geräten klargemacht haben, auf denen die Tasmota Firmare läuft [1], wäre es naheliegend, auch das GitHub - letscontrolit/ESPEasy: Easy MultiSensor device based on ESP8266 Framework zu erschließen [2]. Auch @IngoP könnte das interessieren, siehe HX711 mit ESPeasy.

Alternativ dazu haben wir einen MicroPython-Treiber für den ADS1115 entdecken können und bei Treibersammlung für MicroPython abgelegt.


  1. Sonoff-Tasmota Decoder — Kotori 0.22.7 documentation ↩︎

  2. Auch das GitHub - homieiot/homie-esp8266: 💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT haben wir dank @Alex schon per Inbetriebnahme von node-wifi-mqtt-homie mit Hiveeyes Anbindung anschließen können. ↩︎

Folgende Treiberunterstützung der INA219 für MicroPython lässt sich finden.

pyb_ina219 library

Highlights

https://github.com/chrisb2/pyb_ina219

See also Micropython library for the TI INA219 voltage/current sensor - MicroPython Forum.

CircuitPython library

Ich habe die Bibliothek gerade mal ausprobiert und sie erkennt den Sensor, misst aber grade Müll. Muss ich weiter testen.

logs:

>>> from machine import I2C
>>> i2c = I2C(0, pins=('P9','P10'))
>>> i2c.scan()
[64]
>>> from ina219 import INA219
>>> from logging import INFO
>>> ina = INA219(0.1, i2c, log_level=INFO)
>>> ina.configure()
>>> print("Bus Voltage: %.3f V" % ina.voltage())
Bus Voltage: 32.000 V
>>> print("Current: %.3f mA" % ina.current())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "dist-packages/ina219.py", line 210, in current
  File "dist-packages/ina219.py", line 255, in _handle_current_overflow
  File "dist-packages/ina219.py", line 280, in _increase_gain
DeviceRangeError: Current out of range (overflow), for gain 0.32V, device limit reached
>>> print("Power: %.3f mW" % ina.power())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "dist-packages/ina219.py", line 218, in power
  File "dist-packages/ina219.py", line 255, in _handle_current_overflow
  File "dist-packages/ina219.py", line 280, in _increase_gain
DeviceRangeError: Current out of range (overflow), for gain 0.32V, device limit reached

Mir ist noch nicht ganz klar warum das grade nicht will, aber ich hatte auch schon mal nen kaputten INA219. Muss ich die tage mal mit nem andren testen (zum vergleich).

Das example kommt von hier: pyb_ina219/esp32 at master · chrisb2/pyb_ina219 · GitHub

Einbau des Treibers siehe add ina219 driver from https://github.com/chrisb2/pyb_ina219 · rohlan/hiveeyes-micropython-firmware@7b732a4 · GitHub.

1 Like

Vielen Dank @roh, das ist jetzt per add ina219 driver from https://github.com/chrisb2/pyb_ina219 · hiveeyes/terkin-datalogger@86fa45c · GitHub auch im Mainline.

Dank @tonke haben wir entsprechende Unterstützung nun endlich im Terkin-Datenlogger per Add sensor wrappers for BMP280 and INA219 · hiveeyes/terkin-datalogger@a8d893a · GitHub erschlossen.

2 Likes