FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Pille90 am 01 Juni 2025, 16:53:07

Titel: Ergebnis aus Phytonskript in FHEM als Reading
Beitrag von: Pille90 am 01 Juni 2025, 16:53:07
Hallo Zusammen,

ich in meiner Zisterne einen Ultraschallsensor, welcher mir den Füllstand gibt. Leider ist die Karte abgeschmiert und für das Gerät hatte ich keine Sicherungsiso erstellt. Das Ding lief an die 10 Jahre und ich weis jetzt nicht mehr genau wie ich das damals gelöst habe deshalb die Frage.

Ich habe folgendes Skript
#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time
 
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
 
#GPIO Pins zuweisen
GPIO_TRIGGER = 8
GPIO_ECHO = 7
 
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
 
def distanz():
    # setze Trigger auf HIGH
    GPIO.output(GPIO_TRIGGER, True)
 
    # setze Trigger nach 0.01ms aus LOW
    time.sleep(0.00001)
    GPIO.output(GPIO_TRIGGER, False)
 
    StartZeit = time.time()
    StopZeit = time.time()
 
    # speichere Startzeit
    while GPIO.input(GPIO_ECHO) == 0:
        StartZeit = time.time()
 
    # speichere Ankunftszeit
    while GPIO.input(GPIO_ECHO) == 1:
        StopZeit = time.time()
 
    # Zeit Differenz zwischen Start und Ankunft
    TimeElapsed = StopZeit - StartZeit
    # mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
    # und durch 2 teilen, da hin und zurueck
    distanz = (TimeElapsed * 34300) / 2
 
    return distanz
 
if __name__ == '__main__':
    try:
        while True:
            abstand = distanz()
            print ("Gemessene Entfernung = %.1f cm" % abstand)
            time.sleep(1)
 
        # Beim Abbruch durch STRG+C resetten
    except KeyboardInterrupt:
        print("Messung vom User gestoppt")
        GPIO.cleanup()



und folgendes DOIF in FHEM:

    
([USdummy] eq "on")
 
({ system ("sudo sudo -u root /opt/fhem/Melder.py &")})
(set USdummy off)

Meine Frage: Was muss ich wo ändern, dass der Wert in den Dummy WertZisterne geschrieben wird. Wenn ich das Skrip direkt ausführe kommt ein plausibler Wert: 

root@raspberrypi:/home/pi# sudo sudo -u root /opt/fhem/Melder.py &
[1] 1579
root@raspberrypi:/home/pi# sudo: /opt/fhem/Melder.py: command not found

Vielen Dank im Voraus.

VG Flo
Titel: Aw: Ergebnis aus Phytonskript in FHEM als Reading
Beitrag von: frober am 01 Juni 2025, 18:25:02
So in der Art
os.system('perl /opt/fhem/fhem.pl 7072 "setreading <DEVICE> <READING> <VALUE>"')
Also systemintern per Telnet.
Titel: Aw: Ergebnis aus Phytonskript in FHEM als Reading
Beitrag von: Otto123 am 04 Juni 2025, 17:45:03
Zitat von: Pille90 am 01 Juni 2025, 16:53:07root@raspberrypi:/home/pi# sudo sudo -u root /opt/fhem/Melder.py &
Das ist nicht nur doppelt sondern sogar dreifach gerootet.  ;D

Falls die "Schlange" wirklich erhöhte Rechte braucht sollte man das vor allem in der sudoers klären - und bitte nicht mit "alle dürfen alles"!

Auf Kommandozeile würde ich die Lauffähigkeit des Scriptes für FHEM so testen (unter der Annahme das FHEM mit user fhem läuft):
sudo -u fhem /opt/fhem/Melder.py
Gruß Otto