Beiträge von ottosieben

    Moin,

    ich kann nicht anders.

    Nimm Deinen Eingang, welcher bei geschlossenem Tor mittels Schalter gegen GND gezogen wird und mit der Option PULL_UP konfiguriert ist, lasse mit blynk eine GRÜNE LED anzeigen, dass alles in Ordnung ist. Das spart Nerven, da grün eine beruhigende Wirkung hat. Abgesehen davon würde die so drahtbruchsichere Überwachung auch Unterbrechungen auf der Steuerleitung signalisieren. ;)

    Grüße und viel Erfolg!

    Den gab es hier im Forum nie.

    Python3 läuft auf allen RPi mit allen Betriebssystemen und das schon seit Wheezy, also dem ersten Raspbian. Da muss man kein neues OS installieren. :shy:

    Moin,

    die ganze Wahrheit ist, dass es z.B. für Wheezy offiziell nur bis Python 3.4 Pakete gibt. Deswegen mein Hinweis.

    Ich habe jetzt auch keine Lust, die gesamte Versionshistorie auszurollen. Das würde niemanden helfen.

    Ausgelagert aus immer doppelt


    Herrlich,

    nachdem sich einige trefflich über die Referenzierung von Speicherzellen und deren korrekten Bezeichnungen gestritten haben, hat der TO den doppelten Aufruf der Funktion einfach entfernt. :bravo2:

    Die üblichen Vorschläge auf Python3 upzudaten, hätten das Problem zwar nicht gelöst, haben aber trotzdem zur Erheiterung beigetragen. :)

    Ich persönlich würde den Aufwand eines Updates bei einem >1000 Zeilen Script scheuen, gerade wenn die Hardware nicht potent genug ist, um unter einem neueren OS, welche Python3.x unterstützen, zu laufen.

    Grüße an alle

    Moin,

    der Start Deines Scriptes erfolgt um 06:00 Uhr.

    Ich weiss nicht wie der Rest Deines Aufrufes aussieht, aber ist es vorstellbar, dass innerhalb von 60 (06:00:00 - 06:00:59 Uhr) Sekunden der Aufruf mehrfach durchgeführt wird?

    Moin,

    gezielt Werte kann man mit <listenname>.pop[index] entfernen .

    Deine Anforderung klingt für mich nach simpler Sortierung, wobei mir das Proezedere mit den max Werten nicht klar ist.

    Mein Vorschlag: Hänge den neuen Wert an, führe eine Sortierung durch, entferne den Listeneintrag mit dem höchsten Index.

    Damit verbleiben die niedrigsten Einträge sortiert nach Wert in der Liste.

    https://www.w3schools.com/python/ref_list_sort.asp

    Ja, wenn dein Pi mal kaput geht, wirst du an mich denken, wenn du verzweifelt versucht, Ersatz zu bekommen.

    Du kannst machen, was du willst. Ist mir völlig egal. Was mich stört ist, dass du offenbar zu den Leuten gehörst, die keine eigene Meinung haben, sondern machen, was andere sagen. Dann sind die hinterher auch schuld, wenn es schiefgeht, gell? Ich hab dir oben gesagt, was du dir ans Bein bindest, wenn du Programmteile für zwei Plattformen (ESP + Pi) schreiben musst, MQTT, GUI und Display einbindest... Offenbar hast du doch Langeweile, sonst könntest du es dir auch leichter machen. Aber lass gut sein - jeder muss seine eigenen Erfahrungen machen. Viel Erfolg!

    Moin,

    Gnom

    Ich verstehe Deine Aufregung nicht. Wenn der Pi mal kaputt geht? Meinst Du, die derzeitig schlechte Verfügbarkeit bleibt ewig so? Andererseits läßt sich alles auch auf einen PC portieren, GPIO's braucht WillyR nämlich nicht. Der Programmieraufwand für X Ampelmasten ergibt sich nur 1 mal, wenn die Intelligenz im Pi-Python-Script bleibt. Die ESP brauchen nur unterschiedliche MQTT-Client- und Host-Namen, das wars. Die Teile auf DHCP konfiguriert und fertig ist der Lack. So eine Ampel hat nämlich nur drei farbige Leuchten, also maximal. Den Aufwand einen MQTT Broker zu installieren, schätzt Du übrigens völlig falsch ein. Das dauert höchstens 5 Minuten und da ist der Download schon dabei. Mehr Aufwand erfordert zwar das Python-Script, aber das ist dann auch die einzige Stelle, an der der Kopf raucht.

    Du scheinst MQTT gar nicht zu kennen oder warum erwähnst Du das so kategorisch in der Liste der ach so komplizierten SW-Pakete?

    Direkte Socketverbindungen erfordern keinen Aufwand auf dem Master? Ich glaube sogar mehr. Mit MQTT ist nämlich schon sehr viel mehr als nur der reine Datenaustausch erledigt. (QOS, Livestatus ...) Das müsste bei Deinem Vorschlag auch erstmal programmiert werden. Aufwand?

    Sei mir nicht böse - ich wünschte mir mehr konstruktive Vorschläge von Dir, als nur das Gebrummel, dass alle anderen keine Ahnung hätten und nur das machen, was ihnen wiederum andere sagen.

    Moin,

    ob nun Schwachmaten die höfliche Art ist, um mit gefühlt unsinnigen Antworten umzugehen, glaube ich nicht.

    Fakt ist, dass auch MQTT für das Projekt geeignet wäre, wenn ohnehin ein [verschlüsseltes] WLAN verfügbar ist. Das MQTT auch noch verschlüsselt werden könnte, liegt auf der Hand. Wozu das dann gut ist, bleibt fraglich. Wenn der Verkehrsgarten das Basisprojekt für die Steuerung eines Atomkraftwerkes oder einer ähnlich kritischen Infrastruktur sein soll, wäre eine zusätzliche Verschlüsselung sicher ratsam. Andernfalls ...

    Sowohl für den Raspi als auch für die ESP gibt es zu Hauf MQTT-Beispielcode zum Lernen im Netz. Der Ansatz von WillyR ist also aus meiner Sicht richtig.

    Aus eigener Erfahrung kann ich sagen, dass Kommunikation per MQTT recht einfach ist. Ich habe selber etliche Geräte verschiedenster Funktionen mit einem ESP(8266) gebaut, welche per MQTT mit einem Pi kommunizieren. Daher würde ich behaupten, dass eine solche relativ einfache Anwendung grundsätzlch realisierbar ist. VIEL ERFOLG !

    Schmiert dir der Pi, warum auch immer ab, läuft die Pumpe bei einem Biesatbilen Relais unter umständen weiter. Da du ja nur einen Impuls zum schalten brauchst und das Relais dann den jeweiligen Zustand hält.

    Bei einem Relais welches dauerhaft Spannung für den jeweiligen Schaltzustand braucht, würde ich mich wohler fühlen, denn:

    Schmiert dir der Pi ab, gibt es auch kein Steuerstrom für das Relais mehr und deine Pumpe geht, bei richtiger Beschaltung, automatisch aus.

    Das wäre meiner Meinung nach die bessere Lösung.

    Moin,

    prinzpiell kann ich Deinen Ansatz nachvollziehen, aber was macht Dich so sicher, dass ein 'abgeschmierter' Pi den Ausgang zurücksetzt?

    Moin, die Relais auf dem Board sind Wechsler.

    Das heißt , jedes Relais kann sowohl die Funktion 'normaly open' oder 'normaly closed' übernehmen.

    Damit ergibt sich die Möglichkeit, mit einem weiteren Schaltrelais , welches Arbeitskontakte (für die Pumpe) als auch potentialfreie Hilfskontakte (für Rückmeldung und Selbsthaltung) eine Steuerung zu bauen, welche mit Schaltimpulsen vom Relaisboard gesteuert wird.

    Die Schaltung kommt aus der Leistungelektrik und wird mit Leistungsrelais , Schütz genannt , aufgebaut. Das hast Du bestimmt schon mal gesehen. Zwei Knöpfe, einer für ein und einer für aus. Die Knöpfe werden durch die Raspiboardrelais ausgetauscht und fertig. Das Schütz wird mit Netzspannung in der Steuerseite betrieben! Suche mal nach 'Selbsthalte Schaltung dominierend aus'.

    Viel Erfolg.

    Moin,

    Du kannst sicher davon ausgehen, dass eine 6 Meter lange Leitung an dem recht hochohmigen Eingang des Raspi wie eine Antenne wirkt und für diese Effekte mindestens mit verantwortlich ist.

    Weiterhin ist das Prellen des Reedkontaktes auch nicht auszuschliessen.

    Ich würde einen Hallsensor statt des Reedschalters benutzen und den Raspi mit sehr kurzen Leitungen in die Nähe des Sensors bringen.

    Grüße

    Moin,

    aus Deinem ersten Ansatz heraus würde ich im Callback eine (noch zu deklarierende) INT Variable mit dem Highlevel des Sensors auf 0 setzen.

    Der Lowlevel macht an der Stelle nichts.

    In der Hauptschleife würde ich diese Variable nach dem sleep(1) inkrementieren. In der der folgenden Zeile dann den Wert mit der Abbruchbedingung (> 60 , wegen sleep(1) also 60 Sekunden) die gewünschte Aktion ausführen.

    Somit würde der Sensor den so entstandenen Zähler immer wieder auf 0 setzen , solange da was wackelt. Erst wenn nichts mehr wackelt, kann die Hauptschleife den Zähler bis zur Grenze hochzählen.

    Keep it simple and stupid. :)

    Moin flynn!

    Respekt für die Umsetzung auf dem Atmega!

    Ich hatte vor Jahren mal auf nem Arduino einen ähnlichen Versuch gestartet. Dabei hatte ich Fader als auch Schalter über Multiplex-Adressierung von (auch analogen) Gateways an den Ardiono angeschaltet. Über weitere Tasten konnte ich dann diese Eingangsbaugruppe im DMX-Adressbereich patchen. Irgendwann habe ich das aber aufgegeben.

    Das letzte lauffähige (aber immer noch nicht fertige :) ) Pröjekt lauft mit einem seriell2DMX Adapter von dmx4all uf einem Raspi. Dabei habe ich eine eigene Python-GUI (mit dem offiziellen Raspi-Tochscreen) für die Geräte. Keine Maus, keine Tastatur ... Die GUI folgt in der Gestaltung meiner vorhandenen "Hardware", ist also leider kaum konfigurierbar.

    Was ich nicht so recht verstanden habe, ist , wie Du Dir das Zusammenspiel Deiner Joysticksteuerung mit dem Raspi vorstellst. Was genau soll der Raspi denn machen? Soll er die Schnittstelle zu den Joysticks sein und als alleiniger DMX Sender fungieren?

    Eine Frage habe ich noch: Wie hast Du den Verfolgermodus für die vier Movings mit nur einem Stick gelöst? Ich hatte das auch schon im Sinn , bin aber bei vorbereitenden Versuchen auf keine brauchbare Synchronfahrt gekommen.

    Ich würde mich freuen, wieder was von Dir zu lesen!

    Grüße

    Hallo allerseits,

    ich möchte auf meinem Raspi 4 DMX einrichten. Es sollte über die serielle Schnittstelle realisiert werden.
    Alles mit Python programmiert. Wer hat einen Vorschlag oder eine Lösung?
    Gruß Flynn

    Die erhältlichen DMX Adapter über die serielle Schnittstelle verhalten sich gegenüber des Raspi wie -> eine serielle Schnittstelle. Man braucht sich nicht um Timing oder sonstwas kümmern, einmal gesendete Befehle 'behält' der Adapter und sendet diese nach DMX Spezifikation auf den Bus.

    Also einfach entsprechend der Doku den Adapter seriell bedienen und fertig. Da kann man kleine Sachen auch selbst programmieren.

    Damit meint er einen Client-Server-Ansatz. Wenn man zB pigpio verwenden wuerde, dann laeuft da der pigpiod, und kontrolliert zentral alle Resourcen. Und verschiedene clients koennen dann mit dem reden, und zB einen Pin schalten.

    Das ist erstmal besser, als sich auf einen eher implizit geteilten Zustand eines Ausgabepins zu verlassen, oder zu riskieren, den aus verschiedenen Prozessen gleichzeitig zu bearbeiten....

    Moin,

    genau darum gehts. Danke __deets__ , für die Erklärung.

    Es ging mir im Grunde nur darum, das Grundprinzip aufzuzeigen. Programme laufen in der Regel sequentiell ab. Parallele Prozesse gibt es im eigentlichen Sinn nicht, da die verfügbare Rechenzeit unter den Programmen nacheinander aufgeteilt wird.

    In dem Fall z.B. macht Programm 1 in Zeile 299 irgendwas mit Pin 4, im nächsten Takt wird Programm 2 die Rechenzeit zugeteilt und das Programm macht irgendwas mit PIN4 , dann gehts wieder weiter mit Programm 1 Zeile 300 ... So kommt es dann zum undefinierten Zustand und im Ernstfall schmieren beide Programme ab. Mit dem Gedanken an einen Mehrkernprozessor wird es dann noch verrückter, wenn die beiden Programme womöglich auf verschiedenen Kernen laufen.

    Programmierung ist nicht einfach, würde ich mal behaupten. Jedes Programm benötigt ein Konzept und würde lügen, wenn ich sagen würde, dass ich mir durch ein fehlendes oder fehlerhaftes Konzept nicht schon ein blaues Auge eingehandelt hätte. (mindestens eines ...)

    Simsi hat mit der Programmierung begonnen und wird sicher in der Zukunft die Aufgaben anders angehen. Da entwickelt jeder seinen eigenen Stil.

    Das ist auch kein Problem.

    So nun noch ein Link für eine Server/Clientgeschichte.

    https://riptutorial.com/python/example…-server-example

    Darauf kann man die Geschichte aufbauen.

    Der Server handelt PIN4 und wartet auf die Ereignisse , sei es eine Taste oder ein Signal von einem Client, welcher durchaus von einem Cronjob gestartet werden kann.

    Moin,

    jedes Script für sich funktioniert wohl. Nur würde ich die Ursache für die Fehlfunktion darin ausmachen, dass beide Scripte auf diesselbe Ressource (PIN 4) zugreifen. Das ist, sorry für den Ausdruck, Bul..hit . Entweder regelt baut man ein Master, der von den beiden Scripten die Befehle für PIN 4 annimmt oder aber baut alle Funktionen in ein Script. Doppelzuweisungen führen zu undefinierten Zuständen.

    Moin,

    ich habe das vor Kurzem selbst gebraucht,

    Dabei wird mit in einem String der Offset in Minuten in der Form z.B. "+50" oder "-200" und einem weiteren String die Referenzzeit in der Form "13:35" übergeben.

    Der Trick ist, die Referenzzeit zuerst in Minuten umzurechnen, um im Anschluss den Offset auszurechnen. Dann wird wieder ins Stunden:Minuten Format zurückgewandelt. Was hier fehlt, ist die Berücksichtigung des Überganges 00:00 Uhr.