Python Programm über Netzwerk starten.

  • Guten morgen, ich habe es jetzt geschafft meinen Raspberry PI4 mit Apache / php / mariadb / phpmyadmin

    auf zu setzen, läuft alles sehr gut.

    Habe mir auch eine Datenbank mit phpmyadmin angelegt, weil ich einen DHT22 auslesen und in eine Table

    speichern möchte. Dazu habe ich dieses Demo genommen was auch super geht.

    Raspberry Pi: DHT11/DHT22 Temperature and Humidity Data Logger (Python) | Random Nerd Tutorials
    Build a data logger with the Raspberry Pi and the DHT11/DHT22 sensor that automatically stores data on temperature and humidity and a timestamp on a .txt file.
    randomnerdtutorials.com

    Aber ich muss immer über putty mich einloggen und das beim erstenmal eingeben.

    Code
    cd ~/Desktop
    mkdir dht_test
    cd ~/Desktop/dht_test
    python3 -m venv myenv
    ls -l
    source myenv/bin/activate
    python3 -m pip install adafruit-circuitpython-dht
    
    python dht-datalogger.py


    Danach kann ich mich über putty einloggen und diese 2 Zeilen eingeben um zu starten.

    Code
    ========================
    cd ~/Desktop/dht_test
    source myenv/bin/activate
    python dht-datalogger.py
    ========================

    Ich habe mir auch ein main.php script Programmiert was auf dem Raspberry läuft.

    An meinen Windows PC kann ich über das Netzwerk 192.168.x.x dieses Script aufrufen.

    Und sehe meine Daten.


    Nun ist es aber blöde das ich jedesmal putty starten muss um das script zu starten.

    Ich suche eine andere Möglichkeit, wenn es geht sogar über mein Windows PC.

    Ich weiß nicht wonach ich suchen müsste wie man das macht. ich habe auch gelesen

    das man unter Debian start scripte erstellen kann. Nur wie macht man das ?

    Bitte bedenkt ich bin ANFÄNGER und Arbeite mich seit ein paar Wochen ein.

    Für Ideen wäre ich Dankbar


    mfg

  • ich habe auch gelesen

    das man unter Debian start scripte erstellen kann. Nur wie macht man das ?

    Willst Du das Script ondemand (via Internet bzw. via W/LAN) oder oncalendar oder monotonic starten?
    Schau mal nach socat (oder gleichwertig) und nach timer-units.

    Wi-Fi_Signal_Strength  txpower
    iptables chains order scheme iptables-diagram
    nftables-diagram

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.6 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p10 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., Mumble-Serv., ddclient

    PI4B/8GB Bookworm-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, Mumble-Server, botamusique, ample

    Edited once, last by rpi444 (February 3, 2025 at 10:18 AM).

  • Nun ist es aber blöde das ich jedesmal putty starten muss um das script zu starten.

    Ich suche eine andere Möglichkeit, wenn es geht sogar über mein Windows PC.

    Wann soll dieses Skript denn starten?

    • nur bei Bedarf, also quasi manuell
    • immer wenn der Raspi-Desktop eingabebereit ist (falls dort Auto-Login aktiviert ist)
    • immer nachdem der Raspi gestartet wurde
  • ich habe auch gelesen

    das man unter Debian start scripte erstellen kann. Nur wie macht man das ?

    Willst Du das Script ondemand (via Internet bzw. via W/LAN) oder oncalendar oder monotonic starten?
    Schau mal nach socat (oder gleichwertig) und nach timer-units.

    Wenn ich wüsste was das alles bedeutet ?!

    simonz nur bei Bedarf, also quasi manuell


    Ich habe einmal meinen Ordner auf dem Desktop mit dem DHT22 Demo was ich starten muss,

    um meine DHT22 daten in die Mysql Datenbank schreibben kann.

    Und einmal eine main.php womit ich mich über ip 192.168.x.x diese php Datei aufrufe um meine werte

    aus der mysql datei auslese und mir sie am Windows Computer im Browser anzeigen lasse.

    Geht das nicht das ich in meiner main.php 2 Button setze für ein und aus schalten, also script starten oder

    ausschalte. ? Also ich weiß es nicht, deswegen hier meine Frage wie man das machen kann.

    mfg

  • Die einfachste Möglichkeit scheint mir erst einmal zu sein:

    Öffne in Windows ein Powershell-Fenster und rufe von dort aus das Script auf:

    Code
    ssh user@raspbperrypi ~/Desktop/dht_test/myenv/bin/python ~/Desktop/dht_test/dht-datalogger.py

    oder:

    Code
    ssh user@raspbperrypi "cd ~/Desktop/dht_test ; myenv/bin/python dht-datalogger.py"

    "user@raspberrypi" natürlich durch den echten Benutzernamen und Hostnamen oder die IP des Raspi ersetzen.

    Edited 2 times, last by simonz: Username ergänzt. (February 3, 2025 at 4:55 PM).

  • Wenn ich wüsste was das alles bedeutet ?!

    Infos (zum einlesen) dazu findest Du im Internet (Wikis) und in den manpages. Z. B.:

    Timer Units › systemd › Wiki › ubuntuusers.de
    systemd/Timers - ArchWiki

    DeepL Übersetzer: Der präziseste Übersetzer der Welt
    Übersetzen Sie Texte und ganze Dateien im Handumdrehen. Präzise Übersetzungen für Einzelnutzer und Teams. Jeden Tag nutzen Millionen von Menschen DeepL.
    www.deepl.com

    socat(1) — socat — Debian bookworm — Debian Manpages

    Code
    apt show socat
  • Die einfachste Möglichkeit scheint mir erst einmal zu sein:

    Öffne in Windows ein Powershell-Fenster und rufe von dort aus das Script auf:

    Code
    ssh raspbperrypi ~/Desktop/dht_test/myenv/bin/python ~/Desktop/dht_test/dht-datalogger.py

    oder:

    Code
    ssh raspbperrypi "cd ~/Desktop/dht_test ; myenv/bin/python dht-datalogger.py"

    "raspberrypi" natürlich durch den echten Hostnamen oder die IP des Raspi ersetzen.

    Danke für diesen tipp, aber ich habe alles versucht, nur komme ich nicht auf mein Raspberry.

    Ich Starte Powershell und ich werde nach einen Passwort gefragt, und das sollte das selbe sein

    als wenn ich mich über putty einlogge login as pi und dann root passwort eingeben.

    Powershell fragt mich auch nicht nach login as sondern will gleich ein passwort haben.

    verstehe ich nicht


    mfg

  • Powershell fragt mich auch nicht nach login as sondern will gleich ein passwort haben.

    Statt ssh raspberrypi nimmst Du ssh deinname@raspberrypi, wobei deinname der auf dem Raspberry verwendete Name sein muss. Sonst wird Dein Windows-Benutzername genommen, und das geht vermutlich schief. Alternativ geht ssh -l deinname raspberrypi .

    Es muss übrigens nicht zwingend Powershell sein, normales Terminal genügt.

    There are no bugs. Any resemblance thereof is delirium. Really.
    (man lcf)

  • Hiermit komme ich jetzt auf dem Raspberry, aber ich bekomme immer ein Error

    Unable to set line 4 to input

    ssh pi@raspberrypi "cd ~/Desktop/dht_test; myenv/bin/python dht-datalogger.py"
    ssh pi@raspberrypi ~/Desktop/dht_test/myenv/bin/python ~/Desktop/dht_test/dht-datalogger.py

    Über putty geht es super.


    Aber mal was anderes, ich habe heute viel über shell_exec gelesen und auch Videos angeschaut wie in diesen youtube PHP - Send Shell Commands with shell_exec()

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Ich habe das sofort getestet aber ich bekomme keine Ausgabe. Ob mir noch Pakete fehlen. ?


    mfg

  • Powershell fragt mich auch nicht nach login as sondern will gleich ein passwort haben.

    Statt ssh raspberrypi nimmst Du ssh deinname@raspberrypi, wobei deinname der auf dem Raspberry verwendete Name sein muss. Sonst wird Dein Windows-Benutzername genommen, und das geht vermutlich schief. Alternativ geht ssh -l deinname raspberrypi .

    Es muss übrigens nicht zwingend Powershell sein, normales Terminal genügt.

    Danke für die Korrektur!
    Ich arbeite schon so lange nicht mehr mit Windows, da können Details schon mal unscharf sein...

    (Ich habe es oben in Beitrag #5 noch korrigiert.)

    Edited once, last by simonz (February 3, 2025 at 5:07 PM).

  • Hiermit komme ich jetzt auf dem Raspberry, aber ich bekomme immer ein Error

    Unable to set line 4 to input

    ssh pi@raspberrypi "cd ~/Desktop/dht_test; myenv/bin/python dht-datalogger.py"
    ssh pi@raspberrypi ~/Desktop/dht_test/myenv/bin/python ~/Desktop/dht_test/dht-datalogger.py

    Kannst Du bitte den Aufruf mit kompletter Fehlermeldung - in einem Codeblock - posten.

  • Ja hier meine meldung

    einmal dieser String ssh pi@raspberrypi "cd ~/Desktop/dht_test; myenv/bin/python dht-datalogger.py"

    und einmal der ssh pi@raspberrypi ~/Desktop/dht_test/myenv/bin/python ~/Desktop/dht_test/dht-datalogger.py


  • simonz

    ssh -t pi@raspberrypi ~/Desktop/dht_test/myenv/bin/python ~/Desktop/dht_test/dht-datalogger.py


    Danke


    mfg

  • Ich habe gerade gesehen wenn ich Powershell schließe läuft das demo im Raspberry weiter.

    Tja wie stoppe ich das demo ?

    kann man so einen string auch in meiner main.php einbauen ?

    /var/www/html/main.php

    das wäre der Hammer wenn ich da 2 Buttons einbauen könnte mit den ich den DHT22 starten und beenden könnte.


    mfg

  • Ich habe gerade gesehen wenn ich Powershell schließe läuft das demo im Raspberry weiter.

    Das Powershell-Fenster "beherbergt" bei obigem Aufruf ja das im Vordergrund laufende Python-Script.

    Wenn das Script gestoppt werden soll, muss es mit Strg-C beendet werden.
    Dann erst das Powershell Fenster schließen.

    Möglicherweise lässt sich das Verhalten auch in der Powershell konfigurieren. Keine Ahnung.

    Wenn das Skript im Hintergrund läuft/laufen soll - so wie es bei Deinem Schließen der Powershell ja anscheinend der Fall ist...
    kann es auf dem Raspi gestoppt werden mit

    (Nachträgliche Änderung: killall im Folgenden durch pkill ersetzt. Danke für den Tipp, hyle)

    Bash
    pkill -f dht-datalogger.py

    Und eventuell von Windows aus (UNGETESTET):

    Code
    ssh pi@raspberrypi pkill -f dht-datalogger.py

    Edited 3 times, last by simonz: Änderung: pkill statt killall scheint besser zu funktionieren. (February 3, 2025 at 7:12 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!