NEWS
Liste für PWM abarbeiten
-
Hallo,
ich möchte eine Aquariumlampe per PWM über einen ESP32 mit Zusatzmodul PCA9685 dimmen. Das Blockly hierzu:
Dieses Dimmen funktioniert schon seit Jahren über ein Raspberry mit einem Python-Programm. Ich bin derzeit dran, die komplette Aquariumsteuerung auf iobroker umzustellen. Die verwendete Liste beinhaltet im Original ca. 1.000 Werte und simuliert einen Sonnenauf bzw. -untergang.
Das Blockly macht, was ich erwarte und ich habe dennoch Fragen hierzu:
- Ist das mit der "PAUSE" so ok oder gibt es eine elegantere Lösung? In verschiedenen Beiträgen habe ich gelesen, dass möglichst der Befehl "PAUSE" nicht verwendet werden soll.
- In Python konnte ich die Liste auch rückwärts abarbeiten. Gibt es hier auch eine Möglichkeit oder benötige ich eine zweite gespiegelte Liste?
- Ist das ok, die Liste hier im Blockly zu definieren oder sollte ich besser einen Datenpunkt nehmen?
Über erhellende Antworten würde ich mich freuen. Gerne beantworte ich auch Fragen.
Gruß Ralf -
@ralf-6 said in Liste für PWM abarbeiten:
Ich weiß es zwar nicht aber evtl. werden bei PAUSE nops abgearbeitet und alles andere blockiert (wie delay() im arduino).
Ich hab mal was ohne PAUSE mit vor - rückwärts geschrieben, nicht getestet, nur ein Vorschlag.
script.txt <--- hier ist der QuelltextIch denke, ob die Liste aus einem Text oder einem DP erstellt wird, dürfte wohl ein ähnlicher Rechenzeitaufwand sein, evtl. ist Text sogar schneller.
-
Vielen Dank für den Input und das Script. Den ersten Test hat die Logig erfolgreich bestanden und macht was sie soll.
Das ich jetzt die Liste vorwärts und rückwärts verwenden kann finde ich super. Diesen Ansatz kannte ich noch nicht.
Wenn ich in unter "Hosts" die CPU - Auslastung (ein Raspberry 4) schaue, sehe ich keinen Unterschied zur Version mit der "PAUSE". Gibt es hier geeignetere bzw. feinere Methoden um die Auslastung zu überwachen?Ich werde diesen Ansatz mal mit meiner Liste ausgiebig testen.
Gruß Ralf
-
@ralf-6 Freut mich, das es klappt.
Ich bin kein Linux Fachmann. Mit dem Befehl 'top' kann man sich die laufenden Prozesse anzeigen lassen und deren Anteil an der Systemauslastung.
Hier im Forum habe ich diese Diskussion gefunden: https://forum.iobroker.net/topic/43167/unterschied-timeout-und-pause-in-blockly
-
@ralf-6 Kann man die Liste nicht also Algorithmus darstellen ?
-
Was meinst du mit Algorithmus?
Hinter den 1000 Werten steckt schon eine Formel. Da habe ich damals in diversen Aquarien-Foren und bei Beleuchtungsmenschen mitgelesen. Auf die Schnelle habe ich jedoch keine Quelle mehr parat.
Ich kann mich nur erinnern, daß dieses Thema komplex war. Die Helligkeitsänderungen pro Sekunde sind nicht linear. Das hängt mit der Sehempfindung des Auges zusammen. So wie die Werte jetzt sind, läuft es sehr harmonisch und ohne flackern ab. Bei Bedarf kann ich die Werte gerne zur Verfügung stellen. Für mich war es einfacher die Werte einmal zu ermitteln als die Formel nachzubauen und jedes Mal neu errechnen zu lassen.
Aktuell steuere ich drei große Lichtbalken für das Aquarium und meine Pflanzen. Alles separat und mit verschiedenen Parametern.Das mit der Leistung bzw. Auslastung schaue ich mir separat an.
Danke und Gruß