Irgendwie komme ich nicht weiter.
Ich habe ein Python Script das auf die high Flanke eine GPIO Eingangs reagiert.
Gemessen wir auch die Dauer des high Signals.
Die Dauer ist einscheidend für eine weitere Verarbeitung in FHEM.
Ich finde einfach nichts, wie ich den Wert an einen dummy übergeben kann.
mit bash habe ich es geschafft, doch bei python stehe ich am schlauch.
Das übergeben mit bash habe ich so gelöst: /opt/fhem/fhem.pl 127.0.0.1:7072 "set Ausgabe $WERT"
Ausgabe ist ein Dummy
Muss sagen, dass ich weder in Python noch in bash gut bin, wobei bash besser geht.
Das Python script habe ich im Netz gefunden und es funktoniert auch.
Konkret geht es darum, dass ich je nach Dauer eines Signals den Raspberry neustarten oder ausschalten will.
Da ich aber zuvor auf meinem Monitor mit Floorplan eine Ausgabe haben will, will ich das ganze an FHEM übergeben.
Wer hat einen Tipp für mich?
Mit netcat oder os.system
Vielleicht hilft das Beispiel weiter:
#!/usr/bin/python
import sys
from SOAPpy import SOAPProxy
import subprocess
def fhem_set( var, value):
#print "set " + var + " " + value
subprocess.call(['perl', '/opt/fhem/fhem.pl', '7072', 'set '+ var +' ' + value])
server = SOAPProxy(proxy='http://192.168.x.x:49000/igdupnp/control/WANCommonIFC1',
namespace ='urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1',
soapaction='urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetCommonLinkProperties',
noroot=True)
#server.config.dumpSOAPOut = 1
#server.config.dumpSOAPIn = 1
try:
interface = server.GetResponse()
except:
print "Problem to get info from FritzBox via upnp."
sys.exit(1)
if interface['NewPhysicalLinkStatus'] != 'Up':
fhem_set("FB_Link","Up: 0 Down: 0")
else:
NewLayer1DownstreamMaxkBitRate = int(interface['NewLayer1DownstreamMaxBitRate'])/1000
NewLayer1UpstreamMaxkBitRate = int(interface['NewLayer1UpstreamMaxBitRate'])/1000
fhem_set("FB_Link", "Up: " + repr(NewLayer1UpstreamMaxkBitRate) + " Down: " + repr(NewLayer1DownstreamMaxkBitRate) )
sys.exit(0)
/Code]
Grüße Jörg
Habe es mit os.system gelöst, das funktioniert
Danke!
Wobei ich Dir empfehlen würde, anstatt mit /opt/fhem/fhem.pl mit nc zu arbeiten. Ist sehr viel ressourcensparender(und stabiler)
Zitat von: Wernieman am 04 Oktober 2018, 16:25:53
Wobei ich Dir empfehlen würde, anstatt mit /opt/fhem/fhem.pl mit nc zu arbeiten. Ist sehr viel ressourcensparender(und stabiler)
Wofür steht für Dich nc ?
für den Befehl "nc", in der Langform netcat. In der Konsole ist beides verwendbar.
In der Bash:
echo -en "set ${1} ${2}\nquit\n" | nc -w 5 localhost 7072 >/dev/null
Kann sogar mit Passwort arbeiten, das muß nur als erster Parameter. Wenn DU telnet per SSL geschützt hast, siehe Command-Ref:
http://www.fhem.de/commandref.html#telnet (http://www.fhem.de/commandref.html#telnet)
So etwas muß übrigens auch mit Python direkt gehen. Ohne es Ausprobiert zu haben:
https://docs.python.org/2/library/telnetlib.html (https://docs.python.org/2/library/telnetlib.html)