Ergebnis aus Phytonskript in FHEM als Reading

Begonnen von Pille90, 01 Juni 2025, 16:53:07

Vorheriges Thema - Nächstes Thema

Pille90

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

frober

So in der Art
os.system('perl /opt/fhem/fhem.pl 7072 "setreading <DEVICE> <READING> <VALUE>"')
Also systemintern per Telnet.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Otto123

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