Benutzer-Werkzeuge

Webseiten-Werkzeuge


rolladen

Rolladen

Verdunkelungsrollo mit Akku betriebenem Motor und Fernsteuerung mit 433MHz bei 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 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 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 <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

rolladen.txt · Zuletzt geändert: 2019/12/22 15:32 von varnholt