Benutzer-Werkzeuge

Webseiten-Werkzeuge


rolladen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
rolladen [2019/12/21 22:19] – angelegt varnholtrolladen [2019/12/22 15:32] (aktuell) varnholt
Zeile 1: Zeile 1:
 ===== Rolladen ===== ===== 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 ... 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:
 +<code>
 +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
 +</code>
 +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.
 +<code>
 +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
 +</code>
 +Und wenn er unten ist:
 +<code>
 +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; 
 +</code>
 +
 +Ja, es klappt!
 +
 +-----
 +
 +<code>
 +#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 ;
 +}
 +</code>
 +aufruf geht so :
 +<code>
 +nice -n -19 ./rollo_prg 0 1 0 0 runter
 +</code>
  
 Dezember 2019 Dezember 2019
rolladen.1576966753.txt.gz · Zuletzt geändert: 2019/12/21 22:19 von varnholt