Controlling Blinds.com RF Dooya Motors with Arduino and Vera
-
I hope its ok that I use this thread for my question, because the topic 'kinda fits:
does anyone know a (cheap) way to add a motor (that could be controlled by mysensor) to existing blinds? In theory you would only need a small motor I guess, but I am unsure how to connect that to the blinds.. -
Hello,
there is an other way to control your shutters.
It´s itegrated in FHEM. There are also the decryption at the shuttersignal. All 40 Bit and the explain to the 40 Bit.
sorry for my weak english.
Jarnsen
-
Hi @petewill , I've been trying to implement a similar setup to this for the past few days, however I've unfortunately been unsuccessful with the RF sniffing step. I've tried multiple RF receivers (I have a 10-pk), multiple resistors, and multiple audio cables, yet the feedback from Audacity appears the same whether I'm not doing anything or spamming the remote buttons:

Top is with nothing being pressed, bottom is with hitting buttons on the remote. Might you know of any other possible troubleshooting options I could do? If it helps, below is the remote from blinds.com:

Any advice would be appreciated. Thanks!
-
Hi @petewill , I've been trying to implement a similar setup to this for the past few days, however I've unfortunately been unsuccessful with the RF sniffing step. I've tried multiple RF receivers (I have a 10-pk), multiple resistors, and multiple audio cables, yet the feedback from Audacity appears the same whether I'm not doing anything or spamming the remote buttons:

Top is with nothing being pressed, bottom is with hitting buttons on the remote. Might you know of any other possible troubleshooting options I could do? If it helps, below is the remote from blinds.com:

Any advice would be appreciated. Thanks!
@Rantlers Sorry for the delayed reply... busy day back at work.
Hmm. Did you zoom in on the audacity waveform? I had to zoom way in. If that doesn't show anything it may be that the remotes are at a different frequency now. That looks different than mine. Is there any indication which frequency the remote is on?
Also, I was able to actually hear the signal on my speakers when I played it back. It sounded like high pitched digital noise. Do you hear anything like that?
-
@Rantlers Sorry for the delayed reply... busy day back at work.
Hmm. Did you zoom in on the audacity waveform? I had to zoom way in. If that doesn't show anything it may be that the remotes are at a different frequency now. That looks different than mine. Is there any indication which frequency the remote is on?
Also, I was able to actually hear the signal on my speakers when I played it back. It sounded like high pitched digital noise. Do you hear anything like that?
@petewill Hi Pete, thanks for the response, no worries on the delay! I zoomed in every time I created a new recording, but I could never find a distinguishing pattern like the ones you had. Funny, I did suspect that the frequency from the remote could be different so I have a 10pk of 315mhz tx/rx coming in tomorrow. I'll be rather embarrassed if its as simple as that, but pleased at the same time!
I listened to the playback in your youtube video a few times and the strange thing is it almost sounds like I'm getting static and digital noise throughout the entire recordings, regardless of whether I'm pressing buttons on the remote or not. I honestly don't know of anything that would be constantly spitting out a 433mhz signal though.
I'll post an update after I get a chance to try the new receivers.
-
@petewill Hi Pete, thanks for the response, no worries on the delay! I zoomed in every time I created a new recording, but I could never find a distinguishing pattern like the ones you had. Funny, I did suspect that the frequency from the remote could be different so I have a 10pk of 315mhz tx/rx coming in tomorrow. I'll be rather embarrassed if its as simple as that, but pleased at the same time!
I listened to the playback in your youtube video a few times and the strange thing is it almost sounds like I'm getting static and digital noise throughout the entire recordings, regardless of whether I'm pressing buttons on the remote or not. I honestly don't know of anything that would be constantly spitting out a 433mhz signal though.
I'll post an update after I get a chance to try the new receivers.
-
@Rantlers Yeah, see if you can find what frequency that remote is communicating on. There must be some specs some where on the remote.
@petewill Checking back in, have good news & bad news...
Bad News: No go on the 315mHz receivers. But that's because...
Good News: I did some research on the remote since you said you didn't recognize it and was able to find the users manual online:
According to this the RF signal is 2.4ghz (last page of the pdf). However, that being said, am I now SOL in replicating the RF sniffing step with your setup? The only 2.4ghz transceiver I was able to find is this one:
-
@petewill Checking back in, have good news & bad news...
Bad News: No go on the 315mHz receivers. But that's because...
Good News: I did some research on the remote since you said you didn't recognize it and was able to find the users manual online:
According to this the RF signal is 2.4ghz (last page of the pdf). However, that being said, am I now SOL in replicating the RF sniffing step with your setup? The only 2.4ghz transceiver I was able to find is this one:
@Rantlers Dang! That's too bad. Are the blinds blinds.com brand or Hunter Douglas? I just want to make sure they didn't use a similar remote style but change the frequency.
The NRF24 is what most of use for these projects so it might not be bad to order some to test. I'm not an expert on radio though so it may not be as easy to "sniff" the signal. I know @Yveaux has built a sniffer but that may only work for the MySensors network. Sorry I can't be more help!
-
@Rantlers Dang! That's too bad. Are the blinds blinds.com brand or Hunter Douglas? I just want to make sure they didn't use a similar remote style but change the frequency.
The NRF24 is what most of use for these projects so it might not be bad to order some to test. I'm not an expert on radio though so it may not be as easy to "sniff" the signal. I know @Yveaux has built a sniffer but that may only work for the MySensors network. Sorry I can't be more help!
-
Are you sure you have the economy shades? Ive noticed they have disappeared from Blinds.com, or at least I don't see them anymore.
-
Are you sure you have the economy shades? Ive noticed they have disappeared from Blinds.com, or at least I don't see them anymore.
@jfeger said:
Are you sure you have the economy shades? Ive noticed they have disappeared from Blinds.com, or at least I don't see them anymore.
I just confirmed with Blinds.com online chat that the economy blinds aren't available anymore, or at least for now. They stated there was a defect in the motors, so they had to pull the product and work on a redesign. No timeline on a release.
-
Thanks!!! this was such a great help in getting my dooya blinds from aliexpress working over network.
I couldn't get the test code above to work and my sequence was 40 bits, so i modified the code quite a bit and made it much more efficient. Here is the code if anyone needs to test their code on arduino.
//Define Variables #define SEND_DATA 4 //Data pin for RF Transmitter #define ZERO_HIGH 363 //Delay for the high part of a 0 in microseconds #define ZERO_LOW 726 //Delay for the low part of a 0 in microseconds #define ONE_HIGH 726 //Delay for the high part of a 1 in microseconds #define ONE_LOW 363 //Delay for the low part of a 1 in microseconds void setup() { // put your setup code here, to run once: Serial.begin(9600); String code = "1100111101000001000111011011000100010001"; // Change your blinds code here Serial.println(code); Serial.println(); for (int i=0; i <= 10; i++) { int delayTime; for(int k=0;k<40;k++) { //Change k max value here (40) is mine char code1 = code.charAt(k); int highTime; int lowTime; delayTime = ((int) code1) -48; // 48 is zero in ASCII, so 48-48 = 0 as a number. if (delayTime == 1){ highTime = ONE_HIGH; lowTime = ONE_LOW; } else { highTime = ZERO_HIGH; lowTime = ZERO_LOW; } digitalWrite(SEND_DATA, HIGH); delayMicroseconds(highTime); digitalWrite(SEND_DATA, LOW); delayMicroseconds(lowTime); } Serial.println(); Serial.print("Round:"); Serial.print(i); Serial.println(); delay(50); } } void loop() { } -
Please help me,
My remote is dooya. And sniff code:
10000011 01000010 01001001 11100001 00110011 pause
10000011 01000010 01001001 11100001 01010101 up
10000011 01000010 01001001 11100001 00111100 downI had use USB Saleae Analyzer sniff code.
But not work, :(

-
Please help me,
My remote is dooya. And sniff code:
10000011 01000010 01001001 11100001 00110011 pause
10000011 01000010 01001001 11100001 01010101 up
10000011 01000010 01001001 11100001 00111100 downI had use USB Saleae Analyzer sniff code.
But not work, :(

-
Please help me,
My remote is dooya. And sniff code:
10000011 01000010 01001001 11100001 00110011 pause
10000011 01000010 01001001 11100001 01010101 up
10000011 01000010 01001001 11100001 00111100 downI had use USB Saleae Analyzer sniff code.
But not work, :(

@かいと The pattern for the control may have changed...? Because you have a recording of the remote I would try to record what you are sending with your transmitter and compare the waveform of the two devices. They should be identical. That is how I ended up figuring out the exact timing needed for my motors.
-
Hi guys,
I realise that this is quite an old thread, but i found it a useful source of info when looking for a solution for my 433MHz problem, so I thought I'd share some of my findings...We have a holiday home in Spain and it has some external 'awnings' that extend over the windows to provide shade from the sun. In Spain these are called Toldos. They operate using tubular motors controlled using 433MHz remote controls – one remote for each awning, three in total. I'd tried all the regular methods to sniff the 433MHz protocol, but none of the standard Arduino libraries would even acknowledge that the remote was sending out any sort of signal. Other remotes, such as garage door openers, PIR detectors etc work fine with my sniffer, so the hardware/software I was using is good.
I eventually resorted to using my sound card and Audacity software to capture the transmissions from the remote controls and this work surprisingly well (I'd tried every digital approach you can imagine up to this point, including a logic analyser, and was reluctant to try the analogue approach but wish I’d trued it earlier).
What I discovered is that when I press either the UP or the Down buttons on the remote, it transmits a timing pulse followed by 40 bits of data. At first I thought that this sequence was repeated 8 times, but I eventually realised that one 40-bit code was used for the first 4 repetitions of the data, followed by a different code for the next 4 repetitions. I later realised that whenever one of these buttons is pressed, the initial 40 bit code is transmitted continuously then the other code is transmitted 4 times when the button is released. When the button is pressed quickly I just get the 'Pressed' code 4 times followed by the 'Released' code 4 times.
The Stop button works slightly differently - only one code is used and this is transmitted at least 4 times and will continue to be transmitted as long as the button is pressed. (in other words, the Stop button has a 'Pressed' code, but not a 'Released' code).It's actually the 'Pressed' code for each button that controls the awnings. The 'Released' code doesn't seem to serve any function with my awnings.
These 'Released' codes really confused me to begin with, as I when I checked two different bursts of data from the same button using Audacity, I was getting different results. This was obviously because on one occasion I’d picked one of the ‘Pressed’ codes to analyse, but on the second occasion I’d inadvertently analysed a ‘Released’ code. At first I’d thought the analogue capture process was unreliable, but then I thought that maybe some sort of rolling code system was being used. I eventually realised what was going on, but not until I'd spent quite a bit of time cursing the remote control and the PC.
I was able to replicate the transmitted code fairly accuracy using a version of @peashooter's code (thanks!) and this worked well
I’m repeating the ‘Pressed’ code 4 times and it seems to work very reliably.As well as being able to control the awnings using an Arduino/ESP8266 transmitter, I also wanted to be able to use the existing handheld remotes, so to be able to understand the current position of each awning I needed a way of receiving the commands from the remotes and using them to keep track of each individual awning. This bought me back to the original problem of not being able to find a way to listen to the 433MHz messages from the remotes using any of the current Arduino libraries.
In started delving into the idea of modifying the RC-Switch library, now that I knew the timing characteristics of the signals. At that point I stumbled across this small library:
https://github.com/bjwelker/Raspi-RolloIt has an Arduino sketch that is written to identify the codes that are being transmitted by remote controllers for blinds, so that these codes can then be used to control the blinds using a Raspberry Pi.
When I ran the Arduino sketch it immediately produced results from my Awning remotes – If only I’d found this earlier!
The results it gives are in a “Quad Bit” format, but when I modified the code to print out the raw received codes they were identical to the results I’d obtained from Audacity.
I’m not interested in using a Pi to transmit the codes to the blinds, and this wasn’t needed anyway, as using @peashooter's code I already had a transmission solution. I’m now in the process of fine-tuning the code that tracks each blind’s position based on the commands that are sent from either the hand-held remotes or my transmitter. The position is simply based on time between the start and stop transmissions and the known time that it takes to fully extend each awning.The primary reason for wanting to control the awnings is that when it gets windy, I want to be able to automatically retract them. I’m using data from a weather station to monitor the wind speed and if it meets the criteria (very strong winds for a short period, or not quite so strong winds for a slightly longer period, then the awnings will be retracted (assuming that they’re extended of course). I’m also automatically retracting them when it gets dark, as it’s easy to forget to do this and a bit cumbersome to walk around and do all three awnings using the separate hand-held remote controls.
Here’s some pictures of one of the remotes:




The brand name on the remote is Gaviota and the circuit board says “Designed by D Team” “DC104/105” “V2.1” and “No.DA288”.
Here are what the awnings look like:

I have no idea what the brand name is on the tubular motors, as they’re hidden inside the mechanism.
Hopefully this saves someone at least some of the pain that I’ve been through to get to this point.Pete.
-
I recently figured out how to control my Blinds.com motorized cellular shades (http://www.blinds.com/control/product/productID,97658) with my Vera 3. The blinds have Dooya DV24CE motors (which use a 433 MHz RF for remote control) built into them but I couldn't find any already built RF transmitter that integrated directly with the Vera. I had recently started building Arduino sensors with Henrik's amazing MySensors Arduino Sensor Plugin (http://www.mysensors.org) so I decided to try to build my own. Thanks to many helpful resources on the internet I was able to control my blinds for less than $20 in Arduino parts.
Here is a link to a YouTube video with an overview of the process: http://youtu.be/EorIqw-9eJw
Here is a pdf with more info on the process if you are interested in doing it yourself:
Controlling Blinds.com RF Dooya Motors with Arduino and Vera.pdfArduino Code MySensors Version 2.x:
https://gist.github.com/petewill/ac31b186291743e046f83497de0ffa87And the Arduino Code (OLD CODE):
BlindsVera.ino2020-12-06: Edited to add updated code
@petewill
Great guide.
I stumbled upon this when I realised that my Debel awning was using a Dooya motor and remote.I did not use your cool system with the soundcard to sniff the RF codes, but instead used my RTL-SDR usb receiver, since I already had it laying around 😀
After finding the codes I programmed an Arduino with it and connected it to my OpenHAB installation. Now the awning can be controlled with the OpenHAB app, and my wife just loves it 😀
Just wanted to point it out for others looking for RF codes for Debel awnings.
-
@petewill
Great guide.
I stumbled upon this when I realised that my Debel awning was using a Dooya motor and remote.I did not use your cool system with the soundcard to sniff the RF codes, but instead used my RTL-SDR usb receiver, since I already had it laying around 😀
After finding the codes I programmed an Arduino with it and connected it to my OpenHAB installation. Now the awning can be controlled with the OpenHAB app, and my wife just loves it 😀
Just wanted to point it out for others looking for RF codes for Debel awnings.
-
I recognize this is an old post, but I've not found any newer discussion and I have hit a roadblock. I've followed all of the very helpful posts to build a sniffer and decode it as tools like RCSwitch wouldn't work. I even used @PeteKnight 's tip to notice there was a different code sent initially when a button was pressed. I've tried sending both versions, emulating the initial (timing?) signal at the start. I tweaked the high and low delays and I think I've got a rf signal that is extremely close to the one from the remote. Here are the two different sources in audacity for comparison.
//Define Variables #define GND 3 #define VCC 4 #define DATA 5 //Data pin for RF Transmitter #define ZERO_HIGH 307 //Delay for the high part of a 0 in microseconds #define ZERO_LOW 750 //Delay for the low part of a 0 in microseconds #define ONE_HIGH 648 //Delay for the high part of a 1 in microseconds #define ONE_LOW 409 //Delay for the low part of a 1 in microseconds int startUp = 1; unsigned char standardBits1 = 0b00001111; //integer value of the 28 bit standard sequence referenced above. "0b" prefix is for ******* unsigned char standardBits2 = 0b01111100; unsigned char standardBits3 = 0b01100100; unsigned char standardBits4 = 0b00000001; unsigned char standardBits5 = 0b00011110; void setup() { pinMode(GND,OUTPUT); pinMode(VCC,OUTPUT); pinMode(DATA,INPUT); digitalWrite(GND,LOW); digitalWrite(VCC,HIGH); Serial.begin(9600); } void loop() { unsigned char i; delay(3000); if(startUp ==1){ for(i=0;i<10;i++) { delay(1000); digitalWrite(DATA, HIGH); delayMicroseconds(5000); digitalWrite(DATA, LOW); delayMicroseconds(1500); eightBits(standardBits1); eightBits(standardBits2); eightBits(standardBits3); eightBits(standardBits4); eightBits(standardBits5); startUp = 0; } } } void eightBits(unsigned char bits){ unsigned char k; int delayTime; for(k=0;k<8;k++) { int highTime; int lowTime; delayTime = ((bits>>(7-k)) & 1 ? 1 : 0); if (delayTime == 1){ highTime = ONE_HIGH; lowTime = ONE_LOW; } else { highTime = ZERO_HIGH; lowTime = ZERO_LOW; } digitalWrite(DATA, HIGH); delayMicroseconds(highTime); digitalWrite(DATA, LOW); delayMicroseconds(lowTime); } }Here are all the codes I was able to extract from audacity for one of the blinds.
Down1: 00001111 01111100 01100100 00000001 00111100
Up1: 00001111 01111100 01100100 00000001 00011110
Stop1: 00001111 01111100 01100100 00000001 01010101
Start1: 00001111 01111100 01100100 00000001 00010001
Does anyone have an idea of what I might still be missing in getting this work?
