Ein Modul zur Erfassen von diversen RPi/Linux-Statistiken (SYSMON)

Begonnen von hexenmeister, 06 Dezember 2013, 17:44:38

Vorheriges Thema - Nächstes Thema

hexenmeister

Zitat von: franky08 am 05 Februar 2015, 11:22:17
Hallo hexenmeister, wenn du das einbauen könntest, müsste doch klappen, oder?

Jain. Es muss noch unterschieden werden, wann diese Methode statt der anderen aufgerufen werden soll. Also entweder das Plattform erkennen (zusätzliche Methode) oder ich baue doch ein Attribut (userFn oder so), wo man diese Methode angibt (die dann z.B. in myUtills leigt).

Grüße,

Alexander

franky08

#721
Habe mir zum testen das mal in die Utils gebracht und über setreading $val_txt in die SYSMON Readings geschrieben.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

hexenmeister

Zitat von: franky08 am 05 Februar 2015, 11:22:17
Hallo hexenmeister, wenn du das einbauen könntest, müsste doch klappen, oder?


Probiere mal aus, ich hänge hier eine Version an. Dork kannst Du ein Attribut "user-fn" hinzufügen und als Wert den Namen Deiner neuen Funktion. Doku ist noch nicht drin. Bitte testen!

EDIT: Anhang vergessen...

hexenmeister

Hallo zusammen,

die Zahl der Anfragen für verschiedene Systeme wächst.
Hier und auch hier: http://forum.fhem.de/index.php/topic,32204.msg256579.html#msg256579 etc.

Jetzt noch die Intel-basierte Devices ins Modul aufzunehmen wird es auf Dauer schwer pflegbar machen.
Vor allem weil die gleiche Daten (z.B. CPU-Temperatur) immer auf andere neue Arten abzufragen sind.
Daher überlege ich, im Sinne der größten Flexibilität, solche Funktionen per Benutzerdefinierte Perl-Funktionen zu ermöglichen. Von mir aus können wir gerne ein Zusatz-Modul mit einer Sammlung solcher Methoden mit einchecken. Aber automatische Erkennung aus dem Modul kann ich nicht zuverlässig garantieren.

Eine Testversion s. vorherige Posting.

Was haltet Ihr davon?

Grüße,

Alexander


franky08

#724
Hallo, bringt leider eine Warnung im Log. (Telnet betreffend)

2015.02.06 07:27:31 1: PERL WARNING: Use of uninitialized value $mode in string eq at ./FHEM/42_SYSMON.pm line 3353.

Nach einem reload 42_SYSMON.pm startet das Modul nicht und "hängt".

Folgende Funktion hatte ich definiert:
"cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp4_input 2>&1"

Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

ZitatWert den Namen Deiner neuen Funktion.

Oder ist damit der Aufruf der Funktion aus den Utils gemeint?
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Icinger

So hätte ich das gelesen:

Du legst eine Funktion in 99_myUtils an, die das Auswerten macht und ihre Werte direkt in das SYSMON-Device reinschreibst (mittels ReadingsUpdate).
Und in das attr schreibst du einfach den Namen der Funktion in der myUtils rein.
Dann wird diese Funktion automatisch immer wieder aufgerufen.

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

franky08

#727
Alles klar, hatte ich in der Zwischenzeit schon gemacht.
user-fn sensorCPU

und in den Utils:

sub sensorCPU($$)
{
my ($hash, $map) = @_;
my $val = SYSMON_execute($hash, "cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1");
$val = int($val);
  my $val_txt = sprintf("%.2f", $val/1000);
  $map->{+CPU_TEMP}="$val_txt";
  my $t_avg = sprintf( "%.1f", (3 * ReadingsVal($hash->{NAME},CPU_TEMP_AVG,$val_txt) + $val_txt ) / 4 );
  $map->{+CPU_TEMP_AVG}="$t_avg"; 
return $map;
    #return $val_txt;
   #fhem "setreading Zotac_Status cpu1_temp $val_txt °C";
   fhem "setreading CPU1_dummy state $val_txt";
}


leider hängt SYSMON nach einmaliger Ausführung d.h. danach erfolgt keine Aktualisierung mehr.
Entferne ich das user-fn Attribut läuft alles wieder.
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

hexenmeister

#728
Ne-ne-ne ;)

Die Funktion soll kein ReadingsUpdate und schon gar nicht fhem aufrufen.

Sie bekommt ein $hash (Device) und ein $map und soll ein den letzten um neue Readings erweitern und zurückgeben. So wie hier früher von Frank gepostet (genau die Funktion habe ich aber nicht getestet):
# liefert CPU Temperature (Zbox)
#------------------------------------------------------------------------------
sub
SYSMON_getCPUTemp_Zbox($$)
{
my ($hash, $map) = @_;
my $val = SYSMON_execute($hash, "cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1");
$val = int($val);
  my $val_txt = sprintf("%.2f", $val/1000);
  $map->{+CPU_TEMP}="$val_txt";
  my $t_avg = sprintf( "%.1f", (3 * ReadingsVal($hash->{NAME},CPU_TEMP_AVG,$val_txt) + $val_txt ) / 4 );
  $map->{+CPU_TEMP_AVG}="$t_avg"; 
return $map;
}


Falls das nicht geht, bitte log mit verbose 5!

Kuzl

solle dann nicht auch im attribut angegeben werden, welches Reading damit versorgt werden soll?
oder woher stammt die information was mit $map gemacht werden soll?

EDIT: OK ich sehe grade das wird in der funktion angegeben... würde es schöner finden, wenn das im attribut ist und die funktion nur den wert zusätzlich zurückgibt.
Ich finde so eine Externe Funktion sollte sich nicht kümmern müssen wo das ganze hinkommt sondern lediglich den Wert bereitstellen. Was damit passiert finde ich gehört zum attribut dazu

franky08

#730
# liefert CPU Temperature (Zbox)
#------------------------------------------------------------------------------
sub
SYSMON_getCPUTemp_Zbox($$)
{
my ($hash, $map) = @_;
my $val = SYSMON_execute($hash, "cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1");
$val = int($val);
  my $val_txt = sprintf("%.2f", $val/1000);
  $map->{+CPU_TEMP}="$val_txt";
  my $t_avg = sprintf( "%.1f", (3 * ReadingsVal($hash->{NAME},CPU_TEMP_AVG,$val_txt) + $val_txt ) / 4 );
  $map->{+CPU_TEMP_AVG}="$t_avg"; 
return $map;
}


liefert eine Perl Warnung:
2015.02.06 09:27:09 1: PERL WARNING: Use of uninitialized value $val in split at ./FHEM/42_SYSMON.pm line 1510.
2015.02.06 09:28:09 1: PERL WARNING: Use of uninitialized value $val in split at ./FHEM/42_SYSMON.pm line 1510.


user-fn Sysmon_getCPUTemp_Zbox

Rufe ich über ein at 00:30:00 folgende sub auf:

sub sensorCPU()
{
my ($hash, $map) = @_;
my $val = SYSMON_execute($hash, "cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1");
$val = int($val);
  my $val_txt = sprintf("%.2f", $val/1000);
  $map->{+CPU_TEMP}="$val_txt";
  my $t_avg = sprintf( "%.1f", (3 * ReadingsVal($hash->{NAME},CPU_TEMP_AVG,$val_txt) + $val_txt ) / 4 );
  $map->{+CPU_TEMP_AVG}="$t_avg"; 
#return $map;
    #return $val_txt;
   fhem "setreading Zotac_Status cpu1_temp $val_txt °C";
   #fhem "setreading CPU1_dummy state $val_txt";
}

wird über setreading der Temperaturwert ohne Probleme in die Sysmon Readings zurückgegeben. Der Aufruf von:

my $val = SYSMON_execute($hash, "cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1");
ist somit OK.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

#731
Hier der Log mit verbose5
2015.02.06 10:16:59 1: PERL WARNING: Subroutine SYSMON_Log redefined at ./FHEM/42_SYSMON.pm line 3497.
2015.02.06 10:16:59 5: SMARTMON Zotac_Status: SYSMON_Set.628 Zotac_Status ?
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_blockingCall.774 Zotac_Status,
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute '[ -d /proc/ ] && echo 1 || echo 0'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /proc/uptime'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '138016.12 544329.74'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute '[ -f /sys/devices/system/cpu/kernel_max ] && echo 1 || echo 0'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /sys/devices/system/cpu/kernel_max'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '511'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 2>&1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '499813'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute '[ -f /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq ] && echo 1 || echo 0'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq 2>&1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '499813'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /proc/loadavg'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '0.04 0.04 0.05 1/175 7167'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /proc/stat'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3448 Result '$VAR1 = 'cpu  669669 0 88448 54397972 11160 6 6552 0 0 0
';
$VAR2 = 'cpu0 19258 0 19335 13751068 3177 6 588 0 0 0
';
$VAR3 = 'cpu1 22883 0 28742 13745046 358 0 150 0 0 0
';
$VAR4 = 'cpu2 598452 0 26118 13155518 2656 0 5719 0 0 0
';
$VAR5 = 'cpu3 29074 0 14251 13746340 4967 0 93 0 0 0
';
$VAR6 = 'intr 7350783 24 0 0 8125 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1264684 338342 562 2 32878 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
';
$VAR7 = 'ctxt 5422367
';
$VAR8 = 'btime 1423076212
';
$VAR9 = 'processes 39516
';
$VAR10 = 'procs_running 1
';
$VAR11 = 'procs_blocked 0
';
$VAR12 = 'softirq 9118162 2 3663547 23001 1280582 249720 0 52898 2112553 1509 1734350
';
'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'free'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3448 Result '$VAR1 = '             total       used       free     shared    buffers     cached
';
$VAR2 = 'Mem:       8086528     649292    7437236          0     163376     307972
';
$VAR3 = '-/+ buffers/cache:     177944    7908584
';
$VAR4 = 'Swap:      9526268          0    9526268
';
'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_getNetworkInfo.2168 get eth0
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'ifconfig eth0 2>&1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3448 Result '$VAR1 = 'eth0      Link encap:Ethernet  HWaddr 00:01:2e:00:9f:4c 
';
$VAR2 = '          inet addr:192.168.2.66  Bcast:192.168.2.255  Mask:255.255.255.0
';
$VAR3 = '          inet6 addr: 2003:5f:7f01:3600:296e:deee:8767:b68/64 Scope:Global
';
$VAR4 = '          inet6 addr: 2003:5f:7f01:3600:201:2eff:fe00:9f4c/64 Scope:Global
';
$VAR5 = '          inet6 addr: fe80::201:2eff:fe00:9f4c/64 Scope:Link
';
$VAR6 = '          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
';
$VAR7 = '          RX packets:879986 errors:0 dropped:0 overruns:0 frame:0
';
$VAR8 = '          TX packets:716476 errors:0 dropped:0 overruns:0 carrier:0
';
$VAR9 = '          collisions:0 txqueuelen:1000
';
$VAR10 = '          RX bytes:236320920 (225.3 MiB)  TX bytes:381747399 (364.0 MiB)
';
$VAR11 = '
';
'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_getNetworkInfo.2180 SYSMON_getNetworkInfo>>>>>>>>>>>>>>>>$VAR1 = 'eth0      Link encap:Ethernet  HWaddr 00:01:2e:00:9f:4c 
';
$VAR2 = '          inet addr:192.168.2.66  Bcast:192.168.2.255  Mask:255.255.255.0
';
$VAR3 = '          inet6 addr: 2003:5f:7f01:3600:296e:deee:8767:b68/64 Scope:Global
';
$VAR4 = '          inet6 addr: 2003:5f:7f01:3600:201:2eff:fe00:9f4c/64 Scope:Global
';
$VAR5 = '          inet6 addr: fe80::201:2eff:fe00:9f4c/64 Scope:Link
';
$VAR6 = '          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
';
$VAR7 = '          RX packets:879986 errors:0 dropped:0 overruns:0 frame:0
';
$VAR8 = '          TX packets:716476 errors:0 dropped:0 overruns:0 carrier:0
';
$VAR9 = '          collisions:0 txqueuelen:1000
';
$VAR10 = '          RX bytes:236320920 (225.3 MiB)  TX bytes:381747399 (364.0 MiB)
';
$VAR11 = '
';

2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_getNetworkInfo.2168 get wlan0
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'ifconfig wlan0 2>&1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result 'wlan0: error fetching interface information: Device not found'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_getNetworkInfo.2180 SYSMON_getNetworkInfo>>>>>>>>>>>>>>>>$VAR1 = 'wlan0: error fetching interface information: Device not found';

2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_obtainParameters_intern.1178 User-Function Reading: [SYSMON_getCPUTemp_Zbox]
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3456 Result '48000'
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_blockingFinish.861 name|Zotac_Status|cpu_freq|499|.user_fnr|cpu_temp_avg,cpu_temp|stat_cpu3_percent|0.45 0.00 0.17 99.35 0.03 0.00 0.00|eth0|RX: 225.37 MB, TX: 364.06 MB, Total: 589.43 MB|stat_cpu0_text|user: 0.03 %, nice: 0.00 %, sys: 0.18 %, idle: 99.77 %, io: 0.02 %, irq: 0.00 %, sirq: 0.00 %|cpu_temp_avg|48.0|swap|Total: 9303.00 MB, Used: 0.00 MB,  0.00 %, Free: 9303.00 MB|uptime|138016|stat_cpu1_percent|0.13 0.00 0.22 99.65 0.00 0.00 0.00|cpu_temp|48.00|stat_cpu|669669 0 88448 54397972 11160 6 6552|stat_cpu3_diff|27 0 10 5958 2 0 0|stat_cpu1_text|user: 0.13 %, nice: 0.00 %, sys: 0.22 %, idle: 99.65 %, io: 0.00 %, irq: 0.00 %, sirq: 0.00 %|stat_cpu_diff|304 0 46 23629 4 0 2|stat_cpu2_diff|265 0 11 5716 0 0 1|stat_cpu2|598452 0 26118 13155518 2656 0 5719|eth0_ip|addr:192.168.2.66|stat_cpu_percent|1.27 0.00 0.19 98.52 0.02 0.00 0.01|ram|Total: 7897.00 MB, Used: 173.77 MB, 2.20 %, Free: 7723.23 MB|fhemuptime|3419|stat_cpu3|29074 0 14251 13746340 4967 0 93|stat_cpu0_percent|0.03 0.00 0.18 99.77 0.02 0.00 0.00|stat_cpu3_text|user: 0.45 %, nice: 0.00 %, sys: 0.17 %, idle: 99.35 %, io: 0.03 %, irq: 0.00 %, sirq: 0.00 %|eth0_diff|RX: 0.10 MB, TX: 0.18 MB, Total: 0.28 MB|uptime_text|1 days, 14 hours, 20 minutes|cpu1_freq|499|idletime_text|6 days, 07 hours, 12 minutes (0.77 %)|stat_cpu1|22883 0 28742 13745046 358 0 150|stat_cpu1_diff|8 0 13 5971 0 0 0|stat_cpu0|19258 0 19335 13751068 3177 6 588|wlan0_diff|not available|stat_cpu_text|user: 1.27 %, nice: 0.00 %, sys: 0.19 %, idle: 98.52 %, io: 0.02 %, irq: 0.00 %, sirq: 0.01 %|wlan0|not available|stat_cpu0_diff|2 0 11 5985 1 0 0|loadavg|0.04 0.04 0.05|idletime|544329 0.77 %|fhemuptime_text|0 days, 00 hours, 56 minutes|stat_cpu2_percent|4.42 0.00 0.18 95.38 0.00 0.00 0.02|stat_cpu2_text|user: 4.42 %, nice: 0.00 %, sys: 0.18 %, idle: 95.38 %, io: 0.00 %, irq: 0.00 %, sirq: 0.02 %
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_updateReadings.880
2015.02.06 10:17:20 5: SMARTMON Zotac_Status: SYSMON_Set.628 Zotac_Status ?
2015.02.06 10:17:20 5: SMARTMON Zotac_Status: SYSMON_Get.568 Zotac_Status ?
2015.02.06 10:17:46 5: SMARTMON Zotac_Status: SYSMON_Set.628 Zotac_Status ?


Die Funktion wird korrekt ausgeführt:

2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_obtainParameters_intern.1178 User-Function Reading: [SYSMON_getCPUTemp_Zbox]
2015.02.06 10:17:08 5: SMARTMON Zotac_Status: SYSMON_Exec_Local.3443 Execute 'cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>&1'


Leider blockiert SYSMON

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

nesges

Zitat von: hexenmeister am 06 Februar 2015, 00:36:45
Was haltet Ihr davon?

Unbedingt eine gute Idee! Und mit Kuzls Anmerkung:

Zitat von: Kuzl am 06 Februar 2015, 09:12:16
würde es schöner finden, wenn das im attribut ist und die funktion nur den wert zusätzlich zurückgibt.
Ich finde so eine Externe Funktion sollte sich nicht kümmern müssen wo das ganze hinkommt sondern lediglich den Wert bereitstellen. Was damit passiert finde ich gehört zum attribut dazu

könnte das userReadings-ähnlich aufgesetzt werden, oder?

Icinger

Zitatkönnte das userReadings-ähnlich aufgesetzt werden, oder?[/qoute]

Somit müsstest du aber für jedes Reading eine extra-sub haben.

Mit der aktuellen Version könntest du mehrere Readings "in einem Aufwasch" setzen, wenn du zB irgendeinen längeren Output zerpflücken willst.
So gesehen find ich die aktuelle Lösung schon interessanter.

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

nesges

Zitat von: Icinger am 06 Februar 2015, 11:36:46
Somit müsstest du aber für jedes Reading eine extra-sub haben.

Mit der aktuellen Version könntest du mehrere Readings "in einem Aufwasch" setzen, wenn du zB irgendeinen längeren Output zerpflücken willst.
So gesehen find ich die aktuelle Lösung schon interessanter.

Eine sub für jedes Reading ist aber wesentlich übersichtlicher und damit userfreundlicher. Zudem finde ich das ähnliche Funktionen (userFn / userReadings) nach Möglichkeit gleichartig umgesetzt werden sollten. Aus dem gleichen Grund: ist einfach userfreundlicher. Einen wirklichen Nachteil hätte diese Methode ja nicht, oder?