From 4482a15a6d6323c76b293c8b2195c41a9b34f1c7 Mon Sep 17 00:00:00 2001 From: jgriff2 Date: Thu, 21 Feb 2019 01:12:03 -0800 Subject: [PATCH 01/35] Create remote_rpi_gpio.markdown Documentation for new platform remote_rpi_gpio --- remote_rpi_gpio.markdown | 127 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 remote_rpi_gpio.markdown diff --git a/remote_rpi_gpio.markdown b/remote_rpi_gpio.markdown new file mode 100644 index 00000000000..1a33e1fdabd --- /dev/null +++ b/remote_rpi_gpio.markdown @@ -0,0 +1,127 @@ +--- +layout: page +title: "Remote Raspberry Pi GPIO" +description: "Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant." +date: 2019-02-20 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: + - DIY + - Binary Sensor + - Switch +ha_release: +ha_iot_class: "Local Push" +redirect_from: + - /components/binary_sensor.remote_rpi_gpio/ + - /components/switch.remote_rpi_gpio/ +--- + +The `rpi_gpio` component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. + +## {% linkable_title Binary Sensor %} + +The `remote_rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). + +## {% linkable_title Configuration %} + +To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: remote_rpi_gpio + ports: + 11: PIR Office + 12: PIR Bedroom +``` + +{% configuration %} +address: + description: IP Address of remote Raspberry Pi + required: true + type: string +ports: + description: List of used ports. + required: true + type: map + keys: + "port: name": + description: The port numbers (BCM mode pin numbers) and corresponding names. + required: true + type: string +invert_logic: + description: If `true`, inverts the output logic + required: false + type: boolean + default: "`false` (ACTIVE HIGH)" +pull_mode: + description: > + Type of internal pull resistor to use. + Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. + Pull-Up defaults to active LOW and Pull-down defaults to active HIGH. This can be adjusted with invert_logic + required: false + type: string + default: "`UP`" +{% endconfiguration %} + +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. + +## {% linkable_title Switch %} + +The `remote_rpi_gpio` switch platform allows you to control the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). + +## {% linkable_title Configuration %} + +To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: remote_rpi_gpio + address: 192.168.0.123 + ports: + 11: Fan Office + 12: Light Desk +``` + +{% configuration %} +address: + description: IP Address of remote Raspberry Pi + required: true + type: string +ports: + description: Array of used ports. + required: true + type: list + keys: + port: + description: Port numbers and corresponding names (GPIO #). + required: true + type: [integer, string] +invert_logic: + description: If true, inverts the output logic to ACTIVE LOW. + required: false + default: false + type: boolean +{% endconfiguration %} + +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. + +

+Note that a pin managed by HASS is expected to be exclusive to HASS. +

+ +A common question is what does Port refer to, this number is the actual GPIO #, not the pin #. +For example, if you have a relay connected to pin 11 its GPIO # is 17. + +```yaml +# Example configuration.yaml entry +switch: + - platform: remote_rpi_gpio + address: 192.168.0.123 + ports: + 17: Speaker Relay +``` From 45f595764e571e4bfc5a9491d60525e3a5527cf7 Mon Sep 17 00:00:00 2001 From: Lewys Martin Date: Sun, 31 Mar 2019 15:21:53 +1100 Subject: [PATCH 02/35] Create sensor.solax --- source/_components/sensor.solax | 71 +++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 source/_components/sensor.solax diff --git a/source/_components/sensor.solax b/source/_components/sensor.solax new file mode 100644 index 00000000000..1bccb720cf0 --- /dev/null +++ b/source/_components/sensor.solax @@ -0,0 +1,71 @@ +# ha-solax +--- +layout: page +title: "Solax Sensor" +description: "Instructions on how to integrate Solax sensor within Home Assistant." +date: 2019-03-31 14:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: solax-logo.png +ha_category: Sensor +ha_release: 0.91 +ha_iot_class: Local Polling +--- + +The `solax` platform uses the [ha-solax](https://github.com/squishykid/ha-solax) API to allow you to get details from your Solax solar power setup and integrate these in your Home Assistant installation. + +## {% linkable_title Configuration %} + +To use the Solax sensors in your installation, add the following to your configuration.yaml file: + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: solax + ip_address: IP_ADDRESS +``` +{% endraw %} +{% configuration %} +### CONFIGURATION VARIABLES +ip_address: + description: The IP address of your Solax system. + required: true + type: string +{% endconfiguration %} + + +### {% linkable_title Full configuration sample %} + +{% raw %} +A full configuration entry would look like the sample below. + + +```yaml +# Example configuration.yaml entry +sensor: + - platform: solax + ip_address: 192.168.0.3 +``` +{% endraw %} + +If you would like to convert the values from multiple panels or view the total power the house is using, you can use the [template platform](/components/sensor.template/). + +{% raw %} +```yaml +# Example configuration.yaml entry for template platform +sensors: +- platform: template + sensors: + total_pv_power: + friendly_name: "Total PV Power" + unit_of_measurement: 'W' + value_template: "{{ (states('sensor.pv1_power') | float) + (states('sensor.pv2_power') | float) }}" + load_power: + friendly_name: "Load Power" + unit_of_measurement: 'W' + value_template: "{{ (states('sensor.power_now') | float) - (states('sensor.exported_power') | float) }}" +``` +{% endraw %} From 7c1ba702c3c4c41b546d9ffacc960edfba58c308 Mon Sep 17 00:00:00 2001 From: Lewys Martin Date: Sun, 31 Mar 2019 15:36:32 +1100 Subject: [PATCH 03/35] Update sensor.solax remove all caps line - not needed with {% configuration %} markdown --- source/_components/sensor.solax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.solax b/source/_components/sensor.solax index 1bccb720cf0..9547c7e04c7 100644 --- a/source/_components/sensor.solax +++ b/source/_components/sensor.solax @@ -29,7 +29,7 @@ sensor: ``` {% endraw %} {% configuration %} -### CONFIGURATION VARIABLES + ip_address: description: The IP address of your Solax system. required: true From 6fd9cca290061c359f9b7fe986dad9b801bad65e Mon Sep 17 00:00:00 2001 From: Lewys Martin Date: Sun, 31 Mar 2019 15:47:04 +1100 Subject: [PATCH 04/35] Update and rename sensor.solax to sensor.solax.markdown --- source/_components/{sensor.solax => sensor.solax.markdown} | 1 - 1 file changed, 1 deletion(-) rename source/_components/{sensor.solax => sensor.solax.markdown} (99%) diff --git a/source/_components/sensor.solax b/source/_components/sensor.solax.markdown similarity index 99% rename from source/_components/sensor.solax rename to source/_components/sensor.solax.markdown index 9547c7e04c7..80a19306400 100644 --- a/source/_components/sensor.solax +++ b/source/_components/sensor.solax.markdown @@ -1,4 +1,3 @@ -# ha-solax --- layout: page title: "Solax Sensor" From 238db9f3310e17d926a8c08122e0671b51976727 Mon Sep 17 00:00:00 2001 From: Lewys Martin Date: Sun, 31 Mar 2019 16:00:29 +1100 Subject: [PATCH 05/35] Add files via upload --- source/images/supported_brands/solax-logo.png | Bin 0 -> 23738 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/supported_brands/solax-logo.png diff --git a/source/images/supported_brands/solax-logo.png b/source/images/supported_brands/solax-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a9dce20ba7b23afdfad3b522d4c190bee47dff6a GIT binary patch literal 23738 zcmdpdWm_Cw(`|5f4;I|rJ-EBOJA($d1a}z*2=1P#zkx5}#_P zNDe;+u(smL;-5Z&6H#8w;XcMlu5$VwpFW`v{P%%MWkM(Z^vOt7UP@fc$K*5z!3=l) zZm6f`Fr4~ZacGwYt~6$cY5@Mp()jGY{~h#Q?NYtjyJ0RKv6nQi5Pr<}87)5-`7Z#z z(U$kevsE-G;F@xSJnz=qg&>!$jjgRM?S037ng@Ua3O=;gjGfS7pf>&g?fph9`R@oS z7Q2M~#|B;!Hcss`>c@|mP*kA*og?-C@hSD;uwCoL4>3WZvpM0IPLP?^C3Drof<9E{^kDfDrL)IK;htb zw}(ZFyuxZD;Vdcj@%#gsk^}EnuB3+NEXb1Ih06=!`bMH|4-UHgBy*B;D>c^WJ#9<> zBu4l}|Ayk9?!b1>?;p31`qLyMXpn4kh>PoTZjy$6HbGh93jy|3bZEvru{{Fw+)!Gg z%bMfGlpsP2weQ8G(d-dsB8T*i>)QsA&&8q2gQpDES-_EKwpZ`t6XJ)9$f0I7hcI#B z@&D_acH3ehl5?D`o|;@3312eW{)WdQ@z}}L47SF(VgByzbsbCHBglewq4kUXU$XPB zo0v1bwrXrya_@R9`Ow~^B-g11lv)eeut&GA1PZC0!oI4 zv@{!n(kw9bJeGe)SSU|{&?Bmc$@z%)P5I!#skV-UQ0fU5K9(!On3!|0FVZEXC=_ zOa9Jkk1$cy^e{^I{18#K0!F@~pfV(KdOwnj0SP1UGF))|zdxKBR^f-{F$0BQ_E@OQ zzazy~+u=l`z;{eKsr0Lhb7#bT=|moqx#VMmCjI3dVJY)Z*0(77GArm=I-8v;f|Y`% zIdoZrPeJN(J(K8ptFq)0^b;FV&%qC5Yxhf%!88AvNcqpi^^9#E1PR zSN!_li9a}nn?6COB`nd(dq=jLrfig>V4(6RA*2#37-F5`t@pQi98=*rC|cE*eTv;A1OMX-%{&{Xyt{I*gfz;o@rf$fI$EyQu_v0ADRt5Meq(&mwxOPcp83 z1U>4ZquIQ)wKYwHkk`OoUAF}h+Q*&fmH$<_$gUel_(LrC87;^Z{>{yYqqf5jPJ!<* zXEJ)VCO^vSi6Xc^7a~iH6WfsIE%B$Z@^6=X2O?N<#*}=2bFs|bToIW91RX_XuiZR0 zS=qF5%e#pJuco09;lDpAEn`wE82O)D3L@#=ezrL=bm={F{lZm*ozguvz%}h9?$@%u zoGlkIE&iN)_-rp}p$^`~hgFcGCcYfi_`U}CUT9tMu-!@au#;g_Yz?0bnsCs;QZ+>M zVoz6nwG>tHH;eo4ar#pzr&sW;-H7lS;z+O8L$<6R6maFnOBUSeDAA;^ z5k{!ADzq;JkVg&49V~yiHdzud(a`lCBDRh2i8LW7HC{yOF@hlVQW67aVHl}NrIP{4 zUXSj`MN|VVqxpWLFV8ZZ!D81tRqgL*7R5u_J%YfWq7 zqar*mg{erlX?RNkoz*j&_HUTW(sb{XH$tu9jUR>)|8JX}r=D7~CNPEDTaH^?#!&IoxVwQytnm=ufgW}+lgtx4PXr-Z;5 zOZqd|g$!RT6FpJ{QPu|2>yi?1mDn$$*EPmFTCY1w5EHG!vcmK#O|#^(n;}Du1}_;) zvlS6JCuO6Oa7Aky^vnX(1SV&a^u1(MEOjyvg`(T97f?CXp@OP^un6c%Sp@?Cf)d*h z-=HHXmG8=12?%jzn5g{qPp_!V{^Dx814KN9W@nf5_KE8-$3w1|(aPrc(VX z^Lf%6n8QeC?7CX}j(>io_c)2}Hb$NDI*ky`?|t_2de7Y`y~qn4G5k-Yh)>dpG~tZD zYEq_4D~x z5Pg}FXIt5x63I$>20sF*0V_-85zj=RZEmz!aCS&j6Zf9d-`GnhugyO@v9AAub$ASU zn9r?75Q<5;Q4($fo0{F|UpX)eVxVdM+=>UPNI74V%P$Gn7_qK4AnZNq*L<$VeY_U3 zUa{Bida6EJ`0f-st|0Jp*xtV+dz`KBFvV8A9sH>buQrk^Tr=vw6(28^_63qxt3VL8iA@7_6FH=7JX|yyf@P>3lX85(3Khvx`ibw|>TaXW0jqN&BZ1(kaGrv|CNCM$Jy+T0DN@LHn3R+7~>jHmZNAqd}w{Vz5- z*doBOZ0aBMm6`@1f}T>p>g34ATFz^nIH(ohk!fp$*!d+1PJNlK3daY3q zm*KFix9t$`DS5<4dL0NRT14Gcn6 zyfQSuo5hohH%EWGK@&6bMU|1}m+L?KxM=xGu(j2Q7R|P-C>10rpFAmQBa%&_^_2?) zrI;i|FEuo0{=7F1AfdZ_lp~j6%MP)&5A(VO#`k2DVJq|nyT|s+;sLixyrn@9^a|w@ zeT_LSypz>&EM$;_FC`x$}bXcZUM5h}HEv)*^k^1y<*l*+Q5Szj%2MqU> zl3RT&19(C+yy{A?HQ>_nu&G8=;Cco<`G>`b1*FD7onB?rK&T!cJ_;|!<%pZ?PqZSr zp{DES-{+VCPLv=$LFtpy(^?kK{#FN)mq$&O%St4_AfvEV#I!KX8?8!9ZMhCc@QPo~ z=+w3LN-abeU>_*c{Z+SFgTx$T1b9pd9DF99Gm318U=M(7PDGMR zj1C0=mZ1k3wS~uBhO90B4S31fJAgqQB=jafVx;-(6rIALX}04{)GcpvT=5u(yH6l1my zb(N1ug<3;klTs5QZkzkV7=t(>hBL86OEQc?WHE6xao21}mNZj``B1z4drS{GcA`rG zuT0s=qHzoA79y2k34~w}-~Eglc~w$ph6TJcy9<225fqWNUL0q10|9EQESusB%SG!F zwTHu7`{!#<24MWo@Rp9_O|94di;;X2$cA|7UC#;p`q`&_bu5PY--~S!E?zB{A9i9} zlo``roMn10l{OR&DK)_d4q*z5dKS`6U&n$ebB&?+{C|2ChKzEM;Ev{st}?ubryK0{ zQI3}QZO^w<2`f8$h`jic^}jyp`K2;aCNjfFo7}YT!ToBu-u?O?u32OEchct1RxuKO zV*xp>+A)mts=>^-!#tdA@&3GZd!{8ASCba#49?DH;lZKLqFdj$)VU!Il8G&z%z*KK z5|egC7(uTw^J>lJlh@&@?37D=khHds&MvOs1T<;^QnxIdjB^Y`>tHok+N}0-%syc0 z2Z#bhntqY_&-^Ppij(J!perVPf-uV7;2@-d2lqSfC3Bf@X1s3-gtDz-0JyzlHJ6*X z$@XGE+$t-*fpwk|2Hj~QM6yiRpX-?>3}y~U z88DiAS5;SdYV=}qeQilu+ZzLK>+kP_>FYFmAyd4=zyEHrF0G1~qdbD_7@M0rq)^wk zrDOEQW?1Q(m$_2;E6W%aJE)y?n-#A*q%X8Q8F5Zm7sih$+txIIremaC=g$UC7XMYg zq_CrJ25jj;R~#{mb&>$CXm#ckuGfd#EvJ`TYcgP_9CK zeVVzUvIP6Fkv*y3}yauTbL`3s@5h;ph@Ycw=&eQT>fIIi1Lk;fuM{DFfyJG;&N zA~=K!)R5G>^!yCGCb8?WC4$C#f{jNU>Z8VM&9|i4DD~w$oXYl> z5wY#V#TZ`1oM)vPzk^8mK%SePy{0y}0hJslWH_cl(kCi_pfy7)bPk?=m(wQtMa{l_f<`o*eQZ6#DmTT?xX_kCqXuB?Rq_NnC z!(sYmTnh9;pT~h%J4HZg-#Trscp9(vyNY$9R9LR;17REc8F$JGr8khaRLJc&HP!&- zgAwxTO(I0bPKAdqIFy8CR_0eI7}TI|e(iWK|IZsRY{F}DW9gK`(mizH4=LwSr73CH zz7yTI_7+A1ww$5Cs3@Att*pPE5+WOCO9~aF3-!0p7`7}^8CNJ-lAD~Im%T=8rLE^% zwDCGhp0w}3r+QSCF)7Z2Ww8enCu0?0tD=h)s(VY~7mMp+hgiZy2t=#>i`A9SU z=m?DyI*Cj?cvQK;=(&9o^`9Gg=`rOq#3$O>P{!%@dvhwhxhZiO?woGx0u2VnKV#Sz z9WazMg#Bsw>sV~&o|WSx^<`@&*XmXZtdzXdq&rGCQDU;8Ky6*&w7Rfe9ua%+nslsi z_!kGD>LbVd!E2ch58zkUlqoVCsqNer#yB~qVW3)0-OLNGIFaN}Z~NmGxkolaUdP zDj(n5?&-KEf+PnOOH-eD`517p(ABZ-Akz7M*70z6JbLx~a=_>MX-f27n3|66xJy|w z-zlMU@yfeGp@}13kd)s{^{f&tUbQ};B7jYC6M`9@6wGzP5V*%#l9Xq5q9!3v=DeY9 za-{Vu8+X_sYz99>^W+Vh?yk)PM-YSQdmVTXNNM9uWxvq|?5_rqs1K-wvEyFoNf2Td zpn{m(ng(W=jvH8>+nN}*aI=;Glnn)6!A`LVr1V<@Y87f`gp0!WJK%!5bTOjwApg~$q>%fH;H-VEANjXOMN z)1G=A^RD_a9-gY|E{4w=_wK7Tphv|P^@4E{_k0@~8o{$F#(%qPF-W+5*ds{2d_wD7 zE`Go1b=q+lv8J~;O=qGJZ@EY>qny8sp^K4(hr`J!TgS&M;|)mwbvvK`4j(KAADf)S z%kRa=Zsi2VAMIl@F%y=ZT~iwwzZJ2>M|w{oUDP~`jA>bZe@v*-3@*OQt7VBEM5hBO z_PpYszg|;YHBE+Vn%qFbW@wxV{YT*WR>057(gy)PK|8S}og)dI!N2Es#N8sLn57?} zgRsO|KqN(2nBXR1Ip^3fV{c}13(|V_t-?yn=%6uj*J!7@bbz|tqp^}v%@rdcWdaMw`_)ma2obOY3W~Ql~otFyKE&(mYOvFGPdqfvIL_m_RPF72+zk8%Lj99 zDJ^sH(y{m!C!rWoUsYs27!x262qL_^SNn2&ofUHRhv6sGr3}+<_6_U7VU9;{IRE|2 z^{u+6<%7Dc#bblDYlq`>#bUKdd~>+QwgcRslnvWf<9We6dCy;Ua_jvJnq>v!Dnj;- zJ3A{6P@S`?(6Zr!R|f25WnXB{1B6yZKD*RQe(;BCZAUEg;gpqp42uK8!}Gqd8h1Xb z#5jqiEY5VFL?Y1o*Z1>6#|#SZv?AH^n7E?gylpH`y#-u(y|PN^J)MXaivkQuXG)k3$K*cUH(H5Gh zT?8CjvpQq1p+vEO#EA*!Jpr0%H9=|mEJ5ikEM7T9 zMNNx2%&oHD8cr#i8cC_C;Y#v10q32!_$Pl`F-(H@@B)hqcv;&vp?TsrS}5fox=YH+ zb|y4c|E87p&fiHDqrWUMo(yfCUECHR7`*N0lHL;*;FwI1^iO!o@kqX@^yi>c&e^J#!5 z_LgN|HH1miCO;}AQI>2S*)L@Mu3jXpz|w&xg)i1bXHZp{d`&sg8|0OrAi1|~gxFcK z8;uxZ@A=o#Xqr)70;Cu#OPtX?r%`gG9KpDD#y~TUC%}AR%(r7@#Wm#^li6FkLzSroNE!SDuuJ? z1(dQ2%Er!3TE10WP1(NPWvyExdMx*_%G9nF*-b~lC3ZOXpar!!a#JK!!zA&3fF=Jl zJQQ;LX-?7WQNR7%kg-&k@|YSu>6x`x3+h|avYKe+@hR)iUsdu%mx6EXKrS(0G-hn2-Q9@1S|k0IBj&f}{j`y664GiV2aA)dOzLdMVc{Y5Tj~Yid0EuUE{lM!k=zf$|-z(YxyyA6&axB))?C%YGh3euvL6v?;4!8p`>2Uj&0d zJX0E_g$^Ebmjc#T->RBBIj@s^{+X&`{uuVLEC=78X=N3iD$R*`MS3wE<#*%0dllC& zTP+IpW1gFnt~Td=bt-o2LD$Ojy(Ki)BcT{(PjjZ)Wtmc;a7pN-f>BBDnz!w1$!#w) z!ByThtl^x<4l6By%kx;anY7Zu+!m%84D4y32*eUkag;KE$%J6~3KbBKHhofrIr7eM zceH@~#dpy^dG3`L01!C2kjMb0#}=rH!A(D*L9k)2H2Aq-^nAQ&uY&QWIgM9#P^Fm< zjM3jShnEMH-^^Iln}9SRa||FWeU<*H0xAtS5L-vPy3$hJqM~feqEK!O7_2mveJ8iJ zPZne?alK4OUZsKq2Av5UMZ>HMOx4J1mf*Hi?y3c|KHwxKl2$?BjwO7Qs0XWt&TDAg z4xl3==d5uFg&ts`#j|}CX79F@sQJBacM?VGhZGmE(pTc!JpOHVwQek=eUMUVkn7S>*)sTyu1hz4k4KrO*$*~V&=H6 z$hgDnqlW887sPyge8d_i*NN;IJih$Rrf37{^1GMu^OKR{XfZn@=mSc})~k0X2LC%z z9zTz7&hMpQIuE$PLKnXH0$7u9B$xG7dw-*6V9+VlC4ZR0BS<&99Mgu(+=RVksXYM_ zwCNKDX@H#({XE%#$Sl2ROG+X!LK8TEgm2WRcNv`{a1AVd^w4%lg}QI_Ojaw{ zDl$jv>H%{ctEFEJlKnB6akf^OS03HtvUO{D02i>o1apde7{KP9n<0-V4kY9Fv?rc{ z*E^~Qf54$FwD2iCFW3axfoVrI#Aw}#xec5=cW%4O`h!8JzwChW(KA&gQrDf z?R(xTJM~*+WkSh(olRJ~bFLa&oCL zFJ9*4rDkp8Qxf3A<1Loo*o#lN^od(Hb9@nBhV39*ZHS@NA!zTqmyWd-@aW_TwvgNp2dM_K^;*ZRt*UXJ_0o9x2g zyUBaH&dBiK*Af=x#I@AOrh-D92}z3zz2u#r)(?CEXw%g-boTczqMgo^40U>tw-m!p zIczG>`~myJmz%Bw=!cji{Hg@sRxYZra7!uX;PD8m^+4r^tFe@;nr9x93apMK%^AESv-)l2)aR@uy@@9XRp^BM<#KVuHCmUfrV;&|kL$TC&xy!#ZM%0b z-6SSo40C?RW)f~Ch^qHFJvsSD?39qMVJ5=caxq4V?ddl|3!+I3vmh#cS+kwi3#Aps z4B;L$39~g@aBQ(pNyT$8lx$XiQ?s>Ym^(4N$TP0S05OuzSV}ES0MVg7t1mZ97JZuM zISeLIcjpyQhn1hS_AYYlvExUt!Q<4*$q5{j#E6}Uxr;_iO}R)~+33?sQXS#lO-{1g z65}tS`8pvV5A0aAtDg-soL#B>0av||4$LOS8())|Sr~d5%JLF|U!ON1pM#CI8G_#S zbj#`45;K>%s5f`zQ*LyQZAP~TA0GNKEF56=Czx?(?d}t`XUEf6`op}}|EB%>(Y4Km zUXdhB-Q{edFN{#K0l}hw;o(gNt@Iu(%t4vg^2}naOCN*Q+k}vPjkAm%X8)5BOX)gr%8X!269(i zy5&VS{?P`?Avsl?S`a9zBfigB81|Kkg$<>y5CH(vpHsrk?5do}J;TD^LA(MB zCzQ?K{;8v9k+^uo%;Vz<&Bw(bP~4Cie~-)EbJ$Mwkx*7zKYkxznzL-)#eyGS{Boer zn(O)lbig~-tWe7ATtih8c|{3G7|HmixEZf&I(XW;S`F>L2yeO%+_pd!dU4GT`j>Gq z-;wCx?LaTgCWLi5*Bo^H=s5uhO(3O`#bJbW5_zwAi%ki49Cp60`Q2-ns1{caVPCql z^;|I;1>Md=W}XDEJD+;er6-(q3h@t#e1*wS1uwpI-as53I#gS0EByowv{}x#kmz#4 z5Qar7Stb<^?<;_+J~il~&F`x}k^F&&2=5e+lerLxAG-w6kMjuB@cp{*%BKoeiHdb0 zf5bQJ{Byvg+_^fIE?7%d>FTYipvqj;L60sm4HmB6<=$DnfAKQaCK9hMeHO%HMBRVU z_RJW_cxKxJ1>?4qEV~((Y%2}$HtGo?eL8QZgETwVv8?nv{=+q9;?vvN$VB#H_dB{A zPR>>L-$h*?ridg7u{HHkH#EpoJDaNo%&CP`+gRIzGd%Vy5QVL_ZSyKNp#=m4)HmeU z6YU#=T`r9BFAJTH&Jgh@b$#_D2Y{6F8W=yB;I7wd;&mb_{NjIave6YZeDCL=Y?YjY ztztGJqF@f;Dt_k&s2{5O)o6IYtB~1?OpP1NK*JV6iooH%-e@m9&`*r`}86bYcefe*4~~m<_wi( z7i*2@&!fJHF?<Z=(&z(8KwRoJ(aJhn{~xf`&z%`SjkV?!b5A3+^{D=!yv)T#UH--4-3 zjU?pv?Qr#5<4$D3=Jiw2?Rt|3<*d#~34uvDq_apnO9PSIzw)1o1?m^Kp^@ZDOI2#{ zuJ^87fz_O+vRH>4^~{rMB$e$~Z9E61k!h>poVb3;db;L`sUM!bh}Nj6FAtKw(a={G zbB&9cK55yqzLzj<7qu~YdRH!4rzp7<3wmXwa9&YMp7(3>Aj8Q+eH~flu;rD-GsNVCO1Zcd5?zzPN9$^XW=4mff-T+{q`XQc5T6I|aB?<~r0X|D zI4!*UucMxHd&TRWjSI3DxLNHWY_17^YTy01KM@P@SYw3C_pkSAU^glcZa@X`SmOk$ z`Jv@9WtuZh_T~3|YkonM>~^Zl!(z6-b*5r?d^}j~YdA49T-qw@hBR{z;@X&=@G}Cswy}9@F-Ur>jAWBJ_+9lIDvclZFp+s^D|$ z@~RrO2$!llSm6j#5IHH<&2!#={hSP$@#BynqH2pomu!81Ar`%~I6{%0%(dzVMnZmf z&?Za^?l*`%cIiaQ$S{nc25V0LQ_kA$ z2GlAzArrcdF&wNH+0KO!SDDSu&bpnAv@1K}xx5h5{pOOC(jYk!^i46}<%)B`*1J#5 zF6-fKQTfPAKa7VG!X*_#DNNTs=oeYvw8P(5bc2mX$1#a|V<_VpO~Q>Ta}lJG*R1V? z9t5m?c)G?ll}!t^`k~6<;f$e7Of1s+`uaxL!_#0}OKz7R8D9p0mZJUNj{h3_vM1;B zK}a~X3D``idnSp&!?s_AEfSyrEX*m;qX;Lzaaf=eaXSxQjm7+$T3koQ8Be;#S^4uf zf(W%(+_Ee+1i~27c+cu%w*`k$eN zNFrH%Sz*Pr&HW(%{+#q0&UDC-x_j1NH>UQ@=9|-OYg;fC4D=poRG( zqHoAkcA;C2lwH%%OPD^XM>($+TD{J&RmC?0Z443jYCwwl?WYLJ^}k6xiitRS=DoeW z12NYxCcZn$04Tw|f8}=k$%66K25lPgLUG^De7KGvju)4aqxF92MqWgh48d})94 zPl+n&>9rW88#NnX=tvB$8V_!s$5ai<<%HYM28`r8_({5`8``jR|z#$wO9D+a}}L z8AEO7@HgV$@Cep#PXGs+_HZ z`eHCsUGz)s)R<50jg!4L-2wKb0}t0|^M}6ucE#r{LeP6?D6K^hW@BDve@Ya*CE8w5Y5dzy$R4tHNq?q#^46#)! zK#liCP{&a?kvz420_%O63k{GZ(8i>lSp`#OHYr5ojm&Ww|OuqYX@37|K zcgq+-u0J}HE_Zjm7ITNL@aU2>rydgZ?Ju%~i9ic7TlrxMy%uO|O~@#NK_Z4tSVQi~ z^V|M5R9cle6ARvoqb3{P5~&kp9RbhTVKXlSH8kIYxhEqh!3Y{`0s zYqIE;pB<>rUpjd?mwZJ}4%d#U(+b8oL2pUnYWYTnhO9F5#9yCrRK=%~B(ZL!@*LN5s8bB zzkT*Re83W0_2!X*4F8vqQr^cz<=nHM$I!+$nqV*3^v9SqMwQ8>I-A&uyjPD}n7g7l zg%Tvcq`qvoA_xv@(IhcyP@FdY_sg*PZc9#tVoVC;uPLYWVaYaAb&!e={By*XG# zDyr+jk0oG@(*qDAwWN1HFBtN>ehqGW%hK8>MK6h#k(cLq^BBbQtJ=G|%W|<81=6V7 z`kM22Y~*;aJ7hMR20uyt~A>#$)lIvb%hBxX)x{wYRos+?IYcqSDx-Sp9u z+IV@u@w+=Kskto*SU)T`x@|eC!#s7nUPIKbSH23s8m$pxpO;ylGsa?mnvFTYf!X?W zbSR0k%O#KohBFW2RCy73Laq+}03{v`1Ih${9lxv1pu0@QWs&{(nj5nJAPyZbvi7-9o&2&gj)HPO=aNP`U=1;axl0?oeN zizYz=qOZF<<>ACS(d1qOSUyK>ET`_5#T&W)<$bc;s=49Fch#?FWqHjdXP{~F=rKH( zp*h-$D+GpN>T`Ft)io+rf>st(c1-$gbv`f%!I*TDOjg6F4jk<-Kx8 zX?LsD1gKw@s4rUrpT%ow;mgVB_CVJ>Nt!>0-QVNfWI^1`OQ+*9=5v*Ej99&uDCPOd zt|l5=v^D_aLg&Hd79k5XGAvxa$YfRf4(;8aQ&yR5COq-v{R(XJyiIB-^$8q0Ykg=R zyPHcpHP=d4?S9Z0M5u|?+gI4n3_ ztRp`oy8hnMV#F$XZnPWijbD@ho4>cnxf{;jKDkPUxUW|-VmnC^Lt8zou-6Q+b^Tir z_C@<t+nI{GQ3@Yb0)y!Egp*q3kgGZU$CaM@26tG5^p)(qVtizsg<{0F=GxUFHO%Em_;TC>zKZ-QGD^I4=2g_PkO%4#4QX7f7mTKfOa#5o zkpGxz`_QI;Ea;DXTR6tWppYx;=^~3!O?p#d^gSjM$-SrO3zyt*v&Z(z^q%8j7pWmp zn8Ahmk2ZrkTiVN|6Jg#Q`?SVY+|}cIvZG@lm=Fi5<=EKk5pOAQdMQK%btyRbl9{eT zg$wNSIUY`g06mu9ZUl3lb@}tJyO{B!hzd)8ve})!xX0-5L^jh-3BE}>s97V5} z$BkIF%A*}Skn#%3kNAy2R^Sb_cbB2?=yOx^R`JO*8VPBFwur4|g_@>srjg4sNMwuY zLCX+_fC_|lQS*$Nn?cYgP67l#tY;_4csa68?htq=0!<8`0xa>*KG9Mc>$` zcFGgP86f>vF~RePsl93g)w@V~KzgHz#i(%T{^i6$8B2uE@BIk@ltket!np27d_a6W z6wLi_oY=p7&3zRIQ3ajBq3f<_*q+EP`^7rbME{|)4|hV6!`L74I55v1oXQog`6*PVn|rW`hVt{>6TuPT1F^^VKN)g9`j zomJwK26rB-hc9qMlScCW#E?@ZXqy>eN5pQaE`poI@D~L!k!Iz- z{aDqF_Cg+)Om4VuY}#gm|CzX-P3hImQfOK(Mo;>N>8z);;tR=2CqHaq{ufha?tmL` zKgVH~%jMN^T@~Y4dmjbkda#dZ2NkTlyOf3hYuodFn z>7uI0VrDH%_5(4YPY8!YYstwz>$dzG`pAZui}>8Y(Sk_c_bSVsNGhw}(Dy23OyKHE zgBE$@N7D6Wg1*)>PkVlKzxhCa|&!z&)%X{)8DDoUK$#5^dhc zYy*su%Nv(HkGC&ZD(JtHS%(+EVsbvkazo}U`2S@Mddy5N_$4s1og%t}Hss_MQX+rEkdcvO<8{zO6KPzcwVxl+Hh5{$t#q( z=!*1hyS#~whk?RF$(gY+@q<4D_1O3ux%Q0W-igQyigRom3a|kYE1MJ5k$Pj7Q|NSK zUx0?5@ga?{f6~N|SKGVpU2-*45@dleqVCDV&Q0HtWK{C%`rSKSfqs z;nU$F3dS69#MWuDKOCHs@BKOvVVA$*5UtxTAl9qlBaZ~yiXn|UT0}l7x0tvXNOVj1 z${%T*(mWQ_eYyidB6WEXWaxRM&&Q9)dWc0eFF%teB%~oi8g~U|Q+C^ZQX3K}?L733 zlWvoIlF|K=6_};D_k7OETm>}+E&7Wwzz;__$#VroG(MNu3J?l1nJ;14I0NHKID1v0 zdRL>3u<0}BfxjTR>#S1{g-&0U*Ell6sp0cd8(r~&{XK;m80j=Y5Q-=?QTjK|d;V_)En{A%H|D6X z(d7Z8$S%x2RTNZ>DjFp^ABNbSrqS6zc;g$=kEZ0&1a`i9ane!wKE4GSiVq=_A(Uyj zlljzDREbgf_=@u|IyIVvRnd0ye&HlLgU-`|jD^%DHeVBBxo{Puy!E*`zURvZ$yEcO zLn=#v)Ba`WwnYEEO<9j8)TE|C5Zlc^U+HeWuk)GuZxw2I3{AAIJV)`8Jw=mWhX(BH zwg9L8N)uC^Mx96AQ(QGdz}_6k4H+L+>hTUibD7{+BW^tNlZ5bigJ4Waz=A11N-7ii zBL06<2wN@)Z@4ga+!TT1q?fSQT&G4ea!-T5WR%?d`c+u|l9nM8SH>?*fxVxs6tPfS zSSgYXUg$kvAwvg+O6O0lEWekVT!Ei{w7C9@noXtV6YpeTC2iPk&rCJckoz|DZzO!}ug(IO^!FL*sHI~b$y=Z1 zWlb!1x1WfSVXjMv{@u=NFbfnbuC(KVrzE04`14GjpZ-p^zl54nrbq9&^B1eu&KeWy zATE+}TI&tV$!`3?Fp8fRToMthvZeReMA&3C^5~lWn%NP(G@Jd%L>eHo4*7S)?g~vs zb=vN~X1lNz1_^$@C17MMx#*ls!bRWPa!ptde6kx~_)lvgH=QIb*h{ubS?eP^FXtz*0=GF8tE2v1k2p1WUzQ72mBPOcRZ&;xn%W9BciuvEJ>B_~HHFTNvx7_dZnC`XB3n(1Q z)S!Pi=_b+FU%u@&4eN>T>#&-4XkKenw8cXWEi@(YIrn}4koFOt{kj+ZcD$f`F3;@6 zUoi2$+e80!$?$7sBylmf*dRvD{SX8|F2?@s=MQw662=n3;zlmvQba1*6ORy)*VllZ zUmE46`H7y;HFvzwjeF}05x4^e8(dF|A$Dtfm?>@*|Gp$p2tpud-EW#8q-AOl!v|Z< zk!9gx&S2PQADM?1aQu3BxxTmtF);4fw%|K1$go8Xb8=JkzjQr}Rq?-!P~EPxR2zYz z`xAvFeC^_B#^u5CfDK92q+FV=-Web^&45eybuFY-E$p(~Jo1a7RJ}&GcjAW@%kUgP z{$QCX+Lij{(kL4UP!1|s$05G)NffrCcX#*DUK(_CAq)>T4QhkvZahoVgKng3r?cu> z?pG|mZw(nhMnlNK1U>0nFN8W5HApzF7k?yg)(0rSuWS68-A~@Q0Z*VSlI3rREz0f; z)7s(RQURit^T(;v25Ad^(I@3eo{mvbpBW1wj5Q`TE#J>B$2?n9kJf8-67|<~Dn3g* z`X2Mo+_#Z$ri*>KEr}094k1Gq$3-zoCR$8N&tO_+*!#wg4P5*6MfEC zKHf*Yo)T0Xq*USdqEB@H%kzzZsrOHHwSzSelZXO3#ukt(G_uOnUUUARhMkr+`0j2y zV{gQ-6j8o(Nk5*EtTcy=a)ss4x&dvb(#Cqe%2-$yUdI-Xd46a$iM#1KT3;1W)tIkmYBl?5OYJ_%n3T;qA+=LPyt?L64-R71o`K;_GA@6e?yt~?8zX)>#J@L;^;6FNQ z;N}P(qYf{Yb)VZ0>Vr$QYI+8SB{}3$eV8PaE-z5Ux30_UsCsJe`teVN2Z7SlKjPOz z7Is=EH@D=g1$suV{V7QUgB!CmkDzxLS#n;b!AEPKo{v6gh^C5=)VKoKZqff*Y7S5WWrLHz=NKdqAM zsEwg3=xekO%+VagH(_Kc=wts&HX~xT+^Bu)V~wF(#aG4SAGK%AsHy?PYm3}rW5ED+ zna_WSGOlm9r7w0@0q<_KoCtZWg}cdY4#HXpG=6ECyH%DK%#Uv?#eY5u=WHW~Yh^|! z_PNydwAVul(Z^K}{;TpLZM-kirvz9@>=^NFrp+Y`$)LEL>x7{9akhv3XgZm=*A?*p zRde3|Y`yOvZ>bigtxfG!f>6AznpJAnra~!2sl5qBYsZRBODT~eX6&u@o)uI|jTns? zn;75t{1@M!&M)V2?#F$f>pJ&+uIu%B+NizZBa*WjeY0v!LKI9Fcliysg8cYfjMtaJ z@u5R3=aMjQ4_;;j!K2J`S93YQqcKh2_ zJvwgPMX+YH=$OFT9(A2u|F^1kq2QE`)mBN0Ujz1v?-q|W3O8SnuL2J&_X23*O+-?k zyNVGOFISSaAzzn-kEMf z>1gc!>itc$B`jk{EkOS_p=#GN@y`K^cbhW>k!sfRdFQmsY_$-~bh0|m;B*D|`IQ%; zNuuu}%4o(%P>CCcs)p`MDR;c7vxQ()x+t$;!7X6Q~i$gal?v{Ie%;4zh5%h zMCz}!dQ>ysT=l!bie9G$D4 zRlkT*H(31l(mC0DRxyUUhTr`7e@2i*AX<|v`2@yBcI`xF(QXTET@U&MciPr-u+o+@ z=5B3y2mz<%AqWl9dj8pw`E1TPp?rUovr)-C0)(mA#QA?uqJ~233$rFC#ZZ74RGs4o zXzO_$zyYP)xD@8WpCfZG`<|zuXlYx)x6P$h$>PD1R9+vQo=?Uu$rS0Xs_S{Li{}X1 zbxk4ArRJ`_oUUCV!v_1fB)|D@B;c0H?2j}cx6xbPWMDEFjkSfJB2WUXX<)w~ri#kqT zBXhBjLu#;hqoT{H!g^e*{W}o_Ip(idX5YAax1LFy#(w>gU|9<~R}r%J6eKvUB<{7U z7MW(6ibI(xDD6hRq8j$Ht8s)5SJACoTVU{VbPB2sQ$TyhZLRSo1V2oQg?xh@ zueSrUeMTEM#`9oU|E>qZP`SNN3)K-mPBQ{YJkBK-?dv(ln<%F1-c5l|w@XCt-zVQ2 zw=oac=_P74YgbIS=Guxgy=0hTzbnspvSEWr>=f9bD$L10;dxNz>)-FD=BxU%nQD}x z**`TH_lKu3%;XN6JVm&1jKKIO!}NhGoxj-+Ui+D;f9NU_d<_O@?v?trNt9yp@ymwvpIJ4?DxjDAeC_Y zZWsUPnEzB9=hE9l0+U$*_&qrx%8elOPpOER9LWuP>8iUQN;(o5!=q%!1()2TWOrK` zhBAO^xoq=E8Cfvs+~ceG@mL#anV5o#t?+mRuU0V-yvO^|%0z}-$KV1#NFh^A} z$!zoe)nh#_er^EwlYdPqj$H*(GKYyT_O@b0{>h^ae_g&q?OcGpmXehNd8Dtr>*r7O zwh=sXa^W*4vkiQxy+rmlJiQHj0O`LE$%?MAfBdf^+pjKYn5QdV-=^aK*>WwuKJr3S z6QS@_bR6Wj`R*TgeP^>{8fj)xZZ2ilzBqB60JLhbdWy|x~qO);B+QdeIGvFsgkGh8?Q=L@KrV0yZwMhrsAVM_pk+s z+cR(j6kxv@ZziW@(jgX*WFINvFlVLiotfn4Fk?cADgq#%rM2pz82gsrNl;+W0L6d0 z#DUwbx@io3zC*cAjBQkcyY2Y$#{tUL%YLsJH1?rOeZ_lV+7fM?Kwq?b1b90{#Af@e z1ojyq^w76&{82zv<#1T(0e+BC)=dKgaxWMb@$4Be4s1}7hD2{M6K`wH z*(IH4i(1mZPM#la8r}T{uw0N?fBWeymL6t-KR*BUXjfR5gsO1QJ+rS&!n+0%(GyE= zJ;^|mB(&U*{MyH2e(-l})?>wJ*Ca-qz(}|SHK+v5jRGE^^P>`(?%O0iZAlm=x{5lQG|L|~@1zOiIXI!{R$bk*3*CC!s)VQ^6K z(d;30=mLrP9fSKir`5&yAbY0##Javmm6@}Tl<`mZ2^+3mcBDW1VDv>I@rjGZz5!^N(MT&Gl`A#4Tq}QE|4zw$ z+u6X>0y(Yn&6Un?L8(%pv{~yyZQoNBT}dv?rFt@!&IW9OQim&fw4e2+Sd*A{Zt z1}dNWbixLIJ|yDN|2b^0XFa!AQpSXNQj3Cbbo@EG$!BwKUuP!+d&BoL& zK@C;BjKfC1sF)O7SPDN`FhrHIU_ItHCa{@-JM6HQH=Q0|Dq1e8s7=_!u|KlX0(8w#1fvd^J> z`>J<%B|*)xP!8->keW;zKEj#`XZOu;Zid&a?hpCG?R3-GD`as+@SPUeyPsG)=?HrU zYjWKV_gUI;&Vkhs=xTpt-hrsk_yaQs&xv$|t^YHCV`*HVx10ru}hwn&hchCZwA z?3YM3HuPhs!I%GJJRQg)KEG4K*<{bGTLysG^<^oBuh4N!*k;lYnpSNS%BaTULBXj* zkeuR@sO|9ui6c||-X-~4#R^dqnZP+Hc)reCH3I$|}%~hH(B2S_X|~@OI6k_VE63 ziq}#`<^Fo+H)Mhm1*Ym+r;{DcJ<>jb$t;+Xo>kqet;821&;`4z-jCTq3t&+Q4;X{v zOLYhz8>w`4ZZ91rwqZARN&BNadn|=r>!%8I3?&*cLhlxd4y-e_7UfY~uPfq;E`$UA zmWHkdv3dTyZHoNZsK6!aK&LDNJ|(M!!?`%5p7C?h(`%r>d~fC-(`$v8{-=5iK?ZXS z!+2#BsHB84E-)z68ORk)+0KfyR?3t*KGfnZL%AfKXaot{EwaxUD0=F$#21tYQI$IX z`S}l>-#y8$((`to7(_jL>^I3{>3i0q&xL?UNhDbJg|e#f^RqOJ2@Lta5dCs^B;~(V zTxguO+)K%vDvfMPS+J4z$f^z^;E`+|%PfWrP8B!cuSCzaC#<9LX>=7pLH9y*>v!he z4@IxX1A*Dee?>1?qsl5NCAh_j?c-RAPhJ*cgEf|Si>{dSd3~h?0Q1!D-_?WNPTvSI zPDK!YY*}AhcmYi+%;0hcIv6?k+*TZZ3v?d6R@n2pb@aNO;prvTDJd=Mem(F`eRP&q z`Z0#XdGu4Q_r1kbTN?sYBH*ZN=@?{;K=m1FlE1D;U|*Y5d$yB?3eMd23vA|16kQNa zV9{7O(`jg)2{PGtA@kR&Jnht$Ho$~tC%mi(pnPbrk6*o&HT1cl%`+Hv`Fi&ke}zmj zaPpqpIN`Ma@5}LKg=S_ZeBuD@RndBw)0>x{&vJil0bs+L$5q9lSI`=*h zctDc-H|p~INNru%BDGccqxhL%V_}*mKPppGW`>L}empQMgC3ZgX22D|S;0Ezy~RQF zp@dqqz9E$MS;K{UB#Ai02m8i=LzO?Ju_mEJIMp1us_I^VPMRJfQ~OcG);i3Xr{<{Z z3a#nbtbs4lUY?RqEBdmrG#2lBO6BPdhMsTIOMVEJ3KjBlm}HnAHR|2LMEQ$RJOvI9Yxu#L-zS=EeK5iWXLD zi{{x*xAOc7K$$S9krUp7rFl6_fXNx3~%QI>N9Dgkj%4 z_7F3W^|dWD@_6i$|4Q;1l%+N=Jy`$IoKb}_Y9(#3n8ff-vL*sy(^F01zrB~CB-d~2 z&1M}YUc&NRhYa+P%HW$B<`95)fzbVCEI4F|9_|`b9ydJr=pFyyC@E)^{0xcqPiINN zn&as%&T<`NZ-6(>X4!ge-V0#g2D@T=>Jq(SAK;2cKoK4v}&m zG%s;!B-|na?mmgOMRUgwreG%R)$H>Mtwr&ebzQ$1k2u`yq(+NuUtQe&uumRbD6SsZqpTTyh8D(R1{8h&L6c`{4c|GVN% z9pL+PBXjsi_P|ET*Db%cV6NfKfo?d0tJi@IAvfexMSUz}*MTdd3yDw1)3hW1$5)%G zAYD3TG2)f-V^Mjvc)fVM?k) z6QaY+3DG?Ezcm+*9?Tkk6^V8$G`~_Q%Fb~)@J}NLrx<0ent}4N07Vi0dv@(l)>ym< zS^DTcnMi8Z!2#}~te#6=M7Kp1$KUh5_PH6V)Ve~fA7T1?%vY-ydz9XUGUk8vqkF<3DAz-RJW&l~e3!2D*SEU8& zBlpN_U2YaKKK!Az-(5b@`4*-R8m#j}1AODK9I>h9!pP=#xR5n60ovj!@K%PgJcy(>Uqjk9@;KIJcD zGpqaBWc|7`@qP&S?uW48Q0`5oO^%zu;e4vAZJNU@es^=aJV|?|49x*TX}Tq&%9n25 zV(B3o2@a!?e<0XZTp`jUtVS2}Q!+u_0Fa5}+dWe5jOO_eIKboMg4k)4$zxz5{rQ$( za6b;CNVhyHzQPf70~IA8`AqoNuW_=LjI#6}e!DPM(K!d-KXEkPPIN>kd@6dcfn)_) z5KHf_u1aIE67J7FIt()v&yw|{mYz1qS{4BzFPcl*UQ}wACx!lw(_>*u*5aKt^%y5?kF0ysWSGMex^4}k$88d<+ABjiVza+gFXRUia#LTHZ;PN1in_TDd9 zuW%o60&p^qB+*^@Y-_-;jU&J*q3Uw(K~*hOOP?E z7Ld5>=fg^7pJhFl*ih5#SpN8K3TZ&M;|xbnm3H?eC-bsL!283Qz#Eb!@`hxY^G%jh zT=2ed6tTv#vZvVl4F8vOY_fB9c+vC0qgl7yS9|F({*rlp-FY0PZo`bz{jN?dfU{#) z+8}S{Ehg+F(Dao+>|EW7#SvmWcc~6IKpBW&@7U)^_G@L>ag_q~-Js(_JLN>Jr8f_M zC8lNzeW~n1yibd(t@-mg)Zm`*<1bL$*d;{XZz0^kq*@ZLt|>eQsGq!hl?Mcd#aY*P zq8hcjR%Uz2Bz`34z-Pz;t0-3w++L2igLWkd-`8#)>+t>B*H=;O?bie|%#*xG`EJI%*ipX;{gASdtp-s3p%-ngZOkh0#Nt+7i$`iE6t!~%Sy zk%itb=bo3;z*m#?Y+(T?!0-3Xq9vB~vQb08>yq&1&Gw|4gJ07MH;;cx zt;`RVw&kBLwIqJ~l%!aL^Nm-4!l;ZZ>&LC4Uva2N?C9y|Lu-=CMo%G|`|!n{jv~`T znyup6==23wvAonENztm2WVZKn9qk=SZMh0R341H`y*0?lVAsRAj!=?VeY2!UnkZTu ztk-?_(WFhirp7bXA5<%Y-8Yc(CRE4N(!x0d-J`9YHV zSDgxhY~ePMYfCu6beMUer#~UEzMy~2=Jfdv6ez$Fr<~#lc0(dN=E|$KV}w7Z@@r`Q z!SUBgm=XNH)={sD{E|Oe zl23kMY;hPLRaeIrdgbXHutI7yO!F}1odz!7;e+UkBuRpD;T`SbAGKxS`sflBsARCo zmL@-Mv5$r(|CdAilGuv52fH@ZvuxRtdp^==Xw8i%YjjrF Date: Sun, 31 Mar 2019 16:32:44 +1100 Subject: [PATCH 06/35] Fix wording --- source/_components/sensor.solax.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 80a19306400..44f8fbd51e6 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -2,7 +2,7 @@ layout: page title: "Solax Sensor" description: "Instructions on how to integrate Solax sensor within Home Assistant." -date: 2019-03-31 14:00 +date: 2019-03-31 04:20 sidebar: true comments: false sharing: true @@ -13,7 +13,7 @@ ha_release: 0.91 ha_iot_class: Local Polling --- -The `solax` platform uses the [ha-solax](https://github.com/squishykid/ha-solax) API to allow you to get details from your Solax solar power setup and integrate these in your Home Assistant installation. +The `solax` component connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST api. This component retrieves information such as photo voltaic power productionm, battery levels and power, and how much power is being fed back into the grid. ## {% linkable_title Configuration %} From f48b60396a2289e13f424f9b5e1fe5797e84f7dd Mon Sep 17 00:00:00 2001 From: Lewys Martin Date: Sun, 31 Mar 2019 16:38:48 +1100 Subject: [PATCH 07/35] typo --- source/_components/sensor.solax.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 44f8fbd51e6..546d9e13a2e 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -13,7 +13,7 @@ ha_release: 0.91 ha_iot_class: Local Polling --- -The `solax` component connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST api. This component retrieves information such as photo voltaic power productionm, battery levels and power, and how much power is being fed back into the grid. +The `solax` component connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST api. This component retrieves information such as photo voltaic power production, battery levels and power, and how much power is being fed back into the grid. ## {% linkable_title Configuration %} From 0d2a3730ca2080c6d05ec86fe46d46b7d9214253 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 18:53:19 +1100 Subject: [PATCH 08/35] Update source/_components/sensor.solax.markdown Co-Authored-By: CountParadox --- source/_components/sensor.solax.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 546d9e13a2e..1d41cf5746d 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -13,7 +13,7 @@ ha_release: 0.91 ha_iot_class: Local Polling --- -The `solax` component connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST api. This component retrieves information such as photo voltaic power production, battery levels and power, and how much power is being fed back into the grid. +The `solax` component connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST API. This component retrieves information such as photovoltaic power production, battery levels and power, and how much power is being fed back into the grid. ## {% linkable_title Configuration %} From 507770053bb7f62bf71607c0ef92548160e41251 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 18:53:29 +1100 Subject: [PATCH 09/35] Update source/_components/sensor.solax.markdown Co-Authored-By: CountParadox --- source/_components/sensor.solax.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 1d41cf5746d..b21f1c015c6 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -19,7 +19,6 @@ The `solax` component connects home-assistant to Solax solar power inverters. So To use the Solax sensors in your installation, add the following to your configuration.yaml file: -{% raw %} ```yaml # Example configuration.yaml entry sensor: From 8843b2c415aef828595ec427e15b715563df5cdd Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 18:53:39 +1100 Subject: [PATCH 10/35] Update source/_components/sensor.solax.markdown Co-Authored-By: CountParadox --- source/_components/sensor.solax.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index b21f1c015c6..815647708c8 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -25,7 +25,6 @@ sensor: - platform: solax ip_address: IP_ADDRESS ``` -{% endraw %} {% configuration %} ip_address: From 485c49580028278c66c46902bd73b357975ecee8 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 18:54:05 +1100 Subject: [PATCH 11/35] Update source/_components/sensor.solax.markdown Co-Authored-By: CountParadox --- source/_components/sensor.solax.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 815647708c8..9a64cfc803a 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -46,7 +46,6 @@ sensor: - platform: solax ip_address: 192.168.0.3 ``` -{% endraw %} If you would like to convert the values from multiple panels or view the total power the house is using, you can use the [template platform](/components/sensor.template/). From ff4b641ff94bb16708a3f30bbb6962b0f00b22f6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 18:54:10 +1100 Subject: [PATCH 12/35] Update source/_components/sensor.solax.markdown Co-Authored-By: CountParadox --- source/_components/sensor.solax.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 9a64cfc803a..1ef2d17e5d0 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -36,7 +36,6 @@ ip_address: ### {% linkable_title Full configuration sample %} -{% raw %} A full configuration entry would look like the sample below. From d2d20e55bcf54d3e2cbbf3dd7f6ad6b39794a062 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 18:54:17 +1100 Subject: [PATCH 13/35] Update source/_components/sensor.solax.markdown Co-Authored-By: CountParadox --- source/_components/sensor.solax.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/sensor.solax.markdown b/source/_components/sensor.solax.markdown index 1ef2d17e5d0..9c3e8d61bd4 100644 --- a/source/_components/sensor.solax.markdown +++ b/source/_components/sensor.solax.markdown @@ -26,7 +26,6 @@ sensor: ip_address: IP_ADDRESS ``` {% configuration %} - ip_address: description: The IP address of your Solax system. required: true From a3b094d49945decfc5fe8b25befc58b98bd13abf Mon Sep 17 00:00:00 2001 From: Lewys Martin Date: Sun, 31 Mar 2019 18:55:16 +1100 Subject: [PATCH 14/35] Rename sensor.solax.markdown to solax.markdown --- source/_components/{sensor.solax.markdown => solax.markdown} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/_components/{sensor.solax.markdown => solax.markdown} (100%) diff --git a/source/_components/sensor.solax.markdown b/source/_components/solax.markdown similarity index 100% rename from source/_components/sensor.solax.markdown rename to source/_components/solax.markdown From 33e0d136da5629aff90ba17b4846c84b944d393f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 31 Mar 2019 10:11:07 +0200 Subject: [PATCH 15/35] :pencil2: Tweak --- source/_components/solax.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/solax.markdown b/source/_components/solax.markdown index 9c3e8d61bd4..18c0d21321f 100644 --- a/source/_components/solax.markdown +++ b/source/_components/solax.markdown @@ -25,6 +25,7 @@ sensor: - platform: solax ip_address: IP_ADDRESS ``` + {% configuration %} ip_address: description: The IP address of your Solax system. @@ -37,7 +38,6 @@ ip_address: A full configuration entry would look like the sample below. - ```yaml # Example configuration.yaml entry sensor: From bc0b298775b1c17cd92e596816ef3a23f324dcaa Mon Sep 17 00:00:00 2001 From: "Jardi A.M. Jordan" <1088732+jardiamj@users.noreply.github.com> Date: Mon, 15 Apr 2019 13:53:42 -0700 Subject: [PATCH 16/35] Added documentation for MCP23017 component: binary sensor and switch platforms. --- source/_components/mcp23017.markdown | 128 +++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 source/_components/mcp23017.markdown diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown new file mode 100644 index 00000000000..af488631203 --- /dev/null +++ b/source/_components/mcp23017.markdown @@ -0,0 +1,128 @@ +--- +layout: page +title: "MCP23017 I2C GPIO expander" +description: "Instructions on how to integrate the MCP23017 GPIO pin expander with I2C interface into Home Assistant." +date: 2019-04-14 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: + - DIY + - Binary Sensor + - Switch +ha_release: 0.92 +ha_iot_class: Local Polling +redirect_from: + - /components/binary_sensor.mcp23017/ + - /components/switch.mcp23017/ +--- + +The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. + +## {% linkable_title Binary Sensor %} + +The `mcp23017` binary sensor platform allows you to read sensor values from the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732). + +The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-15 to port B (B1-B8). + +## {% linkable_title Configuration %} + +To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: mcp23017 + i2c_address: 0x20 + pins: + 0: PIR Office + 1: PIR Bedroom +``` + +{% configuration %} +i2c_address: + description: i2c address of MCP23017 chip. + required: false + type: integer + default: "`0x20`" +pins: + description: List of used pins. + required: true + type: map + keys: + "pin: name": + description: The pin numbers (from 0 to 15) and corresponding names. + required: true + type: [integer, string] +scan_interval: + description: Interval to scan for sensor state changes in seconds. + required: false + type: integer + default: 15 +invert_logic: + description: If `true`, inverts the output logic to ACTIVE LOW. + required: false + type: boolean + default: "`false` (ACTIVE HIGH)" +pull_mode: + description: > + Type of internal pull resistor to use. + Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. + required: false + type: string + default: "`UP`" +{% endconfiguration %} + +NOTE: MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors. + +For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). + +## {% linkable_title Switch %} + +The `mcp23017` switch platform allows you to write to the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732). + +The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-15 to port B (B1-B8). + +## {% linkable_title Configuration %} + +To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: mcp23017 + i2c_address: 0x20 + ports: + 11: Fan Office + 12: Light Desk +``` + +{% configuration %} +i2c_address: + description: i2c address of MCP23017 chip. + required: false + type: integer + default: "`0x20`" +ports: + description: Array of used pins. + required: true + type: list + keys: + port: + description: The pin numbers (from 0 to 15) and corresponding names. + required: true + type: [integer, string] +invert_logic: + description: If true, inverts the output logic to ACTIVE LOW. + required: false + default: false + type: boolean +{% endconfiguration %} + +For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). + +

+Note that a pin managed by HASS is expected to be exclusive to HASS. +

From 66ae490ec220cfbd3b0fea74d36db3127948d03b Mon Sep 17 00:00:00 2001 From: "Jardi A.M. Jordan" <1088732+jardiamj@users.noreply.github.com> Date: Mon, 15 Apr 2019 15:50:01 -0700 Subject: [PATCH 17/35] Removed redirect_from: label. --- source/_components/mcp23017.markdown | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index af488631203..8cc30cfefbe 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -14,9 +14,6 @@ ha_category: - Switch ha_release: 0.92 ha_iot_class: Local Polling -redirect_from: - - /components/binary_sensor.mcp23017/ - - /components/switch.mcp23017/ --- The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. From 17bd0f86bc79487ab35e5b3323771310646bc03e Mon Sep 17 00:00:00 2001 From: jgriff2 Date: Sun, 28 Apr 2019 13:10:51 -0700 Subject: [PATCH 18/35] Create remote_rpi_gpio.markdown --- source/_components/remote_rpi_gpio.markdown | 127 ++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 source/_components/remote_rpi_gpio.markdown diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown new file mode 100644 index 00000000000..1a33e1fdabd --- /dev/null +++ b/source/_components/remote_rpi_gpio.markdown @@ -0,0 +1,127 @@ +--- +layout: page +title: "Remote Raspberry Pi GPIO" +description: "Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant." +date: 2019-02-20 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: + - DIY + - Binary Sensor + - Switch +ha_release: +ha_iot_class: "Local Push" +redirect_from: + - /components/binary_sensor.remote_rpi_gpio/ + - /components/switch.remote_rpi_gpio/ +--- + +The `rpi_gpio` component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. + +## {% linkable_title Binary Sensor %} + +The `remote_rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). + +## {% linkable_title Configuration %} + +To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: remote_rpi_gpio + ports: + 11: PIR Office + 12: PIR Bedroom +``` + +{% configuration %} +address: + description: IP Address of remote Raspberry Pi + required: true + type: string +ports: + description: List of used ports. + required: true + type: map + keys: + "port: name": + description: The port numbers (BCM mode pin numbers) and corresponding names. + required: true + type: string +invert_logic: + description: If `true`, inverts the output logic + required: false + type: boolean + default: "`false` (ACTIVE HIGH)" +pull_mode: + description: > + Type of internal pull resistor to use. + Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. + Pull-Up defaults to active LOW and Pull-down defaults to active HIGH. This can be adjusted with invert_logic + required: false + type: string + default: "`UP`" +{% endconfiguration %} + +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. + +## {% linkable_title Switch %} + +The `remote_rpi_gpio` switch platform allows you to control the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). + +## {% linkable_title Configuration %} + +To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: remote_rpi_gpio + address: 192.168.0.123 + ports: + 11: Fan Office + 12: Light Desk +``` + +{% configuration %} +address: + description: IP Address of remote Raspberry Pi + required: true + type: string +ports: + description: Array of used ports. + required: true + type: list + keys: + port: + description: Port numbers and corresponding names (GPIO #). + required: true + type: [integer, string] +invert_logic: + description: If true, inverts the output logic to ACTIVE LOW. + required: false + default: false + type: boolean +{% endconfiguration %} + +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. + +

+Note that a pin managed by HASS is expected to be exclusive to HASS. +

+ +A common question is what does Port refer to, this number is the actual GPIO #, not the pin #. +For example, if you have a relay connected to pin 11 its GPIO # is 17. + +```yaml +# Example configuration.yaml entry +switch: + - platform: remote_rpi_gpio + address: 192.168.0.123 + ports: + 17: Speaker Relay +``` From b5ffa4681ccddeeeec38df05234533d810e2d071 Mon Sep 17 00:00:00 2001 From: jgriff2 Date: Sun, 28 Apr 2019 13:11:05 -0700 Subject: [PATCH 19/35] Delete remote_rpi_gpio.markdown --- remote_rpi_gpio.markdown | 127 --------------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 remote_rpi_gpio.markdown diff --git a/remote_rpi_gpio.markdown b/remote_rpi_gpio.markdown deleted file mode 100644 index 1a33e1fdabd..00000000000 --- a/remote_rpi_gpio.markdown +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: page -title: "Remote Raspberry Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant." -date: 2019-02-20 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: - - DIY - - Binary Sensor - - Switch -ha_release: -ha_iot_class: "Local Push" -redirect_from: - - /components/binary_sensor.remote_rpi_gpio/ - - /components/switch.remote_rpi_gpio/ ---- - -The `rpi_gpio` component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. - -## {% linkable_title Binary Sensor %} - -The `remote_rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). - -## {% linkable_title Configuration %} - -To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: remote_rpi_gpio - ports: - 11: PIR Office - 12: PIR Bedroom -``` - -{% configuration %} -address: - description: IP Address of remote Raspberry Pi - required: true - type: string -ports: - description: List of used ports. - required: true - type: map - keys: - "port: name": - description: The port numbers (BCM mode pin numbers) and corresponding names. - required: true - type: string -invert_logic: - description: If `true`, inverts the output logic - required: false - type: boolean - default: "`false` (ACTIVE HIGH)" -pull_mode: - description: > - Type of internal pull resistor to use. - Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. - Pull-Up defaults to active LOW and Pull-down defaults to active HIGH. This can be adjusted with invert_logic - required: false - type: string - default: "`UP`" -{% endconfiguration %} - -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. - -## {% linkable_title Switch %} - -The `remote_rpi_gpio` switch platform allows you to control the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). - -## {% linkable_title Configuration %} - -To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: remote_rpi_gpio - address: 192.168.0.123 - ports: - 11: Fan Office - 12: Light Desk -``` - -{% configuration %} -address: - description: IP Address of remote Raspberry Pi - required: true - type: string -ports: - description: Array of used ports. - required: true - type: list - keys: - port: - description: Port numbers and corresponding names (GPIO #). - required: true - type: [integer, string] -invert_logic: - description: If true, inverts the output logic to ACTIVE LOW. - required: false - default: false - type: boolean -{% endconfiguration %} - -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. - -

-Note that a pin managed by HASS is expected to be exclusive to HASS. -

- -A common question is what does Port refer to, this number is the actual GPIO #, not the pin #. -For example, if you have a relay connected to pin 11 its GPIO # is 17. - -```yaml -# Example configuration.yaml entry -switch: - - platform: remote_rpi_gpio - address: 192.168.0.123 - ports: - 17: Speaker Relay -``` From 25c026681830e5768ff36c686ec6695ea518f498 Mon Sep 17 00:00:00 2001 From: jgriff2 Date: Sun, 28 Apr 2019 13:15:27 -0700 Subject: [PATCH 20/35] Update remote_rpi_gpio.markdown --- source/_components/remote_rpi_gpio.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown index 1a33e1fdabd..e5fe106fe08 100644 --- a/source/_components/remote_rpi_gpio.markdown +++ b/source/_components/remote_rpi_gpio.markdown @@ -38,6 +38,18 @@ binary_sensor: 12: PIR Bedroom ``` +or + +```yaml +# Example configuration.yaml entry +remote_rpi_gpio: + host: 10.0.1.9 + binary_sensors: + 6: Pin6 + switches: + 4: Pin4 +``` + {% configuration %} address: description: IP Address of remote Raspberry Pi From 6c0aaf8a4e4d753f2109c98e2ea971b07c3f9f02 Mon Sep 17 00:00:00 2001 From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com> Date: Tue, 7 May 2019 16:00:08 -0700 Subject: [PATCH 21/35] Update mcp23017.markdown --- source/_components/mcp23017.markdown | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index 8cc30cfefbe..b5b9ca0338e 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -91,7 +91,7 @@ To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi switch: - platform: mcp23017 i2c_address: 0x20 - ports: + pins: 11: Fan Office 12: Light Desk ``` @@ -119,7 +119,3 @@ invert_logic: {% endconfiguration %} For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). - -

-Note that a pin managed by HASS is expected to be exclusive to HASS. -

From 2901029d10508d9c2d0cb73d52c6c5d35f4c3dc8 Mon Sep 17 00:00:00 2001 From: jgriff2 Date: Thu, 9 May 2019 22:20:38 -0700 Subject: [PATCH 22/35] Update source/_components/remote_rpi_gpio.markdown Co-Authored-By: Klaas Schoute --- source/_components/remote_rpi_gpio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown index e5fe106fe08..e007f2e2eff 100644 --- a/source/_components/remote_rpi_gpio.markdown +++ b/source/_components/remote_rpi_gpio.markdown @@ -13,7 +13,7 @@ ha_category: - Binary Sensor - Switch ha_release: -ha_iot_class: "Local Push" +ha_iot_class: Local Push redirect_from: - /components/binary_sensor.remote_rpi_gpio/ - /components/switch.remote_rpi_gpio/ From 0f37cbda36f30b71f5b33d04cc84d34bab503436 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 10 May 2019 11:19:57 +0200 Subject: [PATCH 23/35] :pencil2: Remove redirect_from --- source/_components/remote_rpi_gpio.markdown | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown index e007f2e2eff..9cc1eef6b6b 100644 --- a/source/_components/remote_rpi_gpio.markdown +++ b/source/_components/remote_rpi_gpio.markdown @@ -14,9 +14,6 @@ ha_category: - Switch ha_release: ha_iot_class: Local Push -redirect_from: - - /components/binary_sensor.remote_rpi_gpio/ - - /components/switch.remote_rpi_gpio/ --- The `rpi_gpio` component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. From 7509aaff11ce7e819c4e1ed490fbe39fe93eb181 Mon Sep 17 00:00:00 2001 From: bouni Date: Tue, 14 May 2019 09:49:12 +0200 Subject: [PATCH 24/35] extended spaceapi component documentation --- source/_components/spaceapi.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/spaceapi.markdown b/source/_components/spaceapi.markdown index 8f83f10ab3c..29de8f0f27c 100644 --- a/source/_components/spaceapi.markdown +++ b/source/_components/spaceapi.markdown @@ -114,6 +114,8 @@ sensors: type: entity_id {% endconfiguration %} +The list of sensors can be any sensor, not just temperature or humidity. + ## {% linkable_title Examples %} In this section you find some real-life examples of how to use this component. From 2de75f5f7994382ead7f39fb4aaac9778f82b2c6 Mon Sep 17 00:00:00 2001 From: bouni Date: Mon, 20 May 2019 12:09:11 +0200 Subject: [PATCH 25/35] added description how to set the location attribute of a sensor --- source/_components/spaceapi.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/spaceapi.markdown b/source/_components/spaceapi.markdown index 29de8f0f27c..beb7cd8d5e1 100644 --- a/source/_components/spaceapi.markdown +++ b/source/_components/spaceapi.markdown @@ -116,6 +116,18 @@ sensors: The list of sensors can be any sensor, not just temperature or humidity. +## Sensor specific location + +The [SpaceAPI specification](https://spaceapi.io/pages/docs.html) requires every sensor to provide a location. +In order to set a sensor specific location do the following steps: + +1. Go to Configuration -> Customization +2. Select the sensor entity +3. Pick "Other" from the attribute override pulldown +4. Set the attribute name to location and the attribute value to your desired location + +If no location is set, the location defined in the HA config is used. + ## {% linkable_title Examples %} In this section you find some real-life examples of how to use this component. From ea232283b3c14a4c70924a4df64eb38edb7d0972 Mon Sep 17 00:00:00 2001 From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com> Date: Sat, 25 May 2019 17:34:41 -0700 Subject: [PATCH 26/35] Update source/_components/mcp23017.markdown Co-Authored-By: Anders Melchiorsen --- source/_components/mcp23017.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index b5b9ca0338e..6eb6cf88fcc 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -16,7 +16,7 @@ ha_release: 0.92 ha_iot_class: Local Polling --- -The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. +The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding sections. ## {% linkable_title Binary Sensor %} From 29f831a0fd51a16ee7e24e0c719de3e7d1073998 Mon Sep 17 00:00:00 2001 From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com> Date: Sat, 25 May 2019 17:34:50 -0700 Subject: [PATCH 27/35] Update source/_components/mcp23017.markdown Co-Authored-By: Anders Melchiorsen --- source/_components/mcp23017.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index 6eb6cf88fcc..bad3108f9b1 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -26,7 +26,7 @@ The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-1 ## {% linkable_title Configuration %} -To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file: +To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From 1094afdcde75b16278526a6bf6b17ccf1025ad60 Mon Sep 17 00:00:00 2001 From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com> Date: Sat, 25 May 2019 17:35:03 -0700 Subject: [PATCH 28/35] Update source/_components/mcp23017.markdown Co-Authored-By: Anders Melchiorsen --- source/_components/mcp23017.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index bad3108f9b1..b3584bf9a63 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -84,7 +84,7 @@ The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-1 ## {% linkable_title Configuration %} -To use the I/O pins of an mcp23017 connected to and I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file: +To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From b074788c96b08e0ad8e36d8c0eec01de6e49a5b1 Mon Sep 17 00:00:00 2001 From: "Jardi A. Martinez Jordan" <1088732+jardiamj@users.noreply.github.com> Date: Sat, 25 May 2019 18:18:59 -0700 Subject: [PATCH 29/35] Updated documentation for mcp23017 component. --- source/_components/mcp23017.markdown | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index b3584bf9a63..f7c71b9119b 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -18,13 +18,15 @@ ha_iot_class: Local Polling The `mcp23017` component is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding sections. +For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). + ## {% linkable_title Binary Sensor %} The `mcp23017` binary sensor platform allows you to read sensor values from the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732). The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-15 to port B (B1-B8). -## {% linkable_title Configuration %} +### {% linkable_title Configuration %} To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file: @@ -74,15 +76,13 @@ pull_mode: NOTE: MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors. -For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). - ## {% linkable_title Switch %} The `mcp23017` switch platform allows you to write to the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732). The pin numbers are from 0 to 15 where: 0-7 correspond to port A (A1-A8) and 8-15 to port B (B1-B8). -## {% linkable_title Configuration %} +### {% linkable_title Configuration %} To use the I/O pins of an mcp23017 connected to an I2C bus of your Raspberry Pi as switches, add the following to your `configuration.yaml` file: @@ -117,5 +117,3 @@ invert_logic: default: false type: boolean {% endconfiguration %} - -For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). From 28aa919d0b67d303c0ba40ad2154a8116c0c8255 Mon Sep 17 00:00:00 2001 From: jgriff2 Date: Sun, 26 May 2019 14:54:40 -0700 Subject: [PATCH 30/35] Update remote_rpi_gpio.markdown --- source/_components/remote_rpi_gpio.markdown | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown index 9cc1eef6b6b..ab7112f0eb8 100644 --- a/source/_components/remote_rpi_gpio.markdown +++ b/source/_components/remote_rpi_gpio.markdown @@ -30,21 +30,16 @@ To use your Remote Raspberry Pi's GPIO in your installation, add the following t # Example configuration.yaml entry binary_sensor: - platform: remote_rpi_gpio + address:
ports: 11: PIR Office 12: PIR Bedroom -``` - -or - -```yaml -# Example configuration.yaml entry -remote_rpi_gpio: - host: 10.0.1.9 - binary_sensors: - 6: Pin6 - switches: - 4: Pin4 + +switch: + - platform: remote_rpi_gpio + address:
+ ports: + 4: Garage Relay ``` {% configuration %} From 72a5b68b43d3a5abbb132cfb0fdc85a2f1a5ac06 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 29 May 2019 23:39:18 +0200 Subject: [PATCH 31/35] :pencil2: Tweak After this we will merge it --- source/_components/solax.markdown | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/source/_components/solax.markdown b/source/_components/solax.markdown index 18c0d21321f..180fee62291 100644 --- a/source/_components/solax.markdown +++ b/source/_components/solax.markdown @@ -8,8 +8,10 @@ comments: false sharing: true footer: true logo: solax-logo.png -ha_category: Sensor -ha_release: 0.91 +ha_category: + - Energy + - Sensor +ha_release: 0.94 ha_iot_class: Local Polling --- @@ -33,17 +35,7 @@ ip_address: type: string {% endconfiguration %} - -### {% linkable_title Full configuration sample %} - -A full configuration entry would look like the sample below. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: solax - ip_address: 192.168.0.3 -``` +### {% linkable_title Optional template sensor %} If you would like to convert the values from multiple panels or view the total power the house is using, you can use the [template platform](/components/sensor.template/). From 5492da48660e9e6bfa00195256fef9c6ba39e1d9 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 29 May 2019 23:41:30 +0200 Subject: [PATCH 32/35] :pencil2: Tweak After this we will merge it --- source/_components/remote_rpi_gpio.markdown | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/source/_components/remote_rpi_gpio.markdown b/source/_components/remote_rpi_gpio.markdown index ab7112f0eb8..50f75828065 100644 --- a/source/_components/remote_rpi_gpio.markdown +++ b/source/_components/remote_rpi_gpio.markdown @@ -12,7 +12,7 @@ ha_category: - DIY - Binary Sensor - Switch -ha_release: +ha_release: 0.94 ha_iot_class: Local Push --- @@ -22,8 +22,6 @@ The `rpi_gpio` component is the base for all related GPIO platforms in Home Assi The `remote_rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). -## {% linkable_title Configuration %} - To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -77,8 +75,6 @@ For more details about the GPIO layout, visit the Wikipedia [article](https://en The `remote_rpi_gpio` switch platform allows you to control the GPIOs of a [Remote Raspberry Pi](https://www.raspberrypi.org/). -## {% linkable_title Configuration %} - To use your Remote Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: ```yaml From e7e18cc24b96752c041f492503e6da7914feea80 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 29 May 2019 23:43:35 +0200 Subject: [PATCH 33/35] :pencil2: Tweak After this we will merge it --- source/_components/mcp23017.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index f7c71b9119b..2ac764d35ec 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -12,7 +12,7 @@ ha_category: - DIY - Binary Sensor - Switch -ha_release: 0.92 +ha_release: 0.94 ha_iot_class: Local Polling --- From 11e131ccfb83c9675041dfe701ecf4ab2b480ebf Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 29 May 2019 23:45:19 +0200 Subject: [PATCH 34/35] :pencil2: Tweak After this we will merge it --- source/_components/spaceapi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/spaceapi.markdown b/source/_components/spaceapi.markdown index beb7cd8d5e1..34d9add3420 100644 --- a/source/_components/spaceapi.markdown +++ b/source/_components/spaceapi.markdown @@ -116,7 +116,7 @@ sensors: The list of sensors can be any sensor, not just temperature or humidity. -## Sensor specific location +## {% linkable_title Sensor specific location %} The [SpaceAPI specification](https://spaceapi.io/pages/docs.html) requires every sensor to provide a location. In order to set a sensor specific location do the following steps: From fae2293b1552927bb15ff7621e3f3cdba46f882a Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 29 May 2019 23:53:13 +0200 Subject: [PATCH 35/35] :pencil2: Put something in a html note --- source/_components/mcp23017.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/mcp23017.markdown b/source/_components/mcp23017.markdown index 2ac764d35ec..4629de4e426 100644 --- a/source/_components/mcp23017.markdown +++ b/source/_components/mcp23017.markdown @@ -74,7 +74,9 @@ pull_mode: default: "`UP`" {% endconfiguration %} -NOTE: MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors. +

+ MCP23017 only has internal pull-up resistors, if you want to use pull-down you will have to wire your own pull-down resistors. +

## {% linkable_title Switch %}