FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: heinemannj66 am 21 November 2013, 08:20:35

Titel: userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: heinemannj66 am 21 November 2013, 08:20:35
Habe mir auf meinem Synology NAS ein PHP Script gebaut das per http Aufruf den folgenden Output liefert:
power: 122.38 W

Ich möchte nun diesen Wert in das userReading power einlesen:
attr USV userReadings power

Das logging und plotting funktioniert nur das mit den userReadings nicht.

Meine fhem.cfg sieht so aus:

# USV
#
define USV dummy
attr USV comment APC - Back-UPS ES 700G
attr USV devStateIcon on:black_Steckdose.on off:black_Steckdose.off
attr USV fp_0_Uebersicht 480,685,0
attr USV group USV
attr USV icon batterie
attr USV room Werkstatt,Network
attr USV userReadings power

# USV STATUS von der remote DiskStation holen
define n_USVStatus notify (5min_check|global:INITIALIZED) {\
  my $val = GetHttpFile('192.168.178.11:80', '/nut/load.php');;\
  fhem("trigger USV $val");;\
  fhem "set USV on";;\
}
attr n_USVStatus room System

define FileLog_USV FileLog ./log/USV-%Y.log USV:power\x3a.*
attr FileLog_USV logtype power4:Power,text
attr FileLog_USV room hidden

define SVG_USV SVG FileLog_USV:power4:CURRENT
attr SVG_USV label "USV Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_USV room Plots
Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: fiedel am 21 November 2013, 09:04:54
Probier mal so:


attr USV userReadings power {GetHttpFile('192.168.178.11:80', '/nut/load.php')}


Wird dann jedes Mal mit triggern oder beschreiben des Dummy aktualisiert. "USV.power" muss dann in die Logfiledef. zum mitloggen.
Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: heinemannj66 am 21 November 2013, 21:14:39
Super - Danke!

Hier mein HTML output:

power: 122.38 W, charged: 100%, status: online

Hier meine lauffähigen Configs:

# USV
#
define USV dummy
attr USV comment APC - Back-UPS ES 700G
attr USV devStateIcon on:black_Steckdose.on off:black_Steckdose.off
attr USV fp_0_Uebersicht 480,685,0
attr USV group USV
attr USV icon batterie
attr USV room Werkstatt,Network
attr USV userReadings power { Get_USV_Status("power") }, charged { Get_USV_Status("charged") }

define n_USVStatus notify (5min_check|global:INITIALIZED) {\
  my $v=Get_USV_Status("status");;\
  if($v eq "online"){\
   fhem "set USV on";;\
  }\
  else {\
   fhem "set USV off";;\
  }\
}
attr n_USVStatus room System

define FileLog_USV FileLog ./log/USV-%Y.log USV:power\x3a.*
attr FileLog_USV logtype power4:Power,text
attr FileLog_USV room hidden

define SVG_USV SVG FileLog_USV:power4:CURRENT
attr SVG_USV label "USV Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_USV room Plots


Hier meine 99_MyUtils.pm

sub Get_USV_Status (@)
{
  my ($cmd) = @_;

  my @returnarry;
  my $returncode;
  my $status;

  foreach $status (split(/, /, GetHttpFile('192.168.178.11:80', '/nut/load.php'))) {
   @returnarry = split(/: /, $status);
   $returncode = @returnarry[1];
   chomp($returncode);
   if (@returnarry[0] eq $cmd) {
    Log 3, "Get_USV_Status($cmd - returncode: $returncode)";
    return $returncode;
    last;
   }
  }
}

Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: fiedel am 22 November 2013, 09:21:10
Hi,

sehr schöne Lösung, gefällt mir! Ich hab für die Zukunft auch vor ne kleine APC UPS anzuschaffen. Da würde mich ja ehrlich gesagt auch dein PHP- Script interessieren.  8)

Gruß

Frank
Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: heinemannj66 am 22 November 2013, 16:28:50
Hi Fiedel,

das Network UPS Tool habe ich ganz normal über das Synology Paket-Zentrum installiert (s. Anlage).
Das php Script load.php einfach in das Synology Verzeichnis /web/nut hochladen.

In der config.php muß dann noch der Parameter 'watt' auf die Leistung der USV angepasst werden:

<?php
$config 
= array('command'  => "LIST VAR ups\nLOGOUT\n",// Bitte nicht Ã¤ ndern
 
'port'  => '3493' // Port vom NUT Server 
'server' => '127.0.0.1', // Server (meistens 127.0.0.1
'title'  => 'UPS Web Status' // Titel vom Script 
'watt' => '422' // Watt der USV
'copyright' => 'DiskStation'); // Copyright.
?>


Bei meiner APC - Back-UPS ES 700G sagt die APC Documentation 405 W.
Nach tuning auf 422 W gab es dann auch keine grosse Abweichung zu meinem Messgerät ;-)

Ce ca ...
Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: fiedel am 23 November 2013, 08:50:39
Hi und vielen Dank für das Script! Solche Komplettlösungen sind immer ein guter Ausgangspunkt für eigene Projekte. Ob man nun genau das Gleiche vor hat, oder sich bei was Anderem inspirieren lässt...

Schönes WE!

Frank
Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: davedeluxe am 22 Juni 2016, 09:21:22
Hey, ist zwar schon ne ganze Weile her aber ich probiers trotzdem mal.

Erstmal danke für die tolle Idee und die Beschreibung. Ich konnte alles einrichten und die Readings schön darstellen.
Leider aktualisiert FHEM die Werte nicht, lediglich nach einem "shutdown restart" werden die Werte neu eingelesen. Hat jemand eine Idee was ich tun kann das die Werte häufiger (z.B. alle 5 min) geladen werden?

Grüße Dave
Titel: Antw:userReadings mit Werten füttern - Verbrauch einer APC USV auslesen
Beitrag von: fiedel am 27 Juni 2016, 09:42:12
In seinem Notify hat er noch den "5 Minuten Check" drin, der das macht:
define n_USVStatus notify (5min_check|global:INITIALIZED) {\
Der ist aber nicht extra aufgeführt. Dafür würde ich ein periodisches at anlegen,
welches alle x Minuten einen Event erzeugt, oder das Notify antriggert.

Gruß
Frank