FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: Frank_Huber am 31 Dezember 2017, 11:34:23

Titel: Geekworm Raspi UPS HAT Board
Beitrag von: Frank_Huber am 31 Dezember 2017, 11:34:23
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
Titel: Antw:Geekworm Raspi UPS HAT Board
Beitrag von: MadMax-FHEM am 31 Dezember 2017, 11:54:35
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
Titel: Antw:Geekworm Raspi UPS HAT Board
Beitrag von: Frank_Huber am 31 Dezember 2017, 12:01:03
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. :)
Titel: Antw:Geekworm Raspi UPS HAT Board
Beitrag von: Frank_Huber am 31 Dezember 2017, 13:52:12
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.
Titel: Antw:Geekworm Raspi UPS HAT Board
Beitrag von: Frank_Huber am 31 Dezember 2017, 14:32:02
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


Titel: Antw:Geekworm Raspi UPS HAT Board
Beitrag von: MadMax-FHEM am 31 Dezember 2017, 16:37:42
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