NeoPixel WS2812 python skript als dummy starten und beenden

Begonnen von matze85, 31 Oktober 2018, 10:17:08

Vorheriges Thema - Nächstes Thema

matze85

Hallo also ich habe Fhem vor ein paar tagen installiert und auch meine gpios zum laufen gebracht so weit so gut.
nun möchte ich meine neopixel streifen die ich in meine Treppe verbaut habe über fhem steuern allerdings ohne ein arduino sondern direkt über das skript also einfach gesagt wie ein GPIO on / off ich hoffe irgendjemand hat da eine Lösung.

Danke Gruß Matze !!!!!!!!

Otto123

Hi,

https://fhem.de/commandref_DE.html#command

Siehe Shell Befehl: also wenn dein python skript läuft kannst Du es einfach in "" setzen und ausführen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matze85

#2
Guten Morgen Otto, vielen Dank für deinen Tipp erstmal also ich habe versucht den Python script so aufzurufen

define trepperon notify treppe:on {system "/fhem/fhem/strandtest1.py&"}

leider ohne erfolg

mein zweiter Gedanke war den ganzen befehl den ich in ssh eingebe über fhem aufzurufen mit diesem code

define treppeon notify treppe:open {system("sudo /home/pi/rpi_ws281x/python/examples/ sudo PYTHONPATH=".:build/lib.linux-armv7l.7" python examples/strandtest1.py &")}

aber leider hat all dies nicht geklappt. Ich denke der zusatz hier sudo PYTHONPATH=".:build/lib.linux-armv7l.7" python examples/strandtest1.py ist das problem aber ich brauche ih um den skript starten zu können. vielleicht siehst du ja einelösung bzw. den Fehler

Danke Gruß Matze 

Otto123

#3
Moin,

mein Vorschlag war nicht Perl {} und nicht die Funktion {system("")}. Mein Vorschlag war:
"Dein Script steht hier am besten mit absoluten Pfaden einfach zwischen zwei doppelten Hochkommas"

Hier findest Du ein paar Notizen von mir.

Ganz davon abgesehen, machst Du deine Tests interaktiv offenbar als User pi, Deine FHEM macht das aber mit user fhem (normalerweise).
Du musst also sowohl ssh als auch sudo für den User fhem einrichten! Auch hierzu meine Notizen, diese beiden beiden mit betreffen:
https://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html
https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matze85

hi so in etwa hab ich es verstanden nur das große Problem ist das ich den befehl so nicht ausführen kann ich kann nämlich nicht den Pfad angeben und gleichzeitig den
sudo PYTHONPATH=".:build/lib.linux-armv7l.7" python examples/strandtest1.py ausführen.

das klappt ja auch so nicht in ssh.

jetzt hatte ich eine super Idee nur fehlt mir etwas das know how :

ein sh skript zu erstellen das erst den Pfad öffnet und anschließend den befehl
sudo PYTHONPATH=".:build/lib.linux-armv7l.7" python examples/strandtest1.py
startet
wäre cool wenn du mir dabei helfen könntest
das ganze sollte ungefair so aussehen:

define treppenlicht dummy
attr webcmd on:off
define treppeon notify treppenlicht:on {system ("sudo /fhem/on.sh"}

ich hoffe es ist so in der art machbar und sorry ich bin hier ein absoluter Neuling also bitte Geduld mit mir

gruß matze



Otto123

Hallo matze,

also ich helfe Dir gern, aber was willst Du jetzt wissen?
Wie man mit nano ein sh Script schreibt?
Das die Befehle eventuell in zwei Zeilen müssen?
Das Du auf die Pfade achten musst und besser absolute Pfade verwendest?
- Beispiel /usr/sbin/python /bla/bla/examples/Script.py

Und Du brauchst {system()} dafür nicht!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matze85

hi otto sorry ich blicks nicht

schau ich hab folgendes gemacht ich hab in /etc/sudoers
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
fhem ALL=(ALL) NOPASSWD: ALL

alle rechte erteilt auch das skript selbst hat alle lese schreibe rechte

so mein script liegt in /opt/fhem/strandtest1.py allerdings ist es nur ausführbar wenn ich im ordner /opt/fhem bin und anschließend sudo python strandtest1.py eingebe.

jetzt will ich es schalten wie ein gpio also hab ich ein dummy mit treppe angelegt .
dann muss ich doch ein  define on notify treppe:on ............anlegen richtig ..?
aber dazu fehlt mir der richtige code hab sämtliche varianten versucht aber ohne erfolg.
wäre echt super wenn du mir den richtigen code zusammen stellen würdest bin am verzweifeln danke

gruß matze 

Otto123

Funktioniert folgendes in der FHEM Kommandozeile (Du weißt von was ich rede?)
"sudo /usr/sbin/python /opt/fhem/strandtest1.py"

Gruß Otto

P.S. bezüglich sudoers hast Du meine Notiz nicht gelesen - oder?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

matze85

Hi danke für deine schnell Antwort
   sudo: / usr / sbin / python: Befehl nicht gefunden
Das kommt im log nach dem ich es eingegeben habe

Otto123

#9
Das kommt mit den Leerzeichen dazwischen?  ???

Ich glaube ich habe mich vertan:
"sudo /usr/bin/python /opt/fhem/strandtest1.py"

Oder mit dem Befehl ermittelnwhich python
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz