Mit Python eine txt Datei auslesen.

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
4-Real
User
Beiträge: 7
Registriert: Montag 1. Mai 2017, 15:52

Hallo alle zusammen!! Erstmal vorne Weg, ich bin noch verdammt neu in Python und fange an mich ganz langsam einzulesen, bedeutet also das ich noch sowas von am Anfang stecke, daher bitte nicht umbringen :D

Erstmal meine Ausgangssituation. Habe hier zuhause einen Pi stehen mit IR Sender und 433 MHZ Sender. Ich steuere mit den IR Sender meinen Fernseher und meinen Vu Solo Sat Receiver. Mit dem 433 MHZ Sender Funksteckdosen aus dem "Baumarkt" (DIP Schaltung).
Da ich einen Amazon Echo Dot habe und ich durch HaBridge dann meine Baumarktsteckdosen und meinen Receiver mit Alexa an und ausschalten kann, wollte ich durch Python vll noch einen kleinen Schritt weitergehen der mir momentan noch für sehr schwierig erscheint, zumindest von meinem Kenntnisstand her.
Leider ist es ja so, das die Steckdosen kein eigenes API haben, wo mir gesagt wird, welcher Status zur Zeit Aktiv ist. für die Steckdosen gibt es ja halt nur AN oder AUS was die sache wahrscheinlich ein wenig schwieriger machen wird.
In HaBridge ist es natürlich durch die HUE Emulation nur möglich "an" oder auszuschalten" was mir auch klar ist.
Für das schalten der Funksteckdosen benutze ich wiringPi und raspberry-remote. Habe ich irgendwie die möglichkeit, den zuletzt ausgeführten Code jedes mal in eine TXT Datei schreiben zu lassen damit ich, z.b. nur ein einziges Script verwenden muss um die Steckdosen an oder Ausschalten zu können?
Meine Überlegung ist halt ein wenig kompliziert:
ich benötige z.b. den Code "./send 11010 3 1" um die Steckdose für den Fernseher anzuschalten, zum Ausschalten natürlich "./send 11010 3 0".
wenn der Befehl "./send 11010 3 1" ausgeführt wurde soll dieser Abschnitt in eine TXT Datei hinzugefügt werden, damit der zuletzt genutzte Befehl eingtragen ist. Jetzt soll durch das gleiche Script, der Befehl mit "./send 11010 3 0" ausgeführt werden wenn das Script erneut ausgeführt wird, weil ja als Letzter Befehl in der TXT steht "./send 11010 3 1".
Ich Hoffe ihr Versteht was ich meine? :D
Es wäre cool wenn das irgendwie realisierbar ist, denn ich finde es Doof immer zwei Scripte (auch wenn das natürlich viel weniger Arbeit ist) zu schreiben. Vorallem wimmelt irgendwann ein Ordner voller AN und AUS Scripts obwohl es bestimmt möglich ist es alles in ein Script zu schreiben.

Ich füge mal mein bisheriges Script ein, was ohne Fehlermeldung läuft, ich bin aber natürlich offen für eure Fehlerbeschreibungen oder Verbesserungsvorschläge, wo ich aber drum bitte, locker mit mir umzugehen weil ich sehr sehr neu in der Materie bin und ich ja gerne konstruktive Kritik annehme :-)

Vielen Dank schonmal!

Code: Alles auswählen

#!/usr/bin/python
'''Wohnzimmer Fernseher'''
import time
import os
#Steckdose VU Solo AUS
steckdosevu=('Steckdose VU Solo AUS')
print(steckdosevu)
os.system('sudo irsend SEND_ONCE vusolo KEY_POWER')
time.sleep(2)
os.system('sudo irsend SEND_ONCE vusolo KEY_OK')
time.sleep(25)
os.system('sudo /home/steckdosen/raspberry-remote/./send 11010 4 0')
#Steckdose Fernseher AUS
steckdosetv=('Steckdose Fernseher AUS')
print(steckdosetv)
time.sleep(10)
os.system('sudo /home/steckdosen/raspberry-remote/./send 11010 3 0')
Zuletzt geändert von Anonymous am Montag 1. Mai 2017, 20:59, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

grundsätzlich kein Problem. Python kann ja mit Bordmittlen Dateien zum Lesen und Schreiben öffnen. Wenn du eine Datei zum Schreiben öffnest kannst du auch festlegen, ob der Inhalt überschrieben werden soll (macht hier ja Sinn) oder an bestehenden Inhalt angehängt werden soll. Details findest du in der Python-Doku: Link.

Basierend auf deinem Beispiel ist IMHO Python aber überflüssig. Wenn du Python "nur" benutzt, um Shellbefehle abzusetzen, dann kannst du auch direkt ein Shellskript schreiben, dann braucht man den "Umweg" über Python nicht.

Und wenn du bei Python bleibst, dann möchtest du statt des veraltetem `os.system(...)` das `subprocess` Modul benutzen.

Gruß, noisefloor
Antworten