Beiträge von Schnipsel

    Hallo, kann diesem Fehler nicht ganz folgen.

    Also:

    Code
    channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)

    muss abgeändert werden in:

    Code
    channel = thingspeak.Channel(id=channel_id, api_key=write_key, api_key=read_key)

    ?


    Da kommt dann folgendes raus:

    Code
      File "./thingspeak_example.py", line 28
        channel = thingspeak.Channel(id=channel_id, api_key=write_key, api_key=read_key)
                                                                      ^
    SyntaxError: keyword argument repeated
    Code
    Traceback (most recent call last):
      File "./thingspeak_example.py", line 28, in <module>
        channel = thingspeak.Channel(id=channel_id, write_key=api_key, api_key=read_key)
    NameError: name 'api_key' is not defined

    Hey, danke für die bisherigen Antworten.

    Das mit dem shell_exec("sudo pkill -f <Skriptname>.py"); habe ich schon ausprobiert - funktioniert leider nicht. Auch wenn ich es direkt in den Commander eingebe funktioniert das mit pkill -f <Dateiname> irgendwie nicht.

    Hatte nicht vor den Pi frei zugänglich zu machen. Wa würde denn damit passieren bezügl sudo in shell_exec, wenn ich fragen darf?

    Der Handbetrieb läuft über den Dateienpfad, der Autobetrieb mit der Dauerschleife, den kann ich nur mit "sudo python3" starten.

    Handbetrieb läuft jeweils über ein Python-Script (hoch, stop, runter)

    Code
    if (isset($_POST['down'])){
        shell_exec("/var/www/html/Smarthome/roll_down.py");
        }
    
    
    if (isset($_POST['auto_on'])){
        shell_exec("sudo python3 roll_auto.py");
        }

    ls -la Rollladensteuerung:

    -rwxr-xr-x 1 root root 2764 Mär 12 20:57 Rollladensteuerung.php

    Hallo,

    gerne bin ich auch für einen alternativen Weg dazu offen - hier den weg, den ich gerade gehe um die Skripte zu öffnen:

    PHP
    <?php
    
    if (isset($_POST['up'])){
        shell_exec("/var/www/html/Smarthome/roll_up.py");
        }
    ?>
    PHP
    <form action="<?php $_SERVER['PHP_SELF']?>" method="post"> <input name="up"   type="submit"   class="ROLLL_H_R"   value="HOCH"></form>

    Also nochmal zum Verständnis:

    Über aktivierung der unteren Scripte (Handbetrieb), soll das Script des Automatikbetriebes beendet werden, da dieser sonst in Dauerschleife weiterläuft und nach dem Lichtwert weiter schaltet.

    Ich möchte anschließend den Automatikbetrieb durch einen Auto-Button neustarten.


    Das ist der Code, welcher in Dauerschleife durchläuft und den GPIO auf einen vorgegebenen Lichtwert anspricht:

    (Wird per Button in HTML/PHP auf server gestartet)

    Code zum separaten ansteuern per Button (HOCH) :

    Code zum separaten ansteuern per Button (Runter):

    Hallo zusammen!

    Ich möchte gerne einen Automatik- und einen Handbetrieb erstellen, die über zwei separate Scripte laufen, jedoch auf die Selben funktionen zugreifen.

    In meinem aktuellen Projekt habe ich eine Script mit Dauerschleife laufen, welches einen GPIO ansteuert. Gerne möchte ich, dass beim starten eines weiteren Scriptes die Dauerschleife beendet wird.

    Gibt es einen Befehl, welchen ich in das 2. Script schreiben kann, um somit das Skript mit der Dauerschleife zu beenden?


    Liebe Grüße

    Hey G9c,

    den Weg in deinem Script bin ich auch vorher gegangen, bei mir ging dieser allerdings nur mit Aufruf von shell, statt python-scripten:

    PHP
    <?php
    
    sytem( "python /home/pi/relays.py);
    
    header ("Location:index.html");
    
    ?>

    Nachteil ist für meine Anwendung allerdings, dass eben nur die GPIOS geschaltet, aber kein komplettes Programm ablaufen kann.

    Bei mir hat das ausgebesserte php-script von Hyle weitergeholfen. Ich habe dafür eine php-Datei erstellt und den Code wie in Beitrag #8 bzw. #7 eingebettet.

    Den Anker mit <a href=xy.php... habe ich getauscht gegen:

    PHP
    <form action="<?php $_SERVER['PHP_SELF']?>" method="post"><input name="on" type="submit" value="On"></form>

    Der Php-Code zu dem Pyton-script wird nun nicht extern aufgerufen, sondern ist mit in das Script integriert und wird beim drücken des Buttons aktiviert.

    Vorteil ist, dass nun die Seite nicht noch extra neu aufgerufen werden muss.

    Ein weiteres Problem welches ich hatte, waren die nicht richtig gesetzten Shebangs und das "ausführbar machen" (chmod +x Dateixy.py) der Datei.

    Das waren jetzt nur meine persönlichen Erfahrungen bei meinem eigenen Projekt. Für tiefergehende Fragen ist wohl Hyle der kompetentere Ansprechpartner.


    Liebe Grüße!

    Hey hyle,

    habe eben mal deine Skripte ausprobiert. Das php-Skript hat nun funktioniert, habe aber zum ausprobieren einfache "True" und "False" python-Skripte damit geöffnet. Das Eingabefeld habe ich durch den On/Off - button ersetzt.

    Code
    #!/usr/bin/env python3
    
    import RPi.GPIO as GPIO
    
    GPIO.setmode(GPIO.BCM)
    
    GPIO.setup(23, GPIO.OUT)
    
    GPIO.output(23, True)

    Der Link den du beigefügt hast kann ich auch weiterhin noch gut gebrauchen.


    Das Ganze kann ich nun als Basis für mein Projekt verwenden - vielen Dank für deine Hilfe! :)

    Hey hyle,

    ich habe eben in dem Beispiel aus dem Link den php-code nach deiner Kritik umgeänder und die von dir oben genannten befehle in die Befehlszeile eingetragen.

    Nach Serverneustart und reboot hat leider immer noch nichts funktioniert.

    Nach dem tutorial auf dem Link sehe ich einen anklickbaren "on" - button über den Broser, die LED leuchtet aber leider immer noch nicht wenn ich daraufklicke.

    habe es bisher nur über - html-->php-befehl--> shell-script --> gpio xy =1 hinbekommen. Aber damit kann ich außer log 1 und 0 nichts realisieren.

    Danke trotzdem für die Hilfestellung! :)

    Naja, würde gerne per webserver und webseite ein python-script ausführen um z.B. LEDs oder Motoren anzusteuern.

    Mein Problem ist, dass die Python-Scripte an sich schlüssig und manuell ausführbar sind, aber ich weiß nicht wie ich es hinbekomme, dass ich sie eben mit einem Php-Befehl über z.B. einen Button auf der Webseite ausführen kann.

    <?php

    if (isset($_POST['on'])){

    echo shell_exec("python3 /var/www/html/ledon.py");

    }

    ?>

    funktioniert bei mir zum Beispiel nicht - ich weiß einfach nicht was ich falsch mache oder vergessen habe.

    Hallo Zusammen!

    Sicherlich habe ich schon versucht über das Forum oder Google herauszufinden wie ich mein aktuelles Problem angehe. Bislang habe ich mehrere Möglichkeiten gefunden, welche ich auch schon erfolglos durchprobiert habe.

    Also möchte ich dieses Thema nochmal aufgreifen, um an meinem jetzigen Projekt weiterzukommen.

    Bsp.: https://thepiguy.altervista.org/control-lights-from-webpage/


    Könnte mir jemand eine etwas genauere Anleitung dazu geben, wie ich ein Python-script über eine Webseite und php-befehlen (button) ausführen kann?

    Mein Ausgangspunkt ist gerade:

    -Raspberry Pi 4

    -Apache2

    -HTML-Seite mit buttons und integrierten php-Befehlen

    -Python (aktuelle versionen)

    (Das aufrufen von Shell-scripten funktioniert mit den php-befehlen einwandfrei.)


    Was könnten mögliche Probleme darstellen, oder was könnte ich vergessen haben?

    (Die Pythonscripte sind mit Shebangs (#!/usr/bin/ env python3) versehen, ausführbar gemacht per "chmod +x" und laufen auch unter dem Befehl "./", das php-script ist wie in dem Beispiel, habe auch weitere ausprobiert)


    Liebe Grüße!

    Hallo zusammen!

    Meine Vorstellung zu meinem Projekt war eine Smart home-Steuerung über ein tablet.

    Vorzugsweise mit einer verstellbaren Zeitschaltuhr. (Außenbeleuchtung, Bewässerungsanlage usw.)

    Einfache Leuchtenansteuerung per On/Off - buttons habe ich über php Befehle im HTML Script eingebettet. Die php Befehle rufen wiederum shell scripte auf um die gpios anzusteuern.

    Bisher nutze ich hierzu den Apache2 auf dem Webserver.

    Da ich noch nicht allzu sehr in der Materie bin, wäre ich dankbar um Verbesserungsvorschläge. Flask und python liest man ja auch des öfteren.

    Hätte jemand sinnvolle Lösungsansätze um eine Zeitschaltuhr zu programmieren? Im Idealfall über ein Eingabefeld auf der Webseite (Uhrzeit abändern).

    Danke schonmal im Vorfeld!

    Liebe Grüße! :)