Shell Script über Fhem starten

Begonnen von cerberus, 01 Mai 2013, 23:02:07

Vorheriges Thema - Nächstes Thema

cerberus

Hallo, ich möchte mittels Button in Fhem ein einfaches Shell Script starten über das ich Fhem stoppe und mein System (Raspberry PI) herunterfahre. Das Script funktioniert wunderbar in der Console aber der Aufruf über Fehm funktioniert nicht.

define Shutdown_System dummy
attr Shutdown_System alias Shutdown Homeserver
attr Shutdown_System devStateIcon shutdown:Shutdown:shutdown off:Shutdown:shutdown
attr Shutdown_System group Systembutton
attr Shutdown_System room Server
define notify_Shutdown_System  notify Shutdown_System {\
if ( Value ("Shutdown_System") eq "shutdown") {\
fhem("set Shutdown_System off");;\
system("sudo /etc/init.d/shutdown-fhem-pi.sh"),,\
}\
}

Grüße
cerberus
Banana PI mit Bananian + Fhem 5.5, 2x SCC SlowRF/Homematic + RS485 LAN Gateway HMW-LGW-O-DR-GS-EU + RPI2 I2C to 1-Wire Host Adapter for Raspberry Pi

kud

zb. so

`/opt/fhem/FHEM/fhem2radio_aus.sh`;;\

nix mit system und den Kommas hinten...

rudolfkoenig

Achtung: sudo funktionert nicht (oder nicht zuverlaessig) mit fhem, da es ab und zu nach passwort fragt.

broadway

Einen Systembefehl setze ich so ab:

define beep notify beep "beep -e /dev/input/event0 -f 440 -l 500 -d 500 -r 3"
Linksys NSLU2 debian + CUL | FHT80B, FS20, Elro

Puschel74

Hallo,

Zitat von: rudolfkoenig schrieb am Do, 02 Mai 2013 11:12Achtung: sudo funktionert nicht (oder nicht zuverlaessig) mit fhem, da es ab und zu nach passwort fragt.

Das ist ja mal ein interessanter Hinweis.

Wenn ich einen System-Befehl mit sudo absetze und fhem möchte das Passwort für sudo, was ich aber hier nicht angeben kann, liefert
mir der Befehl ein -1 zurück.
Ist das so korrekt (der Befehl an sich funktioniert tadellos auf der Kommandzeile).

Ich habe nämlich bis 10.04.2013 meine I2C-Sensoren brav per Systembefehl mit sudo abgefragt und auch Werte geliefert bekommen.
Seit diesem Tag bin ich schier am verzweifeln da ich einfach keine Werte mehr in FHEM bekomme.

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.

Markus Bloch

Generell geben alle Aufrufe in FHEM mit system(...) den Wert -1 zurück, unabhängig davon ob der Befehl erfolgreich war, oder nicht.

Warum das so ist kann ich auch nicht wirklich erklären.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Puschel74

Hallo,

danke erstmal für die Antwort.

Aber bis zum 10.4.2013 hat das

sub messen($) {
...
my ($befehl) = "sudo i2cget -y 1 0x48 0x00 w &";
my ($result) = `$befehl`;
...
}


den Temperatur-Wert hexadezimal zurückgeliefert.
Nur eben seit 10.4 nicht mehr - seit diesem Datum habe ich keinen Eintrag mehr in meiner Datenbank und meinen Charts.

Diese Abfrage habe ich auf meinem RasPi2 laufen gehabt, nur leider liefert sie mir eben nichtsmehr zurück und ich weiß nicht warum.
Sowas ist mir am 2.4 noch geliefert worden:


Log (3,"Wert 1: $sensor Wert 2: $temp_sensor"); #013.04.02 19:09:37 3: Wert 1: Sensor_1 Wert 2: 22.0 °C


Grüße

P.S.: In der sub wurde dann von hex nach dezimal umgerechnet aber das hab ich mal weggelassen.
Edith: Ich vermute ich habe meine FHEM-Installationen "vermurckst".
Ich bekomme nicht einen einzigen Logeintrag in den Geräte-Logs - ich werd mal alles wieder runterwerfen und neu anfangen *schnauff*
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.

Rohan

Hi,

wenn doch

sudo i2cget -y 1 0x48 0x00 w &

auf der Kommandozeile bzw. in einer Telnet-Session funktioniert, was spricht dagegen, das Programm i2cget "Fhem-User-tauglich" zu machen, also ausführbar für alle bzw. den Fhem-User in eine Gruppe aufzunehmen, die das darf? Evtl. müssen noch die i2c-Devices unter /dev/... auch freigeschaltet werden (666).

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

cerberus

Hallo, ich habe es so versucht aber es funktioniert nicht.

define Shutdown_System dummy
attr Shutdown_System alias Shutdown Homeserver
attr Shutdown_System devStateIcon shutdown:Shutdown:shutdown off:Shutdown:shutdown
attr Shutdown_System group Systembutton
attr Shutdown_System room Homeserver
define notify_Shutdown_System  notify Shutdown_System {\
if ( Value ("Shutdown_System") eq "shutdown") {\
fhem("set Shutdown_System off");;\
"/opt/fhem/FHEM/shutdown-fhem-pi.sh";;\
}\
}
#

Folgendes bekomme ich im LOG
2013.05.09 22:07:53 3: notify_Shutdown_System return value: /opt/fhem/FHEM/shutdown-fhem-pi.sh

Gruß
cerberus
Banana PI mit Bananian + Fhem 5.5, 2x SCC SlowRF/Homematic + RS485 LAN Gateway HMW-LGW-O-DR-GS-EU + RPI2 I2C to 1-Wire Host Adapter for Raspberry Pi

MisterEltako

Mit System-Befehl funktioniert es:

define Shutdown_System dummy
 attr Shutdown_System alias Shutdown Homeserver
 attr Shutdown_System devStateIcon shutdown:Shutdown:shutdown off:Shutdown:shutdown
 attr Shutdown_System group Systembutton
 attr Shutdown_System room Homeserver
 define notify_Shutdown_System notify Shutdown_System {\
 if ( Value ("Shutdown_System") eq "shutdown") {\
 fhem("set Shutdown_System off");;\
system("/opt/fhem/FHEM/shutdown-fhem-pi.sh");;\
 }\
 }

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

cerberus

mmmm.....bei mir funktioniert das nicht. Im Log sehe ich immer nur:

2013.05.10 17:31:53 3: notify_Shutdown_System return value: -1
Banana PI mit Bananian + Fhem 5.5, 2x SCC SlowRF/Homematic + RS485 LAN Gateway HMW-LGW-O-DR-GS-EU + RPI2 I2C to 1-Wire Host Adapter for Raspberry Pi

Puschel74

Hallo,

Zitat von: Rohan schrieb am Mi, 08 Mai 2013 09:48Hi,

wenn doch

sudo i2cget -y 1 0x48 0x00 w &

auf der Kommandozeile bzw. in einer Telnet-Session funktioniert, was spricht dagegen, das Programm i2cget "Fhem-User-tauglich" zu machen, also ausführbar für alle bzw. den Fhem-User in eine Gruppe aufzunehmen, die das darf? Evtl. müssen noch die i2c-Devices unter /dev/... auch freigeschaltet werden (666).

Gruß
Thomas

Danke mal für den Denkanstoss. ich komme erst morgen abend wieder nach Hause und kann das dann mal durchackern.

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.

Johannes

probier mal statt
Zitat von: cerberus schrieb am Do, 09 Mai 2013 22:09"/opt/fhem/FHEM/shutdown-fhem-pi.sh";;\

folgendes:


`/opt/fhem/FHEM/shutdown-fhem-pi.sh`;;\



Zum sudo Problem:
Das kann in Scripten mit Standardeinstellungen so nicht funktionieren, aus bekannten Gründen.
Ich denke auch dass es am sinnigsten ist, dass der user fhem das Recht bekommt, die entsprechende Aktion auszuführen.

Eine andere Möglichkeit wäre es, den user fhem in die sudoers Gruppe aufzunehmen und ihm das Recht zu geben, sudo ohne Passwort aufzurufen

Puschel74

Hallo,

so, ich hab nun auf meinem RasPi mit den 3 LM75-Sensoren folgendes eingegeben:

sudo usermod -a -G root fhem
nach dieser Anleitung:
http://www.knaupes.net/linux-user-einer-gruppe-zuweisen/
Nun sollte doch der User fhem u.a. auch in der Gruppe root vorhanden sein und folglich auch diesen Befehl
sudo i2cget -y 1 0x48 0x00 w & (ob mit oder ohne & am Schluss)
absetzen dürfen.

Ok. Darf er ja auch - aber ich bekomme keinen Rückgabewert in fhem.

Ich gebe also in der Befehlszeile von fhem dieses ein:
{`sudo i2cget -y 1 0x48 0x00 w`}(hier ohne &) und war es eigentlich gewohnt danach unter der Befehlszeile
nach Druck auf <Enter> sowas in der Art zu bekommen:
Zitat0x4013
Zumindest bin ich mir sicher das das so schon funktioniert hat da ich bis 10.04 die Sensoren so abfragen konnte.

Ich weiß aber leider nicht was sich ab diesem Zeitpunkt geändert hat.
Ich hab auch immer brav ein sudo apt-get updateund sudo apt-get upgradedurchgeführt.
Es kann also auch durchaus am RasPi liegen.
Leider hat auch ein Neu-Einspielen des Wheezy-Images mit frischem aufsetzen von fhem nicht geholfen :-(

Ich bin für jeden weiteren Tipp dankbar.

Grüße

Edith: Vergessen - Nein, auch im Logfile von fhem landet nichts aber auf der Kommandozeile bekomme ich 0x4013 als Rückgabewert.
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.

Icebear

Für alle die suchen.. Als Tip.

Sudoers ohne Passwort confen (evtl. speziell fürs prog) alternativ für den ganzen User FHem

Und zu den Rückgabewerten..
RETURN VALUES
       Upon successful execution of a program, the exit status from sudo will
       simply be the exit status of the program that was executed.

       Otherwise, sudo quits with an exit value of 1 if there is a
       configuration/permission problem or if sudo cannot execute the given
       command.


Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)