Neues Modul: 00_ShellSwitch.pm (neuere Version von 00_GenShellSwitch.pm)

Begonnen von DeeSPe, 16 Oktober 2016, 00:55:54

Vorheriges Thema - Nächstes Thema

DeeSPe


  • Diese Form der Module sind nicht unter "Edit files" zu sehen!
  • Module gehören nach /opt/fhem/FHEM/
  • Rechte sind anzupassen auf Benutzer fhem und Gruppe dialout mit 664.
  • Danach ein "reload MODULNAME" oder "shutdown restart".
  • Nun sollte der define Befehl funktionieren!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

RotesPferd

#16
Hallo,
erst einmal herzlichen Dank für das Modul.

Ich bin Neuling was das Thema Heimautomatisierung angeht und habe jetzt meinen alten Raspberry Pi neues Leben eingehaucht.

Raspbian mit FHEM und Tradfri laufen bereits und nun habe ich mir einen einfachen 433 MHz Sender für meine Funksteckdosen gekauft,
welches ebenfalls funktioniert. Die Funksteckdosen kann ich z.B. mit "send 00101 1 0" aus bzw. mit "send 00101 1 1" anschalten.

Jetzt versuche ich den Kommandozeilenbefehl in das Modul zu integrieren was aber leider nicht funktioniert.

Was mache ich falsch? Ich habe mal ein Bild angehängt...

Danke!


Edit:

Auszug aus dem Logile:

2017.10.30 15:29:31 0: Server shutdown
2017.10.30 15:29:35 1: Including fhem.cfg
2017.10.30 15:29:35 3: telnetPort: port 7072 opened
2017.10.30 15:29:37 3: WEB: port 8083 opened
2017.10.30 15:29:37 3: WEBphone: port 8084 opened
2017.10.30 15:29:37 3: WEBtablet: port 8085 opened
2017.10.30 15:29:37 2: eventTypes: loaded 51 events from ./log/eventTypes.txt
2017.10.30 15:29:39 2: ONKYO_AVR avr: Registering ONKYO_AVR for webhook URI ?/ONKYO_AVR ...
2017.10.30 15:29:39 3: Opening avr device 192.168.1.57:60128
2017.10.30 15:29:40 1: Including ./log/fhem.save
2017.10.30 15:29:40 1: usb create starting
2017.10.30 15:29:42 3: Probing CUL device /dev/ttyAMA0
2017.10.30 15:29:42 3: Can't open /dev/ttyAMA0: Permission denied
2017.10.30 15:29:42 1: usb create end
2017.10.30 15:29:42 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth. telnetPort has no associated allowed device with password/globalpassword.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2017.10.30 15:29:42 0: Featurelevel: 5.8
2017.10.30 15:29:42 0: Server started with 15 defined entities (fhem.pl:15294/2017-10-20 perl:5.024001 os:linux user:fhem pid:762)
2017.10.30 15:29:42 3: avr device opened
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected
sh: 1: Syntax error: redirection unexpected


DeeSPe

Du musst den kompletten Pfad zum Programm angeben.
Z.B.
define SS ShellSwitch /home/pi/wiringPi/433Utils/RPi_utils/codesend a 1 1 1 0

Und der Benutzer FHEM benötigt die Rechte das Programm ausführen zu dürfen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

RotesPferd

Zitat von: DeeSPe am 30 Oktober 2017, 16:42:37
Du musst den kompletten Pfad zum Programm angeben.
Z.B.
define SS ShellSwitch /home/pi/wiringPi/433Utils/RPi_utils/codesend a 1 1 1 0

Und der Benutzer FHEM benötigt die Rechte das Programm ausführen zu dürfen.

Gruß
Dan

Irgendetwas mache ich falsch, da das leider auch nicht funktioniert:

Mein Pfad zum Send-Befehl lautet: /usr/local/bin/send

Dieser Befehl auf der Konsole funktioniert: /usr/local/bin/send 00101 1 1

FHEM habe ich die nötigen Rechte an der Datei mit Chown gegeben.


define Stehlampe2 ShellSwitch /usr/local/bin/send 00101 1

bzw.

define Stehlampe2 ShellSwitch /usr/local/bin/send 00101 1 <1> <0>

funktioniert nicht

DeeSPe

Wenn der Benutzer fhem die entsprechenden Rechte hat sollte das gehen:
define Stehlampe2 ShellSwitch /usr/local/bin/send 00101 1 1 0

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

RotesPferd

Zitat von: DeeSPe am 30 Oktober 2017, 17:28:46
Wenn der Benutzer fhem die entsprechenden Rechte hat sollte das gehen:
define Stehlampe2 ShellSwitch /usr/local/bin/send 00101 1 1 0

Gruß
Dan

Herzlichen Dank!!! Funktioniert jetzt.

Flori

Hallo :)

Ich versuche gerade meine Funksteckdose mit deinem Modul über FHEM zu steuern aber irgendwie klappt dies nicht so ganz.

Definiert habe ich dies so

define Funksteckdose ShellSwitch /home/pi/433Utils/RPi_utils/send 11001 1 1 0
setuuid Funksteckdose 5e8e032d-f33f-79d9-c300-da56e8e6b2b29eba
attr Funksteckdose room ShellSwitch


Wenn ich im Terminal
/home/pi/433Utils/RPi_utils/send 11001 1 1 eingeben geht sie an, bei /home/pi/433Utils/RPi_utils/send 11001 1 0 geht sie aus

Drücke ich nun auf "On"/"Off" auf der FHEM Seite passiert gar nichts.

Der Event Monitor zeigt mir dies an
2020-04-08 19:36:20 ShellSwitch Funksteckdose off
2020-04-08 19:36:24 ShellSwitch Funksteckdose on
2020-04-08 19:36:25 ShellSwitch Funksteckdose on
2020-04-08 19:36:25 ShellSwitch Funksteckdose off


Meine Rechte von FHEM /opt/fhem
ls -lha /opt/fhem/
insgesamt 680K
drwxrwxrwx 10 fhem dialout 4,0K Apr  3 17:35 .
drwxr-xr-x  4 root root    4,0K Apr  3 17:27 ..
-rw-rw-rw-  1 fhem dialout 328K Apr  8 16:21 CHANGED
-rw-rw-rw-  1 fhem dialout  39K Apr  3 17:35 configDB.pm
drwxrwxrwx 46 fhem dialout 4,0K Apr  3 17:27 contrib
drwxrwxrwx  3 fhem dialout 4,0K Apr  3 17:27 demolog
drwxrwxrwx  4 fhem dialout 4,0K Apr  3 17:27 docs
drwxrwxrwx  6 fhem dialout  32K Apr  8 18:21 FHEM
-rw-rw-rw-  1 fhem dialout 1,8K Apr  8 19:00 fhem.cfg
-rw-rw-rw-  1 fhem dialout  25K Jan 26 14:14 fhem.cfg.demo
-rwxrw-rw-  1 fhem dialout 158K Apr  3 17:35 fhem.pl
drwxrwxrwx  2 fhem dialout 4,0K Apr  3 17:28 log
-rw-rw-rw-  1 fhem dialout  42K Apr  3 17:35 MAINTAINER.txt
-rw-rw-rw-  1 fhem dialout  935 Jan 26 14:14 README_DEMO.txt
drwxrwxrwx  4 fhem dialout 4,0K Apr  3 17:35 restoreDir
drwxrwxrwx  2 fhem dialout 4,0K Apr  3 17:35 unused
drwxrwxrwx  9 fhem dialout 4,0K Apr  8 17:25 www


Die Rechte von 433Utils
drwxrwxrwx 7 pi   pi   4,0K Apr  3 17:49 433Utils


Kann es evtl daran liegen, dass unter dem "define Funksteckdose ShellSwitch /home/pi/433Utils/RPi_utils/send 11001 1 1 0"
er die 0 als "pulseLength" sieht und dementsprechend nichts funkt?

Sending 433 MHz remote plug control codes, hardcoded on wiringpi pin 0.
Usage: /home/pi/433Utils/RPi_utils/send <systemCode> <unitCode> <command> [pulseLength]
systemCode  - First five settings of Type A 10 pole DIP switch, e.g. 11111
unitCode    - Switch number [1 .. 5] or [10000 .. 00001]
command     - 0 for OFF and 1 for ON
pulseLength - optional pulse length





Vielleicht hat der eine oder andere eine Idee und kann mir weiter helfen.



Dankeschön und schöne Grüße aus der Quarantäne
Florian

DeeSPe

Zitat von: Flori am 08 April 2020, 19:45:52
Hallo :)

Ich versuche gerade meine Funksteckdose mit deinem Modul über FHEM zu steuern aber irgendwie klappt dies nicht so ganz.

Definiert habe ich dies so

define Funksteckdose ShellSwitch /home/pi/433Utils/RPi_utils/send 11001 1 1 0
setuuid Funksteckdose 5e8e032d-f33f-79d9-c300-da56e8e6b2b29eba
attr Funksteckdose room ShellSwitch


Wenn ich im Terminal
/home/pi/433Utils/RPi_utils/send 11001 1 1 eingeben geht sie an, bei /home/pi/433Utils/RPi_utils/send 11001 1 0 geht sie aus

Drücke ich nun auf "On"/"Off" auf der FHEM Seite passiert gar nichts.

Der Event Monitor zeigt mir dies an
2020-04-08 19:36:20 ShellSwitch Funksteckdose off
2020-04-08 19:36:24 ShellSwitch Funksteckdose on
2020-04-08 19:36:25 ShellSwitch Funksteckdose on
2020-04-08 19:36:25 ShellSwitch Funksteckdose off


Meine Rechte von FHEM /opt/fhem
ls -lha /opt/fhem/
insgesamt 680K
drwxrwxrwx 10 fhem dialout 4,0K Apr  3 17:35 .
drwxr-xr-x  4 root root    4,0K Apr  3 17:27 ..
-rw-rw-rw-  1 fhem dialout 328K Apr  8 16:21 CHANGED
-rw-rw-rw-  1 fhem dialout  39K Apr  3 17:35 configDB.pm
drwxrwxrwx 46 fhem dialout 4,0K Apr  3 17:27 contrib
drwxrwxrwx  3 fhem dialout 4,0K Apr  3 17:27 demolog
drwxrwxrwx  4 fhem dialout 4,0K Apr  3 17:27 docs
drwxrwxrwx  6 fhem dialout  32K Apr  8 18:21 FHEM
-rw-rw-rw-  1 fhem dialout 1,8K Apr  8 19:00 fhem.cfg
-rw-rw-rw-  1 fhem dialout  25K Jan 26 14:14 fhem.cfg.demo
-rwxrw-rw-  1 fhem dialout 158K Apr  3 17:35 fhem.pl
drwxrwxrwx  2 fhem dialout 4,0K Apr  3 17:28 log
-rw-rw-rw-  1 fhem dialout  42K Apr  3 17:35 MAINTAINER.txt
-rw-rw-rw-  1 fhem dialout  935 Jan 26 14:14 README_DEMO.txt
drwxrwxrwx  4 fhem dialout 4,0K Apr  3 17:35 restoreDir
drwxrwxrwx  2 fhem dialout 4,0K Apr  3 17:35 unused
drwxrwxrwx  9 fhem dialout 4,0K Apr  8 17:25 www


Die Rechte von 433Utils
drwxrwxrwx 7 pi   pi   4,0K Apr  3 17:49 433Utils


Kann es evtl daran liegen, dass unter dem "define Funksteckdose ShellSwitch /home/pi/433Utils/RPi_utils/send 11001 1 1 0"
er die 0 als "pulseLength" sieht und dementsprechend nichts funkt?

Sending 433 MHz remote plug control codes, hardcoded on wiringpi pin 0.
Usage: /home/pi/433Utils/RPi_utils/send <systemCode> <unitCode> <command> [pulseLength]
systemCode  - First five settings of Type A 10 pole DIP switch, e.g. 11111
unitCode    - Switch number [1 .. 5] or [10000 .. 00001]
command     - 0 for OFF and 1 for ON
pulseLength - optional pulse length





Vielleicht hat der eine oder andere eine Idee und kann mir weiter helfen.



Dankeschön und schöne Grüße aus der Quarantäne
Florian

Hallo Florian,

ich denke es wird sich um ein Berechtigungsproblem handeln.
Erfordert send nicht sudo Rechte?
Ich nehme an auch bei Dir läuft FHEM unter dem User fhem. Die Berechtigungen auf send sind aber nur für User pi.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Flori

Hallo Dan,

vielen Dank für deine Antwort! :)


Ich dachte eigentlich, dass ich durch freigeben des Ordners für alle,

drwxrwxrwx 7 pi   pi   4,0K Apr  3 17:49 433Utils

kein problem mit den rechten hättte, hab aber dann gesehen, dass das Programm "Send" nich ausführbar für alle ist.


Weißt du zufällig, ob es so reichen würde?

sudo chmod 777 /home/pi/433Utils/RPi_utils/send


Entschuldige meine Fragen, bin noch ziemlich neu in Linux.


Schöne Grüße
Florian

DeeSPe

Zitat von: Flori am 15 April 2020, 07:47:46
Hallo Dan,

vielen Dank für deine Antwort! :)


Ich dachte eigentlich, dass ich durch freigeben des Ordners für alle,

drwxrwxrwx 7 pi   pi   4,0K Apr  3 17:49 433Utils

kein problem mit den rechten hättte, hab aber dann gesehen, dass das Programm "Send" nich ausführbar für alle ist.


Weißt du zufällig, ob es so reichen würde?

sudo chmod 777 /home/pi/433Utils/RPi_utils/send


Entschuldige meine Fragen, bin noch ziemlich neu in Linux.


Schöne Grüße
Florian

Moin Florian,

probier es doch einfach aus ob es mit "chmod 777" funktioniert, ich kenne das Programm nicht.
Mit sudo musst Du es aber nicht aufrufen? Dann müsstest Du an "visudo" ran.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Flori

Danke für deine Unterstüzung, DeeSPe! :)

es lag anscheinend echt nur an den Rechten ... sehr komplex xD

Hab mir den Beitrag https://forum.fhem.de/index.php/topic,12443.0.html als Vorbild genommen aber dein Modul dann eingebunden.

Grüße
Florii



Sutadur

Bei Neuinstallation von FHEM bin ich beim Thema Funksteckdosen auf dieses Modul gestoßen. Das hat auch einwandfrei funktioniert. Ich kriege nicht mehr zusammen, wie ich das bei einer früheren Installation von FHEM hinbekommen habe, aber da war es auf jeden Fall mehr Aufwand, für die Funksteckdosen Ein- und Ausschalter zu definieren. Neben einigen Funksteckdosen habe ich auch das Modul "Fritzbox" aktiviert, um darüber insbesondere das Gäste-Wlan zu schalten. Das funktioniert zwar grundsätzlich auch, allerdings bisher nur über den Befehl "set Fritzbox guestWlan on". Kann man das auch in Verbindung mit ShellSwitch nutzen? Die Vorstellung, damit gleich auch on/off-Schalter zu haben, finde ich recht charmant. Aber so einfach scheint das nicht zu sein, da das Modul wohl in erster Linie für die Umsetzung von Befehlen auf der Ebene der Kommandozeile gedacht ist. Gibt es da dennoch einen Weg? Schon jetzt vielen Dank für Eure Hilfe ... :)