Ich mach sowas am Aquarium. Der SR04 misst den Abstand zur Wasseroberfläche und schaltet per if-else ein Relais für die Nachfüllpumpe. Nimm nich die HR sondern die JSN Sensoren, die gammeln nich weg.
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!
Mach mit und werde Teil unserer Community!
-
-
Das ist mal ne Ansage! Vielen Dank dafür, ich liebe konstruktive Kritik. Das hilft mir sehr. Sobald ich wieder Zeit hab mich drum zu kümmern meld ich mich zurück.
-
Evtl. hat dein Solar Laderegler eine Schnittstelle mit dem du die Echtzeit Leitung auslesen kannst. Mich stoert die Stromzange in diesem Konstrukt.
Ein LS2024B z. Bsp ließe sich irgendwie auslesen was Leistung angeht und dann entsprechend steuern.
Schau mal hier: Das ist aber alles nicht so leicht vedauliche Materie.... Werte des MPPT Auslesen (Solaranalge)
-
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.
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:
Code
Display Moredef update_image(): global tkimg1 tkimg1 = ImageTk.PhotoImage(Image.open('/media/pi/ESD-USB/4Data/AQtempstatus.gif')) label.config( image = tkimg1) label.after(5000, update_image) print ("1Updated") def update_image2(): global tkimg2 tkimg2 = ImageTk.PhotoImage(Image.open('/media/pi/ESD-USB/4Data/TQtempstatus.gif')) label2.config( image = tkimg2) label2.after(5000, update_image2) print ("2Updated") def update_image3(): global tkimg3 tkimg3 = ImageTk.PhotoImage(Image.open('/media/pi/ESD-USB/4Data/fuellstand.gif')) label3.config( image = tkimg3) label3.after(5000, update_image3) print ("3Updated") root = tkinter.Tk() root.title("AQUADINO CONTROL 1.0") root.geometry("420x600") root.minsize(width=400, height=300) root.maxsize(width=440, height=600) label1 = tk.Label(root, text="Aktuelle Temperaturen und Wasserwerte") label1.pack(side="top") im = Image.open('/media/pi/ESD-USB/4Data/AQtempstatus.gif') tkimg1 = ImageTk.PhotoImage(im) label = tkinter.Label(root, image=tkimg1) print ("1Loaded") label.place(x=10, y=30) #label.pack() im2 = Image.open('/media/pi/ESD-USB/4Data/TQtempstatus.gif') tkimg2 = ImageTk.PhotoImage(im2) label2 = tkinter.Label(root, image=tkimg2) print ("2Loaded") label2.place(x=150, y=30) im3 = Image.open('/media/pi/ESD-USB/4Data/fuellstand.gif') tkimg3 = ImageTk.PhotoImage(im3) label3 = tkinter.Label(root, image=tkimg3) print ("3Loaded") label3.place(x=290, y=30) root.after(5000, update_image) root.after(5000, update_image2) root.after(5000, update_image3)
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.
-
Bash
Display More#!/bin/bash gpio mode 0 in #0 hier durch deinen GPIO pin ersetzen while true do result="$( gpio read 0 )" if [ "$result" = "0" ]; then sudo echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind fi if [ "$result" = "1" ]; then sudo echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/bind fi sleep 0.5 done
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.
Keine Gewähr, nicht getestet nur eine Idee von mir.
-
Eine Frage hätte ich aber noch: Warum willst Du das abschalten?
Das wäre auch meine Frage. Der Bewegungsmelder schaltet bei Erkennung nur einen GPIO auf high an dem er angeschlossen wird. Damit koennte man ein bind/unbind in der shell ausführen lassen.
-
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.....
-
Hallo 4Zap
Wenn Du den Schwimmerschalter vom GPIO nach Masse schalten lässt, solltest Du den inneren Pull-Up-Widerstand des GPIOs einschalten.
Falls der eingeschaltet ist, solltest Du bei geöffnetem Schwimmerschalte eine Spannung von etwa 3,3 Volt am GPIO gegen Masse messen können.
Den inneren Pull-Up-Widerstand kannst Du mit einem Multimeter messen, wenn Du die Messspitzen an die 3,3V an Pin 1 und an den jeweiligen GPIO hälst.
Der Widerstand hat einen Wert von ca. 50kΩ. Zudem muss auch sichergestellt sein, dass nicht geichzeitig der Pull-Down-Widerstand eingeschaltet ist.
In dem Fall würdest Du nur etwa 1,6 Volt am GPIO gegen Masse messen. Außerdem solltest Du natürlich sicherstellen, das der gewählte GPIO nicht durch das Betriebssystem schon belegt ist ! Leider kann man die Einstellung der Widerstände nicht per Software zurück lesen.
Gruß
Prittzl
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
-
Vielleicht liegt es auch am Netzteil des RPi, das "müde" geworden ist.
schon getauscht....gegen zwei anderen originale Pi Netzteile....
-
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
Bash
Display More#!/bin/bash gpio mode 0 in gpio mode 4 out while true do result="$( gpio read 0 )" if [ "$result" = "0" ]; then gpio write 4 1 #echo "taste aus" fi if [ "$result" = "1" ]; then gpio write 4 0 #echo "taste ein `date +_%Y_%m_%d_%H-%M`" fi sleep 0.5 done
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.
Den Pi hab ich heute morgen schon getauscht, daran lags wohl nicht. Gleiches Verhalten.
-
Das Teil wird bei Renault verbaut -> such mal nach Teilenummer
Renault 7701205787
gibt sicher Schaltpläne dazu.
-
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.
-
Ist dein neuer Fernseher ein TV mit Android Betriebssystem? Die sind zickig, ich würd meine gern wieder zurücktauschen. Hat bei mir gedauert bis ich die richtigen Audioeinstellungen gefunden hatte und bin immer noch nicht glücklich damit.