===== 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