Um den request zu senden muss man eingeloggt sein
Mein NAS ist ein Selbstbau. Deswegen läuft auch Debian drauf brauchst du irgendwelche Hardware-Daten?
Beiträge von execute1337
-
-
Eine WebGUI ist vorhanden. Darüber kann ich ihn manuell schlafen legen und beispielsweise auch auf Aktivität im Netzwerk prüfen lassen. Das funktioniert aber nur sehr bescheiden. Außerdem würde ich ihn dennoch gerne mittels Python-Skriptes, quasi auf Knopfdruck, schlafen legen.
Wehe, jemand sagt jetzt "dann drück doch den Knopf"
-
Hi!
Mich würde interessieren, wie ich mit Hilfe von Python meinen NAS-Server schlafen lege?Von der Hardware her unterstützt er WakeOnLAN (falls es dafür relevant ist).
Als Betriebssystem kommt Openmediavault (OMV) zum Einsatz. OMV basiert auf Debian Wheezy.Ziel ist es, dass ich mittels Python Skript und RPi diesen Server schlafen lege wenn ich meine Wohnung verlasse und aufwecke wenn ich wieder nach Hause komme.
Hat jemand einen Ansatz, wie ich das ganze umsetzten könnte?
Grüße, exe!
-
Die haben den Desktop ein wenig aufgeräumt
klick auf "Menü" oben links... da findest du alles
__________________________________Da war jemand schneller
-
oha... mit ArchLinux kenn ich mich nicht aus
mal eine ganz abgefahrene Idee:
Der Nutzer packt sich eine Textdatei auf einen USB-Stick. Diese enthält SSID und PW vom Netzwerk.
Der Stick kommt in den RPi. Wenn dieser bootet, prüft ein Python Skript ob ein USB-Stick mit so einer Textdatei angeschlossen ist.
Wenn ja...
...extrahiert das Skript die Informationen und trägt sie in die wpa-conf ein.
Wenn nein...
... wird einfach weitergemacht wie bisherWie genau das umzusetzen wäre weiß ich nicht, aber ich bin mir sicher das es klappen könnte.
Python-Kenntnisse sind dafür natürlich vorrausgesetzt
-
Hallo Freunde!Ich habe einen Pi so vorbereitet, dass jmd. anderes ihn gut nutzen kann und will. Nur kann ich beim ersten Nutzen nicht anwesend sein. Da soll aber das WLAN eingerichtet werden..
Gibt es eine Möglichkeit, dem User einfach zu ermöglichen, seine WLAN Daten einzugeben?
Vielleicht ein Webinterface, in dem man dann die SSID und das PW eingibt? Oder per Batch Datei das zu übergeben oder ähnliches?Beste Grüße und danke schon mal..
NickHi,
Da ich bei sowas auch sehr faul bin, nutze ich einfach die GUI dafüralso:
und dann den WPA-Configuration-Manager öffnen..
Dort kann man einfach nach vorhandenen Netzwerken suchen und entsprechen verbinden.
Das ganze bleibt auch nach einem reboot erhalten.Vorraussetzung dafür ist natürlich ein kompatibler WLAN-Stick
-
Da Ich den ersten Post nicht mehr bearbeiten kann, kommen die Updates jetzt hinten ran
###########Update3###########
Wettervorhersage hinzugefügt
###########Update4###########
Kleines fade-in Intro beim starten des Skriptes hinzugefügt.
In dem Video klicke ich ein wenig durch die MenüsExterner Inhalt www.youtube.comInhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Das Skript mag sehr träge wirken, das liegt aber an meiner virtuellen LinuxMint Distro.
Auf dem RPi läuft alles flüssig###########Update5###########
Soooooo... Da ich nun meinen RPi wieder in den Finger hatte, konnte ich ein wenig weiter machen.
Das erste Problem hat sich inzwischen auch erledigt. Das schalten per 433MHz über einen anderen GPIO funktioniert jetzt einwandfrei. Ich hatte mal eine LED an den Pin angeschlossen, um zu sehen ob er überhaupt sendet. Und siehe da: Er tut es! Also schien es ein Problem mit den timings zu geben. Ich fand hier einen Thread, wo darauf hingewiesen wurde, dass beim Pi2 sich die timings ändern, wenn der DeviceTree aktiviert ist.
Also:
und den DeviceTree deaktiviert.
Da kam richtig Freude auf, als die Steckdose wieder geklickt hatWeiterhin hab ich das Intro und alles was Alpha genutzt hat wieder rausgenommen, da der RPi ein wenig überfordert schien (wahrscheinlich ein Programmierfehler meinerseits).
Danach hat sich die Performance verbessert: statt 7 Sekunden, aktualisert er sich alle 4 Sekunden. Das reicht natürlich nicht aus.
Als weiteren Übeltäter hab ich die Wetterdaten ausfindig machen können.
Also mal ohne getestet: Es läuft flüssig (wahrscheinlich ebenfalls ein Fehler meinerseits).Auf Intro und Alpha kann ich verzichten. Bei den Wetterdaten würde ich aber eigentlich gerne bleiben. Nun weiß ich noch nicht, ob ich die einfach verwerfe (was wirklich schade um die Arbeit der Unterstützer in diesem Forum und die Arbeit meinerseits wäre), oder mich eventuell doch nochmal drum kümmer.
Hier nochmal ein kleines Video vom aktuellem Stand:
Externer Inhalt youtu.beInhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Grüße!
-
Hi execute1337
Freut mich, dass es funktioniert
Was ich allerdings nicht verstehe, ist, dass das erste except subprocess.... nicht anschlägt
wenn die Internetverbindung gekappt ist. Logischerweise sollte dies so sein. Und des weiteren sogar, wenn zwar Internet verfügbar ist, aber aus irgendeinem Grund der yahoo Server down ist. Was selten vorkommt, aber vorkommen kann. Dann sollte es natürlich auch ein 'Nicht Verfügbar' geben.
Werde daran noch arbeiten. Eventuell kann man die ganze ping-Geschichte komplett weglassen. Teste mal was dein Prog sagt, wenn du meinetwegen yahoo.xy anpingst.Daran hab ich schon gedacht
Als Website, die du in deinem Beispiel genannt hast, verwendest du google.de
Ob Google erreichbar ist oder nicht, ist ja relativ uninteressant für mein Skript.
Demnach hab ich das natürlich auf die Yahoo Wetter-Seite geändert, wo Pywapi sich anscheinend die Wetterdaten herholt. Also:
Eine andere Frage hätte ich noch betreffend deiner echt wunderschönen und zeitgemäßen Icons. Darf ich dir deswegen eine PN senden?Gruß
Klar doch
-
HAMMER!!!!
Es Funktioniert! :thumbs1:
Ich musste zwar noch einen Haufen Sachen in meinem Skript anpassen, aber es läuft mit deiner Lösung!
Internet an:
Internet aus:
Sieht natürlich noch nicht schön aus, aber da hab ich mich auch noch nicht drum gekümmert
Nochmal ein fettes Dankeschön!!
-
Danke für das Lob und deine Unterstützung!
Ich werde den ersten Beitrag immer mit neuen Updates versorgen, sobald ich was neues gebastelt hab.Vielleicht stößt ja noch der eine oder andere auf diesen Thread, der Rat weiß
-
In dem Beispiel scheint er sich die Google-Website mit den Wetterdaten zu öffnen und sich dann den benötigten kram rauszuholen...
Ich würde aber gerne bei Pywapi und dem Yahoo-Wetter bleiben
Ich versteh auch einfach nicht, warum er trotz des try/except-Blocks immernoch den KeyError raushaut
Irgendwo muss da einfach ein Fehler drinne stecken...Eine andere Frage: Darf ich fragen, wie genau du das mit den Umlauten gemacht hast.
Suche das schon seit langer Zeit als i-tüpfelchen für ein Programm.Gruß
Ja, kann ich gerne machen
Ich hab in verschieden Foren gelesen, dass wenn man einfach
am Anfang des Skriptes schreibt, einfach mit Umlauten in Strings arbeiten kann.
Hat bei mir natürlich nicht geklappt
Nach einigen Stunden Suche, hab ich eine (für mich) funktionierende und akzeptable Lösung gefunden.
Ich definiere im Skript einfach die Sonderzeichen:Codeumlauta1 = u"ä" umlauta2 = u"Ä" umlautu1 = u"ü" umlautu2 = u"Ü" umlauto1 = u"ö" umlauto2 = u"Ö" degree1 = u"°"
Danach muss man sich die Strings etwas zusammenbasteln, aber immerhin funktionierts
so sehen einige Beispiel-Strings mit Umlauten oder Sonderzeichen in meinem Skript aus:Codewetterdegrees = ("Nicht Verf" + umlautu1 + "gbar") toplabel = font4.render ("K"+umlautu1+"che", 20, white) wetterlabel1 = font1.render ("Frierende N"+umlauta1+"sse", 8, black) wetterlabel1 = font1.render (umlautu2+"berwiegend bew"+umlauto1+"lkt", 8, black) wetterlabel2 = font1.render ("Temperatur: " + wetterdegrees + " " + degree1 + "C", 8, black)
-
Habs den Code mal ein wenig auf meine Situation angepasst:
Code
Alles anzeigenwhile running: clock.tick(30) try: ping = subprocess.Popen(["ping", "-n", "-c 5", website], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, error = ping.communicate() if out: yahoo_result = pywapi.get_weather_from_yahoo('GMXX0030', 'metric') wetterdegrees = string.lower(yahoo_result['condition']['temp']) else: wetterdegrees = ("Nicht Verf" + umlautu1 + "gbar") except subprocess.CalledProcessError: print "Couldn't get a ping"
Ist das so korrekt? Der Fehler bleibt leider weiterhin bestehen:
-
-
Das sieht sehr vielversprechend aus
Ich werde damit mal ein wenig rumprobieren.Danke
______________________________________________Hab jetzt mal ein wenig rumprobiert. Irgendwie steh ich auf dem Schlauch
Hier mal der Code-Schnipsel, den ich abgeändert habe:
Codewhile running: try: yahoo_result = pywapi.get_weather_from_yahoo('GMXX0030', 'metric') wetterdegrees = string.lower(yahoo_result['condition']['temp']) except KeyError: wetterdegrees = ("Nicht Verf"+umlautu1+"gbar") zeit = time.strftime("%H:%M") datum = time.strftime("%d.%m.%Y") #cputemperature = str(round(int(str(os.popen("cat /sys/class/thermal/thermal_zone0/temp").readlines()).strip ("[\ ]'/n"))/1000 , 1)) uptime = str(timedelta(seconds = int(str(os.popen("cat /proc/uptime | awk -F '.' '{print $1}'").readlines()).strip ("[\ ]'/n"))))
Am Fehler hat sich bis jetzt nichts geändert
-
sooooo...
Um nochmal auf den ersten Fehler mit den Wetterdaten zurück zu kommen:
Wenn die Internetverbindung verloren geht, beendet sich das Pygame-Skript mit folgendem Fehler:CodeTraceback (most recent call last): File "pygame_test.py", line 241, in <module> wetterdegrees = string.lower(yahoo_result['condition']['temp']) KeyError: 'condition'
Ich hab das Skript einfach mal auf einer virtuellen Linux Mint Distro laufen lassen und die Internetverbindung gekappt.
Die Frage ist jetzt wie ich es anstelle, dass sich das Skript nicht einfach beendet.
Ich hab mir überlegt, Yahoo einfach anzupingen. Bei einer erfolgreichen Rückmeldung, soll er sich die Wetterdaten holen. Andernfalls nur ein "Nicht verfügbar" anzeigen.Vielleicht gibt es ja auch eine elgantere Lösung. Hat jemand eine Idee?
-
Danke für den Tipp Das werde ich übernächste Woche direkt mal ausprobieren!
Eine Dokumentation führe ich schon, aber das macht den Arbeitsaufwand ja leider nicht weniger
Ich gebe nochmal eine Rückmeldung, sobald ich weiter gemacht habe
-
Naja... Ich hab noch ein Backup, allerdings fehlte mir die Zeit mein Changelog dafür zu schreiben. Das heißt ich weiß nicht genau auf welchem stand es sich befindet
Notfalls muss ich das System neu aufsetzen. Da gehört aber einiges zu:
Grundkonfiguration, samba, FBTFT Treiber, Wiring-Pi, Pywapi, Pygame, etc...Wenn es auch ohne geht wäre es natürlich toller, als alles neu zu machen und dann festzustellen, dass es immer noch nicht läuft
-
kannst du mir verraten wie ich das alles restlos wegbekomme?
Ich werds dann nochmal versuchen... -
Hallo execute1337
Das Problem mit dem Display und dem DATA-Pin hatte ich auch.
Vor dem erstellen von raspberry-remote oder rcswitch-pi in der
send.cpp den Eintrag PIN = 0 suchen und ändern.
Die Belegung ist in wiringpi, also standard 0 = GPIO17.Danke für die Antwort!
Die Methode hab ich schon probiert, wenn ich dann aber etwas schalten möchte steht für ca 30 Sekunden folgendes da:
Dabei tut sich leider garnichts. Die Steckdosen lassen sich leider weder an, noch aus schalten.
Ich hab das natürlich auch mit verschiedenen GPIO´s probiert.
Normalerweise dauert ein Schaltvorgang nur ca. 1 Sekunde.Als Tutorial hab ich dieses verwendet. Ist Irgendetwas fehlerhaft? Ich bin in der Sache echt am verzweifeln
-
Zitat
Wie hast du deine Display Oberfläche gemacht, also gibt es da ein bestimmtes Programm?
Ich hab alles in Python geschrieben. Für die Oberfläche habe ich eine Python-Bibliothek namens Pygame verwendet.
Wie der Name es schon erahnen lässt, ist diese eigentlich für Spiele gedacht. Aber sie lässt sich sehr gut für solche Sachen zweckentfremden
ZitatWenn du auf deinem Display drückst, was wird intern im PI aufgerufen also welche Programme laufen dann bei einer Berührung? Damit die richtige Aktion ausgeführt wird
Um die Funksteckdosen zu schalten, nutze ich die raspberry-remote von xkonni. Um eine Funksteckdose an zu schalten muss einfach der Befehl
ausgeführt werden. Und um sie auszuschaltenIch hab die wahrscheinlich eine sehr unschöne Variante genutzt um diese Befehle abzusetzen.
ZitatWie hast du das mit dem Lichtschalter gemacht, wie steuerst du deine Lampen im Zimmer an?
Noch garnicht Der kleine Touchscreen soll ja im Grunde genommen die Lichtschalter ersetzen. Für die Lampen werde ich wohl Funksteckdosen umbauen, oder Funkrelais (falls es sowas gibt) nutzen und sie dann nur über den RPi steuern. Das ganze ist momentan noch ein Testaufbau mit Funksteckdosen...
ZitatUnd könntest du noch eine kurze Erklärung geben, wie dein ganzes Projekt funktioniert?
Da musst du schon ein wenig präziser werden Was genau ist denn unklar?
ZitatSchaut sehr gut aus und gefällt mir! Gehört auf jeden Fall zu den schönsten Projekten hier im Board. :thumbs1:
Danke
ZitatDas einzige was mich ein ganz kleines bisschen stört, dass die Beschriftungen in der Liste nicht vertikal zentriert sind und ich würde die Wetter-Daten ähnlich vom Rest abheben, wie die beiden oberen Leisten.
Die Beschriftung wollte ich schon linksbündig haben, das gefällt mir persönlich am besten Die Wetter-Daten abheben? Meinst du, ich sollte die Zeile auch farblich unterlegen? Ich kann das in nächster Zeit mal ausprobieren, aber ich sehe keinen Grund, was die Wetter-Daten so besonders macht, dass ich sie hervorheben muss
Ich hab mich beim "Design" übrigens an Google´s Material Design orientiertZitatDeine Pläne klingen gut. Vor allem die Idee mit dem Doppel-Tippen für Licht einschalten find' ich gut. Wenn man in einen Raum kommt, will man ja nicht unbedingt erst auf dem Display nach dem konkreten Schalter suchen
Genau das ist der Gedanke dahinter Wenn man in Eile ist, kann so ein Display noch kleiner werden, als es eh schon ist Das gehört aber noch zu den Sachen, an die ich mich noch nicht rangesetzt habe.ZitatBei deinem ersten Problem kann ich Dir leider nicht weiterhelfen, beim zweiten fehlen mir — und den anderen sicherlich auch — noch weitere Informationen. Was bedeutet Fehler in dem Fall? Wird eine Exception geworfen? Wenn ja was für eine?
Eine Frage die ich gerne beantworten würde... aber nicht kann Mein Projekt-RPi liegt leider an meinem Arbeitsort und ich befinde mich im Urlaub Du hast natürlich recht! Ich sollte das schon genauer erläutern. Das werde ich auch gerne nachholen, sobald ich meinen RPi wieder in den Fingern habe
ZitatSind die Ansichten in deinem Menü eigentlich hardgecodet oder werden sie generiert?
Alles hardgecodet und in voller Dreistigkeit nur auf meine eigenen Bedürfnisse zugeschnitten Das Problem ist, ich bin in Sachen Python sehr, sehr, unerfahren! Ich bin noch nicht lange dabei und hab mir alles selbst bei gebracht. Und da ich mich kenne, weiß ich auch was für ein schlechter Lehrer ich bin
Ich würde auch gerne meinen "Code" zeigen, aber dann würde mich wahrscheinlich die Python-Gemeinde erhängen für 988 Zeilen pure Beleidigung
Danke für eure Meinungen