Beiträge von JaGr0

    Hi,

    bei dem Beispiel mit dem GPIO nutzt du globale Variablen.

    @app.route('/gpio', method='POST')
    def set_gpio_status():
    #global pir
    global Motion

    Ich frage mich warum die als global deklariert werden?

    Könnte man nicht außerhalb der Funktion das GPIO Setup machen und die Variable "Motion" als Parameter der Funktion set_gpio_status() mitgeben?

    So könnte doch auch außerhalb der Funktion mit dem Motion-Sensor gearbeitet werden und man bräuchte kein "global"?

    Stimmt das oder bin ich auf dem Holzweg?

    Hallo,

    ich habe die Anleitung von meigrafd zur Erstellung einer Website mit Bottle und Websocket durchgelesen und versucht umzusetzen. Wenn ich mit irgendeinem Browser auf irgendeinem Gerät die Internetseite ansurfe klappt das. Außer wenn ich das mit einem IPhone mache...

    Ich bekomme folgenden Fehler:

    WebSocket closed 1006 Going away

    /usr/lib/python3/dist-packages/ws4py/websocket.py:336: ResourceWarning: unclosed <socket.socket fd=21, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.0.21', 7070)>
    self.environ = None

    Warum ich Websocket benutzen möchte und nicht einen "normalen" Server: Falls ich einen am PI angeschlossenen Button drücke, möchte ich das auf der Website angezeigt bekommen, ohne die ganze Website manuell neu laden zu müssen.

    Wenn ich das nämlich richtig verstanden habe, ist genau für so einen Anwendungsfall Websocket gedacht....

    Grüße

    Hallöle,

    kurzer Anmerkung zu mir: studiere Elektrotechnik im mittlerweile fünften Semester, hatten ein Semester eine Einführung in C/C++. Mit Python/Raspberry angefangen habe ich im letzten Jahr, mit einem zu ambitionierten Projekt. Habe dann mal alles über Board geschmissen und einfach mal verschiedene einfache Sachen gemacht und die dann immer erweitert. So ist dann etwas mehr "Routine" reingekommen.

    So und jetzt die eigentliche Frage:

    Woran merke ich als Anfänger in Python ob der Code den ich schreibe gut ist?

    Wohl nicht nur daran ob er das macht was ich mache....

    In der Uni hatten wir immer so Progammieraufgaben, wo die Aufgaben sehr kleinschrittig formuliert wurden.

    Ich versuche so auch möglichst kleinschrittig zu programmieren (eine Funktion schreiben/testen) nur wenn das Projekt wächst und das Gerüst schon nicht richtig ist, wie soll dann das Haus stehen?

    Wenn man dann sowas ließt und versucht zu befolgen und einige Ratschläge aus dem Forum annimmt, stellt sich für mich immer noch die Frage, ob jemand anderes das versteht was ich gedacht habe .

    Und manchmal denke ich mir, dass jemand, mit mehr Erfahrung, einige Probleme deutlich eleganter löst....

    Ich fühle mich dann immer hin und her gerissen, ob ich eine Frage posten soll, wenn ich keine Antwort finde, oder ob ich mit Methode Brechstange programmiere. Letzteres gefällt mir eigentlich überhaupt nicht, dass wirkt dann irgendwie wie gewollt aber nicht richtig?? gekonnt...

    Ist der Pi nicht dafür da, dass man einfach mal drauf los programmiert???

    Wobei ich auch ab und an schon gelesen habe, dass so sehr viele schlechte Praktiken verbreitet werden und naja, :conf::conf:

    Und nicht falsch verstehen, ich finde hier doch eigentlich immer hilfreiche Antworten auch in älteren Threads:thumbup::thumbup::thumbup::thumbup::danke_ATDE:

    Vielleicht habt ihr ja auch mal so gefühlt, wie ich mich gerade fühle...

    Vor mir ein großer Berg und ich irgendwo am Fuße...

    Beste Grüße

    JaGr0

    P.S. Ich hoffe, dass der Thread im richtigen Subforum steht....

    Hallo,

    Was hast du denn vor?

    ich möchte die Ergebnisse einer Berechnung, wo sich die Daten täglich ändern in ein Dictionary speichern. Grundsätzlich würde es ja dann reichen, das jeweils um 00:01 am folgenden Tag zu machen.

    Du hattest mir bei einem Problem, dass ich vor "Ewigkeiten" hatte, bereits geholfen. Diese Daten will ich eigentlich jetzt benutzen.

    (Habe jetzt endlich mal wieder Zeit dafür :thumbup:)

    Ich werde mir das mit den Timer Units nochmal ansehen und sage schonmal Danke für die Hilfe. :)

    Grüße :)

    Hallo,

    bei der Suche etwas alle X Sekunden/Stunden auszuführen, bin ich auf folgendes gestoßen. Ich finde das eigentlich recht praktisch. Nur habe ich eine Frage bei folgendem Test-Code.

    Inwiefern ist sowas sinnvoll, bei kleinen Zeitabständen zu machen. Könnte ich da nicht einfach solange in dem Thread sleepen, ohne noch extra die API zu benutzten?

    Oder kann man sowas besser benutzen, weil das Sleep unter Umständen zu ungenau ist?

    Grüße :)

    Hallo,

    ich hatte heute mal Zeit, dass mit den Events auszuprobieren. Ich habe jetzt das Gewünschte erhalten.

    Vielen Dank für die Hilfe.:)

    Ich habe aber noch eine Frage:


    Ich habe ja jetzt zwei Events angelegt, für die unterschiedlichen Taster. Es gibt ja die Funktion "event.wait()", welche so lange wartet, bis das Event ausgelöst wurde. In anderen Programmiersprachen gibt es auch noch so eine Funktion wie "event.wait_for_either(). Gibt es sowas auch in Python? So könnte ich mir doch das Sleep in meiner while-Schleife sparen!?

    Viele Grüße

    Hallo,

    ich habe an meinem Pi zwei MCP23S17 Portexpander angeschlossen. Mittels dem Clone der Wiringpi-Bibliothek und gpiozero wollte ich folgendes in Python umsetzen:

    Wenn ich auf ein Button drücke, möchte ich verschiedene LEDS am Portexpander in einer bestimmten Reihenfolge durchschalten. Wenn ich den Taster 1 drücke soll er mit der roten anfangen und dann so weiter. Sobald ich aber Taster 2 drücke, soll der Ablauf unterbrochen werden. Wenn ich Taster 2 drücke soll in einer anderen Reihenfolge geschalten werden und beim Drücken von Taster 1 soll der Ablauf wieder unterbrochen werden.

    Für mich stellt sich jetzt die Frage, wie ich das realisiere:

    Ich habe eine Funktion geschrieben, die für ein bestimmtes Intervall nur die rote LED, bzw. die blaue LED leuchten lässt. Dieses könnte ich jetzt um mehrere Status erweitern für mehrere Leds.

    Wenn ich einen Taster drücke und ein Moment warte, geht die Led wieder aus und ich kann den anderen Taster betätigen. Klappt alles super.

    Nur das gegenseitige ausschalten klappt nicht.

    Ich denke, dass liegt daran, dass wenn ich einen Taster drücke, die Funktion aufrufe, die dann abgearbeitet wird und dann auf ein neuen Tasterdruck gewartet wird.

    Wie kann man das gegenseitige Ausschalten lösen?

    (Durch ständiges abfragen des anderen Buttons!?, oder vielleicht mit Hilfe von Threads und Queues?!)

    Schönes Wochenende !:)

    JaGr0


    Hallo,

    wie bereits geschrieben, habe ich die Berechnung für einen einzelnen Tag aus der Quelle oben. Auch ich muss zugeben, dass der Code teilweise sehr kryptisch ist. Deshalb hab ich mir hier angeschaut wie so etwas geht...

    Ich muss aber gestehen, dass ich froh war, dass der Code funktioniert hat und ich mich nicht noch mit der Mathematik rumschlagen musste:blush:, was ich leider sowieso schon in der Uni zu viel muss ;(

    Danke auf jeden Fall für die einzelnen Tipps und Grundsätze!:bravo2:

    Und natürlich für die Heute/Morgen "Berechnung" :bravo2:

    Ich hätte dazu aber noch ein/zwei Fragen:

    In Zeile 124 und 127 reicht es, ein leeres Dict anzulegen. Das vorbelegen der Werte mit 00:00 ist a) überflüssig, b) hättest du einen falschen Wert, wenn der Wert warum-auch-immer nicht überschrieben würde.

    Ich hatte gedacht, dass zu einem Key jeweils ein Wert zugewiesen werden muss. Was für ein Wert würde denn zu Key gehören, dem noch kein Wert zugewiesen wurde. Ich dachte, dass ich so später überprüfen konnte ob ein "richtiger" Wert zugewiesen wurde, weil 0 Uhr doch sehr unwahrscheinlich ist. Oder wird dann hier sowas wie NaN abgespeichert?:denker:


    Der Ausdruck hinter `if` in Zeile 30, 47, 49 usw. braucht nicht geklammert werden.

    In Python allgemeiner Usus, dass nicht geklammert wird?

    Auch bei evtl. größeren Bedingungen?

    Zeile 142-144 ist ziemlich gruslig... `tag` ist ein `datetime` Objekt, was du brauchst bekommst du ganz einfach über `tag.year`, `tag.month`, `tag.day`

    Der Gedanke von mir war hier einfach, dass ich so immer mit dem Montag anfange, mein Dictionary zu beschreiben. Leider wusste ich nicht wie ich das sonst anstellen sollte, also habe ich vielleicht ein bisschen rumgepfuscht...:blush:


    Danke, und noch schönen Restabend;)

    Danke, für die schnelle Hilfe!

    Ich habe das mit einem OrderedDict aus dem Modul Collections gelöst

    Wobei ich mich jetzt frage, warum das nicht in genau der Reihenfolge abgespeichert wird, wie man es eingibt...

    Weil man sagt ja Python wäre so anfängerfreundlich :conf:

    Trotzdem Danke!

    Hallo,

    ich habe ein Python-Skript im Internet gefunden, womit man für einen gewünschten Tag den Sonnenaufgang und den Sonnenuntergang berechnen kann.

    Da ich aber für eine Woche gerne diese Zeiten hätte, habe ich das Skript erweitert und die jeweiligen Zeiten in ein Dictionary geschrieben.

    Das habe ich dann auf dem Pi umgesetzt und ausgeführt.

    Ich habe keine Fehlermeldung bekommen, nur leider wird jedes mal für unterschiedliche Tage unterschiedliche Zeiten berechnet. Das ist naturlich nicht richtig und ich weiß leider nicht woran das liegt. :(

    Ich habe ein RasPi Model B Rev2, worauf Raspbian 9 läuft.

    Ich habe das Skript auch nochmal mit Visual Studio ausgeführt und dort hat es immer die richtigen Werte ausgegeben.

    Anbei noch Skript und ein Screenshot von ein paar Ausgaben.

    Auf dem Screenshot sieht man auch dass die ersten Ausgaben immer die gleichen Zeiten haben, was mich auch zum Stutzen gebracht hat....

    Vielen Dank für Hilfe

    Gruß

    Hallo!

    ich habe den Raspberry Pi mit einem Arduino mit Hilfe der seriellen Schnittstelle verbunden. Das ganze klappt auch ganz gut.

    Ich möchte jetzt gerne sichergehen, dass die Daten wirklich beim Arduino angekommen sind und dort auch verarbeitet worden sind. In wie Fern gibt es mit der pySerial-Bibliothek möglich das sicherzustellen? Oder muss ich mir ein eigenes kleines Frage/Antwort Protokoll schreiben?:denker::denker::conf:

    Grüße

    Falls der Arduino mal die Änderung der Magnetkontake überträgt ist es doch sicherlich schlau, auf ein Event zu warten, dass "unerwartet" etwas an der seriellen Schnittstelle liegt und dieses dann weiterzuverarbeiten...

    Mit einer while(true) Schleife würde doch die CPU-Auslastung schnell enorm steigen?!

    Okay, dazu habe ich schon mal etwas gefunden, danke auf jeden Fall!!!:bravo2::thumbup:

    Würdest du denn Arduino und RasPi benutzen oder komplett auf dem RasPi bleiben?:denker:

    Oder siehst du irgendwelche Vorteile für eine Variante?

    Ich möchte quasi einmal eine Schleife haben, die andauernd darauf wartet, dass irgendein Taster gedrückt wird und erstmal unabhängig von der Website läuft. Wenn ich dann meine, die Website aufzurufen, soll der aktuelle Status der angezeigt werden, und durch Klicken auf die Buttons sollen dann die Rolladen runter oder- rauffahren.