Raspberry Pi mit Baumarkt Fernbedienung in FHEM

Begonnen von Nick, 21 April 2013, 21:06:47

Vorheriges Thema - Nächstes Thema

Hardlife

Hi pepe.x!

Auch ich habe die Schalter ähnlich der Variante von Alex umgesetzt und bin mit GenShellSwitch (das ja einige Vorteile hat) leider nicht so vertraut...

Trotzdem vielleicht ein paar Überlegungen...

Zitat von: pepe.x am 18 März 2016, 21:35:45
2016.03.18 20:12:06 1: PERL WARNING: Can't exec "GenShellSwitch": Datei oder Verzeichnis nicht gefunden at ./FHEM/00_GenShellSwitch.pm line 131.

Zeile 131 im Modul besagt: "open(DATA,$command);"

Bitte poste doch mal Deine Config des Schalters.
    ( "define Wohnzimmer_Leselampe GenShellSwitch /home/pi/rcswitch-pi/send a 1 1 1 0" oder so ähnlich )
UND schreibe den Pfad Deines SendeProgramms dazu
    ( z.B.: Ich sende mit dem Programm "send" und es liegt im Pfad "/home/pi/rcswitch-pi/")
Versuche bitte auch die Steckdosen von der Konsole aus zu schalten und teile uns mit, ob es funktioniert hat.
    ( z.B.: wechsle in das Verzeichnis, in dem Dein Programm liegt - im Beispiel "/home/pi/rcswitch-pi/" und betätige Dein Sende-Programm:
              1 x als normaler user: "./send a 1 1 1 0" - passe den Programmnamen und den Stackdosen-Code bitte an
              und 1 x mit sudo: "sudo send a 1 1 1 0"

Offenbar hat GenShellSwitch laut Log-Meldung ein Problem damit, die Datei "/home/pi/rcswitch-pi/send" (oder wie auch immer Dein Programm - geht ja auch mit codesend,... - heißt) auszuführen.

Ein paar erste Ansätze:
- Stelle bitte sicher, daß der im Schalter-Device hinterlegte Code auf Dein Programm in Deinem Verzeichnis verweist
- Stelle bitte sicher, daß Du Dein Programm mit dem SetUID-Bit versehen hast (analog Post 1)
   untenstehende Kommandos in dem Verzeichnis ausführen, in dem Dein Programm (im Beispiel "send") liegt.
   sudo chown root send
sudo chmod 4711 send


LG,
Hardlife
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

pepe.x

Hallo Hardlife,

vielen Dank für deine Hilfe.

Ich habe inzwischen sicher 5 Kopien von "send" auf dem Himbeer-Computer verteilt.
Mein Befehl sieht so aus: GenShellSwitch /usr/local/bin/send433 00101 1 1 0
Das SetUID-Bit habe ich gesetzt.
Der Aufruf über die Konsole funktioniert (mit und ohne sudo).

Und wie gesagt ja auch der Aufruf über FHEM via AlexS-Methode, auch mit dem Pfad oben.

Der Fehler muss aslo irgendwo im GenShellSwitch liegen.

Gruß Pepe

Wernieman

Stimmt auch der User? Hast Du es mal auf der Konsole mit dem Fhem-User 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

pepe.x

Hallo Werniemann,

sorry ich verstehe nicht ganz wie ich das testen kann?! Per SSH kann ich doch nur auf den Benutzer 'pi' zugreifen, 'fhem' ist nicht erlaubt für SSH.

Aber: der Weg von AlexS funktioniert wie gesagt, als notify über     
plug_A:off {system("/usr/local/bin/send433 00101 1 0 &")}
aus fhem-frontend heraus.

Somit gehe ich davon aus, dass der Benutzer 'fhem' die Datei findet und ausführen kann.

Oder verstehe ich dich falsch?

Wernieman

Du kannst NACH dem einloggen den User wechseln:
su - root
su - fhem


Du must nur den "Umweg" über root gehen, da Du für fhem kein bekanntest Passwort vergeben hast. Eventuell noch in der /etc/passwd beim user fhem das /bin/false oder /bin/nologin durch /bin/bash ersetzen.

DANN .. kannst DU als User fhem testen.

Erklährung:
su für Userwechsel
der - bedeutet, lade auch die Umgebung (z.B: Passendes Home)
dahinter kommt der User ...

Ansonsten siehe man page
man su
- 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

pepe.x

Wieder was dazu gelernt. Danke!!!

Ja, der Aufruf funktioniert auch unter
fhem@raspberrypi:~$ /usr/local/bin/send433 00101 1 1
sending systemcode[00101] unitcode[1] command[1]

und es macht "klick".

Das kann es also leider nicht sein.

Hardlife

#156
Hmmm... verflixt mysteriös :-(

Um trotzdem alle Fehlerquellen auszuschliessen, bitte mal folgende Änderungen vornehmen und testen:

Der Datei "/etc/sudoers" auf Deinem Pi bitte diese Zeile hinzufügen:
(Das bewirkt, daß fhem bei der Ausführung von send433 mit sudo nicht nach einem Passwort gefragt wird.)
fhem ALL = NOPASSWD: /usr/local/bin/send433

Edit 26.03.2016 ( vergessen :-) )
Den "fhem"-User der "sudo"-Gruppe hinzufügen (falls nicht schon geschehen):
sudo addgroup fhem sudo
(eingeben in der Linux-Konsole)

Danach bitte noch Deine Device-Define wie folgt abändern:
define TEST_1 GenShellSwitch sudo /usr/local/bin/send433 00101 1 1 0

Nur zur Sicherheit bitte ein Neustart des Pi und dann testen.

Wenn das auch nicht geht, sind zumindest alle Rechte-Probleme ausgeschlossen...

Sorry, da ich wie gesagt das Modul nicht verwende (und Perl mal so gar nicht zu meinen Stärken gehört) kann ich leider nicht weiter als bis hierher helfen...
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

sam50

plug_A:off {system("/usr/local/bin/send433 00101 1 0 &")}

Hallo
hast du das & Zeichen noch drin. Wenn ja lass das mal weg.

pepe.x

Hallo,

sorry war "kurz" abwesend. Jetzt will ich das fhem-Projekt wieder zum Leben erwecken, das Problem mit dem GenShellSwitch ist aber noch aktuell.  :(

@Hardlife: blöde Frage, aber was soll das bringen? Ich kann doch den Befehl ohne sudo absetzen, wozu dann noch der Aufwand?

@sam50: die Varieante "plug_A:off..." funktioniert doch, das ist ja nicht das Problem. Davon will ich doch aber weg! Das ist mir für mehrere verschiedene Steckdosen zu unübersichtlich.

Ich werde mir jetzt mal pilight anschauen, auch wenn es mir wiederstrebt, dafür nen extra deamon laufen zu lassen.

Gruß Pepe

ak323

Hi zusammen !
Hat hier jemand inzwischen eine Lösung gefunden .. ?
Ich habe aktuell das gleiche Problem und wäre für einen Lösungsansatz sehr dankbar ..!
ak323
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

onistuebchen

Vielen vielen Dank!!!! War schon am verzweifeln - und das bei dem Wetter draussen!!!


Zitat von: AlexS am 04 März 2014, 11:26:00
Hallo zusammen

Klar gerne. Ich hoffe das Verstößt jetzt nicht gegen irgendwelche Regeln.
Wenn doch bitte löschen oder mich benachrichtigen.

Hier der Link: https://github.com/mc-b/microHOME/wiki/Raspberrypi-433

einzig der Part
git clone https://github.com/r10r/rcswitch-pi.git
                hat nicht funktioniert. Dort einfach folgendes nutzen
git clone github.com..usw....

VG Alex S.

Ich hoffe es hilft einigen weiter