From a7d6a11b3ba0005dbf0e4cb2ab65913e0d7e7d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Fri, 10 Feb 2017 10:09:34 +0100 Subject: [PATCH] Added support for Jorge Garcia's Wifi+Relays Board Kit --- README.md | 6 ++-- code/espurna/config/arduino.h | 2 +- code/espurna/config/hardware.h | 24 ++++++++-------- code/platformio.ini | 27 ++++++++++++++++-- .../jorgegarcia-wifi-relays-board-kit.jpg | Bin 0 -> 35514 bytes 5 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 images/devices/jorgegarcia-wifi-relays-board-kit.jpg diff --git a/README.md b/README.md index 1b026242..cb301092 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,8 @@ For more information please refer to the [ESPurna Wiki](https://bitbucket.org/xo ## Supported hardware +Here is the list of supported hardware. For more information please refer to the [ESPurna Wiki Hardware page](https://bitbucket.org/xoseperez/espurna/wiki/Hardware). + |||| |-|-|-| |![IteadStudio S20](images/devices/s20.jpg)|![IteadStudio Slampher](images/devices/slampher.jpg)|![IteadStudio Sonoff 4CH](images/devices/sonoff-4ch.jpg)| @@ -62,8 +64,8 @@ For more information please refer to the [ESPurna Wiki](https://bitbucket.org/xo |**IteadStudio Sonoff RF**|**IteadStudio Sonoff SV**|**IteadStudio Sonoff Touch**| |![Wemos D1 Mini Relay Shield](images/devices/d1mini.jpg)|![Electrodragon Relay Board](images/devices/electrodragon-relay-board.jpg)|![WorkChoice EcoPlug](images/devices/workchoice-ecoplug.jpg)| |**Wemos D1 Mini Relay Shield**|**Electrodragon Relay Board**|**WorkChoice EcoPlug**| -|![JanGoe Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.png)|![OpenEnergyMonitor WiFi MQTT Relay / Thermostat](images/devices/mqtt-relay.jpg)|| -|**JanGoe Wifi Relay (NO/NC)**|**OpenEnergyMonitor WiFi MQTT Relay / Thermostat**|| +|![JanGoe Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.png)|![OpenEnergyMonitor WiFi MQTT Relay / Thermostat](images/devices/mqtt-relay.jpg)|![Jorge García Wifi + Relays Board Kit](images/devices/jorgegarcia-wifi-relays-board-kit.jpg)| +|**JanGoe Wifi Relay (NO/NC)**|**OpenEnergyMonitor WiFi MQTT Relay / Thermostat**|**Jorge García Wifi + Relays Board Kit**| ## License diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index 437148c3..0279717b 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -27,8 +27,8 @@ //#define ECOPLUG //#define WIFI_RELAY_NC //#define WIFI_RELAY_NO -//#define ESPURNA //#define MQTT_RELAY +//#define WIFI_RELAYS_BOARD_KIT //-------------------------------------------------------------------------------- // Features (values below are non-default values) diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index 74796a3a..de011a40 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -228,7 +228,8 @@ #define LED1_PIN_INVERSE 0 // ----------------------------------------------------------------------------- -// JanGoe Wifi Relay (https://github.com/JanGoe/esp8266-wifi-relay) +// JanGoe Wifi Relay +// https://github.com/JanGoe/esp8266-wifi-relay // ----------------------------------------------------------------------------- #elif defined(WIFI_RELAY_NC) @@ -262,20 +263,19 @@ #define RELAY2_PIN_INVERSE 0 // ----------------------------------------------------------------------------- -// ESPurna board (still beta) +// Jorge García Wifi+Relays Board Kit +// https://www.tindie.com/products/jorgegarciadev/wifi--relays-board-kit +// https://github.com/jorgegarciadev/wifikit // ----------------------------------------------------------------------------- -#elif defined(ESPURNA) +#elif defined(WIFI_RELAYS_BOARD_KIT) - #define MANUFACTURER "TINKERMAN" - #define DEVICE "ESPURNA" - #define BUTTON1_PIN 0 - #define BUTTON1_RELAY 1 - #define BUTTON1_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH - #define RELAY1_PIN 12 - #define RELAY1_PIN_INVERSE 0 - #define LED1_PIN 13 - #define LED1_PIN_INVERSE 0 + #define MANUFACTURER "JORGE_GARCIA" + #define DEVICE "WIFI_RELAYS_BOARD_KIT" + #define RELAY1_PIN 0 + #define RELAY1_PIN_INVERSE 1 + #define RELAY2_PIN 2 + #define RELAY2_PIN_INVERSE 1 // ----------------------------------------------------------------------------- // WiFi MQTT Relay / Thermostat diff --git a/code/platformio.ini b/code/platformio.ini index 0a9f665e..d60fd530 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -89,7 +89,7 @@ extra_script = pio_hooks.py build_flags = -g -Wl,-Tesp8266.flash.1m128.ld -DDEBUG_PORT=Serial -DSONOFF upload_speed = 115200 upload_port = "192.168.4.1" -upload_flags = --auth=Algernon1 --port 8266 +upload_flags = --auth=fibonacci --port 8266 [env:sonoff-dht22-debug] platform = espressif8266 @@ -119,7 +119,7 @@ extra_script = pio_hooks.py build_flags = -g -Wl,-Tesp8266.flash.1m128.ld -DDEBUG_PORT=Serial -DSONOFF -DENABLE_DS18B20=1 upload_speed = 115200 upload_port = "192.168.4.1" -upload_flags = --auth=Algernon1 --port 8266 +upload_flags = --auth=fibonacci --port 8266 [env:sonoff-pow-debug] platform = espressif8266 @@ -140,7 +140,7 @@ extra_script = pio_hooks.py build_flags = -g -Wl,-Tesp8266.flash.1m128.ld -DDEBUG_PORT=Serial -DSONOFF_POW upload_speed = 115200 upload_port = "192.168.4.1" -upload_flags = --auth=Algernon1 --port 8266 +upload_flags = --auth=fibonacci --port 8266 [env:sonoff-dual-debug] platform = espressif8266 @@ -318,3 +318,24 @@ build_flags = -g -DDEBUG_PORT=Serial -DMQTT_RELAY -DENABLE_DS18B20=1 upload_speed = 115200 upload_port = "192.168.4.1" upload_flags = --auth=fibonacci --port 8266 + +[env:wifi-relays-debug] +platform = espressif8266 +framework = arduino +board = esp01_1m +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +extra_script = pio_hooks.py +build_flags = -g -DDEBUG_PORT=Serial -DWIFI_RELAYS_BOARD_KIT + +[env:wifi-relays-debug-ota] +platform = espressif8266 +framework = arduino +board = esp01_1m +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +extra_script = pio_hooks.py +build_flags = -g -DDEBUG_PORT=Serial -DWIFI_RELAYS_BOARD_KIT +upload_speed = 115200 +upload_port = "192.168.4.1" +upload_flags = --auth=fibonacci --port 8266 diff --git a/images/devices/jorgegarcia-wifi-relays-board-kit.jpg b/images/devices/jorgegarcia-wifi-relays-board-kit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a73a90697eb6b43d4a725dfc18693aad9a051877 GIT binary patch literal 35514 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 z≥Vk7Zv{3B7gC6sR;(EZ*3}SrQ%D4y2>I*%PEZQ=2y4NApBPv$gAe+*HA%`|snH zhl5KWd=D$5RJ@u`hF76A+v}df*r(JAh2HO40X>#CipL0bM6QOOKy%I zfYe#M)e}Vf7tG!;e6H+HpZ&0iwW}0O?t7+{O~xJ5+1p=0?nyJ>`6sc@&HUQR>C^n3 z99S&mG5+d9cvF!*OD_dq+Rq6)e%kCDxBaybdo>I_y_4NE_}JE0yFLxPH~~Rlfp@U=o(f-!Zs&d+rcU3R4}C-_t(Py^US!A{phmxhAR zU0D11Yd`~IX6m!(Eh#D#O*Nb?rR#pD$3V`T)P&z|UP6AAV1DZjyf1;dC*N8R7uRyWSeTuG5T9OpRbEADCKGxr(jto*@z(A|31 z*EV=;Bz5?mOo_+Pvap`$lmUOFxPGAS5$_3K#)X$~cD!s4KrOU5bDDlPDb#@(Tq>>I zpBOfZkqf$OgcR#LM)26mp?MjmxV0b;>%kj@C>vl?TR+nVw6yXH#J%Bg+37>*%YOZm zI@tj0{h^OV3ZRGsZe)4(GjTmwv%Lx;*U80c`FYiAXKp`?cu32>k=pFq9c};?@C6%1 zxDi0Xgr_0EVb+RUOAwpxN>}^IfXGR$>hezNF2A}ZyjJ8z0=lwCc1HPi8I(w=0nhod zid6gOQNg978Q0Gun)gGB2%$vs&g{I~3!!FeMW+eDb)_dABEG0`DcvVyw`o(*VeP~G zKCWMkw-bK*7b&AY8cbzs?QjRad$_<-;(9Fzz%A7+K^&rHq1T0M@$2MI1Bo%m#C_59 zgk8|d2G>#xAw0{Ao?s+zJjX^HQ#Xk_j^?xRT>aqW8&h2VqrpdX=ng?dh}(Uw!Gc`7 z;>1gf{d>6@=XJ=EGMn!);Je?~f1!+m`E_%B-$=&0z5fl#_`RoiQJjD-2RuXuhHK-70_FDdyqs|T z1yn0i_Z~S0Z@n8LYz=?Ek&W*GUnl7|b8=%9VN*rN|O^Uy&ncsxgR74-GF_rHG>&54tus~AylJhPR^bM3ggl=Fp z+;$3R6y_hgFv81jC%jB(ubm)AS6z@-oGrBQ+jE6oWcNG*Qz8w=1igBWW`xM+UwJu< z5euT8%|f`tg;N5P5qlpcEIxELn=AGCi$8SN8>s~%_kC$J7xBO8l+O{x!g{_Dm*pp* zx->uH;@d|cWg2@*=ip{#XaP8bT1GhY<}a5-5_9Pl6N-0J%3i;jJ~~eXGx2Yttc1G^ z>ywX8I4JMs0R*x@3aXKEO1dD=ZEwpE)+ z_XcrUYdYtX2^6-0fjX$7dtpgkUT=33G{1LlXWAadb!yQjD3mvIEqHNB1`DGCEV!~l zmvq0B+bTsdZD%&Z#z(;{p|iHzL{bqLT!(+l|EdDE<5~(>+PRmdsTG93dVC*YlY%6T zpP^adZorW82wg(muEDCs5~kxf-biBRqw@U=n8qrnLO|A!sze3z9l<>QQLhla%fdcb z_?9Y8N{wR=v`mGPcJ#h4#(jMlz0HyVh+Gegn>$tuA3I z02`-n1y3FyAYlS*kvP$vwNyqpOQ4?$fuD96l7~U&Q6Z5}=MD_c{>nw~Ynwi%uK5#R zUFL7=-(A0oqO6iN`#|Nj*`MEdM!9^Go^;*g-UF4vSRvno)vw+N2o3QV_bY-AJ77y3 z6*HUc^n5Y&!Snh0a-_dh4w@P(mU}OJD~n$E66j+p;7-MU;E-e5L&^9Hh>BHT)LTZ~ z+IDzbF{M;3wXnzHmVi&DaLT{B#UP~~J!*2lQKoG>6;D(}mPcUQh5^;G4QD&k#^-P- z7;Ee{fpbUOt_DXPf-H-R?n$|&)4(gwI${hPdC2G}p9@GWg>6BUzNR36NQL0qHC;tq z$zsf7BZrS<<#GtyHB@#0fE$cY9Zg?VR|C7=36vN1zj*eMWjr&}cA%VX0<2`9>*t;T_jL$p~Ve}Wjc zvQ&vF+dUChy+IQbtL8?Caf;(Ii_WjKUa{Qub0>YtWyspxagT!u}0 z1wA7y$fPovbU7kPVEEEsMPKQMRnD?E1^O}{N0@r-68Yy5UF1f?qCSvZ z3nYn=+i1J+1SDKHtA<{s&}%ArC(49=r2!RmjU$?CuXYggBFavgyfsCA$iKgi8vPhT z)D3@?(JOK)pxOubw7p4kSNbba4@d(6-ex%t5nB={Vi0CpAt=-MEcN#M5;QB@bcfAh(%mxIPiHpX zPo`kKB!+h27)S!6pM*b@g<&mUQBaRxt|a`jAP)?kX$l`A#>BXnPz$@# zu7BKOeBMBjh7sH0E$d@16EbG>Z$e8iZD_(rHN()~muk27j;pPvBfmpI`(}ai=<%@Ii2GuX= zCBeZ0iSF-~pXOQcE_Zj8G~?CR^l3>YB#+$z!LsRX7*4D%K-3p@S*pQ2Cy7xv+^szl zh06?AHH{w5A4jv$t)2|-)G}9cSmW!W5>ktRR1t z*js$~Hiu<(>C%E0{D=93TW9aK>6qw;lG_phrC`^eRm;mMk&ZxpdOt3WCG^iPM+j0c zBPi@yv;&_r->f?9@E;vGYR|)rW8fA3dC@Cz%b4tyNAhUKQe?|iqO*9!qUcafWo09( zU=D#|(ulx;PLdqi2GWe^%PJXcv6YE7Y+Zi=>X2nCN^loBjwFj>#$g-B=Z=LW=I!|L*E(1Wzc20rffGhe^nXBv*)fMP=9!ifP(us5(+f46~P*Xpu zb$JDybtucr9>f-EwHrs>O=E0L&Sp}XdRy}>fZ*g&LMGUxm9(KLJk2^D0)AMa$8a+s z+5GB2VhmnnM-e{V6|i!$wj`N5Z$ArqZ;nV!dE4{;)>UecDYCRan`7XA%{ zEx?{#hY&FUr)HK|5V|67tWjzTyXk6TXM|vhZ<3>;m#bZFa+yp$)r7LUaV)i|K;EUN-Vn^$car`g(h_`IV3Ad76Zgv09f%S7M|gg!2JF@=6?y~ zMnv1GU!d4#8fHF-_z!6Fg0RUq4tp-!IOm<(rrqnh*^I{;hBXg^{Epbs)N5QR{+-Et z$tcM83rL%OgU}VA86-fqW$!Es2`0!&w#GsHJ5X6n0?iCG5KKKN*SpI=LTNli(ragH zsFxJt0K$r=Lzzoao6`EKDmCyhv<{5QAL%#nWMRez(X zX_O|WqxBBga!2@ZuRU%9AW);h96{_FRSgjb|FzT;<^$9HN|WNZ@+1DO*Y*|=7fAWp z)Z26o)Hj>{S@Lib6OZvNECnfq)16=Ez2A7QVQF#T!41 z6r%-x?RB#?v_m!9^}a~0Cl|2S;XuW>NrkAcDmUvSHeeuU9_({!5u28&_V8lwo6L!+ zSWwnySNLW63EYCAgr_#)wa@8|$DNQ}t!#Y0esmC`&zr7ZtQRY|ytooCt` z;^Xt~R;1+MRbnqLhV1aGF3#||5O{|m`o3NAO6;fENtU43xM2~`5N2hu=rbecJdvgT zm%%L)HmKE+*9bU-Eo=G<*HEEV59jdYYai9B=K$^6)}ZM$P6iI|%ec5rRJsm2H+^jC z>A^_m0VZWSlbpu)RWT|6JbPi z9@^|KK{kKyfHXc0c}P)t5!6;=X-km1H@ZfCE5{W)GpR;7!Z^zL<3W){An7bgH^=fy zbk5}u3nG|4Gidf#1_+kdFUB^g+Tewv)wiMEoLyp}lNL1#55g%3Q9N9!!V61M`$IwjCO&Y@uw4-E^PUr1_8`d}uMIeE zbiJq)@v27L8n6o=i|Kh8qHp)yN!1;%c+>qCa3aF)3X*IOKB(3({#2lPIV1-#ja=ta z6$bNiJiI2}bMH&SQuG9=1xGPATjV=1F$Ee&!3E9`A1dKlv6&V?1)^2SZ!pjF=&@0i-FCSyxXoW=62=)G7$K?6$G=ygrb=0UFxh+JYGZE z#pShJwiX<*IE3>k29HxMHk{RRjJ115ar`UiXZKxF6cTk~bGQLeSL;GueJl0dU>|7j zo&u-gk)mxHkin1~A}giYY%>O>@*~;QA37w)Ado}{=?o-z{&rp2s=9z#Lec&2o~4PP zW4KUt7`iaEr|c{-3%_MuGcjAH-yCAwQ`CE&w>$dhYCuS{Aua`moo+rIaERu&6(LeJ zLP{L?wh-~A#TL!HWA3;32T@ZWjxgkv_v3&bMN!=03@)|5-DEXsYRz7 zvBL{S-=LoL!lhU$HW5)}4DiesQo_f#v)JY+f&BD^b%#cPaceb>hHOwjnd$DfpT}8l zxJDd4q_@47m2lyB8Qd}pH~IxisM}1y?T2{|!JS{ZX&H(d1pR&i!V)alB~%aW+7hg5U6l7_Irw)1c8^NpBg zI=IOES>_g)>59%L5=7e@J{6wpXOkCn&7PFJ?k&Fv8e|0^G7jPZg$*OJ7YGToJZ%F` zfCL1m`={U>U(-e1T$R3gtEr1Q?PtL}FJ~MG(q1MCesh!v7z2tAmbtz=z+q|@a83+m z%vev8zK`yuM8`f30K4Sr0Xw7Zh--pGi~8lmcRO2?Z@c;bICDy7j#q zk+ym3{cu)}{0%5G#G8du<8|RvUTbxIH~3WCnB3e{oXtR4H-r>J>>Y+9wTMF!YOG@` zIqDC}DnCG2z@d31(Cne}NlH^)Iz^q3NDm2*BF=&W4T3}~wu@`+WU<)y;wIMWM=yne}tall^y)}vceesH6GFmI4*#|d0OG@lV6t3yK5 zObjEt{8?Zu8|rB-hH@p@s?G+?nNkN&oFGhwwjbTWUx2*`a@7+?uWakwpnfnDD%Durm5))Jmh_|?AM|vr$IW^qTh$0zZ{-=+1-{IgQb#VI*nsX zcenXwi#M3#;+j)f-lr}HH_W;30=b7a3>12X1@fUdQ-X3pR!tY0Mgs^odrx)ONNQ4v z4gMPu7GDf>d*qutSJ1ayu^X&>} zEd$Ig#oczr_l%Nm-4`ndzYm+(XxN=qiWf znr%(k_}gfLfeol)o@J|#GA__DUQzxmST(BVZ1vt>z=p3w8b!EgSPka)8Tu?i{yYo} zaO=)#cjr#FfQE1f(C3gtadkD^+QC8&{A0?l84!pfBm(4E(DG(0{X~#Lboik0&{7kv z$b?isr`GQ*e(&2IZiT4X#CQ9xtmkw3^)xzo4fA5=}&UQnHa?{XfX|fyULuRVt<~iRTtlEE*9-?fr zgWLZ6quNe(*lzJ#&FFpw!%)qqk*h|BP2EZr-msNlr51Ge;`Vjc@9Bl=j)?90=j#Co z3y`3ID5QkykcW7L)}^m3;LSi+uWu##1o_qhGGO_)wB>UguaGi4Dbi(WCz?H7$|Xj& z{I*yh9(2Gcay&Ad3X1#2h01l_jRlG>1{)Uuql9m4^H^?E>IfB+SBqjHfKD$Y>{j{q zW3RU&xCh!GdY!Awn3{DcZT0Fvp0=a<+F9NlKIWJsQ-Vi;~80EJ3}Id;UqwQ@g&YTM~{;rV|8Xa$%0W@$u<&>$}b zQgAGoc)_J3cRII@umbOVAJ4oT;{qxWD;fio*PRGO@B`2VTPJg6mX)VEE&dYt$uw7P zA+_{ie(0J!{Jk9;z}p~aAETXEXhditRK#%Vz+qszuqsPg_F)lk-aO@;PpZywxOD~DUzsP)%)QGUBm`2F$JfD5?z?-WpFiUMLc5y&G%D>E3H zTx=^{4NVlf_0VU;u#32zp;b7PL*^KEuX7zXEgR7Y4gfFDd&opor1EPCy)>tN2HX;p z^h&AN7M=E%XpBm-`ocsKodpfDc6h}?Yo#)-F$*AM6KhSNm&QC~wuCC=XhC{j&|D4J zcm14$v<*P-XHVVM6@sQcm48f)*qUtn#b~$8e^{_1wfQ+d@yaOpaZsrJvaz$({NVw2 zk6e)sN(}NIF_)_u5jH6RokLp9OduLWMdT)~&4OUP81dy3c)|}AI0?Yw0JPI03R7r+ zDZO*R0Ln;$ImRq{1vt_|yU-c}s@!QoM4=&F3=_G_ouENV-#uP1>(T<1O^)8xU2i}- z;H@05Yl;!@ngk|=b`amzFp+& zKWwQ#zvLk)Kpfj#P-{DxxX>)uz=amrS=0*@T?kgdq9~$*b_yk8IfBPnX*Ea>I)wD= zDck@rJ>nbyt2a}6se$?Ct&P?#dFRfdtT3wa6j}!)Y`QK;6AT2Eqp(0yg$k^^h^YYZ z7W572Zm^sj$vmOKuJHy9EaWM)0;d6eVi#1_$cIEzxNvch9Q5r!Y>X;OTq~IZUMdXS;J;{bCz!*~j6-#G7N|@rs29PgvEhc+WcF zN0l533~52@1f!BHZ?HKNu@)%s#+RENNr)97q7p~vGDAV+usbHL19+jh-($nBKWySR zlrwktdGn9HyCf#`fj8xWnkQO3%OzKB?_3;KI#Kg>fw61`EfmVA!hl3V0|8VL-hju! zsBRX%-Thp(HXgaeJso~<00aU7`t#VZ6HMC{aMu3-u9G@thKcOw9RnBv6nj@$5TWpY zI4#@H{{URvfbfMJNyc{g$abP%SOCVuB9q9xBupXcMe9Z5l^KbHRh!wu*F zXb<`+BKQ{+beaC|e|HcA_k;Jt`(}o5QU3tAs-LsQ1uw4ibQbfiVjYQ|gOEWVjJsc1 zp*h2pbf|RGu<@?)aS=R+jbQR}D^T@;SYY;^K6?D%PAML_f9aJe=+OSYu@N@Suiq!{ zk<1_RG~@3a_c}YqQFbOKmHNvtTgAwMT*2ooCUPEoxpbrlc8&aFJpdjDchUR0$FKz^ z&ny1`Qh?%3nEwDWw1xM<$mKXppO^T!)SF9{_~!-Kp3H^N@Q;=21j+J9`%6CZOQ5$) z{`$gXI!%vHve_ZyW>*#-9WHn6Xs=k<-91{{RjO+t7C5j5XV3L+6j< b{=vA%nlbPfwg^fO#J~Uo2S@(^v48*BN73oJ literal 0 HcmV?d00001