Autor Thema: [GELÖST]Shell/Python Script ausführen (via Dummy / system{})  (Gelesen 41784 mal)

thomka

  • Gast
Hallo Community,

ich versuche irgendwie schon seit längerem ein python bzw. Shell-script per FHEM auszuführen zu lassen:

in der fhem.cfg habe ich folgendes definiert:

define Lichtleiste dummy
attr Lichtleiste webCmd on:off
define sw_ll_off notify Lichtleiste:off {system "/fhem/elro_1_off.sh&"}
define sw_ll_on notify Lichtleiste:on {system "/fhem/elro_1_on.sh&"}

Im Ordner /opt/fhem liegt des elro_1_on.sh und off.sh script. Führe ich diese unter dem user PI (Putty) aus, funkrionert es tadellos.

Das Logfile gibt leider auch kaum was her:
2013.12.16 21:58:47 3: sw_ll_on return value: -1
2013.12.16 21:58:49 3: sw_ll_on return value: -1
2013.12.16 21:58:51 3: sw_ll_on return value: -1
2013.12.16 21:58:52 3: sw_ll_on return value: -1
2013.12.16 21:58:53 3: sw_ll_on return value: -1
2013.12.16 21:58:54 3: sw_ll_off return value: -1
2013.12.16 21:58:55 3: sw_ll_off return value: -1
2013.12.16 21:58:57 3: sw_ll_on return value: -1

Auf OS-Ebene haben die Scripte CHMOD 755 bekommen. Auch die im Script gerufene .py Datei hat chmod 755.

Hat vielleicht noch wer eine Idee, was ich machen kann, damit ich das Script per FHEM ausführen kann?

Danke und Grüße,
Thomas
« Letzte Änderung: 18 Dezember 2013, 11:49:03 von thomka »

Offline MarkusN

  • Full Member
  • ***
  • Beiträge: 249
    • Markus´ Blog
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #1 am: 16 Dezember 2013, 22:42:24 »
Versuch es mal mit folgendem:

{system ("/fhem/elro_1_on.sh &")}

thomka

  • Gast
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #2 am: 16 Dezember 2013, 22:52:44 »
Hallo Markus,

Danke für die schnelle Hilfe - es funktioniert jedoch leider immer noch nicht :-(

2013.12.16 22:50:20 3: sw_ll_on return value: -1
2013.12.16 22:50:22 3: sw_ll_on return value: -1
2013.12.16 22:50:35 3: sw_ll_on return value: -1
2013.12.16 22:50:37 3: sw_ll_on return value: -1
2013.12.16 22:50:38 3: sw_ll_on return value: -1
2013.12.16 22:51:39 3: sw_ll_off return value: -1
2013.12.16 22:51:42 3: sw_ll_off return value: -1
2013.12.16 22:51:44 3: sw_ll_off return value: -1
2013.12.16 22:51:45 3: sw_ll_off return value: -1
2013.12.16 22:51:46 3: sw_ll_off return value: -1
2013.12.16 22:51:48 3: sw_ll_off return value: -1
2013.12.16 22:51:49 3: sw_ll_off return value: -1

Grüße,
Thomas

Offline ollir

  • Full Member
  • ***
  • Beiträge: 165
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #3 am: 17 Dezember 2013, 07:48:40 »
Hallo,

so wie du schreibt liegt der fhem-Ordner nicht unter /opt/fhem/... etc. sonder direkt in der Hauptebene.

Müsste dann {system ("./elro_1_on.sh &")} oder ähnlich sein
-oder du gibst den kompletten Pfad an:{system ("/opt/fhem/elro_1_on.sh &")}

VG
Olaf
« Letzte Änderung: 17 Dezember 2013, 07:55:02 von ollir »

thomka

  • Gast
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #4 am: 18 Dezember 2013, 10:13:36 »
Hallo Olaf,

Danke für den Hinweis. Ich habe ihn natürlich gleich umgesetzt - ohne Erfolg  :(

weder der direkte Aufruf mit ./ noch der via Pfad mit /opt...

VG
Thomas

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9838
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #5 am: 18 Dezember 2013, 10:19:40 »
Hallo,

Zitat
Führe ich diese unter dem user PI (Putty) aus, funkrionert es tadellos.

Soweit mir bekannt besitzt der "User" PI root-Rechte.
FHEM hat allerdings nur einfacher Userrechte.

Stell dem Aufruf doch mal ein sudo vorne dran - was passiert dann?
{system ("sudo ./elro_1_on.sh &")}
Grüsse
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.

Offline Jaydee

  • Full Member
  • ***
  • Beiträge: 239
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #6 am: 18 Dezember 2013, 10:21:36 »
vielleicht liegt es daran, was das Skript tun soll...

Hat der User fhem dafür die Rechte? Also nicht für die Ausführbarkeit des Skriptes, sodern das zu tun, was IM Skript steht? So Sachen wie auf GPIOs oder SPI zuzugreifen sind nämlich auf dem Pi  etwas kniffelig, was die Rechte angeht.

Teste den FHEM-Aufruf, vielleicht erstmal mit etwas was definitiv erlaubt ist, wie zum Beispiel in eine (erlaubte) Textdatei schreiben...

Gruß
Jan
FHEM auf Cubietruck, HMLAN, HUEBridge, TCP
HM-LAN: HM-RC-4-B,HM-PB-6-WM55,HM-LC-SW2-FM,HM-LC-DIM1T-PL,HM-LC-Dim1PWM-CV,HM-LC-SW4-BA-PCB,HM-LC-SW4-PCB
Hue-Bridge: LCT001,LWL001
sonst.: Onkyo TX-NR515, Kindle Touch

Offline Jaydee

  • Full Member
  • ***
  • Beiträge: 239
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #7 am: 18 Dezember 2013, 10:23:05 »
Ah, Puschel74 war schneller :-)

Soweit ich weiß ist fhem aber out-of-the-box nicht sudo-berechtigt. Da müsste zuvor erst noch was geändert werden...
FHEM auf Cubietruck, HMLAN, HUEBridge, TCP
HM-LAN: HM-RC-4-B,HM-PB-6-WM55,HM-LC-SW2-FM,HM-LC-DIM1T-PL,HM-LC-Dim1PWM-CV,HM-LC-SW4-BA-PCB,HM-LC-SW4-PCB
Hue-Bridge: LCT001,LWL001
sonst.: Onkyo TX-NR515, Kindle Touch

thomka

  • Gast
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #8 am: 18 Dezember 2013, 10:45:34 »
Hallo,

Danke für die raschen Antworten. Ich habe vor einigen Tagen, hoffentlich korrekt, den user fhem in die Gruppe root reingepackt:

nano /etc/group
dort in der ersten Zeile einfach mein fhem dazu geschrieben:

root:x:0:fhem,pi
damit sollte doch der User FHEM der Gruppe root angehören und im Umkehrschluss sollte es doch keine Berechtigungsprobleme geben, oder?


----
Im Script selber greife ich auf den GPIO 17 zu. Dazu habe ich in der /etc/rc.local folgende Änderungen vorgenommen:

sudo -u pi /usr/local/bin/gpio export 17 out
sudo -u fhem /usr/local/bin/gpio export 17 out

die Scripte im /opt/fhem Ordner habe ich auch bereits per

sudo chown fhem elro_1_on.sh
sudo chown fhem elro_1_off.sh
sudo chown fhem elro.py

dem User FHEM übergeben.

Die Shell-Scripte sind eigentlich nur Einzeiler, welche das Python Script mit bestimmten Parametern aufrufen. ... Das war auch schon ein Schritt meiner Fehlersuche (Pythonscript-Aufruf mit Parametern in ein Shell Script zu packen) um Probleme bei der Parameterübergabe auszuschließen.

elro_1_on.sh:
#!/bin/sh
python elro_wiringpi.py 8 1


VG,
Thomas
« Letzte Änderung: 18 Dezember 2013, 10:55:35 von thomka »

thomka

  • Gast
Antw:Shell/Python Script ausführen (via Dummy / system{})
« Antwort #9 am: 18 Dezember 2013, 11:47:44 »
Ok, ich habe den Fehler gefunden:


define Lichtleiste dummy
attr Lichtleiste webCmd on:off
define sw_ll_off notify Lichtleiste:off {system('sudo /opt/fhem/elro_1_off.sh&');;}
define sw_ll_on notify Lichtleiste:on {system('sudo /opt/fhem/elro_1_on.sh&');;}

mit diesem Code funktioniert das Schalten!

Danke Euch allen für die Unterstützung

VG
Thomas

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9838
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #10 am: 18 Dezember 2013, 11:51:26 »
Hallo,

Zitat
system('sudo /opt/fhem/elro_1_off.sh&');;

Was einfache Anführungszeichen alles ausmachen können  ;)

Aber schön das es jetzt klappt.

Grüsse

P.S.: Könntest du deinen ersten Beitrag bitte editieren und ein Gelöst vorne dran stellen? Danke
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.

thomka

  • Gast
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #11 am: 07 Januar 2014, 20:59:59 »
Nachtrag:

das ganze funktioniert noch nicht ganz wie beschrieben - wir haben eben herausgefunden, dass trotzdem ein Berechtigungsproblem besteht:
man muss noch die /etc/sudoers modifizieren. Mit folgenden Einträgen funktioniert es bei mir:

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
fhem    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
fhem ALL=(ALL) NOPASSWD: ALL
pi ALL=(ALL) NOPASSWD: ALL

Anschliessend ein Reboot und dann sollte es klappen

Grüße,
Thomas
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5672
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #12 am: 07 Januar 2014, 21:17:27 »
Kleiner (nicht unwesentlicher) Hinweis:
fhem ist mit Deinem sudo praktisch root-Berechtigt ... muß das wirklich so sein?

Kannst Du rausfinden, welche Rechte Dein fhem braucht, um das Script auszuführen? Dann könntest Du Ihm genau diese geben (und nicht mehr)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

thomka

  • Gast
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #13 am: 07 Januar 2014, 21:56:23 »
Ja ich bin mir dessen bewusst, dass mein FHEM User nun die entsprechenden Berechtigungen hat. Da FHEM auf meinem Raspi läuft - und auch nur FHEM auf diesem Raspi läuft - stellt das für mich derzeitig kein Problem dar. Der Raspi und auch FHEM sind nicht von aussen erreichbar (ich wähle mich per VPN in mein Netzwerk und arbeite quasi im lokalen LAN).

Evtl. kannst du mich über die Nachteile dieser (Berechtigungs)-Konfiguration aufklären (speziell für meine Situation?!)

Danke und Grüße,
Thomas

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5672
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #14 am: 07 Januar 2014, 22:04:04 »
Naja .. eigentlich versucht man unter Unix  jedem user nur die benötigten rechte zu geben. Deshalb hast Du auf deinem Pi ja auch den fhem user.

Das problem ist primär security, wenn es jemand schat auf deinem Ffhem zu kommen, kann er diesen konfigurieren und amit "praktisch" root-Befehl setzen. Wenn der fhem dagegen weniger rechte hat ...

Es könnte natürlich im "Fehlerfalle", also der fhem "dreht durch" auch weniger kaputt gehen, wenn er weniger Rechte hat.

Wenn natürlich wirklich "nur" fhm auf Deinem Pi läuft ....  trotzdem würde (ich persöhnlich) mir die Mühe machen, es einzuschränken. Da ich nur kein Pi habe, kann ich Dir beim Suchen der einstellungen nichts helfen ... man müste wissen, das Deine Befehle (/opt/fhem/elro_1_off) wirklich machen, d.h. welche Device sie ansprechen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline masterpete23

  • Full Member
  • ***
  • Beiträge: 465
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #15 am: 24 Januar 2014, 07:27:27 »
Gibt es hierzu noch eine Antwort?
etc sudoers wäre schade

Offline Holgi0815

  • New Member
  • *
  • Beiträge: 37
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #16 am: 20 Februar 2014, 20:11:22 »
Hi,

dank dieses Beitrages habe ich meine Anforderung hinbekommen!!
Ich bekomme nur eine weiter Übergabe von Options (hier  -l deu -m p ) nicht hin.
Bsp:
Linux
:~/Scan/1_Scripte$ ./scan_to_ocr_pdf.sh -l deu -m p
geht

fhem>Linux
system('su USER /home/USER/Scan/1_Scripte/scan_to_ocr_pdf.sh -l deu -m p&');; Script wird ausgeführt, aber im Log zum Script ist erkennbar, daß -l $$ und -m $$ leer sind.

Habt Ihr noch Tipps?!
Danke Holger

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5672
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #17 am: 20 Februar 2014, 20:57:54 »
1. Ich würde Dir empfehlen:
su - USERDas - bewirkt, das die Umgebung von User geladen wird, sonst erfolgt dieses nicht, d.h. die "aktuelle" Version wird verwendet

2. Verwende lieber die "Originale Schreibweise" mit -c, also
su - USER -c "/home/USER/Scan/1_Scripte/scan_to_ocr_pdf.sh -l deu -m p&"
Ich weiß nicht, ob in Deiner Schreibweise in jedem Fall die Parameter -l, -m von su oder Deinem Script übergeben werden. So wie Deine Probleme klingen, würde ich genau auf dieses Problem Tippen

3. Funktioniert denn Deine Kommandozeile als "FHEM"-User auf der Kommandozeile? Mal Händisch probiert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Holgi0815

  • New Member
  • *
  • Beiträge: 37
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #18 am: 20 Februar 2014, 21:48:33 »
also:
ich hab mal weiter "geechot":
zu 1
su - USER
hat keine Auswirkung, aber gut zu wissen

zu 2
-c
"verschlechtert" das Ergebnis -> im verfeinerten Log kann ich jetzt sehen, daß mit -c nichts ankommt.
echo  "$1">&2
echo  "$2">&2
echo  "$3">&2
echo  "$4">&2
ergibt:
console:
-l
deu
-m
p
fhem ohne "-c"deu
p
-leer-
-leer-
fhem mit "-c"-leer-
-leer-
-leer-
-leer-
in allen Fällen wird das log geschrieben, die Sritp-Ausführung ist also OK

Danke schonmal
Holger

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5672
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #19 am: 21 Februar 2014, 07:56:39 »
Der Titel steht auf [gelöst]? Wie hast Du es jetzt gelöst?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Holgi0815

  • New Member
  • *
  • Beiträge: 37
moin,
nee, das war von meinem Vorgänger, also, wie man überhaupt ein Script zum laufen bekommt!
ich hab mal etwas abgeändert...
Holger
edit:
btw: meine Problematik kann ich natürlich mit verschiedenen Startscripten, die dann das eigentliche Sript rufen, lösen.
gefühlt, ist das aber "unhübsch" ;-)
« Letzte Änderung: 21 Februar 2014, 08:37:14 von Holgi0815 »

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 5672
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #21 am: 21 Februar 2014, 08:46:14 »
Du hast 2 mal mit "-c" gepostet. Das erste stimmt ja so,   was ist der Unterschied zum 2. im Aufruf?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MacisHere

  • Gast
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #22 am: 12 Mai 2014, 21:14:46 »
Hallo zusammen,
ich scheitere derzeit daran, aus FHEM heraus einen Python3-Einzeiler aufzurufen. Von der Kommandozeile aus funktioniert der Aufruf (Relais auf PiFace schalten).
Ich rufe das auf mit
{system('python3 /home/pi/Scripts/PiFaceOut_on.py');;}

Auch
{system("python3 /home/pi/Scripts/PiFaceOut_on.py");;}
funktioniert nicht.

Vielleicht hat jemand nen Tip?

Offline chr2k

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #23 am: 30 August 2015, 13:34:17 »
Auch ich bin gerade dran ein python script via fhem zu starten. Leider habe ich ähnliche Probleme wie der Thread Starter und MacisHere.

Es wird mir auch die "-1" angezeigt. Aber der GPIO und die daran (richtig) angeschloseene LED leuchten nicht. Wenn ich das Script per Python ausführe klappt es. Auch über die Kommandozeile des Raspian Systems klappt es.

Auch die Änderung zwischen " und ' hat nicht funktioniert - Außer dass mir immer "-1" angezeigt wird.

Ich muss das Python Script mit sudo starten, da GPIOs angesprochen werden.

Im Log von FHEM steht folgende Zeile:
sudo: no tty present and no askpass program specified
Irgendwie liest sich das für mich, als würden noch Pakete fehlen, die ich in FHEM installieren muss. Stimmt das?

Danke Euch.

Gruß
Christian

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 13815
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #24 am: 30 August 2015, 17:15:48 »
Das hier diskutierte mit den Rechten für sudo hast Du beachtet?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline chr2k

  • Sr. Member
  • ****
  • Beiträge: 586
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #25 am: 30 August 2015, 18:04:39 »
Das hier diskutierte mit den Rechten für sudo hast Du beachtet?

ay Karamba, da ist mir doch die untere Zeile im sudoers durch die Lappen gegangen.

Nunja, jetzt läuft halt alles als SU... fürs erste Ok.


Ich lese gerade in deiner SIgnatur dass du die Fritzbox benutzt. Für FHEM?

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 13815
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #26 am: 30 August 2015, 22:05:32 »
Hallo Christian,

Zitat
Ich lese gerade in deiner SIgnatur dass du die Fritzbox benutzt. Für FHEM?
hatte ich, als zweite Instanz wegen der Anwesenheitserkennung. Mittlerweile nicht mehr...
Diese Thema und die Umstellung kannst Du ziemlich gut auf meinem Blog nachlesen.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline no_Legend

  • Hero Member
  • *****
  • Beiträge: 1202
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #27 am: 29 Oktober 2015, 12:27:15 »
Kann man auch eine init script per DOIF starten?
Hier auch mit der übergabe start stop restart.

Eventuell auch per Ubuntu Services?

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 13815
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #28 am: 29 Oktober 2015, 14:27:37 »
DOIF unterscheidet sich da nicht vom restlichen FHEM. Warum sollte man kein script aus DOIF starten können?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline no_Legend

  • Hero Member
  • *****
  • Beiträge: 1202
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #29 am: 29 Oktober 2015, 14:57:35 »
Ich bekomm es einfach nicht hin.

Hintergrund ist, dass ich mir Homebridge eingerichtet habe und momentan per Konsole den Dienst immer restarten muss.

Nun würde ich gerne in das DOIF den Befehl sudo service homebridge start schicken.
Bekomme es aber nicht hin.
Hier wie ich es mri gedacht habe:

([FHEM.Homebrige] eq "on") ({system ('sudo service homebridge start')})


Edit: Habs nu n hinbekommen, hab vergessen das Script fur fhem freizugeben in der sudoers.

Danke und Gruß Robert
« Letzte Änderung: 29 Oktober 2015, 15:06:03 von no_Legend »
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Offline hellspawn0815

  • New Member
  • *
  • Beiträge: 3
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #30 am: 19 Dezember 2015, 14:29:08 »
Moin zusammen!

Hab mich hier extra registriert um mal Feedback zu geben ;D Danke zunächst mal an alle, mit euch habe ich es zum laufen bekommen.

Bei mir hat es mit folgenden Änderungen geklappt:

  • Den Benutzer fhem habe ich nicht der Gruppe root hinzugefügt, wie es thomka beschrieben hatte. Ich habe da ähnliche bedenken wie Wernieman. Ich habe stattdessen den Benutzer fhem der Gruppe gpio hinzugefügt. Dieser Gruppe muss man angehören wenn man unter /sys/class/gpio die Pins steuern will. Und da mit der fhem.cfg der Benutzer fhem versucht die GPIOs zu steuern, braucht der halt Zugriffsrechte. Dafür zum root werden, die Datei editieren, dort den bestehenden "gpio"-Eintrag suchen und dahinter ein ",fhem" ohne "") dranhängen
sudo nano /etc/group
   gpio:x:997:pi,fhem      << nur ",fhem" (ohne "") anhängen!! Dann speichern und schließen
reboot
  • Ich musste die /etc/sudoers verändern. Aber nicht so wie es thomka beschrieben hatte. Bei mir hat es gereicht den Benutzer fhem genauso einzurichten wie den Benutzer pi (Danach natürlich noch einen reboot). Bei mir sieht die Datei nun u.a. so aus:
pi ALL=(ALL) NOPASSWD: ALL
fhem ALL=(ALL) NOPASSWD: ALL
  • Meine fhem.cfg-coding sieht so aus (Man beachte: Für den Python-Aufruf benötige ich kein sudo):
# Muss einmal definiert werden, kA warum
attr global userattr webCmd

# Lichtleiste
define Lichtleiste dummy
attr Lichtleiste room Arbeitszimmer
attr Lichtleiste webCmd on:off
define sw_ll_off notify Lichtleiste:off {system('python /opt/fhem/relais.py&');;}
define sw_ll_on notify Lichtleiste:on {system('python /opt/fhem/relais.py&');;}
« Letzte Änderung: 19 Dezember 2015, 18:22:24 von hellspawn0815 »
Hilfreich Hilfreich x 1 Liste anzeigen

Offline hellspawn0815

  • New Member
  • *
  • Beiträge: 3
Antw:[GELÖST]Shell/Python Script ausführen (via Dummy / system{})
« Antwort #31 am: 19 Dezember 2015, 16:18:47 »
Ich nochmal.

Ich habe noch etwas herausgefunden. Ich habe auch ein wenig mit "echo" experimentiert und geguckt wieviele Parameter mitgegeben werden können.
define Lichtleiste dummy
attr Lichtleiste room Arbeitszimmer
attr Lichtleiste webCmd on:off
define sw_ll_off notify Lichtleiste:off {system('/opt/fhem/test.sh 1 2 3 4&');;}
define sw_ll_on notify Lichtleiste:on {system('/opt/fhem/test.sh 1 2 3 4&');;}

Die test.sh schreibt die übergebenen Parameter in eine Logdatei weg. Ergebnis: Es werden nur "1" und "2" übergeben. Ich bin der Meinung, dass die Funktion system() nur 3 Argumente aufnehmen kann. In diesem Fall wäre das erste Argument: /opt/fhem/test.sh, das zweite Argument wäre 1 und das dritte Argument 2.

Mein Script namens gpio.py benötigt um meine Pins anzusteuern 2 Parameter. Der Aufruf im Terminal läuft so:
python /opt/fhem/gpio.py 37 0
python /opt/fhem/gpio.py 37 1
In der fhem.cfg würde das so aussehen
define Lichtleiste dummy
attr Lichtleiste room Arbeitszimmer
attr Lichtleiste webCmd on:off
define sw_ll_off notify Lichtleiste:off {system('python /opt/fhem/gpio.py 37 0&');;}
define sw_ll_on notify Lichtleiste:on {system('python /opt/fhem/gpio.py 37 1&');;}
Das ist aber ein Problem, denn in der fhem.cfg bekommt die Methode system() nun insgesamt 4 Parameter übergeben.


Die Lösung ist denkbar einfach:
  • Mit dem nano in meine gpio.py rein und in der ersten Zeile dies hier eintragen:
#!/usr/bin/env python
  • Nun noch die Datei ausführbar machen:
chmod +x gpio.py
  • Jetzt kann im Terminal das Script ohne den "python"-Zusatz aufgerufen werden, nämlich so:
/opt/fhem/gpio.py 37 0
/opt/fhem/gpio.py 37 1
  • Daher kann der Aufruf in der fhem.cfg nun so aussehen:
define Lichtleiste dummy
attr Lichtleiste room Arbeitszimmer
attr Lichtleiste webCmd on:off
define sw_ll_off notify Lichtleiste:off {system('/opt/fhem/gpio.py 37 0&');;}
define sw_ll_on notify Lichtleiste:on {system('/opt/fhem/gpio.py 37 1&');;}

Jetzt klappt es auch mit dem Python-Script  ;D
Gefällt mir Gefällt mir x 1 Hilfreich Hilfreich x 2 Liste anzeigen

 

decade-submarginal