99_Rpiutils

Begonnen von kutschi, 30 März 2013, 16:52:33

Vorheriges Thema - Nächstes Thema

Puschel74

Hallo,

Zitat von: samsungruth schrieb am Fr, 31 Mai 2013 11:05Hallo,
ich habe seid dem letzten updeate der RPiUtils immer noch das Problem das keine Werte mehr angezeigt werden,
wenn ich den set RPi_DB_Temp ".RPiTemp(" ")) aufrufe bekomme ich folgende Fehlermeldung:
Undefined subroutine &main::RPiTemp called at (eval 30035) line 1.
was mache ich da wieder falsch?

das kommt drauf an wie der gesamte Aufruf aussieht.
Das
set RPi_DB_Temp ".RPiTemp(" "))
ist mit Sicherheit falsch.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Hallo,

@andre
Damit hast du sicher recht.
Aber das ist dann eine Stufe zu tief in der Programmierung für mich.

Über die linke Schulter von hinten durchs rechte Auge habe ich zumindest mal für die Temperatur des RasPi Werte die auch die
Datenbank "versteht" und mir brav anzeigt.
Ich habe dafür bei meinem I2C-Sensoren geguttenbergt ;-)

Ich habe den Dummy:
define RPi_DB_Temp
Dann das at:
define RPi_DB_Temp_at at +*00:01 { fhem("trigger RPi_DB_Temp_pruef ") }
Und dann das notify:
define RPi_DB_Temp_pruef notify RPi_DB_Temp_pruef {
my $temp = RPiTemp(" ");
my ($zeichen, $sensor_temp) = split /\ /, "$temp", 2;
fhem("set RPi_DB_Temp ".$sensor_temp);
}

Nun sieht das ganze bei mir so aus (erstmal nur die Temperatur):

(siehe Anhang / see attachement)

Und so sieht es im Chart-Frontend aus:

(siehe Anhang / see attachement)


Wie gesagt: Über die linke Schulter von hinten durchs rechte Auge.
Aber ich bin ja lernfähig (hoffentlich) und auch lernwillig ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

samsungruth

Hallo Puschel74,
ich habe mich da sicher nicht richtig ausgedrückt, der komplette Aufruft ist folgender:
define RPiTemp_at at +*00:01 { fhem("set RPiTemp ".RPiTemp(" ")) }
Release  : 5.5
RASPI
CUL_HM/EM  FS20 IT AVR MAX WEBIO

justme1968

also wenn es dir nur um die temperatur geht... nimm das sysstat  modul, ohne augen oder schulter zu verletzen uns ganz einfach von vorne das attribut raspberrytemperature auf 1 oder 2 setzen, das reading wie jedes andere auch in die db loggen und freuen. (wobei ich alle sysstat werte als einzige nicht in die db sondern in ein file logge und nur einen monat aufhebe. das geht mit dblog leider noch nicht)


(siehe Anhang / see attachement)


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

Zitat von: samsungruth schrieb am Fr, 31 Mai 2013 11:33Hallo Puschel74,
ich habe mich da sicher nicht richtig ausgedrückt, der komplette Aufruft ist folgender:
define RPiTemp_at at +*00:01 { fhem("set RPiTemp ".RPiTemp(" ")) }


reload 99_RPiUtils.pm durchgeführt?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Hallo,

@andre

Ich hab mich erstmal nur an die Temperatur gewagt da dies als einziges nur einen Wert zurück liefert ;-)

Dank dem tollen Wetter und meinem Krankenstand werde ich mich jetzt mal an das FileSystem machen.
Ich werd noch probieren ob es auch ohne das notify geht indem ich den Code des notify in das at quetsche.

@AlleProgrammierer
Bitte nicht mitlesen. Ich weiß das einem schnell schlecht werden kann bei dem was ich mache ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

systat kann natürlich auch die filesysteme überwachen und loggen. nur ein oder zwei attribute setzen. aber das verrate ich dir jetzt nicht :p sonst bin ich noch schuld wenn dir vor lauter regen und langeweile ein finger abricht. :)

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

danke für dein Verständnis andre ;-)

Grüße

Edith: Kleine Schritte aber es wird.
Es genügt ein Dummy wie oben beschrieben und das at sieht bei mir so aus:
define RPi_DB_Temp_at at +*00:01 {
my $temp = RPiTemp(" ");
my ($zeichen, $sensor_temp) = split /\ /, "$temp", 2;
fhem("set RPi_DB_Temp ".$sensor_temp." °C");
}

Nun sieht die Anzeige am Dummy so aus:

(siehe Anhang / see attachement)


Edith2: Und nun noch für Swap, Ram und Filesystem (hier interessiert mich! erstmal nur der freie Speicher)
define RPi_DB_Swap_at at +*02:00 {
my $value = RPiRamSwap("S");
my ($zeichen, $prozent, $zeichen1, $free, $zeichen2, $used, $zeichen3, $total) = split /\ /, "$value", 9;
fhem("set RPi_DB_Swap ".$free." MB");
}

define RPi_DB_Ram_at at+*02:00 {
my $value = RPiRamSwap("R");
my ($zeichen, $prozent, $zeichen1, $free, $zeichen2, $used, $zeichen3, $total) = split /\ /, "$value", 9;
fhem("set RPi_DB_Ram ".$free." MB");
}

define RPi_DB_FS_at at+*02:00 {
my $value = RPiFileSystem("", "/dev/root");
my ($zeichen, $free, $Zeichen1, $used, $zeichen2, $total) = split /\ /, "$value", 6;
fhem("set RPi_DB_FS ".$free." MB");
}

Damit die Werte für FS richtig übergeben werden muss in der 99_RPiUtils.pm in Zeile 252
Zitat$out = " A: ".sprintf ("%.2f", (($avail)/1024))." U: ".sprintf ("%.2f", (($used)/1024))." T: ".sprintf ("%.2f", (($all)/1024));
Das Leereichen vor " A: " gelöscht werden - also so "A: ".sprintf
(Sorry für den Eingriff in deinen Code aber sonst steht in $free A: und nicht der Wert des freien Speichers)

So, und nun das ganze schön in ein Modul gepackt damit jeder Wert als Reading an fhem übergeben wird.
Ich werd mir mal die IO.pm ansehen - vielleicht komme ich ja dahinter wie das gehen könnte.

Edith3: Puh, das ist wohl noch 5 Nummern zu hoch für mich :-(
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

m.o.d

das sagt meine logfile

Use of uninitialized value $dataThroughput in substitution (s///) at ./FHEM/99_RPiUtils.pm line 292.
Use of uninitialized value $dataThroughput in substitution (s///) at ./FHEM/99_RPiUtils.pm line 293.
Use of uninitialized value $string in substitution (s///) at ./FHEM/99_Utils.pm line 64.
Use of uninitialized value $string in substitution (s///) at ./FHEM/99_Utils.pm line 65.
Use of uninitialized value $dataThroughput in split at ./FHEM/99_RPiUtils.pm line 296.
Use of uninitialized value $dataThroughput[0] in division (/) at ./FHEM/99_RPiUtils.pm line 298.
Use of uninitialized value $dataThroughput[4] in division (/) at ./FHEM/99_RPiUtils.pm line 299.

Puschel74

Hallo,

hast du auch die letzte, hier angehängte 99_RPiUtils.pm genommen?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

PeMue

Hallo Puschel,

in der Diskussion geht es ja ganz schön ab ;-) Das mit at ist noch eines der ungelüfteten Geheimnisse von Perl, daher kann ich da nichts dazu sagen, sondern nur probleren.

Habe bei mir das Leerzeichen schon entfernt. Falls noch ein paar Kleinigkeiten auffallen, bitte um Info, dann korrigiere ich diese und poste eine neue Version.

@m.o.d. (master of desaster?): Ich habe es bei mir getestet und die Definitionen waren da (my <variable>), d.h. keine Fehlermeldungen auf der Konsole (auch keine wg. fehlenden Filesystemen, da habe ich extra meine verschollenen Unix Kenntnisse ausgegraben). Also noch mal das oben gepostete nehmen und testen.
reload 99_RPiutils.pm auf der Konsole nicht vergessen.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Prof. Dr. Peter Henning

Sorry, wenn ich so quer einsteige - aber bitte was ist ein ungelüftetes Geheimnis in Perl ? Vielleicht kann ich zum Lüften ja etwas beitragen.

LG

pah

PeMue

Hallo pah,

mir ist klar, dass z.B. die Funktion RPitemp() einen Wert zurückgibt. Wie dieser aber mit at in fhem kommt, ist mir nicht so ganz klar. Mit meinem Aufruf
define RPiTemp_at at +*00:01 { fhem("trigger RPiTemp ".RPiTemp(" ")) }
geht die Sache in die vorher definierte Datei, der Status aber wird nicht aktualisiert. Die Variante von Puschel aktualisiert den Status und die Variable geht in die Datenbank.
Das ist gerade bei mir das, was ich nicht verstehe. Ich habe aber auch diesbezüglich noch nicht nachgelesen ...
Ich gehe mal davon aus, dass ich noch die "alte" Version zum plotten nehme und Puschel schon dBlog (wovon ich aber bezweifle, dass dies auf meiner Fritz Box 7170 überhaupt läuft).
Ich hoffe, dass mein Code einigermaßen akzeptabel und fehlerfrei ist, es war jedenfalls eine lehrreiche Übung für mich.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Puschel74

Hallo,

wenn du anstelle von trigger set nimmst wird der Wert auch in den Dummy geschrieben ;-)
(Habe ich aber auch weiter oben gepostet).

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

PeMue

Hallo Puschel,

klar habe ich das gelesen, aber verstanden warum das so ist habe ich trotzdem nicht ;-)

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser