Posts by noisefloor

    Hallo,


    Gnom: nee, Python 3 - so steht's im 1. Post.


    berryfox: welche Bibliothek verwendest du, um die GPIO-Pins anzusprechen? Vermutlich RPi.GPIO? Dann wechsele auf gpiozero, dass ist a) besser, schöner, moderner und b) und kennt auch Methoden / Events, die z.B. für die Dauer eines Tastendrucks gelten.


    Zum deinem Problem: entweder programmierst du Event-getrieben, nebenläufig oder parallel (oder eine Mischung daraus) - kommt drauf an, was am Ende alles gemacht werden soll. Alles in einer while-Schleife packen, die linear durchläuft wird nicht funktionieren.

    Mehr kann man (ich) im Moment nicht sagen, weil deine Problembeschreibung ein wenig "diffus" ist...


    Gruß, noisefloor

    Hallo,


    Quote

    Programmiere ich das im python-script selbst, oder in tkinter oder über die html/php-Seite?

    Erst mal im Skript. Das Skript muss ja auch irgendwas (Datei, Socket, Named Pipe, ...) lauschen, um mitzubekommen, dass ein "Befehl" extern gesendet wurde.


    Quote

    Ich möchte auch z. B. Eine Art Statusanzeige des python-scripts erstellen, wo z. B. Immer ein Roter Punkt blinkt, wenn der gpio vom s0 einen Impuls bekommt usw.

    Das spricht IMHO für ein Pub-Sub System. Dein Python-Skript ist der Publisher, der eine Nachricht sendet, wenn der Impuls erhalten wurde. Mit dem Publisher kannst du dann beliebig viele (oder keinen) Subscriber verbinden, die dann bei einer Nachricht agieren.


    Gruß, noisefloor

    Hallo,


    bei mir ist es umgekehrt - ich keine EVE Online nur, weil ich mal was über Stackless Python gelesen hatte und es da erwähnt wurde ;-)

    Außerhalb von Eve Online scheint sich Stackless auch nicht wirklich großer Beliebtheit zu erfreuen...


    Habe mal ein wenig gelesen - IMHO gibt es relativ wenig Gründe, dass zu nutzen - außer dem oben genannten. gevent bietet ähnliches, läuft aber mit CPython. Stackless muss man sich wohl selber kompilieren.

    Wenn du das "Gefühl" hast, dass Tornado dich ausbremst -> Sanic sollte schneller sein und ist kompatibel mit asyncio.


    Wenn du einen der Ansätze (inkl. Stackless) verfolgen solltest, solltest du IMHO früh darauf umsteigen. Von "normalem" Code zu Greenlets, asyncio u.ä. zu wechseln ist IMHO ein ziemlich Aufwand, weil du viel neu / anders schreiben musst.


    Gruß, noisefloor

    Hallo,


    EVE Online profitiert IMHO von Stackless, weil es die X hundert / tausend Verbindung durch die "leichtgewichtigen" Threads handeln kann, was mit "normalen" Threads nicht bzw nur mit schlechter Performance möglich ist. In Python Wiki (https://wiki.python.org/moin/StacklessPython) und der Startseite des Stackless Wiki (https://bitbucket.org/stackless-dev/stackless/wiki/Home) ist es IMHO gut erklärt.


    Bei (d)eine Robi-Projekt sehe ich da jetzt keinen wirklichen Vorteil, weil man da nicht so viele Threads braucht. Wenn du denkst, dass irgendwelche Rechnungen zu langsam laufen, würde ich PyPy nutzen. Wenn du glaubst, dass bestimmte Programmteile zu lange auf I/O warten, dann wäre asycnio einen Blick wert


    Hast du ein bestimmtes "Problem", was du lösen möchtest?


    Gruß, noisefloor

    Hallo,


    was meinst du mit "Erfahrung" bzw. was hast du ggf. mit Stackless vor?b Ist es ist halt (von mehreren) Python-Implementierungen, die kompatibel zur Referenzimplementierung CPython ist.


    Genutzt habe ich noch nicht, weil ich keine Anwendung habe, die die massive Parallelität / Nebenläufigkeit von Stackless Python sinnvoll nutzen könnte.

    Und wenn würde ich vermutlich erst mal CPython + gevent nutzen, wenn ich so was bräuchte. Oder, je nach Anwendungsfall, ggf. asyncio :-)


    Gruß, noisefloor

    Hallo,


    für die Arbeit habe ich Lenovo ThinkPads aus der T-Serie (erst T410, jetzt T450), bin ich total zufrieden mit.


    Gründe:

    - TrackPoint (=keine Maus und Touchpad nötig)

    - leicht bei genug Leistung

    - robust

    - Linux läuft einwandfrei drauf ;-)

    - relativ langer Support mit Treibern und Updates seitens Lenovo

    - guter Wiederverkaufswert nach X Jahren


    Ich nutzte normalerweise 14.x Bildschirme, 12-13 Zoll wäre mir zu klein... Aber muss ja selber jeder Wissen :-) Müsstest mal schauen, es sollte auch T-Series Thinkpads mit 12" oder 13" Display geben.


    Gruß, noisefloor

    Hallo,


    Ich habe allerdings den Eindruck eines seltsamen Phänomens in den letzten Wochen, ich nenne es mal den "Newcommer-Boom" (Wobei ich absolut nix gegen Newcommer habe, waren wir alle ohne Ausnahme mal ...)

    Das kommt IMHO phasenweise. Kann schon sein, dass aktuell so eine Phase ist.


    IMO ist eines DER Grundprobleme des Pi, dass das Ding so preiswert ist, dass jeder meint, er könne alles damit machen. Inkl.Servern, die im Internet erreichbar sind, obwohl der Besitzer keine Ahnung von Servertechnik und -absicherung hat. Und "lustig" wird's dann, wenn der Besitzer auch noch denkt, dass ganze wäre "sicherer" als einer der großen Cloudanbieter.

    Ich würde fast drauf wetten, dass die NSA in jeder Frühstückspause einen internen Wettkampf hat, wer in 15min die meisten schlecht absicherten Pis hackt & kapert :lol:


    Aber das ist nun mal der Stand der Dinge, daran kann man wenig ändern. Wer der Meinung ist, er müsste eigene Daten in Form einer eigener "Cloud" im Internet exponieren - bitte schön, selber Schuld.


    Linus: was übrigens auch manchmal gegen ärgern hilft, Threads zu de-abonieren. Aus den Augen, aus dem Sinn. Habe ich gelegentlich auch schon hier im Forum gemacht. Hilft wirklich.


    Gruß, noisefloor

    Hallo,


    der Port an sich macht nichts, das ist halt einer von 65535 Ports, über die man kommunizieren kann. Post 19022 ist keine Programm fix zugeordnet - was aber nicht heißt, dass auf deinem Raspi nicht ein Programm diesen Port gezielt nutzt. Um das rauszufinden müsstest du aber einen Netzwerkverkehr-Scanner mit laufen lassen bzw. den Port abfragen. Letzteres geht z.B. mit netstat.


    Ansonsten kannst du den Port gezielt schließen. Entweder über eine IP-Tables Regel oder - einfacher- über eine Firewall wie ufw.


    Welches Betriebssystem hast du installiert?


    Gruß, noisefloor

    Hallo,


    slawa: da du das Skript ja so wie so überarbeiten musst, eliminiere direkt die `global` in deinem Code. Das ist in 99,9% falsch (bei dir auch) und macht den Zustand des Programms schwer bis nicht nachvollziehbar. Am besten vergisst du, dass es `gobal` gibt.

    Wenn eine Funktion Werte braucht, dann übergib' diese explizit an die Funktion und hoffe nicht darauf, dass die Funktion die Werte auf auto-magische Weise aus dem ihr bekannten Namensraum zieht.


    Und wenn du gerade beim Überarbeiten bis: Funktions- und Variablennamem schreibt man in Python per Konvention klein_mit_unterstrich.


    Gruß, noisefloor

    Hallo,


    es ist aber komisch, dass du gar keinen Eintrag hast - im Journal wird alles geloggt, erfolgreich oder nicht.


    Hast du mal geprüft, ob irgendwas im Journal ist - oder ist das komplett leer?


    Gruß, noisefloor


    Nachtrag: was bekommst du, wenn du `journalctl`mit `sudo` aufruftst?

    Hallo,


    die Einrückungen sind auch wie bei github gezeigt kaputt - so kann ddas Skript niemals laufen. Und man kann als Außenstehender kaum beurteilen, wie was laufen soll.

    Könnte es sein, dass du Leerzeichen und Tabs mischst?


    Die Verwendung von `global` ist in 99,9% der Fälle nicht nötig und falsch. In deinem Skript ist es doppelt falsch, weil du so wie so nur eine Funktion hast und darum außerhalb den `count` gar nicht brauchts.


    Nackte try-except wie

    Code
    try:        
        smtp.sendmail(frm, to, mime.as_string())
    except:       
        print'Uebermittlungsfehler'

    sind ganz schlecht, weil damit _alle_ Fehler abgefangen werden, auch Programmierfehler. Das kann die Fehlersuche extrem erschweren.


    Strings formatiert man mit der `format`Methode von Strings, nicht durch zusammenstückeln mit Kommas getrennt.


    Gruß, noisefloor

    Hallo,


    was sagt den der Log? Den kannst du mit journald abfragen. Im Log stehr in der Regel eine ausführlichere Fehlermeldung.


    Falls das Logging von systemd nicht aktiviert ist müsstest du es händisch aktivieren und dann den Raspi neu starten.


    Gruß, noisefloor

    Hallo,


    n.nickisch: definiere "perfekt". Was für die perfekt ist, kann für andere der größte Mist sein (siehe oben ;-) ).


    Generell ist das ein Thema nach dem Motto: frag' 10 Leute und die hast 11 Meinungen.


    Außer sinnlosen Meta-Diskussionen bringt das IMHO nichts.


    Gruß, noisefloor

    Hallo,


    also Threading kann schon Sinn machen, wenn etwas "I/O bound" ist, d.h. das I/O der begrenzenden Faktor ist und das Programm darauf wartet. Im gegebenen Fall macht das aber in der Tat wenig Sinn, siehe letzter Post von linusg.


    Für so Netzwerk-Sachen würde sich auch asyncio eignen, das Python ab 3.5 "richtig" an Bord hat. Das ist aber tendenziell schwieriger zu verstehen als Threading. Und würde hier auch nur Sinn machen, wenn das Skript neben dem Versand von Nachrichten noch was anderes machen muss / soll.


    Gruß, noisefloor