Beiträge von Wurtzelbert

    Was für ein OS nutzt du?
    Was für einen Pi hast du?

    Was nutzt du für den Autostart? Hast du es über ne GUI eingerichtet oder über editieren von Systemfiles?
    Nutzt du gnome? systemd? monit? ---> der autostart-Datei nach zu urteilen mate (?!)

    Nutzt du vielleicht zwei Services für einen Autostart, welche unabhängig den Prozess starten? (Dass der erste und der zweite start um 3 Sekunden versetzt sind und ca. 200 Prozesse in der Zwischenzeit gestartet wurde könnte dafür sprechen)

    Was steht in den entsprechenden log-files?

    Was steht im Systemlog?


    Ich befürchte ohne genaue Informationen aknn dir hier niemand weiter helfen...

    Du kannst auch nicht zum Tierarzt gehen und sagen "meinem Haustier geht es nicht gut, welche Medizin brauche ich?"

    Versuch doch mal, diesen Beitrag zu löschen und einen Beitrag zu verfassen, in dem man versteht, was genau du eigentlich versuchst zu machen...

    Und wenn hier irgendwas relevant ist, dann vielleicht der Inhalt deiner Autostart Datei...

    btw:
    1) Das Bild von deiner Konsole ist nutzlos, der Inhalt deines home-Verzeichnises hat nichts mit deinem Problem zu tun!

    2)

    ":config/autostart/"

    Gib wenn überhaupt absolute Pfade an! Keine Ahnung von welcher Datei du sprichst...

    3) statt dem Task-Manager kannst du auch in der Konsole ps -aef | grep SPS_Test eingeben, vielleicht bekommst du da mehr Info raus.

    4) Warum hängst du eine C++ Datei an, die quasi nichts macht?

    5) Man schreibt while TRUE und nicht while 1!! grade wenn du nicht verstehst, warum while 1 while 17 oder while "Hello World" funktioniert, dann solltest du es auch nicht benutzen!!

    Servus,
    such doch mal nach long range RFID!

    Das funktioniert ähnlich wie NFC nur mit deutlich höherer Reichweite aufkosten von Sicherheit (die Daten können natürlcih einfacher von dritten abgefangen werden, wenn direkter Kontakt nicht notwendig ist)
    Dafür gibt es auch Module für Raspberry oder Arduino.

    Ich denke mal, dass das ne gute Lösung für dein Problem ist.

    Du müsstest an dem Wagen/den Wägen dann RFID Chips anbringen und der Empfänger registriert dann, wenn Chip x-y vorbei fährt.

    Hoffe der Ansatz hilft dir weiter!

    Servus,
    also ich habe mit dem Pi auch schon mehrere analog-Werte parallel erfasst und umgewandelt, ich hatte absolut keine Probleme mit einem delay!

    ich habe dafür diesen ADC genutzt. Er hat 4 Kanäle und ne hohe Auflösung (16 Bit).
    Das Teil gibt es auch auf anderen Seiten günstiger.

    Für die Teile von Adafruit gibts auch extra Python libs.

    import Adafruit_ADS1x15

    Vielleicht hilft dir das weiter!

    Liebe Grüße

    Servus,
    Das ist eigentlich ziemlich einfach! wenn du wirklich nur den Strom ein oder ausschalten willst, kannst du einfach ein Relais nutzen!
    Das kannst du mit dem RasPi ansteuern; sowas zum Beispiel .

    DenTemperaturFühler könntest du dann über die SPI-Schnittstelle, oder die I2C-Schnittstelle des Pi anschließen, falls es ein Temperaturfühler speziell für den Pi ist, dürfte das vorkonfiguriert sein.
    Das Relais kannst du über jeden beliebigen Pin schalten. Es ist im endeffekt sowas wie ein Schalter, welcher ein Signal (strom/kein Strom) vom Pi bekommt und dementsprechend die Leitung schaltet oder nicht.

    Das von mir verlinkte müsste bei Strom /kein Strom jeweils den mittleren Anschluss mit dem linken oder rechten verbinden.
    Das heißt wenn du die Stromzufuhr für die heizung über das Relais laufen lässt, dann schließt du das Relais wie einen Schalter an und klemmst die eine Seite des Kabels in die mitte und die andere entweder links oder rechts rein.
    Dann musst du nur noch schauen, ob dein Stromkreis bei anliegender Spannung am Relais offen oder geschlossen ist.

    Wenn du die heizung auf verschiedenen Stufen betreiben willst, wird es natürlich Schwieriger.

    Ich hoffe das hilft dir,

    Gruß Wurtzelbert

    Hallo,

    Das ist Quatsch, es kommt wenn drauf an, _was_ du im importiert:

    Python
    >>> len(globals())
    7
    >>> from tkinter import *
    >>> len(globals())
    143
    >>>

    Du holst dir alleine nur mit tkinter 136 Namen in den globalen Namensraum.


    Gruß, noisefloor

    Das kann ja sein, das können von mir aus auch 10.000 Namen sein, aber ich bin noch nie auf ein Modul gestoßen, über das ich mittels

    from Modul import * einen Namen, der ereits in globals vorhanden ist nochmal einbindet.

    Wo liegt denn deiner Meinung nach das Problem darin, seinen namensraum zu erweitern?

    Ganz im Gegenteil! :shy: Einrückungen pro Ebene sollten immer 4 Leerzeichen sein.

    Geht auch ja! Aber ich arbeite lieber mit Tabulatoren.

    Da ich allerdings alle Programme im nano-Editor schreibe, habe ich kein Problem damit, dass tabs und spaces hin und her konvertiert werden... wenn man Dateien hin und her kopiert und mal mit nano, mal mit dem npp und mal über die python shell bearbeitet, dann sollte man auf jeden Fall mit spaces arbeiten!

    (aber nicht mit nur einem, da braucht man ja ne Lupe um struktur zu erkennen :stumm:)


    über systemd solltest du das Skript schon mal nicht starten, weil dann beim Start des Skripts ggf. der XServer noch nicht läuft und damit Tkinter nicht läuft.

    Das stimmt! Wenn du es dennoch mit systemd machen willst, gäbe es die Option nicht die Python Datei auszuführen, sondern eine bash Datei auszuführen und in dieser den Befehl für die Python Datei hinterlegen, dann kannst du nämlich davon noch ne 60 Sekunden sleep Funktion oder so packen, damit der Pi Zeit hat den XServer zu startet.

    Oder du fragst ab ob der Dienst läuft und startest das Programm nur falls ja. (Wäre eleganter)


    Keine *-Importe, weil du dir damit unkontrolliert den globalen Namensraum zu müllst

    *-importe kann man schon benutzen, so ist das nicht. Aber mit Vorsicht zu genießen!! Solange du nur einen *-import hast, passiert dir eigentlich nichts, sobald du mehrere hast kann das natürlich zu Fehlen führen! wie noisefloor schon gesagt hat: du müllst damit den globalen namensraum zu und ggf. belegst du den ein oder anderen Namen dann doppelt...

    Also bei mir fangen alle Dateien mit folgenden Zeilen an:

    Python
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # DATEINAME.py

    Verihindert Fehler

    und bring deinen Code doch mal bitte ein wenig in Form wenn du ihn postest! Einrücken am besten mit tabulatoren nicht mit Leerzichen, das gibt mehr Übersicht.

    und deine Datei globaleVariable.py wäre auch noch hilfreich.

    Du programmierst generell sehr unstrukturiert... Aber das ist ein anderes Thema :conf::fies:

    Servus,

    Schau doch mal Hier oder Hier oder Hier. Es gibt massig ausführliche Bescheibungen, die das behandeln.

    Such einfach mal nach Autostart, rc.local, systemd, monit, crontab,... Es gibt diverse Möglichkeiten.

    Ich persönlich bin ein Fan von Monit, die allgemeine Vorliebe geht allerdings in Richtung systemd, das muss man nicht extra installieren.

    Vorteil dieser beiden Methoden: Es wird auch sichergestellt, dass das Programm neu gestartet wird, wenn es abstürzt.

    Ein reiner Autostart startet es einmal beim Hochfahren und dann ist es egal.

    Wurzelbert: mal so rein Interesse halber - warum nutzt du gerade diesen exteren MQTT-Server? Der ist ja im Prinzip eine große Blackbox.

    Ich nutze diesen Server, weil ich mal mit nem bekannten drüber gesprochen habe, dass ich meine Sensordaten gerne Streamen würde, um Sie überall zu empfangen, und er meinte bei ihm in der Firma steht noch ein alter Server rum, den eigentlich keiner mehr nutzt, außer um Daten in Datenbanken abzulegen, da könne ich den MQTT Broker gerne nutzen, das ist dann auch schon die ganze Geschichte :blush:

    Was ich für private / Hobbyprojekte ja immer brauchbar finde (und aktiv nutze), ist AWS. Wenn du nicht einen Berg Traffic generiest, bleibt man meistens unter der Grenze, wo es was kostet. AWS hat auch einen MQ-Server namens Amazon MQ, wo du Zugriff auf Teile der Konfig, den Logs etc hat.

    Perfekt, das werde ich mal ausprobieren!!

    :danke_ATDE::danke_ATDE::danke_ATDE:

    BTW: für das Logging kann man das `logging` Modul nehmen, was braucht man über File I/O nicht selber nachbauen. Zumal das logging-Modul deutlich flexibler ist.

    kannte ich noch nicht, werde ich mir anschauen! Danke

    Und wenn du trotzdem bei deiner Lösung bleibst: die Datei solltest du mit dem with-Statement öffnen - dann hast du die Garantie, dass die Datei auch geschlossen wird. Selbst dann, wenn dein Prog bei `obj.write(..)`crashen sollte.

    Ja, da hast du recht! einen crash bei write() hatte ich nicht bedacht.

    Bzgl. des Testens: kannst du dir nicht selber testweise eine MQTT Server aufsetzen? Immer 24 h warten und bestimmte Serverausfälle nicht selber "provozieren" können ist ja auch nicht gerade hilfreich...

    Ich habe einen lokalen Server, auf dem ich auch Tests mache, da ich jedoch nicht die exakten Einstellungen des eigentlichen Servers kenne, kann ich ihn natürlich nicht zu 100% nachbauen. Auf meinem lokalen Server funktioniert fast alles, was ich ausprobiert habe. Mein Mosquitto verhält sich so, wie man es erwartet.
    Leider kann ich meinen Server nicht anstelle des "fremden" Servers nutzen, da mein Server nur lokal erreichbar ist. Ich habe mich noch nicht genug mit IT-Sicherheit (allgemein) befasst, als dass ich es mir zutraue alles so einzurichten, dass ich mir keine Sorgen machen muss wenn ich den Server übers Internet zugänglich mache.

    Hallo,

    meine Vermutung ist nach wie vor (auch) falsches ExceptionHandling und / oder unnötig komplizierte Programmierung. Aber TE ist bis jetzt meinem obigen Wunsch, den kompletten Code zu posten (und nicht nur den "ich denke das hier der Fehler ist" Teil zu posten), nicht nachgekommen...

    Gruß, noisefloor

    Das einzige was ich raus genommen habe waren Teile wie

    Wenn daher Fehler kommen sollten, würde mich das stark wundern.

    Meine Ursprünglichen Versuche habe ich nicht mehr alle, da ich das Programm wenn etwas nicht lief umgeschrieben habe und nicht jede Version gespeichert habe, kann ich leider nicht mit allem dienen.


    Außerdem brauche ich sowieso noch bestimmt zwei Wochen, um alle Tips, die hier gegeben wurden auszuuprobieren, (da der Server/Host nur einmal täglich neu startet und ich nur dann schauen kann, ob mein aktueller Ansatz funktioniert.

    Darum habe ich den Beitrag (eigentlich) vor zwei Tagen schon als erledigt markiert.

    Ist nicht böse gemeint, ich bin euch allen wirklich sehr dankbar für die Hilfe!!

    Aber ich komm nicht hinterher das alles umzusetzen (und wenn das alles nicht läuft eröffne ich lieber in zwei wochen ein Thema mit dem Title "Mein MQTT funktioniert nicht" oder so, damit die Diskussion auch zum Thema passt...)

    Ich bin jetzt doch mal neugierig geworden und muss feststellen, daß ich das Problem nicht nachvollziehen kann. Mit diesem simplen Code:

    verbindet sich der client sauber wieder mit mosquitto, wenn ich das stoppe und wieder starte. Während mosquitto down ist, meckert er auch brav die Probleme an. Kann es sein, daß Du es Dir zu kompliziert gemacht hast?

    Nachtrag: In mosquitto kommen mit qos=1 übrigens auch tatsächlich alle veröffentlichten Nachrichten an.

    Den simplen mit loop_start() ohne irgendwelche weiteren Versuche Fehler im loop abzufangen habe ich so garnicht versucht, (glaube ich).

    Möglich dass ich mit irgendeinem handling meinen loop zerschossen habe.

    Ich versuch das mal so, und geb morgen früh bescheid, ob das läuft! (Falls nicht, kann ich euch jedoch leider nicht sagen, wo der fehler liegt...)