From 3c2b2017c0f0980da0dcfeeb524b184309724991 Mon Sep 17 00:00:00 2001 From: Lazar Obradovic Date: Mon, 12 Mar 2018 14:23:28 +0100 Subject: [PATCH 1/7] Buttons should not retain in MQTT --- code/espurna/button.ino | 2 +- code/espurna/mqtt.ino | 28 +++++++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/code/espurna/button.ino b/code/espurna/button.ino index 657cc197..cd94082d 100644 --- a/code/espurna/button.ino +++ b/code/espurna/button.ino @@ -27,7 +27,7 @@ void buttonMQTT(unsigned char id, uint8_t event) { if (id >= _buttons.size()) return; char payload[2]; itoa(event, payload, 10); - mqttSend(MQTT_TOPIC_BUTTON, id, payload); + mqttSend(MQTT_TOPIC_BUTTON, id, payload, false, false); // 1st bool = force, 2nd = retain } #endif diff --git a/code/espurna/mqtt.ino b/code/espurna/mqtt.ino index b7814b3d..ea53f7af 100644 --- a/code/espurna/mqtt.ino +++ b/code/espurna/mqtt.ino @@ -484,18 +484,24 @@ String mqttTopic(const char * magnitude, unsigned int index, bool is_set) { // ----------------------------------------------------------------------------- -void mqttSendRaw(const char * topic, const char * message) { +void mqttSendRaw(const char * topic, const char * message, bool retain) { + if (_mqtt.connected()) { #if MQTT_USE_ASYNC - unsigned int packetId = _mqtt.publish(topic, _mqtt_qos, _mqtt_retain, message); + unsigned int packetId = _mqtt.publish(topic, _mqtt_qos, retain, message); DEBUG_MSG_P(PSTR("[MQTT] Sending %s => %s (PID %d)\n"), topic, message, packetId); #else - _mqtt.publish(topic, message, _mqtt_retain); + _mqtt.publish(topic, message, retain); DEBUG_MSG_P(PSTR("[MQTT] Sending %s => %s\n"), topic, message); #endif } } + +void mqttSendRaw(const char * topic, const char * message) { + mqttSendRaw (topic, message, _mqtt_retain); +} + void mqttFlush() { if (!_mqtt.connected()) return; @@ -567,7 +573,7 @@ void mqttEnqueue(const char * topic, const char * message) { } -void mqttSend(const char * topic, const char * message, bool force) { +void mqttSend(const char * topic, const char * message, bool force, bool retain) { bool useJson = force ? false : _mqtt_use_json; @@ -585,20 +591,28 @@ void mqttSend(const char * topic, const char * message, bool force) { // Send it right away } else { - mqttSendRaw(mqttTopic(topic, false).c_str(), message); + mqttSendRaw(mqttTopic(topic, false).c_str(), message, retain); } } +void mqttSend(const char * topic, const char * message, bool force) { + mqttSend(topic, message, force, _mqtt_retain); +} + void mqttSend(const char * topic, const char * message) { mqttSend(topic, message, false); } -void mqttSend(const char * topic, unsigned int index, const char * message, bool force) { +void mqttSend(const char * topic, unsigned int index, const char * message, bool force, bool retain) { char buffer[strlen(topic)+5]; snprintf_P(buffer, sizeof(buffer), PSTR("%s/%d"), topic, index); - mqttSend(buffer, message, force); + mqttSend(buffer, message, force, retain); +} + +void mqttSend(const char * topic, unsigned int index, const char * message, bool force) { + mqttSend(topic, index, message, force, _mqtt_retain); } void mqttSend(const char * topic, unsigned int index, const char * message) { From 869a4c91a033d913ba1913447af5b3cf4eb08b06 Mon Sep 17 00:00:00 2001 From: gn0st1c Date: Wed, 14 Mar 2018 10:09:06 +0300 Subject: [PATCH 2/7] typo png to jpg --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9870bb54..6c48c469 100644 --- a/README.md +++ b/README.md @@ -210,7 +210,7 @@ Here is the list of supported hardware. For more information please refer to the |**Arilux AL-LC11 (RGBWWW) & RF**|**MagicHome LED Controller (1.0/2.x)**|**Huacanxing H801/802**| |![Itead Sonoff SV](images/devices/itead-sonoff-sv.jpg)|![Itead 1CH Inching](images/devices/itead-1ch-inching.jpg)|![Itead Motor Clockwise/Anticlockwise](images/devices/itead-motor.jpg)| |**Itead Sonoff SV**|**Itead 1CH Inching**|**Itead Motor Clockwise/Anticlockwise**| -|![Jan Goedeke Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.png)|![Jorge García Wifi + Relays Board Kit](images/devices/jorgegarcia-wifi-relays.jpg)|![EXS Wifi Relay v3.1](images/devices/exs-wifi-relay-v31.jpg)| +|![Jan Goedeke Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.jpg)|![Jorge García Wifi + Relays Board Kit](images/devices/jorgegarcia-wifi-relays.jpg)|![EXS Wifi Relay v3.1](images/devices/exs-wifi-relay-v31.jpg)| |**Jan Goedeke Wifi Relay (NO/NC)**|**Jorge García Wifi + Relays Board Kit**|**EXS Wifi Relay v3.1**| |![Wemos D1 Mini Relay Shield](images/devices/wemos-d1-mini-relayshield.jpg)|![Witty Cloud](images/devices/witty-cloud.jpg)|| |**Wemos D1 Mini Relay Shield**|**Witty Cloud**|| @@ -235,4 +235,4 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file +along with this program. If not, see . From bf3f73f6cdc83d62e26c3442bd7fffb5a37ae907 Mon Sep 17 00:00:00 2001 From: gn0st1c Date: Wed, 14 Mar 2018 16:56:34 +0300 Subject: [PATCH 3/7] supported devices update supported devices update --- README.md | 37 ++++++++++++-------- images/devices/intermittech-quinled-2.6.jpg | Bin 0 -> 29399 bytes images/devices/lingan-swa1.jpg | Bin 0 -> 10675 bytes images/devices/mancavemade-esp-live.jpg | Bin 0 -> 9630 bytes images/devices/maxcio-15a.jpg | Bin 3633 -> 0 bytes images/devices/xenon-sm-pw702u.jpg | Bin 0 -> 25933 bytes images/devices/yidian-16a.jpg | Bin 6180 -> 0 bytes 7 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 images/devices/intermittech-quinled-2.6.jpg create mode 100644 images/devices/lingan-swa1.jpg create mode 100644 images/devices/mancavemade-esp-live.jpg delete mode 100644 images/devices/maxcio-15a.jpg create mode 100644 images/devices/xenon-sm-pw702u.jpg delete mode 100644 images/devices/yidian-16a.jpg diff --git a/README.md b/README.md index 6c48c469..0d3f92d1 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,9 @@ It uses the Arduino Core for ESP8266 framework and a number of 3rd party librari [![twitter](https://img.shields.io/twitter/follow/xoseperez.svg?style=social)](https://twitter.com/intent/follow?screen_name=xoseperez) --- - -> **2018-05-09**: Default branch in GitHub is now the development branch "dev". The stable branch (the one used to create the binaries) is "[master](https://github.com/xoseperez/espurna/tree/master)". +> **2018-03-09**:
+> * Default branch in GitHub is now the development branch "dev".
+> * The stable branch (the one used to create the [binary releases](https://github.com/xoseperez/espurna/releases)) is "[master](https://github.com/xoseperez/espurna/tree/master)". --- @@ -60,7 +61,7 @@ It uses the Arduino Core for ESP8266 framework and a number of 3rd party librari * **Sonoff RF Bridge** support * Multiple virtual switches (tested with up to 16) * MQTT-to-RF two-way bridge (no need to learn codes) - * Support for https://github.com/Portisch/RF-Bridge-EFM8BB1 custom firmware + * Support for [https://github.com/Portisch/RF-Bridge-EFM8BB1](https://github.com/Portisch/RF-Bridge-EFM8BB1) custom firmware * Support for [different **sensors**](Sensors) * Environment * **DHT11 / DHT22 / DHT21 / AM2301 / Itead's SI7021** @@ -134,7 +135,9 @@ It uses the Arduino Core for ESP8266 framework and a number of 3rd party librari ## Notices --- -> **2018-05-09**: Default branch in GitHub is now the development branch "dev". The stable branch (the one used to create the binaries) is "[master](https://github.com/xoseperez/espurna/tree/master)". +> **2018-03-09**:
+> * Default branch in GitHub is now the development branch "dev".
+> * The stable branch (the one used to create the [binary releases](https://github.com/xoseperez/espurna/releases)) is "[master](https://github.com/xoseperez/espurna/tree/master)". --- > **2018-01-24**: This repository has been migrated from Bitbucket to GitHub. There were a number of reason to migrate the repository to GitHub. I like Bitbucket and I'm still using it for a lot of projects, but ESPurna has grown and its community as well. Some users have complain about Bitbucket not being enough community-focused. This change is mainly aimed to use a platform with greater acceptance on the open-source community and tools better suited to them (to you), like the possibility to contribute to the documentation in an easy way. @@ -194,31 +197,37 @@ Here is the list of supported hardware. For more information please refer to the |**Itead Sonoff 4CH**|**Itead Sonoff 4CH Pro**|**OpenEnergyMonitor WiFi MQTT Relay / Thermostat**| |![Itead S20](images/devices/itead-s20.jpg)|![WorkChoice EcoPlug](images/devices/workchoice-ecoplug.jpg)|![Power meters based on V9261F and ECH1560](images/devices/generic-v9261f.jpg)| |**Itead S20**|**WorkChoice EcoPlug**|**Power meters based on V9261F and ECH1560**| -|![Schuko Wifi Plug](images/devices/schuko-wifi-plug.jpg)|![KMC 70011 /w power meter](images/devices/kmc-70011.jpg)|| -|**Schuko Wifi Plug**|**KMC 70011 /w power meter**|| +|![Schuko Wifi Plug](images/devices/schuko-wifi-plug.jpg)|![KMC 70011](images/devices/kmc-70011.jpg)|![Xenon SM-PW702U](images/devices/xenon-sm-pw702u.jpg)| +|**Schuko Wifi Plug**|**KMC 70011**|**Xenon SM-PW702U**| +|![Maxcio W-US002S](images/devices/maxcio-w-us002s.jpg)|![HEYGO HY02](images/devices/heygo-hy02.jpg)|![YiDian XS-SSA05](images/devices/yidian-xs-ssa05.jpg)| +|**Maxcio W-US002S**|**HEYGO HY02**|**YiDian XS-SSA05**| +|![WiOn 50055](images/devices/wion-50055.jpg)|![LINGAN SWA1](images/devices/lingan-swa1.jpg)|![Tonbux PowerStrip02](images/devices/tonbux-powerstrip02.jpg)| +|**WiOn 50055**|**LINGAN SWA1**|**Tonbux PowerStrip02** |![Itead Sonoff Touch](images/devices/itead-sonoff-touch.jpg)|![Itead Sonoff T1](images/devices/itead-sonoff-t1.jpg)|| |**Itead Sonoff Touch**|**Itead Sonoff T1**|| |![Itead Slampher](images/devices/itead-slampher.jpg)||| |**Itead Slampher**||| |![Itead Sonoff B1](images/devices/itead-sonoff-b1.jpg)|![AI-Thinker Wifi Light / Noduino OpenLight](images/devices/aithinker-ai-light.jpg)|![Authometion LYT8266](images/devices/authometion-lyt8266.jpg)| |**Itead Sonoff B1**|**AI-Thinker Wifi Light / Noduino OpenLight**|**Authometion LYT8266**| -|![Itead Sonoff LED](images/devices/itead-sonoff-led.jpg)|![Itead BN-SZ01](images/devices/itead-bn-sz01.jpg)|| -|**Itead Sonoff LED**|**Itead BN-SZ01**|| +|![Arilux E27](images/devices/arilux-e27.jpg)|![Itead Sonoff LED](images/devices/itead-sonoff-led.jpg)|![Itead BN-SZ01](images/devices/itead-bn-sz01.jpg)| +|**Arilux E27**|**Itead Sonoff LED**|**Itead BN-SZ01**| |![Arilux AL-LC01 (RGB)](images/devices/arilux-al-lc01.jpg)|![Arilux AL-LC02 (RGBW)](images/devices/arilux-al-lc02.jpg)|![Arilux AL-LC06 (RGBWWCW)](images/devices/arilux-al-lc06.jpg)| |**Arilux AL-LC01 (RGB)**|**Arilux AL-LC02 (RGBW)**|**Arilux AL-LC06 (RGBWWCW)**| |![Arilux AL-LC11 (RGBWWW) & RF](images/devices/arilux-al-lc11.jpg)|![MagicHome LED Controller (1.0 and 2.x)](images/devices/magichome-led-controller.jpg)|![Huacanxing H801/802](images/devices/huacanxing-h801.jpg)| |**Arilux AL-LC11 (RGBWWW) & RF**|**MagicHome LED Controller (1.0/2.x)**|**Huacanxing H801/802**| +|![InterMitTech QuinLED 2.6](images/devices/intermittech-quinled-2.6.jpg)|| +|**InterMitTech QuinLED 2.6**|| |![Itead Sonoff SV](images/devices/itead-sonoff-sv.jpg)|![Itead 1CH Inching](images/devices/itead-1ch-inching.jpg)|![Itead Motor Clockwise/Anticlockwise](images/devices/itead-motor.jpg)| |**Itead Sonoff SV**|**Itead 1CH Inching**|**Itead Motor Clockwise/Anticlockwise**| |![Jan Goedeke Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.jpg)|![Jorge García Wifi + Relays Board Kit](images/devices/jorgegarcia-wifi-relays.jpg)|![EXS Wifi Relay v3.1](images/devices/exs-wifi-relay-v31.jpg)| |**Jan Goedeke Wifi Relay (NO/NC)**|**Jorge García Wifi + Relays Board Kit**|**EXS Wifi Relay v3.1**| -|![Wemos D1 Mini Relay Shield](images/devices/wemos-d1-mini-relayshield.jpg)|![Witty Cloud](images/devices/witty-cloud.jpg)|| -|**Wemos D1 Mini Relay Shield**|**Witty Cloud**|| +|![ManCaveMade ESP-Live](images/devices/mancavemade-esp-live.jpg)|![Wemos D1 Mini Relay Shield](images/devices/wemos-d1-mini-relayshield.jpg)|![Witty Cloud](images/devices/witty-cloud.jpg)| +|**ManCaveMade ESP-Live**|**Wemos D1 Mini Relay Shield**|**Witty Cloud**| +||| +|**YJZK 2-gang switch**|**STM_RELAY**|| **Other supported boards:** -WiOn 50055, ManCaveMade ESP-Live, InterMitTech QuinLED 2.6 -Arilux E27 light bulb, Xenon SM-PW702U, YJZK 2-gang switch -STM_RELAY, Maxcio W-US002S, HEYGO HY02, YiDian XS-SSA05 +*TODO* ## License @@ -235,4 +244,4 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program. If not, see . +along with this program. If not, see . \ No newline at end of file diff --git a/images/devices/intermittech-quinled-2.6.jpg b/images/devices/intermittech-quinled-2.6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c491b932a82968325562f485386955bf935e53d GIT binary patch literal 29399 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 O{C^Ij|G!-M2m4>J#@7`9 literal 0 HcmV?d00001 diff --git a/images/devices/lingan-swa1.jpg b/images/devices/lingan-swa1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..122a69678f1017d7d98ad84ce21808c1105e5f21 GIT binary patch literal 10675 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 literal 0 HcmV?d00001 diff --git a/images/devices/mancavemade-esp-live.jpg b/images/devices/mancavemade-esp-live.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfe3b379e32461279deb6d95557407db7b565151 GIT binary patch literal 9630 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�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 literal 0 HcmV?d00001 diff --git a/images/devices/yidian-16a.jpg b/images/devices/yidian-16a.jpg deleted file mode 100644 index 1f36b69c249262a255741f6187d043f07fcb9060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6180 zcmb7I1yq&6w*F~Q5IBdHJRG{aJEWySQd&|%kdp2`aA*YSI5Yx+h@^*ZDFFc~krpH* z-qHKkee11z?_2Bb|DQc;_UxJc{j>JW`sTlzzgq=})Ra|~0W>rKP(eMw-4`GNz{0@9 z#KgctDJ(23Y#e-C9F!2=zmJDcOb7xI6A}}H$*9S}Bvhot#1sq^R5UbnbaY^H2oypK zrKY8$MMDk4!Nz%ji~E3Ugkhd*1%rCTbDwXUY z3wRtI`7U{?MmUINj|m9y_xC%ueLcIW0Wby*Bs-&Qt+zC`90Zayw(Ll24+ECYLeK-} z$`^k4UJUcAW`jV9jxW7C`%gcx1JXtfJKkqpGYB=Xv`E4B@sW2sHT5g$X!2hN+s*R; z9Y>O-Gk=M!Vjb+7czFKXw}H*vo3+!R0$U)k&S-I8z%I2b#g{IxO=9^rNbB%<;BB;ITHeM06Mmr^R^!{W7p%m zC*xZ(ria~}>IDxquC6l0ew_l3(|-KUJG~y<3aX|Hmoc~ll$he-N3Uqj-5uIzkZrQ~ z*O`QE^KC&k$nTruYr!*jK#)CgLo;3LpoLf9Gu+9X1Q$K|q6RzaMV@7zIo319S|%2VO8Hcq$QJH*#F4aU|d^ z5ExC~IszWL*83G)^F1phyU}FSBj6MWETF3!AsqV}+Zlc%vJZmjg7jmP{X+;PHiM#b zssam;FN4cG@w3UG4U8g701h&M`XmI8GMzMy*?+mf9Z;YBd0CZ#s}7Gv_9MF!czC3) zP`Nn!({D@EgF#bCaQ4yy5Z%K>Wfg$=MwaA%<<7rrpesj&Oc2YW zxa|8VKMD2pV`HxQYp9cQ5V>i|Vf`Go^Q!ZBQm@KR+^aW-2 z`<1e$%n7#SvO=6uSp(c56RJj(SQGFn98v79`-)o_hHL=z-%lEh!b0{hPyjUazfds# z4=9+GvH%_x9FDG}4p51qA=#cTz$r8YAPDJN0kFHC0vJyP$Vgb< z{96n-C|s*U)_-dIBBZH%>L?`*{@>>bnhe_QWM1)g2Hkf? zcyP+@dP6N&+U&#iWtta<@rWP~iS@nl*UA^26hAAzlFxk1*Rb?l@#6~`_M2?SKW)uB zlPh6r-`+t+*fk?iy7ZQAG8wPov)2nMgZyIHnqkM{x1Q0<^uus<#t}pyGaP3r*y&+` zTH~7-*A20p+CwmV6|Hx7u6F$UW#9K7w(-sLf5yclIz3F+cec$@s+)z%lio_HZcfl(Q29KTCPo!B_6p+P3sShyYN>b!GqQE{f{zycln&WDc&0CAH*x2 zX_zhTX1#kq!{`38!umX*lDuiz_=Cmn)%t0G_E+*;q&^;tcNq^ks^AF4bdb-+cboej z`Tgihxp0R%og^@u)G*%{qQ=2j|L8hm7~D#I2WWk0;I8KVIp8RS(2}bKS-yOLiOb)s zR`g5xqnX9dUi@4+Yic7DGU8|zIiq|QDs<<6*FKMUF zRzgFEt0LM_jD$F2;WWl`(8Z7Pbe}@nv!IqBYrg)*y66tL0%MPIY6mq;e*7Kr>e{#^ z&htqys5$tpm_rM9!rPqB$98!#z4z9r`ah{w_PfAd?nb)9Y#1Tm!9Pj6*B~J$rX{2& zqyZWdJ?0Pc7RBLSPhA2G?ybouPs&d@I4#}*@E{TYUbuRQX*81d2@9QS_h_pi2eeAC`tJN~IXIi zn~(bVjo`>Zp=wdfzj~iJt9$&hWr}(ApdudaWc4b5)Vav#wE_W z>YXX*Mu#Nqsjt=$1Pwm3WUM|Ua@D4(b&kn)+SO5%J84aS7len;6k=I?{6VsLD@*y= zCyK1^b1mdqH87q@eC0cU%EARdYwpT!KXQx1R{box3YhRykuC2Mge>zAiQ`l|*XYi-&+h?U{ z{2&nj;sga&D^@>I2*i0fDW=K&*3-??t#V~C@YfnpV|hS2Rw|WP51h@BrF|DFvx*L& zwx63#yPcTXb=%3vaT)ID=+bobT1RM&G+0uuiwk#sqIh|~>dXC63DoCo+)PCO^iRG6 zNP?&J-O;W{CNCJzKM$@gTNdC>Up`creYbj2XrpOWm;Z6)lSaj;MwQMzHak-DnKT{f zhO9WRl~lTO1QV;8c0@!eq@<7$ph?lyN@YhtjmD~~sn$IWD%gZC z$`D$}UYPc#iOTfX%#SHg9m?GVHzKzwEF2d=H*_oq;W7jIp1~c68=*(QK3f&P^~x;F+9@6N{7$- z?ncbEY2smvdalo^(!RJ3HgZsTrj(oKgES>cK)H4mR#lunnz|&Wp2I4ts)m4fRi`9H zbgJQS46UxpnG)^$QX0+!b$jh#TiL;StI!r4hZkttfV|(3$tgJe{cXO=_sK*t(exav zqy$e#c7DSYHUT*`+|i29B;F6%7+n1eRa>gsKU-+nC+W9+u*WaXB5Ecbe(k-+y2yL( z5?9})QnyE~Romnxx9uop*#aP#<%;-Ez|+Mv8~MHZ9D==+`P^1pxqk0+EAKsaVc>3s zSxpvwMf-}TJ~g-B&CM}{M~B0G0btIgU_RjLcy_}^vH8<}+2srojb+d)me+2Pl3r9X z_Z@GJ+jEb3!JacZvdYum)j9!xU^sk~EaS(an21uyQGu9*s(|veqpQ`X3B>B{;vzz+ z{__`LE}G7W#;nYJth}+qo10sYtCOD^o2DmjEh#y(_sck>Z!`N@0dkDt9@XwWqh<&* zYg-x7;_R|rki0vLjE_lb%|6!d*R)gNb1%po_CQ88Z-}OSwPg6f{zigM?BnTI)ZX-? zD+VglaK*;`(g87LTnB+n+ZU$rVol+61_taec?`mk)$?J6N#5l+lUe*l_f^T>vmUTh zh>%ACSW=h5-b_3MIWFLytve-_bd?~G9fSB}>CN>fjYL+*)vdz7&ExQGrU|QImJ7*G zQn+;#e?#rP3H}<1)y}S=U1>OFo6f=h4XeOO`0_L@F??cenU*+n((M(P{7OsNLOR0I zS*+0uXEJIj*GpJ+@;F9=Y}=4mFv8Vxfnc&!%bfXj>jfi(lNG>o5 z%@o3^i#W6z$dyn3M4A{{7wJFey!z>MM56$nj5X}2hjfmTBxNcs@~Q4BhCcc*-O*LN z5&a=|8C_T3Hp6)b7qpj<&>}^QhD%BGdWHA2q-nU-<4vh^e2?A;GmqHg-O*PRps8<+ z1cb7(jt#K42O+@V9S}E;;z68506IDvIu<56I_ie>moA|ZGw{jj5LtPI!U`L@CwY(P zWwqCi-9!G#ZHR8eyX`V;!|=g9!<>z%7neTO_laGG93}ygkaOK7nRj(Or@qBO!3F7WQjS3S#4Vqq!>MVnAJRVRP7c@Qt0jz5F8&e< z>o!hPfO|8~_CxtUK$<4cFSBl~ggWt@LkqfmS1%wcfrHH8BefrWNS-0+)nGxNFuPFR z+4gdghX3Fxrk^7@g3biv4tVQ^Xd46YXZcxZK%Sx$Ixvr3wc_Wr6rr^(n?JGo2fs!2%qFDUp92gMmg9DE5*`&@XeIixw+wEU674BMJV$sk0t_k%tN>UoHBCpB% zn;6^XqJnp-KEb`%Z(`Nugkcz4HW-dGiQ|1>fdk>q*kJ)|nFYbBD=^#qmYCeL=eWk# z(cuz#!SuZoZQ7g!q;Ek@w#x0x5W0crH@EcEoS=u&tSOhYeg*s4n#_$7W*th z-iv)OvW0^VsI(F$8D)bk4;;_)ZL%W=Z#^PxL^leN~9YglO}L{J9FcVT&HuLJfS zpYl#gL(#;yrKPs;HYUs^d6*6ldUHTxMTXizd+J);lH2rB@W4cLYO}rnaX4Rh*Qjmf z)`g(!rYhT5mf{@4DaZ3uam(s=iCA7jA&o037v%Magz_a0tkOt!lP1>QrKI9ZQsyT^ zm?dq-+S8CWD3U}IOO+Jbfvab@Q7K$`GD@5m%LvmFt9?f~*fk~U&E-^BUaTNag?C@k z1nNiz7YDy*QqQvEw4>dHeq^@c@bPa*w%VAE+~3GC$yivFUKidSds2JET|D?^%GqAE zjGU=6Kp;haUS{i2!FAHsZ;jn3?`%OZ4@PXN z{l@h-Pbxt(+weJVE|u1|rn1QFycz$ljH&+Dw&gv(Ab2v(hy-&(=%UhDkl77>bh$mk zMh9&E$*k|>+%jb_jiC}DoIZj)P;GiM*M{#mh~-VN^W{V!fPgvG+N4H_Z^moq#l3XW zj$}fwb`qt>FAS)%Wi6L82TIlO$-XKSHoDPU;_UKwkl1!e$mm@uPmr)vLgQZH(XJ^j zC)u#Y)hY0AKB(;bF?}-H;es^uH?)!coRmF)G+Fa6^g1YiqicgoxGYsCWN6PmEfW?fv9Z)((>#c z`LNp~p?+M8J^$R+F{ z$SU#c6>V;E{bdD-lMsHK6&4w5EUK?LV0;|tcDgGRf!g99qVy$Vz{Cl?4l%+42 z3%n&49z2EQcHL~Ud{CS{>fB2)6PfvwBeo>jLd`R>W95`0w7|ib&LyA(n2#T^sGga9aIZi}UoJca)rIH1yM-9Fr)@z8q zG%2)~Js9Ccq=29n65Im#q;p=oe-;YMGHp>`8$=O+Hw{L@2GZ z;Ywo&Si2xkLs{8kqJn#CmW|&TwGXGaydjQOQXumAUb2;94eKX8ds0!6T`3=NdQ~@# zn@5*6o9yo^ob!szb(Hq(7DN5kN-2~YWq*hWZVKtlJgqq)hf>mO^G3LtDB~8+VeiDx z2ku0`NaUN$Cx_i^y}&aKyKO0LSyxJKDLJ8w%7P8eh9U!+79?ladkN%%^*dHuu#z-9 zhzJk*;G(bKG^86eFeS>POIxgTMg=XbA~JC*mxDG63Ca)C^1pC-ar$bc zAFTbHv8jWVg+4vVxRWBIdpAEJOVRGP^7_zfMu~+Ab?abU41b#CW|@8xUjA#fB}ZlD zaxTeOJFM!$$iPKPgG2e(O~tU%MYGq}q??}5xflwrwqjAo=ycL-B;CjUI zMpz10x)@iSKGj%Tj_&gllZrvnJ?O5t>vgQjYlHmcfeYS8MOod@Y{6r}f@!x8WH3-h`Y@Sak5Qb9mKeYQ{?M)e`5lKwOhk_k;&o@> z`^&P>(a>aotKRdNn3xC#TzLpFjn0KUf#z)56wzk;(2;S@3F=;u<$tnl7w;I|$~A}R zV-^d3X(FW)Nc&@Icm5jO&!(meFJ;q0+WXjD7W}7}^t?n2vV88KzcEpGWPt0F%&{Zm zWx?vwKND2%?Ny^nJKKw*%p4v2Ti*=Vlc;wp{M8E_RY PQAmj*6cw+>?-u?Gn3uXL From 5dafb02cbfa795c9fbffde8dd95930805c1332f0 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 14 Mar 2018 23:58:26 +0300 Subject: [PATCH 4/7] Resize checkboxes only when they are visible --- code/html/custom.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/html/custom.js b/code/html/custom.js index d423a801..577b4029 100644 --- a/code/html/custom.js +++ b/code/html/custom.js @@ -559,9 +559,9 @@ function toggleMenu() { function showPanel() { $(".panel").hide(); - $("#" + $(this).attr("data")).show(); if ($("#layout").hasClass("active")) { toggleMenu(); } - $("input[type='checkbox']"). + $("#" + $(this).attr("data")).show(). + find("input[type='checkbox']"). iphoneStyle("calculateDimensions"). iphoneStyle("refresh"); } @@ -674,9 +674,13 @@ function addSchedule(event) { }); $(line).find(".button-del-schedule").on("click", delSchedule); $(line).find(".button-more-schedule").on("click", moreSchedule); - var ena = $(line).find(":checkbox"); - ena.prop("checked", false).iphoneStyle("refresh"); line.appendTo("#schedules"); + + $(line).find("input[type='checkbox']"). + prop("checked", false). + iphoneStyle("calculateDimensions"). + iphoneStyle("refresh"); + return line; } From 04fa014bdef5d554d2717970bc17ba6fb07d3d16 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Thu, 15 Mar 2018 11:43:17 +0300 Subject: [PATCH 5/7] use native selectors for checkboxes --- code/html/custom.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/html/custom.js b/code/html/custom.js index 577b4029..655e257c 100644 --- a/code/html/custom.js +++ b/code/html/custom.js @@ -701,7 +701,7 @@ function initRelays(data) { $(".id", line).html(i); $("input", line).attr("data", i); line.appendTo("#relays"); - $(":checkbox", line).iphoneStyle({ + $("input[type='checkbox']", line).iphoneStyle({ onChange: doToggle, resizeContainer: true, resizeHandle: true, @@ -1083,7 +1083,7 @@ function processData(data) { var sch_value = schedule[key]; $("input[name='" + key + "']", sch_line).val(sch_value); $("select[name='" + key + "']", sch_line).prop("value", sch_value); - $(":checkbox[name='" + key + "']", sch_line). + $("input[type='checkbox'][name='" + key + "']", sch_line). prop("checked", sch_value). iphoneStyle("refresh"); }); From e7f7df54b34ca4a8ee8b9b7960b8a0bc1cee6d26 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Thu, 15 Mar 2018 11:48:13 +0300 Subject: [PATCH 6/7] using faster "prop" method to find checked element --- code/html/custom.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/html/custom.js b/code/html/custom.js index 655e257c..b2e90172 100644 --- a/code/html/custom.js +++ b/code/html/custom.js @@ -161,9 +161,9 @@ function validateForm(form) { function getValue(element) { if ($(element).attr("type") === "checkbox") { - return $(element).is(":checked") ? 1 : 0; + return $(element).prop("checked") ? 1 : 0; } else if ($(element).attr("type") === "radio") { - if (!$(element).is(":checked")) { + if (!$(element).prop("checked")) { return null; } } From 4ebdae6131e5c63243a83037840314b75a4b195a Mon Sep 17 00:00:00 2001 From: Ly Minh Phuong Date: Thu, 15 Mar 2018 19:03:40 +0700 Subject: [PATCH 7/7] Export max system check for build configuration --- code/.gitignore | 1 + code/espurna/config/general.h | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/.gitignore b/code/.gitignore index 1d66a1d5..28fb16ac 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -7,3 +7,4 @@ core_version.h .pioenvs .piolibdeps .DS_Store +.python-version \ No newline at end of file diff --git a/code/espurna/config/general.h b/code/espurna/config/general.h index 2f90bed4..b0f30c0d 100644 --- a/code/espurna/config/general.h +++ b/code/espurna/config/general.h @@ -61,8 +61,8 @@ #ifndef SERIAL_RX_PORT #define SERIAL_RX_PORT Serial // This setting is usually defined - // in the hardware.h file for those - // boards that require it + // in the hardware.h file for those + // boards that require it #endif #ifndef SERIAL_RX_BAUDRATE @@ -139,8 +139,10 @@ #endif #define SYSTEM_CHECK_TIME 60000 // The system is considered stable after these many millis +#ifndef SYSTEM_CHECK_MAX #define SYSTEM_CHECK_MAX 5 // After this many crashes on boot // the system is flagged as unstable +#endif //------------------------------------------------------------------------------ // EEPROM