FHEM > Codeschnipsel

Abfrage eines Device per Skript

(1/1)

Puschel74:
Hallo,

ich hatte bisher in einer sub folgendes im Einsatz:

--- Code: ---my ($name) = @_;
my ($befehl) = "sudo i2cget -y 1 ".$name." 0x00 w &";
my ($result) = `$befehl`;
--- Ende Code ---

bis ich am 10.04.2013 ein update durchgeführt habe.
Bisher habe ich bei mir alles abgesucht und gestern den RasPi neu aufgesetzt weil die Daten nichtmehr in der Datenbank gelandet sind.
Im Frontend-Unterforum habe ich die Fragen schonmal angeschnitten gehabt bin jetzt aber relativ sicher das nicht das Frontend
bzw. sqlite3 schuld sein dürften.

Ein

--- Code: ---return "$name";
--- Ende Code ---

liefert mir schön

--- Zitat ---0x4c
--- Ende Zitat ---

zurück.
Ein

--- Code: ---return "$befehl";
--- Ende Code ---

liefert mir schön

--- Zitat ---sudo i2cget -y 1 0x4c 0x00 w &
--- Ende Zitat ---

zurück.
Ein

--- Code: ---return "$result";
--- Ende Code ---

liefert mir unschön

--- Zitat ---
--- Ende Zitat ---

zurück. Also nichts.

Auf der Kommandozeile ein
--- Zitat ---sudo i2cget -y 1 0x4c 0x00 w
--- Ende Zitat ---

eingegeben liefert mir

--- Zitat ---0x602a
--- Ende Zitat ---

was bisher (also bis 10.04 ca 20:00 Uhr) eigentlich auch immer in der weiteren sub umgerechnet wurde in eine Dezimalzahl
und an fhem zurückgegeben wurde.
An diesem Zeitpunkt hören die Logeinträge und natürlich die Datenbank-Einträge auch auf.

Wie gesagt. Ich hatte erst mein Können im Umgang mit sqlite3 und dem Frontend im Verdacht.
Daher habe ich gestern ein Backup meiner Erstinstallation auf die SD-Karte geworfen und fhem neu auf meinem RasPi installiert und alles drum herum wieder neu eingerichtet.
Da ich die Werte meiner I2C-Sensoren bis 10.04 einwandfrei im Frontend anzeigen lassen konnte und nachher nichtmehr habe ich
die Neuinstallation zum Anlass genommen um meine Sensoren neu zu definieren.
Meine defines das notify und die 99_myUtils.pm habe ich aus einer Sicherungskopie wieder hergestellt und ich habe festgestellt das eben der Rückgabewert meines Aufrufs leer bleibt - und das vermutlich seit 10.04 schon.

Für Ideen wäre ich mal wieder dankbar.

Grüße

OiledAmoeba:
Moin,

schon ein paar Tage her, aber kann es sein, dass das & der Fehler ist?

--- Zitat ---my ($befehl) = "sudo i2cget -y 1 ".$name." 0x00 w &";
--- Ende Zitat ---

Damit schickst Du i2cget in den Hintergrund. Das Script wartet nicht auf eine Rückgabe. Wenn jetzt i2cget länger braucht und der Perl-Interpreter an
--- Code: ---my ($result) = `$befehl`;
--- Ende Code ---
bereits vorbei ist, wenn das Ergebnis kommt, wird $result nicht mehr gefüllt.

Probier mal, was passiert, wenn Du das & aus $befehl rausnimmst.

Puschel74:
Hallo,

danke für den Tipp aber ich habe die Abfrage auch ohne "&" versucht und bekomme nichts zurück.
Leider greifen jetzt 2 Beiträge das selbe Thema auf.
Ich verlink mal auf den anderen Beitrag: Link

Grüße

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln