[gelöst] Wert aus Python Script in FHEM übernehmen

Begonnen von maci, 03 Oktober 2018, 20:52:34

Vorheriges Thema - Nächstes Thema

maci

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?
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

maci

Habe es mit os.system gelöst, das funktioniert
Danke!
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

Wernieman

Wobei ich Dir empfehlen würde, anstatt mit /opt/fhem/fhem.pl mit nc zu arbeiten. Ist sehr viel ressourcensparender(und stabiler)
- 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

JoWiemann

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 ?
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Wernieman

#6
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

So etwas muß übrigens auch mit Python direkt gehen. Ohne es Ausprobiert zu haben:
https://docs.python.org/2/library/telnetlib.html
- 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