Velux-Rolläden steuern: Runterfahren klappt nicht

  • Hallo,


    über die Feiertage bin ich ein kleines Projekt angegangen, bei dem ich mittels eines Raspberry Pi 3, eines Breadboards, eines ICs und einer Velux-Infrarot-Fernbedienung meinen Dachfensterrolladen automatisieren möchte.


    Ich habe mich dabei an folgende Anleitung gehalten: https://www.phpmonkeys.de/2016…rollladen-automatisieren/ und die Schaltung wie auf Bild 3 gezeigt aufgebaut: https://www.phpmonkeys.de/2017…en-automatisieren-teil-3/


    Mit dem angepassten Script aus der Anleitung (Exception-Handling ergänzt, GPIO cleanup, GPIOs angepasst) kann ich nun auch den Rolladen hochfahren. Was nicht funktioniert ist das Herunterfahren per Script. Um das aktuell zu testen bin ich per SSH mit dem Raspberry Pi 3 verbunden und ändere in meinem Python-Script manuell die anzusteuernden GPIOs. Deshalb kann ich aktuell auch nicht das Stoppen testen.


    Das Herunterfahren funktioniert immer genau dann, wenn ich einen "Kurzschluss" zwischen den beiden Kabeln fürs Herunterfahren erzeuge. Dazu stecke ich diese einfach male-female ineinander. Dann fährt er wie gewünscht herunter.


    Hier mal mein Skript:

    Könnt ihr mir bestätigen, dass das so klappen sollte? Vor allem die PINS? Ich habe sie in die GPIOs 17, 27 und 22 gesteckt (links oben befindet sich der 3V GPIO, von da aus gesehen die linke Reihe in den 6., 7. und 8. GPIO von oben sind die Kabel gesteckt).


    Wenn das hilft kann ich gerne auch nochmal den Schaltungsaufbau zwischen Schalter - Breadboard und Raspberry Pi 3 aufmalen.


    Vielen Dank, einen guten Rutsch und viele Grüße,


    Dirk

  • Ich kann dir nicht ganz folgen, dafür ist deine Beschreibung zu schwammig, aber einen Kurzschluss zu erzeugen halte ich für keine gute Idee, ich würde zumindest einen Widerstand dazu nehmen.

    Wo du diesen Kurzschluss erzeugst ist mir auch nicht ganz klar.

    Dieses verlinkte Script ist ja nur zum testen und macht nichts anderes als den Rolladen 2 hochzufahren:


    Funktionieren denn die Scripts einzeln, also unabhängig von einander ?


    r2hoch.py

    r2runter.py

    Ein Bild deines Aufbaus wäre natürlich von Vorteil.

  • Hallo fred0815,


    erstmal ein frohes Neues (auch an den Rest des Forums) und vielen Dank für deine schnelle Antwort.

    Ein Bild deines Aufbaus wäre natürlich von Vorteil.

    [Blocked Image: https://picload.org/thumbnail/ddaoplli/mein_aufbau.jpg]

    Ich hoffe, man erkennt daraus den Aufbau. Ich habe damit nur abgebildet, wie das Breadboard genau bestückt ist. Im Grunde sollte es aber genau derselbe Aufbau sein, wie in der Anleitung.

    Dieses verlinkte Script ist ja nur zum testen und macht nichts anderes als den Rolladen 2 hochzufahren:


    Funktionieren denn die Scripts einzeln, also unabhängig von einander ?

    Genau. Ich habe es auch erstmal nur zu Testzwecken verwendet und je nachdem, ob der Rolladen oben oder unten war, die Pins im Script ausgetauscht und das Script dann erneut aufgerufen. Pro Script-Aufruf hat der Rolladen also immer nur eine Aktion durchgeführt. Sprich, entweder habe ich ihn mit dem Script nach oben oder unten gefahren.

    Wo du diesen Kurzschluss erzeugst ist mir auch nicht ganz klar.

    Kurzschluss war hier vielleicht der falsche Begriff. Schau dir mal dieses Bild an. Die beiden braunen Kabel habe ich für einen "Kurzschluss" vom Breadboard abgezogen und dann einfach verbunden. Im Endeffekt habe ich nur den Stromkreis ohne den Schalter geschlossen, indem ich die beiden Kabel male-female verbunden habe:

    [Blocked Image: https://picload.org/thumbnail/ddaopigw/mein_aufbau_kurzgeschlossen.jpg]

    Ich hoffe, es wurde jetzt etwas klarer?!


    Vielen Dank und viele Grüße,


    Dirk

  • Beim Runterfahren. Das klappt ja partout nicht, außer, ich schließe den Stromkreis, indem ich beide Kabel für die Runterfahr-Kontakte miteinander verbinde und den Stromkreis schließe.


    Ich habe jetzt auch mal alle Kabel vom Breadboard abgezogen, außer 5V und Ground. Danach habe ich die Kontakte fürs Herunterfahren an GPIO 17 gehängt und am IC an I / O 1 (den Schalter des IC an dem bisher das gelbe Kabel hängt) gehängt. Damit funktioniert das Herunterfahren aber auch nicht.


    Für mich stellt sich das jetzt so dar:

    - an den Kabeln und den Lötarbeiten auf der Fernbedienung scheint es nicht zu liegen, da es durchs Stromkreis schließen via Kabel ja funktioniert?!

    - am IC kann es auch nicht liegen, da ja zumindest I / O 1 fürs Hochfahren funktioniert?!

    - am Raspberry Pi müsste es somit liegen, wobei der ja zumindest für GPIO 17 das High-Signal fürs Hochfahren gesendet hat?!

    - die Schaltung liegt auch unmittelbar beim Fenster, der "Sichtkontakt" sollte gegeben sein und das würde ich als wenigstes als Problem sehen?!


    Habt ihr noch eine Idee, woran es liegen könnte? Ich weiß auch aktuell nicht so ganz. was ich noch testen könnte.


    Vielen Dank und viele Grüße,


    Dirk

  • Ich habe leider kein Multimeter und wüsste aus dem Standgreif auch niemanden, der eines hat.


    Denkst du, es wird für das Schalten des Herunterfahrens mehr Strom / Spannung benötigt, als für das Hochfahren?


    Was mir gerade noch einfällt: Ich habe aktuell noch Batterien in der Fernbedienung. Könnte das ein Grund sein, dass eventuell sowohl über den Raspberry Pi, als auch die Batterien (zu viel) Strom / Spanung kommt?

  • Wird das schalten des GPIO denn angezeigt, wenn du mit gpio readall während des schaltens abfragst ?

    Dazu könntest du den time.sleep auf einen Wert hochsetzen, der es dir ermöglicht, nebenher noch abzufragen.

    Du kannst ja auch mal einen anderen GPIO nehmen, um sicherzugehen, dass es nicht am GPIO liegt.

    Fremdstromquellen sollten natürlich auch keine dazwischenfunken.

  • Vllt. hast Du Dich doch verlötet, oder nur versteckt.


    Wenn Du die beiden braunen Kabel überbrückst und der Rolladen fährt runter, dann solltes die beiden anderen Kabel gelb und grün genauso überprüft werden. Wenn die beiden gelben Kabel genauso überbrüclt eine Funktion auslösen und auch die beiden grünen (eines der beiden ist rauf, eines wahrscheinlich Halt), dann hast Du Dich wenigsten an den drei FB Anschlüssen nicht verlötet.


    Im nächsten Schritt würde ich überprüfen, ob das IC defekt ist, oder falsch beschaltet wurde.

    Wenn am IC Pin 13 3,3 V angelegt werden, wird IC Pin 1 mit Pin 2 "überbrückt"

    Wenn am IC Pin 5 3,3 V angelegt werden, wird IC Pin 4 mit Pin 3 "überbrückt"

    Wenn am IC Pin 6 3,3 V angelegt werden, wird IC Pin 8 mit Pin 9 "überbrückt"

    Pin 12, der unbenutzte 4 Schalteingang sollte auf Ground gesteckt werden, sonst hängt der IC-Eingang dort in der Luft.


    Zu Testzwecken kannst Du die drei Steuerleitungen von den GPOI Pins abziehen und kurz, hintereinander, an den 3,3 V Pin des Pi halten. Dazu muss der IC aber auch mit 5 V versorgt bleiben und Ground am Pi angesteckt bleiben. Wenn alle drei Schalter so "manuell" funktionieren, liegt der Fehler im Programm.


    Ich befürchte, dass Du Dich an der FB verlötet hast. Wenn braun überbrückt - also ohne IC - funktioniert, heisst das noch lange nicht, dass gelb und grün automatisch genauso funktioniert.


    Und ein Datenblatt sollte man immer downloaden, wenn man mit unbekannten ICs bastelt.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hallo ihr beiden,


    vielen Dank für eure Infos / Hilfe!


    Ich habe heute auch noch bisschen rumprobiert. Und zwar habe ich noch eine zweite Fernbedienung, aber dummerweise nur einen IC bestellt (habe ich verpeilt O:-)).


    Mit dem habe ich es auch nochmal probiert. Der IC funktioniert definitiv richtig, den mit der zweiten Fernbedienung ging es sowohl mit hoch-, als auch runterfahren und stopp. Was aber sehr komisch war ist, dass ich jedes Mal nach dem Anpassen der GPIOs:


    Code
    GPIO.output(<GPIO_je_nach_Richtung_manuell_angepasst>, GPIO.HIGH)
    time.sleep(0.1)
    GPIO.output(<GPIO_je_nach_Richtung_manuell_angepasst>, GPIO.LOW)

    das Hoch-/Runterfahren nicht auf Anhieb geklappt hat. Ich mache das über WinScp, passe unter Windows per Notepad++ die GPIOs an und lade es dann durch "speichern" drücken wieder auf den Raspberry Pi hoch. Danach führe ich das Script aus -> nichts geht, dann mache ich chmod u+x my_script.py (was meiner Meinung nach nicht nötig sein sollte?!), führe das Script dann wieder aus, es geht nicht, dann schaue ich per less my_script.py das Script an, ob es schon hochgeladen wurde, führe es wieder aus,... das mache ich ein paar Mal und dann klappt es irgendwann.


    Ich bin mit der anderen Fernbedienung heute noch nicht dazu gekommen zu testen, ob es so auch klappt. Ich gehe aber mal davon aus.


    Noch als Hinweis: Ich kann jeden einzelne Knopf-Funktionalität durch verbinden der Kabel und damit schließen des Stromkreises ausführen. Damit hat es also definitiv nichts zu tun. Ich würde auch einen Lötfehler (auch wenn die Lötarbeiten echt schlecht geworden sind - 15 Jahre ohne Übung machen sich bemerkbar und selbst damals war ich kein Profi) ausschließen.


    Ich habe eher das Gefühl, als würde der Raspberry Pi bzw. Python nicht kapieren, dass sich etwas "on the fly" im Script geändert hat und bis er das kapiert hat, dauert es ewig.


    Das packe ich heute zeitlich nicht mehr, würde ich aber morgen machen, dass ich für jede Fernbedienungs-Funktionalität / -Schalter ein einges Script anlege, also z.B. rolladen_1_hoch.py, rolladen_1_runter.py und rolladen_1_stopp.py und es dann nochmal probiere.


    Ansonsten teste ich auch gerne eure anderen Tipps, auch wenn ich, wie gesagt, nicht davon ausgehe, dass es an falsch angesteckten GPIOs,... liegt, da ich mittlerweile auch das Runterfahren schon an GPIO 17 gesteckt habe, der definitiv funktioniert hat und da war es dasselbe, dass es nicht geklappt hat,...


    Ich werde euch auf dem Laufenden halten.


    Vielen Dank und viele Grüße,


    Dirk

  • Guten Morgen,


    so, nach längerem rumprobieren - auczh mit drei separaten Scripts je nach Laufrichtung - habe ich nun einen Verdachtsfall mehr: die Füßchen, mit denen ich die Kabel und das Breadboard verbinde. Die unabhängigen Scripts liefen zuerst in keine Richtung mit keiner der beiden Fernbedienungen. Auch das schließen der Stromkreise durch verbinden der Batterien ging nicht mehr (dazu habe ich einen der Füßchen vom Board). Also einen neuen aus dem Tütchen (beim Kabel waren 25 Stück(?) dabei) geholt und es ging mit dem Schließen des Stromkreises.


    Könnt ihr vielleicht solche Jumperkabel (male-male, male-female, female-female) empfehlen? Ich befürchte, ich habe da "China-Schrott" gekauft. Gerne, wenn ihr etwas empfehlen könnt, auch ein "Beginner-Set", mit LEDs, Widerständen,... dabei, damit ich auch etwas anderweitig herumspielen kann.


    Würdet ihr denn grundsätzlich empfehlen für den "produktiven" Einsatz eine Platine ätzen (zu lassen) oder denkt ihr, reicht so ein Breadboard?


    Vielen Dank und viele Grüße,


    Dirk

  • Besorge Die lieber erst einmal ein einfaches Multimeter, damit Du an jedem Punkt Deiner Schaltung zumindest einmal die Spannung messen kannst.


    Und zwischen Steckboard und geätzter Platine gibt es weitere Möglichkeiten. Ich nehme gerne Streifemraster, da lassen sich die Kupferstreifen leicht unterbrechen. Punktraster ist mir mehr Lötfummelei verbunden.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hallo zusammen,


    ich habe den Tipp befolgt und mir ein Messgerät gekauft (20 € beim Baumarkt - sicher kein High-End-Gerät, aber für meine Zwecke sollte es reichen).


    Folgende Messungen habe ich vorgenommen (während die jeweiligen hoch/runter/stop-Skripte liefen):

    - Am Kabel des GPIO 17 und Kabel des GND-Pins: 3,2 V

    - Am Kabel des GPIO 27 und Kabel des GND-Pins: 3,2 V

    - Am Kabel des GPIO 22 und Kabel des GND-PIns: 3,2 V


    Das scheint also zu passen.


    Dann habe ich Ausgänge des IC versucht zu messen. Hierbei war ich mir aber nicht sicher, an welche Pins genau ich messen muss. Folgendes habe ich probiert (während die jeweiligen hoch/runter/stop-Skripte liefen):

    - Am 1 I/O- und 1 O/I-Pin: 0 V

    - Am 1 I/O und GND-Pin: 0 V

    - Am 1 O/I und GND-Pin: 0V

    - Am 2 I/O- und 2 O/I-Pin: 0 V

    - Am 2 I/O und GND-Pin: 0 V

    - Am 2 O/I und GND-Pin: 0V

    - Am 4 I/O- und 4 O/I-Pin: 0 V

    - Am 4 I/O und GND-Pin: 0 V

    - Am 4 O/I und GND-Pin: 0V


    Welche Pins muss ich denn zusammen messen, um die Ausgänge durchzumessen? Könntet ihr mir da bitte helfen?


    Ich habe euch auch mal den IC-Schaltplan und eine Skizze meines Breadboards (auf Fotos erkennt man leider zu wenig).


    Vielen Dank und viele Grüße,


    Dirk

  • 4 I/O zu 4 O/I verhält sich wie ein (tastender) Schalter. Von den beiden Anschlüssen fliesst überhaupt kein Strom zum Schalteingang 4 C, oder IC-Masse.


    Wenn Strom von 4 C (mit 3,3 V vom Pi) nach Masse des IC fliesst (Taste gedrückt) wird 4 I/O mit 4 O/I verbunden.

    Wenn 4 C = Masse (0 V), wird die Verbindung zwischen 4 I/O und 4 O/i geöffnet (unterbrochen).



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hallo ihr beiden,


    vielen Dank für eure schnellen Antworten. Dann werde ich morgen früh den Widerstand zwischen den jeweiligen I/O und O/I Pins messen.


    Einen schönen Abend und viele Grüße,


    Dirk

  • Guten Morgen,


    ich habe eben die Widerstände an den von mir verwendeten Ausgängen bzw. den Pins, an die ich die Rolladen-Funk-Fernbedienung anschließe. Folgendes kam dabei heraus:


    Ohne eines der Skripte laufen zu lassen (= alle GPIOs auf LOW) und das Multimeter auf 2.000 KOhm eingestellt:

    "runter"-Pins: 190 (= 190 KOhm?)

    "hoch"-Pins: 195 (= 195 KOhm?)

    "stop"-Pins: 190 (= 190 KOhm?)


    Mit jeweils einem laufenden Skript (= der jeweilige GPIO ist auf HIGH, alle anderen auf LOW) und das Multimeter auf 2.000 KOhm eingestellt:

    "runter"-Pins: 0 KOhm

    "hoch"-Pins: 0 KOhm

    "stop"-Pins: 0 KOhm


    dasselbe nochmal mit dem Multimeter auf 200 Ohm eingestellt:

    "runter"-Pins: 68 - 150 (= 6.8 - 15 Ohm?)

    "hoch"-Pins: 65 - 78 (= 6.5 - 78 Ohm?)

    "stop"-Pins: 65 (= 6.5 Ohm?)


    Ich habe mir davor noch das Datenblatt, das ich bei reichelt (dort habe ich es gekauft) gefunden habe angeschaut und versucht herauszufinden, was da die zu erwartenden Widerstände sind, aber nichts gefunden (bzw. es vll. auch nicht als solches erkannt): http://cdn-reichelt.de/documen…C4066_SMDHC4066%23STM.pdf


    Passen die Werte so?


    Vielen Dank und viele Grüße,


    Dirk

  • dasselbe nochmal mit dem Multimeter auf 200 Ohm eingestellt:

    "runter"-Pins: 68 - 150 (= 6.8 - 15 Ohm?)

    "hoch"-Pins: 65 - 78 (= 6.5 - 78 Ohm?)

    "stop"-Pins: 65 (= 6.5 Ohm?)

    Wenn der Messbereich 200 Ohm ist, dürfte eine Anzeige von "68-150" 68-150 Ohm entsprechen - ein Blick ins Handbuch des Messgeräts hilft. Wieso glaubst du den angezeigten Wert noch durch 10 teilen zu müssen? Beim 2000kOhm (2MOhm) teilst du doch auch nicht.

    #nurmalso

    "There seems to be no sign of intelligent life anywhere..."

    And btw, i don't care if you use arch or whatever.

  • Hallo ihr beiden,


    vielen Dank für eure Antworten.


    llutz: Ich habe das in der Anleitung so verstanden. Da ist folgende Tabelle drin:


    Funktion Bereich Auflösung
    ...
    Widerstand (Ohm) 200 Ohm 0,1 Ohm
    2000 Ohm 1
    20 KOhm 0,01 KOhm
    200 KOhm 0,1 KOhm
    2000 KOhm 1 KOhm

    Ich hatte es so verstanden, dass die Auflösung je nach Skala der Multiplikator für die Werte sei, die letztendlich angezeigt würden. Offenbar liege ich damit aber falsch?!


    fred0815: Danke. Ich werde die Verbindungen nochmal neu stecken und dann vor dem Senden eines jeden Befehls nochmal die Steckverbindungen "gerade" stellen (die Kabel stecken immer schräg im Brett,,.. um sicherzugehen, dass sie auch richtig Kontakt haben.


    Ich werde berichten, ob es dann geklappt hat.


    Vielen Dank und viele Grüße,


    Dirk