Dies ist eine alte Version des Dokuments!
Rolladen
Es reicht leider nicht, drauf zu achten, dass man es mit 433MHz betreiben kann, er muss auch noch einen Treiber für meinen Raspberry haben - hat er leider nicht. Doch ich werde da mal was probieren …
Fernsteuerung ist von Dooya bzw. Aldomo. Fernbedienung FB15767, Motor MT15668.
Für Pilight gibt es nichts. Für Pimatic habe ich ein Plugin pimatic-dooya gefunden.Versuche, es mal schnell anzupassen haben nicht geholfen. Gelernt habe ich, dass das Protokoll aus 4 Impulsen zusammengesetzt wird. Gesendet wird init, die ID der Fernsteuerung (28bit), dann der Kanal (4Bit) und zum Schluss hoch/runter/stop/lernen (8bit). Gefunden habe ich das auf microcontroller.net von Sebastian. Sein Code ist dort zu finden. Sicherheitshalber habe ich ihn noch hier angehängt.
Dann habe ich meinen Motor redetet und wieder angelernt. Skript 1 starten und dann schnell am Rollo den Reset-Knopf drücken. Dann wird (siehe Bedienungsanleitung) ausgeführt:
sleep 10;sudo nice -n -19 ./a 0 1 0 0 lernen; sleep 3;sudo nice -n -19 ./a 0 1 0 0 lernen; sleep 3; sudo nice -n -19 ./a 0 1 0 0 hoch
Wenn der Motor insgesamt 4 mal geruckelt hat, ist alles gut.
Danach die Endlagereinstellung. Rollo war schon so 15cm runtergefahren, also an einer Stelle ein paar Sekunden 'hochfahren' - aber Achtung.nach dem Skript ist er am Runterfahren. Also schnell zum Rechner und wenn er unten ist, die letzte Zeile eingeben.
sudo nice -n -19 ./a 0 1 0 0 lernen; sleep 3;sudo nice -n -19 ./a 0 1 0 0 hoch; sleep 3;sudo nice -n -19 ./a 0 1 0 0 lernen ;sleep 3; sudo nice -n -19 ./a 0 1 0 0 hoch;sleep 2; sudo nice -n -19 ./a 0 1 0 0 stop; sleep 2; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sleep 3; sudo nice -n -19 ./a 0 1 0 0 runter
Und wenn er unten ist:
sudo nice -n -19 ./a 0 1 0 0 stop; sleep 3;sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop; sudo nice -n -19 ./a 0 1 0 0 stop;
Ja, es klappt!
#include <wiringPi.h> #include <stdio.h> // 28 Stellen = ID // 4 Stellen = Kanal // 8 Stellen = Befehl int send_0(){ digitalWrite (0, HIGH) ; delayMicroseconds (320) ; digitalWrite (0, LOW) ; delayMicroseconds (600) ; return 0; } int send_1(){ digitalWrite (0, HIGH) ; delayMicroseconds (700) ; digitalWrite (0, LOW) ; delayMicroseconds (270) ; return 0; } int send_init(){ digitalWrite (0, HIGH) ; delayMicroseconds (5000) ; digitalWrite (0, LOW) ; delayMicroseconds (1500) ; return 0; } int main (argc, argv) int argc; char *argv[]; { int i; wiringPiSetup (); pinMode (0, OUTPUT); while (i < 10) { send_init(); i++; //ID send_0();send_0();send_0();send_1();send_1();send_0();send_1(); send_1();send_0();send_0();send_1();send_0();send_0();send_1(); send_0();send_0();send_0();send_1();send_1();send_1();send_1(); send_1();send_0();send_0();send_1();send_1();send_0();send_1(); // kanal 1 bis 128 binär if (strcmp(argv[1],"0") == 0) { send_0(); } if (strcmp(argv[1],"1") == 0) { send_1(); } if (strcmp(argv[2],"0") == 0) { send_0(); } if (strcmp(argv[2],"1") == 0) { send_1(); } if (strcmp(argv[3],"0") == 0) { send_0(); } if (strcmp(argv[3],"1") == 0) { send_1(); } if (strcmp(argv[4],"0") == 0) { send_0(); } if (strcmp(argv[4],"1") == 0) { send_1(); } // Funktion wählen if (strcmp(argv[5],"runter") == 0) { send_0();send_0();send_1();send_1();send_0();send_0();send_1();send_1();} if (strcmp(argv[5],"hoch") == 0) { send_0();send_0();send_0();send_1();send_0();send_0();send_0();send_1();} if (strcmp(argv[5],"stop") == 0) { send_0();send_1();send_0();send_1();send_0();send_1();send_0();send_1();} if (strcmp(argv[5],"lernen") == 0) { send_1();send_1();send_0();send_0();send_1();send_1();send_0();send_0();} //pause beim senden digitalWrite (0, LOW) ; delay (50) ; } return 0 ; }
aufruf geht so :
nice -n -19 ./rollo_prg 0 1 0 0 runter
Dezember 2019