Geekworm Raspi UPS HAT Board

Begonnen von Frank_Huber, 31 Dezember 2017, 11:34:23

Vorheriges Thema - Nächstes Thema

Frank_Huber

Hallo,

hat das evtl jemand in Betrieb?
ist per I2C abfragbar.

https://www.banggood.com/de/Geekworm-UPS-HAT-Board-2500mAh-Lithium-Battery-For-Raspberry-Pi-3-Model-B-Pi-2B-B-A-p-1105260.html
http://www.raspberrypiwiki.com/index.php/Raspi_UPS_HAT_Board
http://www.raspberrypiwiki.com/images/6/6f/How-to-use-via-i2c.pdf

verbaut ist der MAX17048:
https://datasheets.maximintegrated.com/en/ds/MAX17048-MAX17049.pdf

Bin zwar Bastler, aber mit Programmierung hab ichs nicht so. :-(

Würde gerne von dem UPS HAT den Akkuladestand / Akkuspannung abfragen.

Danke  & Grüße
Frank

MadMax-FHEM

Hallo Frank,

ich stecke ja da nicht so tief drin hab mal in den Code geschaut und irgendwas von smbus gesehen...
...mit Suche nach fhem und smbus bin ich dann hier raus gekommen:

https://forum.fhem.de/index.php/topic,38115.0.html

Dort hat jemand eine USV auch direkt per smbus abgefragt/angebunden...
...vielleicht kann man das anpassen (sollte es nicht schon passen)...

Evtl. hab ich später (oder morgen) mal mehr Zeit und schau noch mal drüber (falls noch notwendig und sich kein anderer zwischenzeitlich gemeldet hat oder dich der andere Thread weiter gebracht hat)...

Gruß und guten Rutsch, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Frank_Huber

das andere Board wird per SMbus abgefragt, auf Shell Ebene bekomme ich das Geekworm per i2c Befehle ausgelesen.
Weis nicht ob smbus hier was bringt? Hab da aber auch keine Ahnung. :)

Frank_Huber

So, bin etwas weiter.
Habe mir das hier als Beispiel genommen: https://forum.fhem.de/index.php?topic=37433.0

und das hier in maine 99_myUtils.pm eingefügt:
sub i2c_USV_Batt_Voltage()
{
my @parts = split(/ /,fhem "get I2C read 36 2 2");
$parts[8] eq "Ok" ? return ($parts[2] * 256 + $parts[3])*78.125/1000000 : return "error";
}

sub i2c_USV_Batt_Percent()
{
my @parts = split(/ /,fhem "get I2C read 36 4 2");
$parts[8] eq "Ok" ? return ($parts[2] * 256 + $parts[3])/256 : return "error";
}


und es funktioniert.
mit {i2c_USV_Batt_Percent} erhalte ich: 83.32421875
und {i2c_USV_Batt_Voltage} liefert: 3.97546875
Der Test-PI läuft übrigens seit ca ner Stunde auf Akku. :-)

jetzt muss nur noch eine Rundung rein und das ganze in einen dummy in zwei Readings rein.

für heute ist die "Bastelzeit" aber erstmal rum.

Frank_Huber

So, es hat mir keine Ruhe gelassen. :-) es läuft!

Dummy:
defmod I2C_USV dummy
attr I2C_USV readingList Voltage Percent
attr I2C_USV stateFormat Battery: Percent % / Voltage V
attr I2C_USV userReadings V_direct {i2c_USV_Batt_Voltage},\
P_direct {i2c_USV_Batt_Percent},\
Voltage {sprintf("%.2f", ReadingsVal("I2C_USV","V_direct",0))},\
Percent {sprintf("%.1f", ReadingsVal("I2C_USV","P_direct",0))}

setstate I2C_USV Battery: 72.3 % / 3.92 V
setstate I2C_USV 2017-12-31 14:29:54 P_direct 72.28125
setstate I2C_USV 2017-12-31 14:29:54 Percent 72.3
setstate I2C_USV 2017-12-31 14:29:54 V_direct 3.915234375
setstate I2C_USV 2017-12-31 14:29:54 Voltage 3.92
setstate I2C_USV 2017-12-31 14:29:54 state get


Aktualisierung per at:
defmod I2C_USV_get at +*00:01:00 set I2C_USV get

setstate I2C_USV_get Next: 14:30:54
setstate I2C_USV_get 2017-12-31 14:29:54 state Next: 14:30:54



MadMax-FHEM

Hallo Frank,

das mit sprintf hatte ich schon schon in einem Antwortfenster ;)

Aber nachdem ich "runden" gelesen hatte hab ich's wieder verworfen...

Dann: viel Spaß!

Werde mir das Dingens auch mal anschauen... :)

Gruß und guten Rutsch, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)