Rollladen-Steuerung per modifizierter FB

  • So, nachdem ich meinen Hardwareaufbau gepostet habe komme ich jetzt zur Software (vielen Dank nochmal an Tombra).


    Ich habe die Software etwas angepasst (ich brauche kein Homebridgemapping) und habe zudem den Vorschlag aufgenommen den aktuellen Kanal in einer Datei zwischenzuspeichern, dadurch geht das Schalten schneller.


    Hier die Konfig in FHEM:


    Hier meine Datei Namens jarolift.py:


    Und die noch benötigte Datei zum zwischenspeichern Namens Position.pkl:

    Code
    1. I1
    2. .


    Hoffe ihr könnt damit was anfangen und ich hoffe Tombra kann das mit dem zwischenspeichern für sich übernehmen.


    Gruß


    Markus

  • Hi Markus,


    sehr geil! Die Bilder und deine Beschreibung sind super, damit sollte es (fast) jeder hinbekommen :thumbs1:


    Ich habe das ganze noch mit den Widerständen wie in den ersten Posts gemacht... sieht bei mir ziemlich wild auf dem Steckbrett aus!


    Aber wenn das mit diesem ULN2003A funktioniert, werde ich gleich mal einen bestellen und umbauen.


    :danke_ATDE:


    Gruß Nils

  • So, habe gestern noch etwas an der Python-Datei gearbeitet, benutze jetzt nicht mehr den GPIO25 zum blockieren damit das Script nicht nochmals zeitgleich aufgerufen wird sondern auch eine Datei in die der "Blockingzustand" geschrieben wird.


    Hier nochmal meine angepasste jarolift.py:


    die benötigte Datei jarolift_pos.pkl:

    Code
    1. I1
    2. .


    und die benötigte Datei jarolift_block.pkl:

    Code
    1. I0
    2. .


    Alle drei Dateien liegen bei mir in Verzeichnis /opt/fhem
    Die Datei jarolift.py hat die Rechte 755 und die zwei PKL-Dateien die Rechte 777 (muss ja Schreibrechte haben).


    Hoffe es ist soweit alles verständlich, freue mich auf eure Meinung.


    Gruß


    Markus

    Einmal editiert, zuletzt von meier81 ()


  • ...ich hoffe Tombra kann das mit dem zwischenspeichern für sich übernehmen.



    Vielen Dank, habe ich gerade übernommen.


    Aktuell habe ich noch ein Problem mit dem Homebridgemapping:


    Wenn ich von iPhone die Rollade runterfahre und dann während der Bewegung nochmal den Button betätige, wird folgendes

    Code
    1. 2017.01.22 14:34:17 3: driving into wrong direction. stop and change driving direction

    ins Logfile geschrieben und die Rollade stoppt kurz und fährt dann direkt wieder in die entgegengesetzte Richtung.


    Code
    1. clear
    2. CurrentPosition=position,invert=1,minValue=0,maxValue=100
    3. TargetPosition=position,invert=1,minValue=0,maxValue=100,minStep=10,delay=300,cmd=position,
    4. PositionState=state,values=drive-up:INCREASING;drive-down:DECREASING;no:STOPPED;undefined:STOPPED,default=STOPPED


    Wäre super, wenn jemand eine Idee hat.

  • Hi,
    Meine Version: "Ordnung" :shy:


    Zutaten:
    Raspberry
    Jarolift Wandsender TDRC 08W (16W)
    Selbst entwickelte Adapterplatine mit ULN2003A SMD (16x15mm)
    Stromversorgung vom Raspberry = keine Batterie notwendig.
    Hab es mit 5 GPIOs gemacht, Umschaltung M und S beim Jarolift brauche ich nicht. Dazu 3,3V und GND vom Raspberry.


    Ich wollte das alles unsichtbar machen. Es hat geklappt. Ich kann das Gehäuse (OneNineDesign) zu machen und man sieht nichts.
    https://www.raspberrypi.org/fo…iewtopic.php?f=40&t=89280


    Ich steuere jetzt damit 3 Rolladen per Sprachsteuerung mit Amazon Echo.


    P.S. Theoretisch könnte man sich auch ULN2003A sparen, es wird mit <10µA geschaltet (gemessen an den Tastern) = kein Problem für die GPIOs. TDRC08W zieht insgesamt ca. 8mA beim schalten vom 3,3V Pin = auch kein Problem.
    Heimatkanal

  • Ich oute mich mal als absoluter Elektronik-Leihe und hätte deshalb eine Frage.
    Wenn ich wie im letzten Post geschrieben, den ULN2003A weglasse, wie kann ich denn dann den Taster an der Fernbedienung auf "0" ziehen?

  • Einen herzlichen Dank an alle die hier so engagiert ihr Wissen teilen. Freu mir gerade nen Keks weil die Rolladenansteuerung schon länger ein Wunsch von mir war und sie jetzt durch euch funktioniert.
    Ein Problem habe ich noch. Lasse sie Rolladen zeitgesteuert mit sunrise/sunset steuern. Bei Sonnenuntergang sollten dann alle zur gleichen Zeit runterfahren. An dem Punkt kommt das System durcheinander. Die gespeicherte Position in der Position.pkl stimmt nicht mehr mit der Ziffer auf dem Display der Fernsteuerung über ein und nur zwei von 5 Rolladen werden angesprochen. Einzelnt kann ich alle wunderbar steuern, das funktioniert gut.
    Habe die Vermutung, dass dieses Problem mit der zweiten Script Variante von meier81 nicht auftritt. Das Sript bekomme ich aber nicht zum laufen. Da bekomme ich massig den Fehler "Rolladensteuerung blockiert" im filelog. Die Rechte der pkl-Dateien habe ich angepasst.
    Ich hoffe, dass mir jemand helfen kann.

    Einmal editiert, zuletzt von jkiu ()

  • Hab das Display durchgemessen. Die Werte / 10 = V (141 = 1,41V)
    Mann kann nur Position 3 an Pin3 eindeutig erkennen (wenn wir nur 1 GPIO verwenden wollen). Das reicht aber. Dann nach Links oder Rechts schalten. Unterschied (0,1V) reicht aber nicht zur LOW HIGH Erkenung. Vielleicht mit AD Wandler MCP3421?
    Das alles für TDRC08W, für 16W sind die Werte wahrscheinlich anders.

  • Habe das Problem mit dem gleichzeitigen steuern der Rolladen ersteinmal so gelößt, dass jede Rollade mit einm Versatz von drei Sekunden nacheinander angesteuert werden.

    Code
    1. {fhem ("define Bst_Fn_rl_1 at +00:00:03 set Bastelbude_Rollade open")}


    Die zweite Rollade alo +3 sec, die dritte +6 sec, die vierte +9 sec etc.
    Wenn einer eine Lösung kennt die ohne diese Krücke auskommt, bin ich dankbar.

  • Hallo Zusammen,
    Dank eurer HIfe bin ich jetzt schon so weit gekommen, dass ich die einzelnen Taster der Ferbedienung mit dem Pi und einem ULN2004 ansteuern kann.
    Das war wie Weihnachten für mich, als die Test-LED das erste mal anging.
    Jetzt habe ich noch das Problem, dass ich mit dem Speichern des Status des aktuell gewählten Kanals nicht weiterkomme.


    Die Idee war ja folgende:
    Beispiel: Ein Skript stellt den Kanal auf zum Beispiel "Kanal 3" ein, gibt das Signal zum runterfahren des Rollos aus, speichert "Kanal 3" in einer Datei.
    Beim nächsten "at" soll nun Kanal 2 angewählt werden und irgendeine Aktion ausgeführt werden. Ich lese also die gespeicherte Datei, in der der abgespeicherte Wert "3" steht aus, und weiss somit dass ich nun x-mal die Kanal-Taste drücken muss, um zum Kanal 2 zu gelangen.


    Jetzt mein Problem:
    Ich habe also eine Datei angelegt, in die der aktuelle Kanal gespeichert wird. Soweit kein Problem. Aber wie kann ich jetzt diesen Wert aus der Datei in weiteren Skripten und in fhem selbst verwenden? Ich verzweifel daran gerade! Ich weiss nicht wie ich in einem anderen Skript den Wert aus der Datei einlesen und weiter verarbeiten kann! Genauso weiss ich nicht, wie ich in fhem einer Variable den Wert aus der Datei zuordnen kann.


    Ich hoffe ihr könnt mir hierbei helfen!

  • Hallo zusammen,


    die tollen Beschreibungen haben mich ermutigt, das Projekt jetzt auch anzugehen.
    Da ich aber auch noch ein 433MHz Funkmodul für Steckdosen integrieren möchte und dadurch der GPIO17 mehrfach belegt würde, würde ich gerne wissen, ob auch abwechselnd des GPIO17 auf GPIO25 möglich wäre?


    Herzlichen Dank vorab.


    LG,
    Detlef

  • Super :thumbs1:


    Herzlichen Dank, Premo.
    Löst mein Problem. In die Richtung, das Remote-Modul zu ändern, habe bisher noch gar nicht gedacht, wie peinlich.


    LG,
    muede


  • Einen herzlichen Dank an alle die hier so engagiert ihr Wissen teilen. Freu mir gerade nen Keks weil die Rolladenansteuerung schon länger ein Wunsch von mir war und sie jetzt durch euch funktioniert.
    Ein Problem habe ich noch. Lasse sie Rolladen zeitgesteuert mit sunrise/sunset steuern. Bei Sonnenuntergang sollten dann alle zur gleichen Zeit runterfahren. An dem Punkt kommt das System durcheinander. Die gespeicherte Position in der Position.pkl stimmt nicht mehr mit der Ziffer auf dem Display der Fernsteuerung über ein und nur zwei von 5 Rolladen werden angesprochen. Einzelnt kann ich alle wunderbar steuern, das funktioniert gut.
    Habe die Vermutung, dass dieses Problem mit der zweiten Script Variante von meier81 nicht auftritt. Das Sript bekomme ich aber nicht zum laufen. Da bekomme ich massig den Fehler "Rolladensteuerung blockiert" im filelog. Die Rechte der pkl-Dateien habe ich angepasst.
    Ich hoffe, dass mir jemand helfen kann.


    Hallo,


    wie du schon richtig erkannt hast gibt es ein Problem wenn du schnell hintereinander mehrere Rolladen fahren willst. Das Problem lässt sich denke ich mit der Lösung der umgebauten Fernbedienung nicht wirklich lösen, deswegen ist die Zeitverzögerung der einzelnen Befehle leider nötig in FHEM (habe ich auch so gelöst).


    Zu meiner zweiten Skript-Variante:

    Zitat

    So, habe gestern noch etwas an der Python-Datei gearbeitet, benutze jetzt nicht mehr den GPIO25 zum blockieren damit das Script nicht nochmals zeitgleich aufgerufen wird sondern auch eine Datei in die der "Blockingzustand" geschrieben wird.


    Von dieser bin ich mittlerweile wieder abgekommen, da hat sich ab und zu beim zu schnellen Schalten die Blockierung aufgehängt und ich musste den Raspberry neu starten und die Blockierung händig in der Datei wieder auf "0" setzen, deswegen bin ich wieder zurück zur GPIO25-Variante, habe seitdem selten einen Hänger gehabt (mutwillig produziert) und nach einem Neustart des Raspberry setzt sich der GPIO25 automatisch wieder zurück und es geht alles.


    Ich bin aber darauf aufmerksam geworden das es in nicht all zu langer Zeit die Möglichkeit geben wird die Rolladen "direkt" zu schalten, das heißt mittels einer kleinen Microcontroller-Platine mit Sende- und Empfangsantenne, die wird einfach per USB an den Raspberry angeschlossen und in FHEM über ein eigenes Modul parametriert. Falls ich zu dieser Lösung was neues weiß lasse ich es euch hier sofort wissen.


    Gruß


    Markus

  • Hallo zusammen,


    ich habe auch die Frage bezüglich die Nutzung/Umzug anderer Pins, da ich am meinem Pi3 das Unipi Board angeschlossen habe und somit nur die Pins ab 29 (GPIO 5) habe.


    Wäre ein wechseln der Pins so realisierbar?
    GPIO17 (Pin 11) -> GPIO13 (Pin 33)
    GPIO27 (Pin 13) -> GPIO19 (Pin 35)
    GPIO22 (Pin 15) -> GPIO26 (Pin 37)
    GPIO23 (Pin 16) -> GPIO16 (Pin 36)
    GPIO18 (Pin 12) -> GPIO12 (Pin 32)



    Gruß
    Marco

    Einmal editiert, zuletzt von skyline78 ()


  • Ja, ist auch eine gute Lösung, was ich meinte ist aber das direkt die Jarolift-Empfänger angesteuert werden da dieser Mikrocontroller den Rollingcode im Bauch hat. Dem entsprechend ist die direkte Ansteuerung möglich ohne umgebaute Fernbedienung.


    Du steuerst ja auch direkt an aber halt keine Jarolift-Empfänger sondern Intertechno-Empfänger.
    Automatisch zusammengefügt:[hr]


    Hallo,


    schaue dir mal die Datei jarolift.py genauer an, da siehst du das die verwendeten Pins dort zugeordnet werden. Wenn du andere nehmen möchtest einfach die Datei anpassen und fertig.


    Gruß


    Markus

    Einmal editiert, zuletzt von meier81 ()


  • Ja, ist auch eine gute Lösung,


    deswegen wählte ich ja die Intertechno



    was ich meinte ist aber das direkt die Jarolift-Empfänger angesteuert werden da dieser Mikrocontroller den Rollingcode im Bauch hat.


    rolling code würde mir auch keinen Spass machen :) da würde ich auch über die Tastendrücke gehen mit analog switches CD/HEF/74HC 4061/4066


    Leider blicke ich durch die Arduino Config noch nicht durch der sendet default immer jeden Code 2x was zur Folge haben kann, Rolladen fährt los, der 2te stoppt ihn manchmal aber nicht immer wird der Code als 2 Tastendrücke interpretiert, eigentlich selten und bei den weit entfernten kommt der Code manchmal nicht durch, deswegen sende ich 2x für die kürzesten Entfernungen 4x für die mittleren und 6x für die weitesten Entfernungen, so sind die seit einem halben Jahr immer alle oben oder unten.


    Die Intertechno stört das nicht, nur zeitgesteuerte Fahrzeit für halb oben/unten ist so nicht möglich, aber OK irgendwas ist ja immer.


    Jedenfalls konnte ich den Code soweit kürzen das nun MESZ Berechnung und Contrast und Helligkeit vom Display sowie die "Weckzeit up" fernsteuerbar ist und auch im I2C EEPROM gespeichert wird bei reset, verlassen/enter serial zum Abfragen, Fernsteuern oder Programmieren.


    Wenn ich noch mehr Platz schaffe sind vielleicht auch noch 1-3 Tasten möglich.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • Hallo,
    nachdem ich am Beispiel von Markus den Aufbau hardwareseitig erfolgreich abgeschlossen habe, kommen nun die softwareseitigen Probleme.
    Nach Einspielen eines Rolladens (auf Basis des Küchenrolladenbeispiels von Markus) in die FHEM.cfg kommt, egal welchen Befehl ich ausführe, nachfolgender Fehler:


    2017.04.21 14:50:00 3: RolladenBuero_drive_down return value: -1
    Traceback (most recent call last):
    File "/opt/fhem/jarolift.py", line 10, in <module>
    GPIO.setup(22, GPIO.OUT)
    RuntimeError: No access to /dev/mem. Try running as root! :s :s :s


    Wer kann mir bitte helfen? :helpnew:



    Gruß,
    Detlef