===== Rolladen ===== Verdunkelungsrollo mit Akku betriebenem Motor und Fernsteuerung mit 433MHz bei [[https://www.amazon.de/gp/product/B07X4H9YQ8/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1|Amazon]] für 120€, das günstigste das ich gefunden habe. 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 [[https://pimatic.org/|Pimatic]] habe ich ein Plugin [[https://github.com/codedealer/pimatic-dooya|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 [[https://www.mikrocontroller.net/topic/242784#4352187|dort]] zu finden. Sicherheitshalber habe ich ihn noch hier angehängt. Dann habe ich meinen Motor resettet 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 #include // 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