S.USV Daten und Befehle per FHEM

Begonnen von Depechem, 01 April 2016, 18:16:45

Vorheriges Thema - Nächstes Thema

Wallmeier

Hallo Burny4600,

Zitat von: Burny4600 am 11 November 2016, 17:09:56
Laut S.USV wird es noch einige Anpassungen geben und anscheinend ist eine neu Hardware Releas im kommen.

Das wird dort schon seit längerer Zeit geschrieben ohne das entsprechende Taten erfolgt wären... Genausowenig wie es die angekündigte App fürs Smartphone bisher geben würde. Allgemein ist es im Herstellerforum sehr still geworden...

Ich habe mir das RPI_I2C-Modul jetzt mal genauer angeschaut und bin dabei darauf umzustellen. Allerdings bedarf es eines Patches für das RPI_I2C-Moduls (siehe auch https://forum.fhem.de/index.php/topic,20452.msg520865.html#msg520865). Weiterhin wird nur der IOCTL-Modus unterstützt und nicht SMBUS -  die S.USV scheint zu letzterem nicht kompatibel zu sein.

Gruß,
Nico

Burny4600

Hallo Wallmeier!

Danke für die Infos.
Ich lasse mich dann einmal von S.USV überraschen ob sich dann wirklich in der nächsten Zeit etwas änderen wird.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Wallmeier

Hallo,

ich habe neue Modulversion gebaut, die den i2c-Bus-Zugriff mittels des Moduls RPII2C realisiert. Dadurch wurde das Modul umbenannt zu 52_I2C_SUSV.pm (statt bisher 98_SUSV.pm). Die Änderungen sind:

  • Dropped support for firmware < 1.32
  • Based on RPII2C now (must be used in IOCTL mode)
  • Modul renamed from 98_SUSV.pm to 52_I2C_SUSV.pm
Das Modul steht unter der URL http://www.wallmeier.net/fhem/controls_I2C_SUSV.txt zur Verfügung und kann mittels update add http://www.wallmeier.net/fhem/controls_I2C_SUSV.txt eingebunden werden.

Gruß,
Nico

Burny4600

Ist nach dem Update noch etwas notwendig ausser einem Neustart.

Bei mir lässt sich das Attribut IODev nicht auswählen.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Wallmeier

Ist das Update von RPII2C von gestern bereits installiert?

Burny4600

Das Update habe ich durchgeführt und anschließend den Raspi neu gestartet.

Wenn ich die Version des File SUSV Modul aufrufe bekomme ich folgende Meldung.
Rev   Last Change
No Id found for 98_SUSV.pm


Eigenartig ist diese Meldung schon, da trotzdem das SUSV Modul die Daten der USV mitbekommt.
Das 52_I2C_SUSV.pm ist jedenfalls vorhanden.

LIST SUSV
Internals:
   CFGFN      /media/hdd/fhem/mycfg/USV/usv_rasp02.cfg
   CHANGED
   Firmware   1.32
   I2C_Address 15
   Model      Basic
   NAME       SUSV
   NR         497
   STATE      USV Status: NETZBETRIEB <br> RPI maximaler Ladestrom: 300 mA <br> Spannungsversorgung durch: RPI mit 4.90 V <br> Batterie Status: charged <br> Batterie Kapazität: 100 % <br> Batterie Spannung: 4.20 V
   TYPE       SUSV
   Readings:
     2016-11-15 17:06:29   BatteryLevel    100.00
     2016-11-15 17:06:29   BatteryState    charged
     2016-11-15 17:06:29   BatteryVoltage  4.20
     2016-11-15 17:06:29   ChargingCircuit ONLINE
     2016-11-15 17:06:29   ChargingCurrent 300 mA
     2016-11-15 17:06:50   Pinlevel        low
     2016-11-15 17:06:29   PowerBattery    0
     2016-11-15 17:06:29   PowerExtern     n/a
     2016-11-15 17:06:29   PowerSource     RPI
     2016-11-15 17:06:29   VoltageIn       4.90
Attributes:
   alias      OG2 Heizraum - S.USV Raspberry
   devStateStyle style="text-align:left;;font-weight:bold;;"
   event-min-interval BatteryCapacity:1800,BatteryState:1800,BatteryVoltage:1800,ChargingCircuit:1800,ChargingCurrent:1800,PowerBattery:1800,PowerExtern:1800,PowerSource:1800,VoltageIn:1800
   event-on-change-reading BatteryCapacity:3,BatteryState,BatteryVoltage:0.02,ChargingCircuit,ChargingCurrent,PowerBattery:20,PowerExtern:50,PowerSource,VoltageIn:0.1
   eventMap   ONLINE:NETZBETRIEB OFFLINE:BATTERIEBETRIEB charged:geladen charging:laden
   group      USV
   icon       measure_battery_100
   poll_interval 60
   room       _USV
   stateFormat {sprintf(
"USV Status: %s <br> RPI maximaler Ladestrom: %s <br> Spannungsversorgung durch: %s mit %.2f V <br> Batterie Status: %s <br> Batterie Kapazität: %1.f %% <br> Batterie Spannung: %.2f V",
ReadingsVal("$name","ChargingCircuit",0),
ReadingsVal("$name","ChargingCurrent",0),
ReadingsVal("$name","PowerSource",0),
ReadingsVal("$name","VoltageIn",0),
ReadingsVal("$name","BatteryState",0),
ReadingsVal("$name","BatteryLevel",0),
ReadingsVal("$name","BatteryVoltage",0))}


Nur kann ich das Attribut IODev für die SUSV nicht aufrufen um die RPiI2C_1 Schnittstelle zu aktivieren.
Alle anderen i2C Geräte arbeiten aber über das Attribut IODev RPiI2C_1.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Wallmeier

Zitat von: Burny4600 am 15 November 2016, 17:16:01
Eigenartig ist diese Meldung schon, da trotzdem das SUSV Modul die Daten der USV mitbekommt.
Das 52_I2C_SUSV.pm ist jedenfalls vorhanden.

LIST SUSV
Internals:
   CFGFN      /media/hdd/fhem/mycfg/USV/usv_rasp02.cfg
   TYPE       SUSV


Nur kann ich das Attribut IODev für die SUSV nicht aufrufen um die RPiI2C_1 Schnittstelle zu aktivieren.
Alle anderen i2C Geräte arbeiten aber über das Attribut IODev RPiI2C_1.

Das ist klar - da noch das alte Modul 98_SUSV.pm genutzt wird. Entweder die USV komplett löschen und neu definieren oder das define anpassen (aus SUSV muss I2C_SUSV werden).

Burny4600

Alles klar.
Habe die Änderung in der Config gemacht.
define SUSV I2C_SUSV
attr SUSV IODev RPII2C_1

So hatte es jetzt bei allen SUSVs die Änderung geklappt.

Danke für die raschen Änderungen und Unterstüzung.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Wallmeier


fhem75

Moin zusammen,

ich habe auf das neue Modul umgestellt. Beim ausprobieren ist mir FHEM abgestürzt und lies sich nicht mehr starten. Der Fehler tritt auf, wenn man über das Device die Ladefunktion der s.USV ausschaltet.

Ich habe im neuen Modul folgende Fehler entdeckt:

# ----------------------------------------------------------------------------------------------------------------------

sub I2C_SUSV_GetBatteryStatus($$) {
my ($hash, $rawdata) = @_;
    my @raw = split(" ", $rawdata);
    my $batState;
    my $batPercent;
    my $batV;
    if ($raw[0] == 0) { # Charging
        $batState = "charging";
        SUSV_I2C_cread($hash, 0xD3, 2); # Battery Voltage [mV]                     <---------- I2C_SUSV_i2cread($hash, 0xD3, 2); # Battery Voltage [mV]
    } elsif ($raw[0] == 1) { # Full
        $batState = "charged";
        $batPercent = 100;
        $batV = "4.200";
    } elsif ($raw[0] == 2) { # Failure
        $batState = "no battery / failure";
        $batPercent = "n/a";
        $batV = "n/a";
    } elsif ($raw[0] == 3) { # Charging deactivated
        $batState = "charging deactivated";
        SUSV_I2C_cread($hash, 0xD3, 2); # Battery Voltage [mV]                     <---------- I2C_SUSV_i2cread($hash, 0xD3, 2); # Battery Voltage [mV]
    } else {
        $batState = "unknown battery state " . $raw[0];
    }       
readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, 'BatteryLevel',   $batPercent) if $batPercent;
    readingsBulkUpdateIfChanged($hash, 'BatteryState',   $batState);
    readingsBulkUpdate($hash, 'BatteryVoltage', $batV) if $batV;
    readingsEndUpdate($hash, 1);
}

# ----------------------------------------------------------------------------------------------------------------------

sub I2C_SUSV_GetBatteryVoltage($$) {
my ($hash, $rawdata) = @_;
    my @raw = split(" ", $rawdata);
    my $batV = $raw[1] << 8 | $raw[0];
    my $batPercent = SUSV_CalcBatteryPercentage($batV);                     <----------  my $batPercent = I2C_SUSV_CalcBatteryPercentage($batV);
readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, 'BatteryLevel',   sprintf("%.2f", $batPercent));
    readingsBulkUpdate($hash, 'BatteryVoltage', sprintf("%.2f", $batV / 1000));
    readingsEndUpdate($hash, 1);
}

# ----------------------------------------------------------------------------------------------------------------------



Nun läuft es erst mal ohne, dass FHEM stehen bleibt. Alerdings berechnet er die Batteriespannung falsch, wenn die Ladefunktion ausgeschaltet ist:

   Readings:
     2016-11-21 01:45:40   BatteryLevel    100.00
     2016-11-21 01:44:52   BatteryState    charging deactivated
     2016-11-21 01:45:40   BatteryVoltage  5.33
     2016-11-21 01:44:52   ChargingCircuit OFFLINE
     2016-11-21 00:41:10   ChargingCurrent 300 mA
     2016-11-21 01:13:35   Pinlevel        low
     2016-11-21 01:45:40   PowerBattery    0
     2016-11-21 01:45:40   PowerExtern     n/a
     2016-11-21 00:41:10   PowerSource     RPI
     2016-11-21 01:45:40   VoltageIn       5.22


5,33 Volt sind doch etwas viel.  :o


Gruß Kai

Wallmeier

Hallo Kai,

danke für die Fehlerhinweise - habe ich gerade korrigiert und auf dem Update-Server abgelegt.

Zitat von: fhem75 am 21 November 2016, 01:50:29
Nun läuft es erst mal ohne, dass FHEM stehen bleibt. Alerdings berechnet er die Batteriespannung falsch, wenn die Ladefunktion ausgeschaltet ist:

   Readings:
     2016-11-21 01:45:40   BatteryVoltage  5.33


5,33 Volt sind doch etwas viel.  :o

Das Modul berechnet die Batteriespannung nicht selber, sondern liest von der S.USV aus. Kannst Du bitte mittels ./susv --status nachschauen, ob es dort auch schon mit so hohen Werten angezeigt wird? Sollte dies der Fall sein, bitte im Hersteller-Forum melden.

Noch einen schönen Tag,
Nico

fhem75

Hallo Nico,

in Zeile 451 und 462 musst Du noch SUSV_I2C_i2cread zu I2C_SUSV_i2cread ändern.

Zum Thema Batteriespannung:

Soweit ich es nachvollziehen konnte wird, wenn der die Ladefunktion aktiv ist und der Akku voll ist, die Spannung vom Modul automatisch auf 4.2 Volt gesetzt. Das Register 0xD3 wird dabei auch nicht abgefragt.

Wenn die Ladefunktion abgeschaltet ist, fragt das Modul das Register 0xD3 ab. Hier werden bei mir die Werte 211 20 übermittelt.

2016.11.21 13:07:18 5: wo.AZ.IT.RPi_USV: 15 read 2 Byte from Register 211
2016.11.21 13:07:18 5: wo.AZ.IT.RPi_USV Rx, Reg: 211, Data: 211 20


Da führt natürlich zu der Anzeige der zu hohen Spannung. Die Werte kommen also aus der S.USV.  :(

Die S.USV-Software ziegt an:
********************************
*                              *
* S.USV pi solutions           *
* www.s-usv.de                 *
*                              *
* Model: Basic                 *
* Firmware Version: 1.32       *
* Software Version: 1.32       *
*                              *
* Mail notification: Disabled  *
*                              *
* Timed Boot: Disabled         *
* Boot time: 00:00:00          *
*                              *
* Timed Shutdown: Disabled     *
* Shutdown time: 00:00:00      *
*                              *
* Mon Nov 21 15:28:41 2016     *
*                              *
********************************
*                              *
* Powering Source: Primary     *
* Charging circuit: OFFLINE    *
* Charging current: 300 mA     *
*                              *
* Voltage in: 5.24 V           *
* Battery capacity: 100.00%    *
* Battery voltage: 4.20V       *
* Power Battery: 000.00 mA     *
* Power Extern: n/a            *
*                              *
* Shutdown timer: 10           *
* Autostart:  enabled          *
* Sleep timer: 1               *
*                              *
********************************



Das weiter Verhalten, wenn auch die Spannungsversorgung abgezogen ist, kann ich gerade nicht testen. Ich ich bin die nächsten Tage nicht in der Nähe des RapberryPi.

Gruß Kai

Wallmeier

Hallo Kai,

Zitat von: fhem75 am 21 November 2016, 15:35:04
in Zeile 451 und 462 musst Du noch SUSV_I2C_i2cread zu I2C_SUSV_i2cread ändern.

Das passiert, wenn man es noch schnell vor der Arbeit korrigieren will... Ist jetzt wirklich gefixed und auf dem Update-Server verfügbar.

Zitat von: fhem75 am 21 November 2016, 15:35:04
Zum Thema Batteriespannung:

Soweit ich es nachvollziehen konnte wird, wenn der die Ladefunktion aktiv ist und der Akku voll ist, die Spannung vom Modul automatisch auf 4.2 Volt gesetzt. Das Register 0xD3 wird dabei auch nicht abgefragt.

Wenn die Ladefunktion abgeschaltet ist, fragt das Modul das Register 0xD3 ab. Hier werden bei mir die Werte 211 20 übermittelt.

2016.11.21 13:07:18 5: wo.AZ.IT.RPi_USV: 15 read 2 Byte from Register 211
2016.11.21 13:07:18 5: wo.AZ.IT.RPi_USV Rx, Reg: 211, Data: 211 20


Da führt natürlich zu der Anzeige der zu hohen Spannung. Die Werte kommen also aus der S.USV.  :(

Die S.USV-Software ziegt an:
********************************
*                              *
* S.USV pi solutions           *
* www.s-usv.de                 *
*                              *
* Model: Basic                 *
* Firmware Version: 1.32       *
* Software Version: 1.32       *
*                              *
* Mail notification: Disabled  *
*                              *
* Timed Boot: Disabled         *
* Boot time: 00:00:00          *
*                              *
* Timed Shutdown: Disabled     *
* Shutdown time: 00:00:00      *
*                              *
* Mon Nov 21 15:28:41 2016     *
*                              *
********************************
*                              *
* Powering Source: Primary     *
* Charging circuit: OFFLINE    *
* Charging current: 300 mA     *
*                              *
* Voltage in: 5.24 V           *
* Battery capacity: 100.00%    *
* Battery voltage: 4.20V       *
* Power Battery: 000.00 mA     *
* Power Extern: n/a            *
*                              *
* Shutdown timer: 10           *
* Autostart:  enabled          *
* Sleep timer: 1               *
*                              *
********************************


Gut analysiert :) Ich habe jetzt im Modul eine zusätzliche Abfrage drin, die Werte > 4200 mV auf 4200mV limitiert. Nicht sehr elegant, wird aber scheinbar auch im Originaltool des Herstellers so umgesetzt...

Noch einen schönen Abend,
Nico

Wallmeier

Hallo,

wie ich gerade im Herstellerforum der USV gesehen habe, gibt es eine eine neue Hardwarerevision V2 der USV. Für diese gibt es eine eigene Firmware und Clientsoftware, die inkompatibel zur Hardware V1 ist. Somit wird das hier vorgestellte Modul nur die Hardwarerevision V1 unterstützen. Da ich keine Hardwarerevision V2 habe, ist von meiner Seite auch nicht geplant die V2 zu unterstützen.

Gruß,
Nico

Burny4600

#44
Die Hardware der S.USV BASIC und ADVANCED hat sich optisch soweit verändert wie ich an der Nachbestellung sehen konnte, das ein Anschluß für externe Bedientaster geschaffen wurde.
In der Firmware v2.10 sind alle bisherigen Mängel behoben worden.

Diese Firmware habe ich bei der vorherigen Hardware Version ohne der Anschlußmöglichkeit externer Taster aufgespielt und funktioniert soweit ich festellen konnte ohne Probleme.
Korrektur 2016.12.14:
Hardware Revision 1.x benötigt aktuell die Software- und Firmwareversion 1.32.
Hardware Revision 2.x benötigt aktuell die Software- und Firmwareversion 2.1

Sollte irtümlich die falsche Firmware oder Software installiert worden sein ist noch kein Schaden entstanden.
Es funktioniert nur halt nicht so wie es sollte.
Deinstallation der Software und anschließend die richtige Software installieren.
Die Firmware kann ohne Problem über die vorherige installiert werden.
Neustart ist natürlich von von Vorteil.

Ich bin von dem Hersteller der S.USV begeistert, wie rasch die Tipps wie die externen Taster für die Bedienung umgesetzt haben und auch so bei diversen Fagen und Problemen rasch reagieren.
Ich kann diese S.USV nur empfehlen.


Die Fehlerhaften Anzeigen Werte PowerBattery und  PowerExtern bei der S.USV ADVANCED stimmten auch bei der Firmware V1.32 nicht überein.
Hier wäre noch ein Behandlungsbedarf bei 52_I2C_SUSV.pm Modul.

Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT