Offen/Geschlossen Reed Sensor. Feuert dauerhaft wenn offen

  • und pullup nicht verstanden, deine Umsetzung ist pulldown und kann immer noch Kurzschlüsse mit unbegrenztem Strom fabrizieren.

    Hm, das sollte natürlich nicht passieren. Dann muss ich mich nochmal zu pull-up aufschlauen. Danke


    Edit:

    Sehe ich das denn richtig dass die 3.3v lediglich noch einen Widerstand benötigen? Also zwischen VCC des Sensors und den 3.3v noch einen Widerstand rein, korrekt? Aber wohin mit dem? Auf der Schaltung sieht das so aus als müsse der dann nochmal mit GPIO verbunden sein.


    Edited once, last by BlaXun ().

  • BlaXun Zum Code sage ich mal besser nichts, aber ich würde Dir nochmals einen der beiden Links aus meinem Beitrag #2 empfehlen zu lesen und versuchen das zu verstehen. So schwer ist das im Grunde nicht: https://www.elektronik-kompend…/raspberry-pi/2006051.htm


    Ein anderer Link mit wichtigen Informationen, dei man kennen sollte, wenn man mit den GPIO spielt, ist dieser: https://www.elektronik-kompend…/raspberry-pi/2006031.htm

    Du darfst dich sehr gern zum Code äußern. Mir sind sicher viele Python-Dinge noch unbekannt… also immer her damit

  • Ich muss mich korrigieren....

    mag sein, was soll man dir antworten wenn deine Tätigkeit verborgen bleibt! :conf:

    ich sehe weder ein Schaltbild noch ein lesbares Programm :wallbash:


    geht nicht ist aber immer eine gute und wichtige Information! Da weiss doch jeder sofort bescheid!

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • mag sein, was soll man dir antworten wenn deine Tätigkeit verborgen bleibt! :conf:

    ich sehe weder ein Schaltbild noch ein lesbares Programm :wallbash:


    geht nicht ist aber immer eine gute und wichtige Information! Da weiss doch jeder sofort bescheid!

    Ich hab doch den kompletten Quelltext geposted… die Schaltung hatte ich in einem Diagramm gezeigt.


    Diagramm:


    Gesamter Quelltext:

  • Ich hab doch den kompletten Quelltext geposted… die Schaltung hatte ich in einem Diagramm gezeigt.

    in Beitrag #23?

    was interessiert mich der alte falsche Schmutz? :lol:


    ich dachte wir waren einig keinen pulldown zu benutzen :conf:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Der Quelltext ist immer noch aktuell. Habe das ganze eine Nacht lang laufen lassen und sehe heute morgen im log halt die Ausgaben. Ja, ich möchte nun auch einen pull-up Widerstand verwenden. Da habe ich mich halt vertan. Ich versuche nun gerade aus den Diagrammen schlau zu werden wie ich den pull-up Widerstand aufbauen muss damit ich das ganze dann in die Tat umsetzen kann. So wie das für mich aussieht müsste es reichen wenn ich zwischen 3.3v und VCC einen Widerstand setze. Der Rest kann dann laufen wie gehabt. Aber da bin ich mir unsicher. Wie gesagt, hätte damals in Physik besser aufpassen sollen, bin nun aber gewillt versäumtes nachzuholen.

  • dann tu das und zeige immer im letzten Post worum es geht!

    keiner mag raten und hochscrollen wovon überhaupt die Rede ist vor allen wenn der Thread länger wird bei ewigen Änderungen und Vorschlägen und Möglichkeiten!


    Ich hab doch mal gesagt/geschrieben......


    ist einfach nur !"§$%& :wallbash::danke_ATDE:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hallo,

    Du darfst dich sehr gern zum Code äußern.

    Also das Programm nachzuvollziehen ist mir ehrlich gesagt zu zeitaufwendig. Daher mal ein paar allgemeine Anmerkungen, die mir beim durchscrollen aufgefallen sind. Die Programmlogik habe ich dabei nicht berücksichtigt. Du solltest/könntest das Programm nochmal ordentlicher aufbauen. Vielleicht fällt es erfahrenen Programmierer einfacher da durchzublicken, mir nicht.


    Links dazu:

    https://www.python.org/dev/peps/pep-0008/

    https://docs.python.org/3/tutorial/



    Wie schon mal erwähnt, ‚as‘ wird verwendet um Module umzubennen. Du nennst GPIO in GPIO um.


    ‚flask.helpers‘, ‚LightWatcher‘ und ‚PlantController‘ wird importiert aber nicht verwendet.


    Auf Modul ebene gehört *kein* ausführbarer Code. Hier werden nur Konstanten, Funktionen und Klassen definiert. Alles andere gehört in eine Funktion. Üblicherweise besitzt ein Python-Programm eine Funktion mit dem Namen ‚main‘. Daraus wird der Programmablauf gesteuert, sprich Funktionen aufgerufen, Argumente übergeben und Rückgaben entgegen genommene.


    Ein führender Unterstrich machst du, weil du das auch anderen Programmiersprachen kennst? Wird hier nicht benötigt und hat auch keinen Einfluss auf den Namen.


    Thema Namen: Nur Konstanten werden GANZ_GROSS geschrieben, alle anderen Namen klein_mit_unterstrich. Die einzige Ausnahme sind Klassen-Namen, die schreibt man in CamelCase-Schreibweise.


    Wie auch schon mal erwähnt, man hält ein Programm nicht künstlich mit einem ‚pass‘ am Leben.


    Nach dem erstellen einer Klasse folgt die ‚__init__‘-Funktion, das man überhaupt erst mal weis was in der Klasse denn so los ist.


    ‚if not value is None‘ würde man ‚if value is not None‘ schreiben. Dabei stellt sich einem gleich die Frage, was das für ein Wert sein soll? Du solltest immer sprechende Namen verwenden. Zeichen pro Zeile sind laut dem Python Style-Guid vorgegeben. Da macht es meiner Meinung nach keinen Sinn eine lange ‚if‘-Abfrage ink. setzen von True und False in eine Zeile zu packen.


    Code
    if self.minTemperature > self.currentTemperature > self.maxTemperature:
        self.temperatureIsOkay = True
    else:
        self.temperatureIsOkay = False


    Zu deinem ‚del‘ kannst du dir den Thread mal durchlesen:


    https://www.python-forum.de/vi…=391937&hilit=del#p391937


    ‚if‘-Bedingungen benötigen keine Klammer.


    Eine Bedingung zu negieren würde man mit ‚not‘ machen, anstatt mit ‚!=‘.


    Für Wahrheitswerte werden keine 0en missbraucht, da nimt man ‚False‘.


    Strings werden nicht mit ‚+‘ zusammengepuzzelt. Wieso verwendest du nicht überall f-Strings?


    ‚os‘ benutzt man nicht mehr um fremde Programme zu steuern. Dafür gibt es ‚subprocess‘


    subprocess.run([„systemctl“, „start“, SmartGardenEmergencyWatcher.service“],check=True)


    Auch für den Umgang mit Pfaden verwendet man ‚os‘ nicht mehr, dafür gibt es‚pathlib‘. Sogar in der Doku zu ‚os‘ wird auf ‚pathlib‘ verwiesen. Ganz unten auf der Seite findest du auch die neuen Befehle in Bezug auf das alte ‚os‘.


    Was bezweckt das ‚pass‘ in ‚createDirectories‘?


    ‚handler‘ erwartet drei Argumente die gar nicht verwendet werden. Was macht das ‚exit‘ dadrin?


    Achja und nochmal, es gibt gpiozero, das ist einfach anzuwenden wie 'RPi.GPIO'.



    Grüße

    Dennis


    Edit: Um dir die Arbeit mit dem Styling etwas abzunehmen kannst du mal nach 'black' und 'isort' schauen.

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • tl;dr

    Die Konstruktion nennt man Busy-Loop.



    Im Normalfall will man solche Busy-Loops nicht.

  • Danke vielmals für das ganze Feedback zum code. Ich werde den Quelltext entsprechend überarbeiten.

    Ich habe nun nochmal eine neue Verkabelung vorgenommen, orientiert an https://www.elektronik-kompend…/raspberry-pi/2006051.htm


    Das soll nun einen Pullup darstellen. Ist das so korrekt?


    Edit:

    Scheinbar nicht... das Raspberry startet neu wenn ich den Sensor schließe


    Edit 2:

    Scheinbar doch korrekt. Hatte wohl nur ein Kabel falsch angeschlossen :X

    Edited once, last by BlaXun ().

  • Ja, ist richtig.


    Ein Warnhinweis: Wenn du den GPIO aus Versehen als Ausgang betreibst, diesen auf True setzt (3.3V) und der Reedschalter gerade geschlossen ist, gibt es einen Kurzschluss mit GND und der RPI stürzt ab, weil die Spannung zusammenbricht. Mir ist das mal passiert und der GPIO hat das überlebt. Kann aber auch schiefgehen.


    Um sich vor softwareseitigen Unfällen zu schützen, kann man am GPIO noch einen 1K Widerstand mit einbauen.

    Dann fließen maximal 3.3 mA (3.3 V / 1 KOhm) direkt nach GND ab, wenn der GPIO als Ausgang betrieben wird.

  • Cool! Danke für den Hinweis!

    Das Ganze sähe dann so aus?