Posts by 4zap

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!

    Was definitiv besser funktionieren würde, ist das Überschreiben durch Umbenennen.


    Erst das Bild in eine temporäre Datei schreiben und danach in das Umbenennen, was gelesen werden soll.



    Python
    from pathlib import Path
    
    
    msg_file = Path("hello.txt")
    msg_file.write_text("xxx")
    tmp_msg_file = Path("tmp_hello.txt")
    tmp_msg_file.write_text("Hello World\n")
    tmp_msg_file.rename(msg_file)
    print(msg_file.read_text())

    Die Idee ist gut, das versuch ich mal.

    Was mir noch eingefallen ist, das ich während die Grafik erstellt eine Variable solange auf 1 setze bis der Schreibvorgang abgeschlossen ist. Erst dann darf tkinter updaten wenn die Variable wieder auf 0 ist ...oder so ähnlich :|

    Ich kapiere immer noch nicht warum es unbedingt Bilder sein muessen...

    Weil die da sind und ihre Funktion haben. Die Grafiken zeigen mit ihren Hintergrundfarbe den Status an. Grün heißt "alles gut", orange heißt "nah am Grenzwert" und roter Hintergrund bedeutet alle Fische sind jetzt tot.

    Das koennte ich als Funktion sicher in Python alles so nachbauen (Original werde die Grafiken in einem Bash Skript erstellt) und mit einbauen, aber das ist mir noch zu hoch jetzt. Daher würd ich gern auf die vorhandenen Grafiken zurückgreifen, ich will das Rad jetzt nicht neu erfinden müssen.

    Wenn es nur ganz kompliziert geht dann werd ich doch die Zeit investieren und mir try..... mal anschauen.

    Ich hatte ähnliche Phänomene mit der Erfassung von pH und Leitwerten. Sobald in der Nähe eine elektromagnetisches Stoerfeld auftritt spielen die Messwerte verrückt und sind mehr zuverlässig. Die Messschaltung war so empfindlich.... strahlt dein Windrad elektromagnetisch wenn es sich dreht evtl.? Nur so eine Idee

    Moin


    nochmal danke für die Anregungen. Ich hab mich Sonntag mal mit tkinter auseinandergesetzt. Cooles Tool! Nach 3 Stunden hatte ich erste sichtbare und vor allem funktionierende Ergebnisse. Nur passt hier mein Namenszusatz mit VNNA recht gut. Ich bin kein Coder, Python ist nicht unbedingt mein Lieblingsframwork und ich hab dort keine Ahnung von Klassen usw. aber das sieht man in dem Code weiter unten das ich dort Diletant bin.


    Als erstes hab ich mir eine Oberfläche für meine Schrittmotorsteuerung gebastelt die am AQ einen Vliesfilter von der Rolle zieht.




    Danach hab ich versucht meinen AQ Monitor als GUI zu erstellen so das ich aktuelle Werte ablesen kann und dort stoße ich auf ein Problem.


    Die ersten drei Werte oben sind Grafiken die ich mit Imagemagick erstelle. Diese aktualisieren sich alle 5 Sekunden und werden neu geladen.

    Jetzt gibt es einen Punkt in diesem Konstrukt wo ich scheitere...... wird die Grafik aktualisiert, während imagemagick gerade eine neue Kachel erstellt, spuckt das Python skript einen Fehler aus das die Datei nicht gelesen werden kann. Die Update Routine für diese Grafik ist dann unterbrochen und aktualisiert nicht mehr. Hier mal der Ausschnitt:

    Die Ausgabe im Terminal ist:



    Daran sehe ich das die Grafik neu geladen wurde, alles soweit gut. Funktioniert. Wie bereits erwähnt kommt es jetzt zu diesem Aussetzer wenn der Grafik-refresh genau dann stattfindet, wenn eine neue Grafik generiert wird und die Datei "noch" nicht gelesen werden kann.



    Hier ist Bild2 betroffen, konnte nicht gelesen werden und der Update Task stoppt. Nur noch 1 und 3 laufen weiter. :(


    Das Konstrukt soll so bleiben, also es sollen Grafiken geladen und aktualisiert werden, ich moechte keine Werte aus der DB lesen und in tkinter darstellen...


    Wie umgeh ich jetzt den Aussetzer? Irgendeine Idee?


    Mein Code koennte sicher noch zusammengefasst werden, die Profis werden sicher die Augen verdrehen, aber denkt dran, ich hab von nichts ne ahnung.



    so ähnlich koennte das aussehen. Das schreibst du in eine Datei und lässt diese per Cronjob beim booten laufen. Ob der Bind Befehl aus der Bash so funktioniert musst du testen.


    Code
    @reboot sudo /home/pi/deinedatei.sh &



    Keine Gewähr, nicht getestet nur eine Idee von mir.

    4zap


    Was für eine Art Relais schließt Du denn da an den GPIO0 an, und wann und von wo nach wo misst Du 0,8 Volt?

    Das ist eins dieser übliche China Relaisboards, hier ein 2fach. Die sind mit 5V versorgt über GPIO out steuere ich die Schalterei. Die sind zuverlässiger als ich am Anfang dachte. Die machten noch nie Ärger.


    Die 0,8V mess ich von GPIO 0 aus Richtung GND wenn der GPIO auf 1 geschaltet hat, fällt dann auf 0V ab.


    Es läuft jetzt, die 3,3V über den 10K Widerstand am Schwimmerschalter sind die Loesung. Werd sowas gar nicht mehr ohne realisieren in Zukunft.

    Vielleicht durch ein Update oder so?

    Hatte ich auch schon überlegt aber ich hab keinerlei Updates gefahren. Never change a running system....

    Die Freude währte nur sehr kurz. :( Das ging nach 5 Minuten wieder in diesen undefinierbaren Zustand. Jegliche Peripherie war noch getrennt, nur der Schwimmerschalter am Pi angeschlossen und das Relaisboard.

    In meiner Platinenkiste hab ich noch eine fertige Tasterschaltung aus früheren Tagen gefunden, das war mal auf einem Boot verbaut. Hurra. Etwas verstaubt aber egal... damit kann ich dann noch zusätzlich die Pumpe schalten ohne Bash Befehl und ssh Verbindung einfach per Tastendruck. Hat auch was...


    Schnell noch zwei Pins für den Schwimmerschalter parallel zum Taster rangeloetet und angeschlossen. 3,3V mit drauf und jetzt läufts sauber.....erstmal.

    Also lass ich das so jetzt mal stehen.




    Nach und nach werd ich die Peripherie anklemmen und schauen ob sich was ändert. Es wundert mich nur das die Schaltung lange keine Probleme machte und es jetzt damit anfing. Die Methode über den 10K widerstand scheint mir doch fast verpflichtend zu sein damit das zuverlässig läuft. Komisch, aber egal.

    Also für alle die damit Ärger haben, nehmt direkt die Methode über den 10K Widerstand mit 3.3V Abgriff.


    Danke an Alle für den "seelischen" Beistand :)




    Update:


    ich hab mir mal Jumperkabel an die Messspitzen gebastelt und diverse Messungen veranstaltet. Mein Verdacht, entweder flatterfaften GPIO 0 Port oder Fehler in Masse GND Verbindungen.


    GPIO 0 - GND = 0V (!) (alle verfügbaren 0V Pins an der GPIO Leiste durchprobiert, nichts passiert)

    GPIO 0 - GND(anderes Netzteil) = 0 - 0,8V (Relais schaltet, fällt sofort wieder ab, also wie gehabt fehlerhaft, das ist zu wenig Spannung!)


    Masseverbindung aller verfügbarer GPIO Pins untereinander auf Verbindung gemessen = alle GND Pins sind sauber mit Masse verbunden

    Masseverbindungen zu Relaisboard, Temp und Ultraschallsensoren vermessen = alles ok, alles sauber


    Pin1 3,3V gegen alle verfügbaren Masse Pins gemessen = saubere 3,3V....


    Ein autarkes Spannungsmessgerät am 5V Eingang am Pi angeschlossen zur Überwachung = zeigt permanent zwischen 5.13V und 5.14V an, keine Änderung wenn sich irgendein Zustand am Pi ändert. Sieht stabil aus.


    Schwimmerschalter wieder angeschlossen an GPIO 0. und .... FUNKTIONIERT!




    Ich habe nichts geändert an der Schaltung, alles ist wie bisher. Jetzt funktioniert der Schwimmerschalter wieder.

    Meiner Logik nach habe ich alle Komponenten in Reihenfolge getauscht (Pi 2mal, Netzteil 2mal usw.)..... es erschließt sich mir jetzt nicht wieso es auftrat. Alles gemessen und bis auf die fehlende Spannung an GPIO 0 fällt mir da nichts weiter auf. Wieso ist jetzt nach den Messungen wieder alles wie es mal war?

    Ich würd ja sagen ich hab wahrscheinlich mal den GPIO 0 von dem Pi gegrillt, aber auch nach einem Tausch trat der Fehler ja nach wie vor auf.


    Jetzt werd ich den ganzen Krempel nochmal durchmessen und schauen was anders ist. Bis gleich.....

    Der Pullup ist in der boot/config verewigt. Die Spannungsmessungen kamen mir auch schon in den Sinn, jedoch ist das Ding so arg verkabelt und meine Augen so schlecht das ich mir ein paar Jumperkabel erst umloeten muss um diese dann als Messspitze zu verwenden. Mit dem Multimetermesspitzen trau ich mich nicht an die GPIOs, da bau ich doch Kurzschlüsse zwischen den Pins beim Messen. Danke für deine Messwerte, ich vergleich das später mal. Das koennte helfen.

    Es gibt hier fünf unmittelbar maßgebliche Komponenten: Einen Schalter, einen Eingang, ein Programm, einen Ausgang und ein Relaismodul. Es kann doch nicht so schwer sein, festzustellen, welche dieser 5 Komponenten den Fehler verursacht...

    Immerhin, die Betrachtung des Eingangssignals mit dem Terminalprogramm ist ja schon mal grundsätzlich ein richtiger Schritt. Allerdings ist fraglich, ob es sinnvoll ist, die Tests hier mit dem möglicherweise defekten Schwimmerschalter zu machen. Du hast ihn durchgemessen? Was hast du gemessen? Durchgang? Spannung? Widerstand?

    Genau, logische Fehlersuche ist mir durchaus bekannt.

    1. Schalter - getestet und durchgemessen - schaltet zuverlässig, prellt nicht. Widerstandsmessung, schaltet genau auf 0 Ohm, ersetze ich den Schalter gegen ein einfaches Jumperkabel und schließe GPIO 0 gegen GND (also praktisch dauerhaft geschlossener SChalter) geht PIN 0 auf 1 und fällt sofort wieder auf 0 wie beim Schwimmerschalter. Gleiches Ergebnis..

    2. Eingang - Hier muss der Fehler liegen - der GPIO schaltet auf 1 wenn der Schwimmerschalter schaltet, fällt aber sofort wieder auf 0

    3. Programm - Bash skript (siehe oben) funktionierte jahrelang ohne Probleme

    4. Relaismodul - schaltet zuverlässig, GPIO 0 auf high - Relais schaltet zuverlässig ein, GPIO 0 auf low, Relais schaltet sich aus.

    5. Netzteile: In dieser Schaltung sind drei Netzteile verbaut. Zwei 5V, ein 12V für die Pumpen und Schrittmotoren.


    Aber wenn du es besser weißt, dann erklär mir doch, was genau dieser Satz heißen soll:


    Der Pin, der auf GND gehen soll, ist doch GPIO0 und an ein 5-V-netzteil anschließen heißt doch wohl, an dei 5 V anschließen... Was will er denn sonst von einem 5-V-Netzteil an einen GPIO anschließen? 3,3 V? Oder 230 V? oder GND? Oder vielleicht Brauchwasser?

    Ähhh.Masse ist Masse.... Dem GPIO0 ist es egal welche Masse, merkwürdigerweise ist es tatsächlich so das wenn ich den Schalter an GPIO 0 an den GND vom Pi anschließe geht GPIO 0 beim schalten nicht auf 1. Es passiert nichts. Schließe ich GPIO 0 gegen GND des zweiten Netzteils an, reagiert er.


    Leider hab ich es gestern nicht merh geschafft einen 10K Widerstand zu testen, mach ich gegen mittag heute und werde dann berichten.



    Bislang hab ich Netzteile getauscht, Relaiskarte getauscht, Pi getauscht. Evtl. geh ich mal auf einen anderen GPIO pin noch...

    Einen Pi 2 B hab ich noch hier rumliegen. Wenn das mit dem 10K Widerstand nichts bringt werd ich nochmal den Pi tauschen. ICh müsste noch irgendwo einen rumliegen haben.... muss mal suchen, vielleicht sind beide Pi's intern gestoert... die sind schon älter, aber das beide die gleiche Macke haben halte ich für unwahrscheinlich.


    Alles anders an dem Pi läuft sauber. Der hat ein paar Aufgaben und die arbeitet er sauber ab. D

    Servus


    ich hatte auch den Schwimmerschalter in Verdacht aber der ist 100% ok, prellt nicht. Viel Welle ist da nicht daran liegt es nicht.

    Den hab ich ausgebaut, fest mit einem Widerstandsmessgerät verdrahtet und geschaut ob da was zickt. Nichts, das kann die Ursache nicht sein.

    ICh loete gleich mal die 10K dazwischen und geb die 3.3V mit rauf, aber wieso sollte das jetzt notwendig sein.


    Sleep 0.5

    hält das Skript für eine halbe Sekunde an, sollte passen. hatte es bis letzte woche ja auch.

    Moin


    ich hab eine einfache Wasserstandssteuerung in Betrieb. Läuft seit Jahren problemlos. Ein Schwimmerschalter schaltet mir den GPIO 0 zu GND durch wenn der Pegel zu niedrig ist. Damit schaltet sich ein Relais an, lässt eine Pumpe laufen und nach ein paar Sekunden macht der Schwimmerschalter wieder zu. Das war nie ein Thema, ging immer. In der /boot/config steht der Pin mit Pullup drin.

    Per bash frag ich den Zustand ab

    Geht GPIO 0 auf 1 wird über GPIO das Relaisboard angesteuert. Eigentlich nicht dramatisch.


    Jetzt fing es die letzten Tage an das ich das Relaisboard klicken hoerte. Dachte der Schwimmerschalter hat evtl. einen Wackelkontakt o. ä.

    Durchgemessen, der ist absolut in Ordnung und schaltet zuverlässig. Alles wieder angeschlossen und ein kleines Terminalprogramm zum Auslesen des Pins alle paar ms gestartet.

    Schaltet der Schwimmerschalter geht der GPIO auf 1 und springt sofort wieder auf 0, also low. Dann wieder auf 1 und wieder auf 0. Klingt am Relais wie der Blinker im Auto. :(

    Manchmal auch verzoegert oder nur ein paar mal hintereinander...also nicht wirklich reproduzierbar. Jedesmal anders...



    Nachdem ich dann den Mittag damit verbracht hab alle moeglichen Tutorials und Forumbeiträge zu lesen über das Thema bin ich kein Stück schlauer.


    Der Pi hat eine eigene Stromversorgung, schließe ich den Schwimmerschalter an GPIO 0 und an irgendeinen GND Pin der GPIO Leiste an schaltet PIN 0 nie auf high! Er will einfach nicht. Echt schräg!

    Schließe ich den PIN der auf GND gehen sollte an das zweite 5V Netzteil an was ich dort auch noch verbaut habe dann schaltet der PIN 0 auf high. Das kann ich mir auch nicht erklären wieso es über den Weg geht, aber die internen Pins nicht.


    Ich werd jetzt mal umbauen und den Schalter auf hardware Pullup, also 3.3v über10K Widerstand am GPIO0 zusätzlich und den PU softwareseitig aus der boot config rausnehmen. Habt ihr noch eine Idee?

    Mir fällt nichts mehr ein sonst. :conf:


    Den Pi hab ich heute morgen schon getauscht, daran lags wohl nicht. Gleiches Verhalten.

    Wenn es wichtig ist eine gute Anbindung zu haben, ist WLAN der falsche Weg. LAN-Kabel legen. DLAN ist an der Stelle auch zu unsicher.

    Ich bin auch ein Freund von Ethernet, es ist einfach zu 100% zuverlässig. Metallgehäuse machen immer Ärger, sag mir nicht es gibt Metallgehäuse die keinen Wifi Ärger machen. Gibts nicht, also vergiss das.

    Ich hab bei Wlan Problemen sehr gute Erfahrungen mit dem USB Wlan Adapter hier gemacht. https://www.amazon.de/gp/product/B017MGU842/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1 (Affiliate-Link)


    Es war der einzige USB Adapter der bei mir ohne Eingriff sofort erkannt und benutzt werden kann. Der hat bei mir auch ohne Eingriff die vorhanden WLAN Config übernommen und war sofort online. An einem Pi hab ich den als Hotspot eingesetzt. Ich hatte mit diversen USB Wlan Adapter nur Ärger bis die zuverlässig liefen, daher mein Tipp oben. Der hat noch nie gezickt und ich hab den für diverse Zwecke an diversen Pi Modellen betrieben.