Textdatei einlesen und in if verwenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Leiht mir euren Laien aus.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Den mit der Leier? :D
Das Leben ist wie ein Tennisball.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

darktrym hat geschrieben:Leiht mir euren Laien aus.
Geh mal zur Ursula. Vielleicht kannst du ihn ja von der Leyen. 8)
obstkuchen
User
Beiträge: 13
Registriert: Dienstag 10. Februar 2015, 23:42

Hallo,
@all
ich bin natürlich dankbar für jede Hilfe die ich bekommen kann.

Bin natürlich auch dankbar, dass es Experten gibt, die sich überhaupt mit Anfängerfragen rumschlagen, obwohl wahrscheinlich jedes Problem schon x Mal über die Suche zu finden ist.

@cofi
@Hyperion
Meintet ihr zufällig das ?

Gpio.php:

Code: Alles auswählen

<?php
$licht = exec("python schalten.py $status");
<?
Doch wie müsste dann das Python Skript aussehen, das es die variable ($status) auch annimmt?

Schalten.py:

Code: Alles auswählen

#!/usr/bin/env python
import time
import RPi.GPIO as GPIO

gpio = 10
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(gpio, GPIO.OUT)

p = GPIO.PWM(gpio, 50)
p.start(0)

if $status == “an” :
	for dc in range(0, 100, 5):
        		p.ChangeDutyCycle(dc)
        		time.sleep(0.1)
if $status == „aus“ :
	for dc in range(100, 0, -5):
        		p.ChangeDutyCycle(dc)
        		time.sleep(0.1)
if $status == “kino” :
                        for dc in range(100, 20, -5):
        			p.ChangeDutyCycle(dc)
        			time.sleep(0.1)
			
                                while $status  ==”wieder_an” 
				         for dc in range(20, 100, 5):
        				        p.ChangeDutyCycle(dc)
        				        time.sleep(0.1)
Wenn das allerdings nicht euer Lösungsvorschlag war, dann habe ich euern Post nicht verstanden.
mfg
Heiko
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wenn du den Parameter per Hand verarbeiten möchtest, dann musst du das sys-Modul importieren. Mit ``sys.argv`` kannst du dann auf die Liste mit Argumenten zugreifen. Das argparse Module wurde weiter oben ja schon erwähnt
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ja, das geht in die richtige Richtung.

Aufruf:

Code: Alles auswählen

program.py command status
Und dann die relevanten Zeilen (ohne Fehlerbehandlung und als `sys.argv` Variante) im Programm:

Code: Alles auswählen

import sys
_, command, state = sys.argv

if command == "licht":
    if state == "an":
        turn_light_on()
    else state == "aus":
        turn_light_off()
elif command == "kino":
    ....
obstkuchen
User
Beiträge: 13
Registriert: Dienstag 10. Februar 2015, 23:42

Hatte jetzt an

Code: Alles auswählen

#!/usr/bin/env python
import sys

if sys.argv[1] == "an":
        print "an"

if sys.argv[1] == "aus":
        print "aus"
gedacht



Jetzt wollte ich das ganze mal testen, doch woher weiß denn dann das PHP Skript ob das Licht an oder aus ist, wenn ich es nicht in eine Textdatei schreibe?

Weil ich die PHP Seite ja nicht nur auf meinem Handy, sondern auch auf meinem IPad, dem Pi selber und meinem PC läuft.

Vorher konnte ich ja mit

Code: Alles auswählen

$a = trim(@shell_exec("/usr/local/bin/gpio -g read 27"));
Abfragen ob an order aus.
Durch den Wegfall der Relais musste ich ja auf eine Textdatei zugreifen.
Weil ich nur einen Button für an und aus habe.
Der Kino Button erscheint erst wenn das Licht auch an ist.
Hat da noch einer eine Idee ?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du müsstest Dir dann tatsächlich den Zustand persistent merken. Dies kannst Du ja nach wie vor in einer Textdatei machen, die Du von PHP Seite ausliest. Diese kann nun entweder PHP schreiben - oder eben auch das Python-Script.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
obstkuchen
User
Beiträge: 13
Registriert: Dienstag 10. Februar 2015, 23:42

Ja,
dann bedanke ich mich recht Herzlich für die aufschlussreiche Hilfe.
Das Script läuft so weit, dass Thema könnte als Erledigt markiert werden, ich kann nur den ersten Beitrag nicht mehr editieren.

Mfg
Heiko
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wir schließen hier keine Themen :-) Es ist immer möglich, daß jemand anderes das Thema erneut aufgreift. Insofern musst Du nichts "tun" :-)

Eine letzte Anmerkung noch: Du könntest jetzt daran gehen und PHP durch Python ersetzen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten