Habe meine Lösung selbst gefunden. Antwort steht zwar nicht unter Google, aber in der FHEM Referenz
sudo adduser fhem gpio
Rollladen-Steuerung per modifizierter FB
-
STRUNZ -
10. September 2014 um 11:34 -
Erledigt
-
-
Rollladen-Steuerung per modifizierter FB? Schau mal ob du hier fündig wirst!
-
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:
Code
Alles anzeigendefine RolladenKueche ROLLO attr RolladenKueche alias Rolladen Fenster attr RolladenKueche autoStop 0 attr RolladenKueche devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop position-100:fts_shutter_100:open position-90:fts_shutter_80:closed position-80:fts_shutter_80:closed position-70:fts_shutter_70:closed position-60:fts_shutter_60:closed position-50:fts_shutter_50:closed position-40:fts_shutter_40:open position-30:fts_shutter_30:open position-20:fts_shutter_20:open position-10:fts_shutter_10:open position-0:fts_shutter_10:closed attr RolladenKueche excessBottom 0 attr RolladenKueche excessTop 0 attr RolladenKueche group Küche attr RolladenKueche resetTime 0 attr RolladenKueche room Rolläden attr RolladenKueche secondsDown 15 attr RolladenKueche secondsUp 15 attr RolladenKueche switchTime 1 attr RolladenKueche type normal attr RolladenKueche webCmd open:closed:half:stop:position define RolladenKueche_drive_up notify RolladenKueche:drive-up {system('python /opt/fhem/jarolift.py 1 drive-up&');;;;} define RolladenKueche_drive_down notify RolladenKueche:drive-down {system('python /opt/fhem/jarolift.py 1 drive-down&');;;;} define RolladenKueche_stop notify RolladenKueche:position-10|RolladenKueche:position-20|RolladenKueche:position-30|RolladenKueche:position-40|RolladenKueche:half|RolladenKueche:position-60|RolladenKueche:position-70|RolladenKueche:position-80|RolladenKueche:position-90 {system('python /opt/fhem/jarolift.py 1 stop&');;;;}
Hier meine Datei Namens jarolift.py:
Code
Alles anzeigenimport time import RPi.GPIO as GPIO import sys import pickle # RPi.GPIO Layout verwenden (wie Pin-Nummern) GPIO.setmode(GPIO.BOARD) # Pin 22 (GPIO 25) auf Output setzen GPIO.setup(22, GPIO.OUT) position = int(sys.argv[1]) richtung = str(sys.argv[2]) print "Rolladen neuer Kanal "+ str(position) print "Rolladen neue Richtung "+ str(richtung) px = position p0 = 16 -px # WARTEN bis GPIO frei while GPIO.input(22) == GPIO.HIGH: time.sleep(0.5) print "GPIO blockiert" # Pin 22 auf HIGH setzen GPIO.output(22, GPIO.HIGH) # Pin 11 (GPIO 17) auf Output setzen GPIO.setup(11, GPIO.OUT) # Pin 12 (GPIO 18) auf Output setzen GPIO.setup(12, GPIO.OUT) # Pin 13 (GPIO 27) auf Output setzen GPIO.setup(13, GPIO.OUT) # Pin 15 (GPIO 22) auf Output setzen GPIO.setup(15, GPIO.OUT) # Pin 16 (GPIO 23) auf Output setzen GPIO.setup(16, GPIO.OUT) # Position aus Datei ruecklesen pkl_file = open('position.pkl', 'rb') data_old = pickle.load(pkl_file) print "Rolladen aktueller Kanal "+ str(data_old) pkl_file.close() # POSITION einstellen print "Rolladen Kanal "+ str(px) +" einstellen" i = data_old GPIO.output(11, GPIO.LOW) print "11 Off!" GPIO.output(16, GPIO.LOW) print "16 Off!" time.sleep(0.1) while i < px: GPIO.output(11, GPIO.HIGH) print "11 On!" time.sleep(0.1) GPIO.output(11, GPIO.LOW) print "11 Off!" time.sleep(0.1) i = i + 1 while i > px: GPIO.output(16, GPIO.HIGH) print "16 On!" time.sleep(0.1) GPIO.output(16, GPIO.LOW) print "16 Off!" time.sleep(0.1) i = i - 1 # SCHALTER schalten if richtung == 'drive-up': print "Rolladen Kanal "+ str(px) +" hochfahren" GPIO.output(12, GPIO.LOW) print "12 Off!" time.sleep(0.1) GPIO.output(12, GPIO.HIGH) print "12 On!" time.sleep(1.4) GPIO.output(12, GPIO.LOW) print "12 Off!" # SCHALTER schalten if richtung == 'stop': print "Rolladen Kanal "+ str(px) +" stoppen" GPIO.output(13, GPIO.LOW) print "13 Off!" time.sleep(0.1) GPIO.output(13, GPIO.HIGH) print "13 On!" time.sleep(1.4) GPIO.output(13, GPIO.LOW) print "13 Off!" # SCHALTER schalten if richtung == 'drive-down': print "Rolladen Kanal "+ str(px) +" runterfahren" GPIO.output(15, GPIO.LOW) print "15 Off!" time.sleep(0.1) GPIO.output(15, GPIO.HIGH) print "15 On!" time.sleep(1.4) GPIO.output(15, GPIO.LOW) print "15 Off!" # Position in Datei schreiben data = px output = open('position.pkl', 'wb') pickle.dump(data, output) output.close() # Pin 22 auf LOW setzen GPIO.output(22, GPIO.LOW) GPIO.cleanup()
Und die noch benötigte Datei zum zwischenspeichern Namens Position.pkl:
Hoffe ihr könnt damit was anfangen und ich hoffe Tombra kann das mit dem zwischenspeichern für sich übernehmen.
Gruß
Markus
Kann mir den Script vielleicht jemand umschreiben auf eine 4 Kanal Fernbedienung habe einen ohne diesen Auswahl - Knopf und ohne LEDs. Ich bin langsam am verzweifeln für mich ist fhem und Python noch Neuland.
-
Hallo Zusammen,
ich komme leider auch nicht mehr weiter
Habe die GPIO in der jarolift.py so abgeändert:CodeGPIO23 (Pin 16) -> GPIO21 (Pin 40) (Kanal -) GPIO17 (Pin 11) -> GPIO20 (Pin 38) (Kanal +) GPIO22 (Pin 15) -> GPIO16 (Pin 36) (Taste Ab) GPIO18 (Pin 12) -> GPIO26 (Pin 37) (Taste Auf) GPIO27 (Pin 23) -> GPIO19 (Pin 35) (Taste Stop) GPIO25 (Pin 22) -> GPIO13 (Pin 33) (Block)
Doch leider bekomme ich beim Aufruf folgenden Fehler:
Code
Alles anzeigensmarthome@smarthome:~ $ sudo python /opt/fhem/jarolift.py 1 drive-up [sudo] password for smarthome: Rolladen neuer Kanal 1 Rolladen neue Richtung drive-up Traceback (most recent call last): File "/opt/fhem/jarolift.py", line 46, in <module> pkl_file = open('Position.pkl', 'rb') IOError: [Errno 2] No such file or directory: 'Position.pkl' smarthome@smarthome:~ $ sudo python /opt/fhem/jarolift.py 1 drive-up /opt/fhem/jarolift.py:10: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings. GPIO.setup(33, GPIO.OUT) Rolladen neuer Kanal 1 Rolladen neue Richtung drive-up GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert
.
.
.Hat jemand vielleicht eine Ahnung woran das liegen könnte?
Ich glaube du musst da garnichts dran verändern.
Habe zwar auch nicht so die Ahnung aber das Script schaltet nur hoch und runter.
Also von Ist 1 auf Soll 4 - 3 mal hoch schalten und von Ist 4 auf Soll 1 - drei mal runterschalten.Du legst einfach nur weniger Rollos im fhem an.
Der Eintrag "p0 = 16 -px" könnte zwar für die 16-Kanal-Fernbedienung gedacht sein, wird aber sonst weiter nicht im Script verwendet.
-
Hallo Zusammen,ich komme leider auch nicht mehr weiter
Habe die GPIO in der jarolift.py so abgeändert:CodeGPIO23 (Pin 16) -> GPIO21 (Pin 40) (Kanal -) GPIO17 (Pin 11) -> GPIO20 (Pin 38) (Kanal +) GPIO22 (Pin 15) -> GPIO16 (Pin 36) (Taste Ab) GPIO18 (Pin 12) -> GPIO26 (Pin 37) (Taste Auf) GPIO27 (Pin 23) -> GPIO19 (Pin 35) (Taste Stop) GPIO25 (Pin 22) -> GPIO13 (Pin 33) (Block)
Doch leider bekomme ich beim Aufruf folgenden Fehler:
Code
Alles anzeigensmarthome@smarthome:~ $ sudo python /opt/fhem/jarolift.py 1 drive-up [sudo] password for smarthome: Rolladen neuer Kanal 1 Rolladen neue Richtung drive-up Traceback (most recent call last): File "/opt/fhem/jarolift.py", line 46, in <module> pkl_file = open('Position.pkl', 'rb') IOError: [Errno 2] No such file or directory: 'Position.pkl' smarthome@smarthome:~ $ sudo python /opt/fhem/jarolift.py 1 drive-up /opt/fhem/jarolift.py:10: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings. GPIO.setup(33, GPIO.OUT) Rolladen neuer Kanal 1 Rolladen neue Richtung drive-up GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert GPIO blockiert
.
.
.Hat jemand vielleicht eine Ahnung woran das liegen könnte?
Ich glaube du musst da garnichts dran verändern.
Habe zwar auch nicht so die Ahnung aber das Script schaltet nur hoch und runter.
Also von Ist 1 auf Soll 4 - 3 mal hoch schalten und von Ist 4 auf Soll 1 - drei mal runterschalten.Du legst einfach nur weniger Rollos im fhem an.
Der Eintrag "p0 = 16 -px" könnte zwar für die 16-Kanal-Fernbedienung gedacht sein, wird aber sonst weiter nicht im Script verwendet.
hast du die position.pkl Datei erstellt? und die rechte angepasst? chmod 755.
ich habe es noch nicht ganz geschafft den script umzuschreiben für eine 4 kanal Fernbedienung ohne - Taste und ich bekomme auch die Rollos nicht in FHEM angesteuert.
-
Ja, die habe ich angelegt.
Wie seht der Inhalt denn bei dir genau aus?
Hast du nach dem Punkt noch Absatz gemacht?Rechte checke ich noch mal, hatte ich aber eigentlich gemacht.
Versuch das mal :chown fhem:dialout jarolift.py
-
Hallo Markus.
Kannst du mir bitte verraten woher du diese Infos von einem neuen Transreceiver hast? Gibt's vielleicht nen Thread wo drüber berichtet wird?Gruß
Michael -
Hallo,
erst mal Respekt an alle beteiligten für die Beschreibung der Projekte.
Blöderweise habe ich vor kurzem modernisiert und 2 dieser Motoren verbaut bevor ich mich jetzt für ein Smart Home System entschieden habe. Nun möchte ich aber ungern direkt wieder
die Tapete abreißen.Eine Frage zu den Lösungen hier: Ist es trotz Steuerung mittels Script möglich manuell per Fernbedienung Kanäle zu schalten/wechseln oder kommt das Script dann mit der aktuellen Position durcheinander?
Also sprint beispielsweise diese Lösung: https://github.com/Bendr0id/shutter-control immer auf Kanal 1 als Ausgangspunkt?Alternativ könnte ich sonst den TDRC 02 Wandsender nehmen, hier habe ich ja 2 Fixe Kanäle, da ich eh nur 2 entsprechende Rolläden habe.
Ich hoffe, meine Frage ist verständlich.
Vielen dank schonmal.
VG Mario
-
Hier tut sich was!!!
http://www.bastelbudenbuben.de/2017/04/25/pro…t-tdef-motoren/
-
Hallo zusammen,
ich habe noch eine umgebaute Fernbedienung (4Kanak) inkl. Relaisboard und fertigen bash Skript rumliegen. Falls Interesse besteht schreibt mir eine PN.
Bin auf ein anderes System umgestiegen, da ich mit 4 Kanälen nicht mehr auskommen.Gruß
Daniel -
Hallo Leute,
ich weiß, ich krame hier voll den alten Schinken raus. Aber ich brauche Hilfe bei der Umsetzung.
Und zwar scheitert es bei mir am Anfang bei dem elektronischen Teil. Ich habe 5 Jarolift-Motoren. Die würde ich gerne über OpenHAB steuern. Das zu programmieren kriege ich hin. Aber was muss ich hier wo anschließen?
Ich orientiere mich da an dem Post von meier81. Ich bestelle gleich den TDRC 16W Funkwandsender. Raspi mit laufendem OpenHAB und ein Set mit lauter Beuteilen (https://www.amazon.de/gp/product/B01M7N4WB6/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1&tag=psblog-21 [Anzeige]) habe ich auch schon da. Aber auf dem Bild von meier81 sind auf dem Breadboard noch zwei weitere Bauteile verbaut, mit denen ich nichts anfangen kann (siehe Bild... mit Pfeilen markiert).
Wenn ich weiß, was das ist, komme ich (glaube ich) klar soweit.
Kann mit da jemand helfen?
Viele Grüße, Michael
-
Hallo mic81,
das blaue Teil oben ist nur ein GPIO Breakout Expander (symbolischer Link) [Anzeige] und der Schaltkreis ist ein ULN2003A (Darlington Array), um die GPIO (die nur 3,3V vertragen) ungefährlich mit der Fernbedienung zu verbinden.
Gruß, STF
-
Das ging aber schnell... mit dem Schaltplan kann ich leider nicht so viel anfangen. werde mich da an die Bilder von meier81 halten.
Habe in der Zwischenzeit das hier bestellt:
und das hier:
Damit geht es doch auch oder?
-
Ja, wobei Du den Adapter ja nicht unbedingt brauchst.
-
nicht? Wieso das?
-
Der Adapter stellt die Verbindung GPIO Leiste und Breadboard her. Letzteres ist eine gute Möglichkeit, eine Schaltung zu testen, in dem Du sie darauf aufbaust, die Kabel lassen sich (um)stecken, Fehler entdecken usw. Wenn dann alles läuft, baust Du die direkte Verbindung auf, nimmst Kabel und eine Platine oder Lochraster usw., je nach Komplexität. Und dann brauchst Du den Adapter/Expander nicht (mehr).
Gruß, STF
-
Ach so... das Breadboard kommt dann weg?
Was für eine Platine nimmt man denn da?
Meinst du so etwas:
-
Genau, diese Art Lochraster geht für so kleinere Sachen. Ein wenig Löten musst Du allerdings schon können, das ist aber durchaus machbar.
-
ja cool. Vielen Dank schonmal vorab für die Infos. Ich schau mal, wie ich damit voran komme.
Ließe sich dieses Verfahren auch auf solche eine Fernbedienung anwenden:
-
Ja, sollte genau so gehen.
-
Sehr cool... Kann man das mit der Fernbedienung für die Rollläden und der Fernbedienung für die Garage an einem Raspi (über einen anderen GPIO-Pin oder so) machen oder brauche ich pro Fernbedienung jeweils einen Raspi?
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!