Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update rc-switch #313

merged 1 commit into from Nov 15, 2018


None yet
4 participants
Copy link

commented Nov 15, 2018

As the RF gateway is the most used gateway of OMG how do you think we can assure other users this change will not generate regressions on their side?

To be honest we cant assure.
ive tested this repo with my esp32 & esp8266 devices and it works fine & stable (tested only with RF).
Other things we can do is:

  • static code analysis (Im not good enough developer , so it looks like it will be your job :) )
  • deploy changes as next beta version and ask users for feedback.

This comment has been minimized.

Copy link

commented Nov 15, 2018

let's try it before the release!

@1technophile 1technophile added this to the V0.9 milestone Nov 15, 2018

@1technophile 1technophile merged commit 5d01071 into 1technophile:master Nov 15, 2018

1 check was pending

continuous-integration/travis-ci/pr The Travis CI build is in progress
@@ -695,7 +831,118 @@ void RECEIVE_ATTR RCSwitch::handleInterrupt() {
repeatCount = 0;

RCSwitch::timings[changeCount++] = duration;
// заносим в массив длительность очередного принятого импульса
if (changeCount > 0 & duration < 100) { // игнорируем шумовые всплески менее 100 мкс

This comment has been minimized.

Copy link

johnou Dec 17, 2018


@animavitis shouldn't this be if (changeCount > 0 && duration < 100) {

This comment has been minimized.

Copy link

animavitis Dec 17, 2018

Author Contributor

It looks like it should :)
thanks for catching this

This comment has been minimized.

Copy link

johnou Dec 17, 2018


👍 #330

This comment has been minimized.

Copy link

johnou Dec 17, 2018


@animavitis if I wanted to add support for Cardin, how would I go about it given the new format of the protocols? Unfortunately I do not understand the Russian comments. I took a dump of the remote using Audacity.

This comment has been minimized.

Copy link

animavitis Dec 17, 2018

Author Contributor

I switched to this version of rc-switch cause it have a lot more protocols and it works out of the box with my devices :)

To find new protocol u can use this:

Just open it in arduino, build & deploy, then open serial console and check if your protocol or RAW code is logged.

This comment has been minimized.

Copy link

johnou Dec 18, 2018


@Martin-Laclaustra I'm having trouble interpreting the results, could I trouble you for your expertise? I noticed you have a few branches which seem promising ie. sending raw timing values.

This comment has been minimized.

Copy link

johnou Dec 18, 2018


@Martin-Laclaustra I also tried your transmittimingsarray branch to send the raw values but that didn't work so I'm at a bit of a loss..

This comment has been minimized.

Copy link

Martin-Laclaustra Dec 18, 2018

Sorry, I do not have plenty of time. I skimmed the code and tried to understand what is this all about (I inferred: accommodating long codes and double sync bits). Russian comments do not help. I will just comment about code correctness: "&&" (logical operator) seems what has to be used in that line instead of "&" (bitwise operator). I cannot tell anything about the function of the whole code.

This comment has been minimized.

Copy link

johnou Dec 18, 2018


@Martin-Laclaustra thanks for the reply, tagging you in a comment of this pull request was perhaps not the best place. I am essentially trying to duplicate my Cardin gate remote transmission so I can automate it, I have created a circuit to record 433mhz to my pc with Audacity which was a success but I had trouble with the freq and timings, I then found and your transmittimingsarray branch which seemed promising, I took the average of the raw values high and low then passed them into the send method but no dice, I was hoping to work out the protocol to add it directly into RCSwitch.cpp but I am having trouble understanding some rf lingo and working out the correct values based on the capture. I am attaching it here in the hope you might have a few spare minutes to check it out.


button 1



button 2



This comment has been minimized.

Copy link

Martin-Laclaustra Dec 18, 2018

I only have some generic tips:

  1. For starters stick with only one button. Forget the rest until you have that cracked.
  2. Get "loads" of data with SimpleRcScanner. Tweak the sketch in "SAMPLESIZE 500" to as much as your chip ram memory can hold. Think of 2000 - 5000. Press the button steadily during all the capture time.
  3. Inspect data manually. Replace "," with newlines. Separate "trains of pulses" identifying syncs. I could see in your data some starting with 10000+8000 and others with 15000+2000. Paste all trains identified (in order) in consecutive columns in a spreadsheet. That will allow to: a) get the length of the pulses; b) compare them; c) find a repeating pattern.
  4. Use transmittimingsarray for a sequence as long as you need so you repeat your whole pattern (several trains together).

I looked at your "on". Two very similar trains starting with 10000+8000, followed by a third 10000+8000 with some differences (capturing errors?), followed by 3 repeats of equal trains 15000+2000, and after that a start of one 10000+8000 which was truncated. You need more data. But you will have to look at it yourself. Search for the repetition of patterns.
You can easily compare columns with this formula: =SQRT(VAR(A1:B1)). Values under 25 could be considered for equality. Use your judgement.

johnou added a commit to johnou/OpenMQTTGateway that referenced this pull request Dec 17, 2018

Fix compile error
Introduced with 1technophile#313

@johnou johnou referenced this pull request Dec 17, 2018


Fix compile error #330

1technophile added a commit that referenced this pull request Dec 17, 2018

ettiennegous added a commit to ettiennegous/OpenMQTTGateway that referenced this pull request May 24, 2019

Master (#1)
* ESPilight support

Support for ESPilight - only recieve at the moment

* Adjustments for sending Pilight messages including RAW messages

Considering a RAW receive handler

* Fixup callback and loop for Pilight - catches all messages per loop

* Update Test_config.h

* Added ESPilight libs

* change default DHT pin for ESP32

following user feedback pin 16 works and 35 doesn't works

* correct impossibility to read value with HM10

1technophile#281 and make the code more flexible (deduct an offset from a key value instead of fixed offset)

*  Increased size of mqtt_pass to char[30]  (1technophile#288)

* Increased size of mqtt_pass to char[30]

* modified test_config.h too

* Fixed typo and added a little formatting (1technophile#290)

* Introduced WifiManager_ssid variable and documented user_config.h (1technophile#289)

* Commented user_config.h to clarify usage of WifiManager

* Introduced WifiManager_ssid variable

* Added changes to Test_config.h too

* multi gpio input module (1technophile#278)

* GPIOKeyCode module added

* Add Home Assistant MQTT room presence support (ESP32 only) (1technophile#294)

* Add Home Assistant MQTT room presence support

ESP32 only

* Publish refactoring (1technophile#298)

* factoring of the publishing function
* integration of json publishing to MQTT
* receiving and transcode json messages from mqtt
* replace the TRACE runtime condition by a buildtime one so as to decrease program size
* remove retainFlag parameter not necessary for the moment
* Increase the scope of tests for arduino mega and esp32
* Update arduinojson library to 5.13.3
* add macros to choose between simple or json publishing or both
* differentiate build test for ATmega2560
* correct wrong sprintf definition
* change IDE version for continuous integration
* let default warning level in arduino ide
* correct pins for ESP32
* reorganize user_config

* remove unecessary variable and PilighttoMQTT call

* Update

* remove redundant code for home presence (1technophile#303)

* correct duplicate comments and code

* fix ESP32 ble (1technophile#304)

* remove redundant code for home presence

* hopefully fix ESP32 BLE hangs

* basic support for duplicate detection when JSON publishing is active

* correct double variable declaration and use arduino json implicit cast

* Update ZgatewayRF2.ino (1technophile#309)

Small fix for dimming with JSON payload.
switchType 0 OFF
switchType 1 ON
switchType 2 DIM
"switchType": 2,
"adress": "26494598",
"unit": 10,
"dim": 8

* correct sonoff rf bridge issue not communicating with RF module


* update rc-switch (1technophile#313)

* more repeatSRFBwMQTT macro to pertinent config file


* Update contributor list

* Add images

* add missing macro

* update esppilight lib

content of the library is not filtered on 433mhz only

* Mqtt discovery (1technophile#320)

* add mqtt discovery (compatibile with home assistant) with omg status binary sensor & bme280 sensor

* added mqtt discovery to Test_config.h for ESP32 (ESP8266 & other boards was not tested)

* include support for ESP8266 & arduino mega

* fix getting MAC for esp8266

* esp8266 fix

* make mqtt discovery functions functions more generic, readable and easy to use & extend

* make mqtt discovery functions functions more generic, readable and easy to use & extend PART 2

* remove the macro for each attribute and supposing that if there is a bme280 we expose all

* remove unecessaries files from pilight lib

* move MQTT_MAX_PACKET_SIZE to pubsubclient library

* per default deactivate mqtt ha discovery

* wdt tip add and presence detection improvments

-improve distance measurement
-add wdt prevent tip
-add conditional macro haroompresence

* Mqtt discovery for ha (1technophile#323)

* MQTT discovery factoring

* add DHT discovery

* BME topic macro change

* add sensors to ha discovery

* correct a comment typo 1technophile#327

* let the possibility at buildtime to don't publish service data

* reduce string usage

* change MQTT ONOFF actuator to ON OFF commands instead of true false

* add ZactuatorONOFF discovery

* add simple publishing for GPIO input

* Add RF switch and gateway discovery

* fix typo mistake


* Fix compile error (1technophile#330) on rcswitch

Introduced with 1technophile#313

* Default pin for ESP8266 should be RX (1technophile#332)

* code cleanup and improvment (1technophile#339)

* replace string by char array comparison

* take mac adress from user_config for arduino ethernet shield

* remove code for managing HM10 with version < v6xx

* add sys measure call for arduino mega

* code size decrease and optim

* differentiate receiving and publishing mqtt for the new json option in user_config.h

1technophile#318 so as to avoid user with non modified controllers to have regression on receiving (per default receiving is activated for both json and simple and prioritary analysed for json)

* Storevalue after pub to avoid duplicates publishing in slow environment

* add per default Irremote protocol for arduino mega

as the mega can handle the list without memory issue (contrary to the uno)
set default mega pinout

* set default protocol with to IR NEC when no protocol is set on json

* differentiate ON OFF pin depending on board

* remove cleanFS macro and correct reseting when mqtt fail at start

clean FS now available from Arduino IDE tools menu (erase flash)

* add some image ressources

* add wifimanager config portal timeout

1technophile#350 in case of power outage so as to avoid to pop up the web page before the mqtt server restart

* add specific pinout for RF on arduino mega

* traces improvements, and code refactoring (RF315)

* enable the link between OMG status and its components

enable to have the link between OMG status and its sensors/gateways on the same place for HASS

* Update OpenMQTTGateway.ino

* put RF EMITTER PIN according to doc

* Update

* Update IRRemoteESP8266 version to 2.5.5
factorize IR send signal function between the 2 types of receiving
Add new IRRemoteESP8266 protocols
replace pins on mega according schema
remove unecessaries spaces

* Update ESPilight library to 0.16.0

tfa protocol
kerui protocol

* Enable to switch HM1X led by a macro

if //#define HM_BLUE_LED_STOP true uncommented
the HM1X led is off

* add log output through mqtt

//#define subjectTRACEtoMQTT Base_Topic Gateway_Name "/log" //uncomment if you want to see traces on /log topic

* change default pin for rf receiver on ESP32

13 seems to don't work

* Add LORA gateway

first implementation of a lora gateway integration, tested on ttgo heltec boards with embedded lora module 1technophile#356
Sending and receiving working

* Update

* Update

* add LORA gateway parameters

following lora api library def

* a first try for mi flora and mi jia auto discovery on hass


* add LORA gateway auto discovery

* Some memory optimization for Arduino UNO following this thread:
Rework led management to avoid use of global variables
and specify special JSON_MSG_BUFFER for arduino UNO
led can now be used for all the boards

generalize use of F macro
for memory optimization
change jsonbuffer calculation method
reduce pubsubclient max packet size for uno and nano

* Update

* no need of going >67 as the code can handle only unsigned long at this time

* Add "repeat" field to RF JSON messages. (1technophile#372)

* update pubsubclient release to 2.7

* update irremote ESP8266 to 2.5.6

* publish discovery for sensors BLE once per run, add ble white and black list
Avoid publishing auto discovery on a time basis
publish auto discovery only one time per BLE sensor
add BLE white and black list implementation
set black list
mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoBT/set -m '{"black-list":["012314551615","4C6577889C79","edfrgtyjulik"]}'
set white list
mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoBT/set -m '{"white-list":["012314551615","4C65A5553C79","edfrgtyjulik"]}'

* remove optimistic and retain flag from auto discovery


and add some json buffer size to avoid identifier lost

* correct json buffer size optimizations

* correct switch between modes raw versus message + protocol and add raw error codes (1technophile#374)

has been discussed here:

* Add pilight repeater function

#define repeatPilightwMQTT true
into config_RF.h to activate it

* add comment for sonoff rf bridge IR add

* Separate list of contributors for main file reading improvment

add also missing contributors

* correct deduplication issue with SRFB and improve OMG performance

by reducing the receivingMQTT call numbers

* Correct return always false when using HM10 and return number instead of char array for sensors values

* add message if wrong pubsubclient library used

* correct isue with using a different receiver with RFM69 than the default and ack issue

1technophile#376 1technophile#375

* revert thigh and tlow for sonoff rf bridge SRFBtoMQTT


* correct wrong json object name

* change actuator default assignment

* change default input gpio pin

* add comment for sonoff pin

* Prepare 0.9.1 release

* Add LORA to functions schema
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.