-
Notifications
You must be signed in to change notification settings - Fork 663
Specific protocols
I recently purchased a patio/ terace glass roof with automatic, electronic rollershutters from Tuinmaximaal. The vendor of the rollershutters is Gumax and they did not offer any integration into smart home. I have been using this series of articles to identify the protocol and codes to open, close and halt the rollershutters. Below some bullet points to consider when you are in the same situation
-
The motors of the rollershutters are from vendor Gumax, the remote appears to be a model with name AC127-16 433.92MHz transmitter, similar to the ones offered on following websites
-
Gumax/ Tuinmaximaal uses a 65 bit code so you will need to amend the RCSwitch library (.h and .cpp) as described by Martin but with the RCSWITCH_MAX_CHANGES to 130 but in addition
-
You will need to change RCSwitch.cpp to use an long long 1 integer(1LL) for the bit shift mechanism, see below
In this function `void RCSwitch::send(unsigned long long code, unsigned int length) {` Change this line `if (code & (1L << i))` to this line `if (code & (1LL << i))`
-
Following codes applied for my Gumax control:
-
Close all roller shutters (CC on the remote):
Binary: 10100011011010101011100011001001111111111111111101000011001011001 Decimal: 23550854706872878681
-
Halt all roller shutters (CC on the remote):
Binary: 10100011011010101011100011001001111111111111111100100011000011001 Decimal: 23550854706872862233
-
Open all roller shutters (CC on the remote):
Binary: 10100011011010101011100011001001111111111111111100001011111101001 Decimal: 23550854706872850409
-
Use the send function with the decimal value and the length to send the code:
mySwitch.Send(23550854706872850409,65);
-
Following protocol worked for me
static const RCSwitch::Protocol customprotocol = { 296, { 17, 2 }, { 1, 2 }, { 2 , 1 }, false }; mySwitch.setProtocol(customprotocol); mySwitch.setRepeatTransmit(15); // Open CC (all) // 10100011011010101011100011001001111111111111111100001011111101001 mySwitch.send(23550854706872850409,65);
I made it work with my Gumax, but had some issues. The long long is a 64 bit variable and the actual bitstream from the remote is 65. For me some codes worked and some it did not as the MSB (bit 65) was random. I made a quick and dirty fix as the MSB on my remote was for all the possible codes one. I changed RCSwitch.cpp and send aways a one when the counter is at 64 (bit nr 65). This is not a really professional solution but it works for me:
if (i == 64) this->transmit(protocol.one);
RCSwitch.cpp line 511:
for (int i = length-1; i >= 0; i--) {
if (i == 64)
this->transmit(protocol.one);
else if (code & (1LL << i))
this->transmit(protocol.one);
else
this->transmit(protocol.zero);
}
PS. I was not able to get the receiver working and used a digital scope to count the bits by hand. The codes were for me different than described above.