From 60436373a0bfd01d26b9cbb555f0eeafa6f87d6c Mon Sep 17 00:00:00 2001 From: Chris Elsworth Date: Tue, 17 Oct 2023 13:19:56 +0100 Subject: [PATCH] add lxp-bridge-dev HA addon --- .gitignore | 1 + addon.dev/CHANGELOG.md | 1 + addon.dev/Dockerfile | 16 ++++++ addon.dev/README.md | 21 ++++++++ addon.dev/config.yaml | 64 ++++++++++++++++++++++++ addon.dev/icon.png | Bin 0 -> 8862 bytes addon.dev/logo.png | Bin 0 -> 8862 bytes addon.dev/run.sh | 11 +++++ addon/CHANGELOG.md | 109 ++++++++++++++++++++++++++++++++++++++++- 9 files changed, 222 insertions(+), 1 deletion(-) create mode 120000 addon.dev/CHANGELOG.md create mode 100644 addon.dev/Dockerfile create mode 100644 addon.dev/README.md create mode 100644 addon.dev/config.yaml create mode 100644 addon.dev/icon.png create mode 100644 addon.dev/logo.png create mode 100644 addon.dev/run.sh mode change 120000 => 100644 addon/CHANGELOG.md diff --git a/.gitignore b/.gitignore index cd1ccb2..7929e50 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ config.yaml docker-compose.yaml !/addon/config.yaml +!/addon.dev/config.yaml diff --git a/addon.dev/CHANGELOG.md b/addon.dev/CHANGELOG.md new file mode 120000 index 0000000..04c99a5 --- /dev/null +++ b/addon.dev/CHANGELOG.md @@ -0,0 +1 @@ +../CHANGELOG.md \ No newline at end of file diff --git a/addon.dev/Dockerfile b/addon.dev/Dockerfile new file mode 100644 index 0000000..afe1816 --- /dev/null +++ b/addon.dev/Dockerfile @@ -0,0 +1,16 @@ +ARG BUILD_VERSION +ARG BUILD_FROM + +FROM celsworth/lxp-bridge:${BUILD_VERSION} AS lxp-bridge + +FROM $BUILD_FROM +COPY --from=lxp-bridge / / + +RUN echo "$MIRROR/alpine/edge/community" >> /etc/apk/repositories +RUN apk update +RUN apk add yq + +COPY run.sh / +RUN chmod a+x /run.sh + +CMD [ "/run.sh" ] \ No newline at end of file diff --git a/addon.dev/README.md b/addon.dev/README.md new file mode 100644 index 0000000..6bd6d48 --- /dev/null +++ b/addon.dev/README.md @@ -0,0 +1,21 @@ +# Home Assistant addon: lxp-bridge + +> Please note this is the *dev* version of lxp-bridge and will update with every push to the repository. +> Only use this in preference to the release version if you need one of the latest unlreeased changes. + +Allows local communication with Luxpower inverters and bridges to MQTT. + +![Supports aarch64 Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armv7 Architecture][armv7-shield] + +## About + +lxp-bridge is a tool to communicate with a LuxPower inverter (commonly used with home-battery and solar setups), written in Rust. + +It allows you to monitor and control your inverter locally without any dependence on the manufacturer's own servers in China. + +Full documentation can be found in the [Wiki](https://github.com/celsworth/lxp-bridge/wiki). + + +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/addon.dev/config.yaml b/addon.dev/config.yaml new file mode 100644 index 0000000..4d20b96 --- /dev/null +++ b/addon.dev/config.yaml @@ -0,0 +1,64 @@ +name: lxp-bridge (dev version) +version: dev +slug: lxp-bridge-dev +description: Allows local communication with Luxpower inverters and bridges it to MQTT +arch: +- armv7 +- aarch64 +- amd64 +url: "https://github.com/celsworth/lxp-bridge" +init: false +startup: application +stage: experimental +options: + loglevel: info + inverters: + - enabled: true + host: "" + port: 8000 + serial: "" + datalog: "" + heartbeats: false + publish_holdings_on_connect: false + databases: + - enabled: false + url: "postgres://lxp:lxp@localhost/lxp" + mqtt: + enabled: true + host: "localhost" + port: 1883 + username: "" + password: "" + namespace: lxp + influx: + enabled: false + url: "http://localhost:8086" + username: "" + password: "" + database: "lxp" +schema: + loglevel: list(trace|debug|info|warn|error|off) + inverters: + - enabled: bool + host: str + port: port + serial: str + datalog: str + heartbeats: bool + publish_holdings_on_connect: bool + databases: + - enabled: bool + url: url + mqtt: + enabled: bool + host: str + port: port + username: str + password: password + namespace: str + influx: + enabled: bool + url: url + username: str + password: password + database: str diff --git a/addon.dev/icon.png b/addon.dev/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..79719a7996cb9fe857dff1cf2780e8d2a1b94570 GIT binary patch literal 8862 zcmWk!Wn2_Z80Y8|q(Mp$IV1&+PU-Fj3F+>R1Ejk_y5Z<<1f;vW8o;0(El$~WZ?IgpwTFBLvxVQc7}svruqK@c@zn` z!NE~0NsEc7d1RhuxqGNBHXivO%FV0YY*(Ks+^@vw+UV`XL}NMj3=Fu4ol~_bRkQzy=eWtd8zjM!vWQuUlBoOVo708e z$861QeXH$#+PFYSp>xU5m8S)zHYAS2DnzgpMmL1VgmTVtqTWLZbJ0pMp4C7l&;sFI zxDi1^i*|dq53HcsfYxp`Lk?E>DM`yGDhE<9k{iPB09<@ik{L`>Bx39}kPk`={{B01 z1`aSf1YQg72|g}BpqqD#+|U~HFqTAA9%KgR4j&2aZIOY8XQjRVtD2-aAlbdzedw4} zu8E0+)PjC5$cil$T@8j6g0O@AGP?;4c}7mC1{E1y`#dmmdqssIHON|HTYmRhwFryw z_8_}0gIxv%6XXJTMp4fT7I+fJ6k5_Ws6hd^mqpZ{k^}Q2k_Vgv$bUcMa*OX9a<=fY z)tes#My%j&nr_e*ZBplBbASPYxf1^S_t}Acsvu^R3HV8b-5s!G$B?A*ciydA545)| zNcRLaprPp5ryw-;k%h}54>`dpbXH7m#HVvmwmbL&Zp4b!nu?Abj5LMtij|2tfH{>Z z8n0%ER|79a8it1Q1#}HQn~_8@tg=UMhT{w9&{D*=MoNP^<#VzR{Pn>jK~4fK4mu@h zed;zgq>Ll`#nXjVf&4s(_b$ls=jjv9J?l!4 zgf1vsoQJei%0?^9iJK6TUj{b`FI&L9A>MZIDWBLLhY88!MdexSK_3 zLy?F?tBMZ&Z1?3;_Z{^0s2Ydpm>nDLwOR<_S`uW2P{mm9F-rNHe)c%YOLy2>$ZkOgT9b$Z~_els6Ath?^@HR$>Qq$H-28TSBzNm+0zTR)|L&^4?p4&2 zX7sEr8fA-m5?qIEfV=s+X*&r~;!M&xoN?8wy!`6V_Wz$JVg~(RPgMV069@J1^l1N7 z7^=f z=GYf!FDwu2NuMy7)B8J&X1RZtexb2?5Xc6H&9#t{WM}@WBWacp>8;XswqeL2U;SdF zLYOdTPvb@=^X5zQwHQdQ`}~nco*1Mu9`2*lmd^Q;>yxNk|ICiAH0QFVjqB}=J~|W% zrQ0fC+S-5YZ#JBhU|4RUsbl=xlUH3sI%Xj*-*7dQ4JYBcSW1WPz!Eoa@2Dhb;S?BM zKS8>&K{+p4`KC}eq1FE+n!|e?@$u3Y7cpSuKnEz9euVQkqSlwQ02c0LEs-`_dRR5{ zR`waGOEX4IzJS!bB<*~6G zoZ8LC)G=d4b$SD`&4I9_wXY0;;4n3gMK*{zrfj6WvaRmCo}zvvLXZXuR07A+!a2cC z+DuEutvTm>KZ`QnE=GE5?iI9wa4Tswl?DHl3HE(ljgS9qag%m~#;8)lCRlkWO4x&znZNvSl$3gLH*~;X;?e;O#x$)G|=VQ$0&rfsrv^diq z({i1=eDN<#2(<0$M7H53CXC4J`x823w&QwVxp|CNfi6m4z<1N2D5m<1(LVj97?RwU z^6^Kfo!Nn6)DqXS2?9wMZ)*^KedpknC1O0DJOLx)k5OB^gYqVQM?&b2TPOq zQ}mm(8c%CO>N}bqzs-zE0~Nd`C2u^FFe8xLsghnSz18>5{|*^!Qi)3=a4k_MdSaXr z5>tV`g+4qGAT{JmsRSkyxmOgHRcbe$CJbXth3l+5Q6M5VpitqeQp}Alhe1x+stqh2wo?)2bPz}9wWn6 zNsma2ri=r2U#PM8!#_}rt$O-6u%TFH?-~a*SJQm8L~1yXKD{utOzt3bsw>mq<;dDi zlS0|{ajPLXN}f`os9eyeH_d)>OKF`xo5jR;DW&wnBS2sXM|D8(UpnaKeX| zCQ$(!Ke-iFip-`sQuiRITMBA0isL^W51ZR{xe3xr-hr#Eatj-0V2_HXn3`x853G07 zq%s?;q&z4OpL2Cch&$^KZL{ZYzPKH@zKEM6NlDP#acoJ|$z=;9Vq;hD&d!X(Y|qm? zAoUm@mG`YsR}p|E0b8g*m$v2G&O87y#47}ukM{{564MOTPum}ckOjH#36>YsOtd}E zHCs>8b-5c?Pj}vV3!0u@;+l>w`WyHgq@&3Rz7k~-7`~6Vv+s_NpAMrwJ}~*Z{)|nk zlLb2^ip`0Qief26OdYC|Gg9GXcvEF+KmU2Y3qY(MyM`?b)tG2VAacP(_pI(l-oU!6 z_!5AqDd&3PDNF>)`0*h7saP=Ty5N(ld~%2Lmh%-JJBnye%bR&AUIysH3++Hd4uM+h z$-ny}iTS2ob_rH?e|U2;^*jW8lEek5#?*!0us3YMFNP`0yF^d2v7ACWB`&`9-T41w zE-n`JZ#}I>`C5E!m!dUHv?XY)xM$V+GkeSMiwIyNZ6_CA0FI^IbpDkX2n#-Z-S<&6 zq>u@&Y9WkCi2wXM>Q6b(L|TK9iIysLQ&tLl$mxD)sT-FuBrVPaEu&{_cmN%ycLSps zn6?b&7O=b3NH*rui8CRI?CHxMDcGYmQ;PGLKzRAnMBw9@|2?pf@q_jknlQDN6XGnL zZkFmNzfetS^98ci5o_-kktTtxB}CZG4;MownG?^@P+v$;p;M`J4wU8Sa57`Fk1~o( z$YO!6#%7@MKFF^FM43yRkt4S!v(sn+s5})hI1#MEnJ@#i@8eO z<`I-s{NkE#E8h=hBZK)u2!Em|<9N6%oE~w+zmATO&GUEOkXInHw}DaOZWF~%{kaW5 z)D-BL8~`=PK%!^mllgz@`}zw(+QZ%rjBQucBS+_UWQZ$&m^U%s&vS(>xP{OLzl%Ij zIfVhV5SSna;|V7;c*kO6fYwbX$z=rjkh^#kXG$W1Q)*GQ-*owxBul6C(<=MwM*q8u z#3aM$)OpJAi+aIVf(tr)x~W`Yi2*Ct+V&lA!7Mt!OX4~!?TuU*J)Qq~%}fqm_{_-TP1WfuK#M_JHaOh{FISYBw}Ak#$zbm6Uz=fX4sTuR zrdi8|Cx?L@2Sn@!dj|IVt*KNS{!U5PZ2xR$Y|fzcfu;io#CU~*qF(jLuLW2cwoHQ9 z$d%cY`feE~9-&r>S9bzAakkMF4MEV+?KK9&uTOhnQ6FSYbX2%C3op zS;MambU5;fWB6*0eg)qh@4=+SP|OzFhqYlZW} zaQ~^|n;WU2jo`N4x&U-x^lw5PW;>b%$z#$SM2WMKF}aDyf`!wU6^q%C^2N5L#At%l zIT!0qW*WzaBFTbKFH*;^?2+Z;GZV7q?#!5ZU<0H^#4lu1h9iuJNeC_?K*1edkKYs^;uHDIQX@MX z^o#YUe?$%l6-+&xVqkhei<5Phs%DBm|AQh-qQ2c%>3=T@e4nP`+Lt-Ikt_(D2ZG?n z(j%HzH1nTSBJsCB@pH$|f!&z*7BW;9HEvPNw6$BtWM4kvyneLI&-r*}N8>HT`vj5v zJv!7-jLB(lpeRMD!XV5?=nK!(#hJbKLir?ZMzrVT9KBpBbK><;R4HYs zsmQ6VEP}4fBSk-1k{4NLi0w^mBu}s^SZc)h^8VjkBS$ckvvkUEqj}BQ9J2za#_B@ZEQOhN0WxF6m+63p{t9KA%(71(}!Hpx(f)7ejSsHT=E6U=IXZIIZzM|9n zWA6l`Rig>Emq7IsVT0%U{p1Xf9Iwu_=gt*fQ8w0AjETI)(F!JEU+3n|j-)>?Pg}c4 z)qMv{Ni(mMLe1YqZFe_|*Q2pjdbx?>y!o;Ybdzwv=d6z0{slCVH{|Z1&bNZMBm1c@ zD(`+nh_W+GMagi825uu4ySX{qzsm=0IZFXM5%13$-@X^Xr{pQWf#EFY_hDEi?spax zC4=Ltx*G!(io(^?*pTv{?7Z0>>){`Q9X-l`xo1@s>B^H1BNP$m{??(;%LwLR1C|R|dT-(HXEU?mJ*0d10EazCC3H4M z`cOc;*8qkbZvG7U>+198^b~wrUeqG!ca|+l1}i`aqKYmiT}47^HdL;WL~y{)8ub=` z2*y;(aPtTDDyB!Ox;>fYTwY){z|GSGfWzQVE!4(%)j8Ugo1-YhRfe4O@)Yq%lE|5fZca`r zB9>sPA{Txi2ukt0p!9L<`2JK_apAp5dA)n--D*DKx)e=F(dF_MV4)P|n37PqacYPE zCr{D%iIO-m^lRPbUsKBIVeP!Xnmo>Q1Sv(9XS>SU@Fw8~0Wgw`g3A_U&s|o~`KCLW zCbE^$#NmzNgpo#%*r$x&`6_8nP{%i|1i~~{0Fj%zZSUF1*7yQe8&j6e{?Bs~OsQB= z6OdI-hkfN`4hz9F!ymMJtyqmvThm39J3bUduhQww=e;7#5+;0;E$Ql?uI^28+-gBh z8qkf%&VMTo)MIaD*3;vGdcLVVrovpZ-v}@lCAIUz&a@0_t1Lj9Sn_-WJF69(?qpOD zK-4%F+32nD0e*V(nqtx5^xE*w(#ClQ8yP2LqAS;D2n?k{Z4uqxh@EW3E*EqH)zi3^ zcv=oh0xChO4ws+UX`)cEir)KS(OU(j?Fx%O(yif1im1KCaq!fwJ;KxC6zz1_1;nV2hXr}-Eym<=P=Xj> z7XT7;_r87vfa@*NTgePQz3XAS28WtklO-XX@JkY!GG2q44NebJhHexS1|qVm?ofFn&3{vJ$IlI_`oJ$ zqiqjsrz>Bq^77s!eY22BHTnalc8Md-4=T#cWFbaPPD+%5(5h^nY{kAa&?G+x#88Xh z^?oK#b(&h>0!|E)8s8g*&$L&7=X3PbE$|c3z+c8Z#Lp#JA{5eQ78CA1wG}OY`%i>R z_7za@8!OErn4_%;zbpM%63F%z7oWl$kAM9-zlP!$veIW{5rnpPwweG+48Mp-WphV~ zOsoz!!LRUk4#^WOD_xa4*qSBXQv^~c(u-!u;!=TA$0=ARCafe=vBtAa%6$Bh{INBG zzytnk1+r=jboRJdri;&*w?O5p)%&W^LM*PBl=)=c{IkCOv^*eT}`S@KI&d((Ca&1nm$I! zBT6rV2jerGA;H1%@cP|O&K}EaG);H0tK?wCSUq%%ux;+^7oMh*6fx6!8COaU3Mg(e ztE(t`+WaT`YkNb#w#bI^wec9s$=1?BEP7}1&hrA%=gH|s1$bt=iAL4Q(#pEH@CgoR z<+=*|^c4>;Z0#mBiQ+x+Omm41ZqDpwQ6STb{8}bq#-+op=N%EEK?fLE$v+tYOw6Af z0WQDr2QG?edW(!92~|%p?e-kr1qz%96bOs#$k>S@Bbr&jvK@8S5I~I}SH8DNQg1tH z@t$dnQs`tobe&%E1fZ>-l-D#`a|;Ma*O-aBW&RfPPD00U7VS-ZM+=4`dH&Irl-J}5_*an zq#>!4pyjBv?laO*Tw^i=|4IKQ=zUtlFO*XsQ#k<#q};C;g2(_>Ck_UGE!a)fWLB?S z)jg}&2ReSR6k<4a{1!1_fRpYxx3L*dGL_XbQQ0ng^riy&#{m^rLU zZnnz0Xdn&xVR~t042WG-(hAQm{+&MTb2M=#;=}shOXD)zV*u3)=5XGVx!Zuo3fcN( zH9?z2%ZQ?>63i6#f=?+O^7Hge%>qJ;H@`EE8fjL8Q47-(J-YUMW9G6nk{@%J4Zet| z5JJudJb1#GwP0-tUpjxNU;^PWVD9w7T}=>BtQ9^DEP2Y-ei+rd{^-*K2hfHl`8PEg!M~Cdxoc%=G}hJ9V07bV$qD4> zY?KnFKD>(%fhdGABpwHS`felSDMB2ifCoZ4z(%KxEB(wlcQ~cr;Jcu0ZMt^w`TDIK zuU;^3b;TD5_%z60e#lv)I}sVJCosla%bJhZR@y|zy_=e-BZ&mkX;E=7Iv6aww=}b? zsy?!L=aawUZuTNp#n8sTGfw+?k4k@yo=iH>+?ZjM2e8QXi{rkk_T6Smld8T=CP;OR z!8A}`5lTSgQjTfK#W3kNo&)~4Xk?zVP)F7;mKq{9~JEW zik4S%Wn)cx9&86v->nK?jLS3}Ja)v|tJ*rQ@*|N3EldsTL?MwXi>BBAXbo2VH{o!j z5^R6=93_w}Iow3gWsMQoO(F?#m+wd^mzYpGeeAu()^c~ELy|txY>=)K1B^X;%qPFc z8>jitbS5z-K*S1!@x8Q%Ob>`U&l`4{0l<#BQ*4ia&=?dxMZe8e3;YS!2sw)V{I32fW25(FZ-U^B7!b72IPH2-eA?q+Z>v&(GO* zG+|YgzC4;SjK#g$krFs)A)k`{eXZz#z#k}R4{d#m@lpfDrumX0wV*5nX-O`MOcWm8 zk6y}G77tslQ+eJA<-Y$%$+D(;#O&@)Mg0$e^DhuPVDGo#x(uO*G8==r^WXRX6qqpxnZ}jTM}) zib3k9dJ;)O`hqVu!J+OXI!$(#?v!P<3dAHpxVWao5jw10kp4rz?>_1+Be6h+tn(o3 zR=>-dz#wZ)!RRPIbR#a8UFo>u7ZE0FIn@<#Zlfq%GW|A*R-%L;&U!Kz>`TlWO;}lK zsyA>E<_pvrH(H~Mzm>dR@V$nSi4Yw1#vmPk!;a=U*2Q`EPjT5FxBHI?b3QLF&qCtX zOBnxe7JuEp9Bu{TH~b=4(kZ1*^MCKx9@`p~+o*BcRBPImE)Qil4m%O7>E%XZ+{Obm zLGx|50?Ir$);!+fTw9{$(=P88)+s+|A5^by(1N7_0q;uzXy4DrQ5_AtzbFV|TWWq5 zOM1e)D|V&W=>AX{W^8-EU+uP-3mluE-rK&K@(`_QXY$3=9>=E+yj%e-1%UbwGF_dY zDy_8Its;dZ>YJz9BK|=>3D+C@E?{Wdv+H%WJ*{{HEnvx~pXPu0_33(#b$^^srVWuG?)?x8ui zg+_`5RAEljN;xl*NQf)&UjgqIJNf)IbgI$--+dh{l(bPtgat8(I{IBi`4+gZTtn;S)8Y;%Nc-S>j=er%R@`J0#Qmn*&DN8l_^ znw?H!J}tpyUt`)#QMTC=>G}P5X5Zw&S|l7SUSj>?L#M<3UDKDPS+F}sdC9(8KGPQM zVs_8cwGl8_wAORldzqHBlB`r}6vZs$9Q@r~O-q2Zt$v8#pej&f99104 z1y{xa-CX<5Tff&)=pu2$(+to2M$e zXjA+gePZwJ(4B@np%puf2_i|~B;tP|p1l02*!N1CoMi_W30UpQqPS6DsKb>#L(=fcw}a9pfe zU+u72X6SUF#`)L5k;U|@QBLH?0pJ+V_!w^JFxZh)`TdG_I-wzaE(N}Od{+&|P(e

yX;;79M#upr4#|haTpKyzxtq3I9X#0TNV9=HrGPN9Js_6^E80|x zf#=Gv@Cn*kGpPX!^XV$ba1Y{@s6aj&Q_7qcQ44pnZo{!J;pb)rb@L}V2d64w4(3Tf zE+|HVau7=wv%~R%o_CHAx<&JZVugoY^fC3c5FH$pVsRNC@$+;#g0gzr;9dIBl7<$) zBx&~HVa603CW3ov*#kK67f<6n?pg0Op;Ba+&rj(6)^0owBqMplV!3yVVYg9+78}vv z+YyN*2KNv~QFYKn$+P~d-<>ynL@flJIOytR2%ZrfVT9-c4RL13{eIR1Ejk_y5Z<<1f;vW8o;0(El$~WZ?IgpwTFBLvxVQc7}svruqK@c@zn` z!NE~0NsEc7d1RhuxqGNBHXivO%FV0YY*(Ks+^@vw+UV`XL}NMj3=Fu4ol~_bRkQzy=eWtd8zjM!vWQuUlBoOVo708e z$861QeXH$#+PFYSp>xU5m8S)zHYAS2DnzgpMmL1VgmTVtqTWLZbJ0pMp4C7l&;sFI zxDi1^i*|dq53HcsfYxp`Lk?E>DM`yGDhE<9k{iPB09<@ik{L`>Bx39}kPk`={{B01 z1`aSf1YQg72|g}BpqqD#+|U~HFqTAA9%KgR4j&2aZIOY8XQjRVtD2-aAlbdzedw4} zu8E0+)PjC5$cil$T@8j6g0O@AGP?;4c}7mC1{E1y`#dmmdqssIHON|HTYmRhwFryw z_8_}0gIxv%6XXJTMp4fT7I+fJ6k5_Ws6hd^mqpZ{k^}Q2k_Vgv$bUcMa*OX9a<=fY z)tes#My%j&nr_e*ZBplBbASPYxf1^S_t}Acsvu^R3HV8b-5s!G$B?A*ciydA545)| zNcRLaprPp5ryw-;k%h}54>`dpbXH7m#HVvmwmbL&Zp4b!nu?Abj5LMtij|2tfH{>Z z8n0%ER|79a8it1Q1#}HQn~_8@tg=UMhT{w9&{D*=MoNP^<#VzR{Pn>jK~4fK4mu@h zed;zgq>Ll`#nXjVf&4s(_b$ls=jjv9J?l!4 zgf1vsoQJei%0?^9iJK6TUj{b`FI&L9A>MZIDWBLLhY88!MdexSK_3 zLy?F?tBMZ&Z1?3;_Z{^0s2Ydpm>nDLwOR<_S`uW2P{mm9F-rNHe)c%YOLy2>$ZkOgT9b$Z~_els6Ath?^@HR$>Qq$H-28TSBzNm+0zTR)|L&^4?p4&2 zX7sEr8fA-m5?qIEfV=s+X*&r~;!M&xoN?8wy!`6V_Wz$JVg~(RPgMV069@J1^l1N7 z7^=f z=GYf!FDwu2NuMy7)B8J&X1RZtexb2?5Xc6H&9#t{WM}@WBWacp>8;XswqeL2U;SdF zLYOdTPvb@=^X5zQwHQdQ`}~nco*1Mu9`2*lmd^Q;>yxNk|ICiAH0QFVjqB}=J~|W% zrQ0fC+S-5YZ#JBhU|4RUsbl=xlUH3sI%Xj*-*7dQ4JYBcSW1WPz!Eoa@2Dhb;S?BM zKS8>&K{+p4`KC}eq1FE+n!|e?@$u3Y7cpSuKnEz9euVQkqSlwQ02c0LEs-`_dRR5{ zR`waGOEX4IzJS!bB<*~6G zoZ8LC)G=d4b$SD`&4I9_wXY0;;4n3gMK*{zrfj6WvaRmCo}zvvLXZXuR07A+!a2cC z+DuEutvTm>KZ`QnE=GE5?iI9wa4Tswl?DHl3HE(ljgS9qag%m~#;8)lCRlkWO4x&znZNvSl$3gLH*~;X;?e;O#x$)G|=VQ$0&rfsrv^diq z({i1=eDN<#2(<0$M7H53CXC4J`x823w&QwVxp|CNfi6m4z<1N2D5m<1(LVj97?RwU z^6^Kfo!Nn6)DqXS2?9wMZ)*^KedpknC1O0DJOLx)k5OB^gYqVQM?&b2TPOq zQ}mm(8c%CO>N}bqzs-zE0~Nd`C2u^FFe8xLsghnSz18>5{|*^!Qi)3=a4k_MdSaXr z5>tV`g+4qGAT{JmsRSkyxmOgHRcbe$CJbXth3l+5Q6M5VpitqeQp}Alhe1x+stqh2wo?)2bPz}9wWn6 zNsma2ri=r2U#PM8!#_}rt$O-6u%TFH?-~a*SJQm8L~1yXKD{utOzt3bsw>mq<;dDi zlS0|{ajPLXN}f`os9eyeH_d)>OKF`xo5jR;DW&wnBS2sXM|D8(UpnaKeX| zCQ$(!Ke-iFip-`sQuiRITMBA0isL^W51ZR{xe3xr-hr#Eatj-0V2_HXn3`x853G07 zq%s?;q&z4OpL2Cch&$^KZL{ZYzPKH@zKEM6NlDP#acoJ|$z=;9Vq;hD&d!X(Y|qm? zAoUm@mG`YsR}p|E0b8g*m$v2G&O87y#47}ukM{{564MOTPum}ckOjH#36>YsOtd}E zHCs>8b-5c?Pj}vV3!0u@;+l>w`WyHgq@&3Rz7k~-7`~6Vv+s_NpAMrwJ}~*Z{)|nk zlLb2^ip`0Qief26OdYC|Gg9GXcvEF+KmU2Y3qY(MyM`?b)tG2VAacP(_pI(l-oU!6 z_!5AqDd&3PDNF>)`0*h7saP=Ty5N(ld~%2Lmh%-JJBnye%bR&AUIysH3++Hd4uM+h z$-ny}iTS2ob_rH?e|U2;^*jW8lEek5#?*!0us3YMFNP`0yF^d2v7ACWB`&`9-T41w zE-n`JZ#}I>`C5E!m!dUHv?XY)xM$V+GkeSMiwIyNZ6_CA0FI^IbpDkX2n#-Z-S<&6 zq>u@&Y9WkCi2wXM>Q6b(L|TK9iIysLQ&tLl$mxD)sT-FuBrVPaEu&{_cmN%ycLSps zn6?b&7O=b3NH*rui8CRI?CHxMDcGYmQ;PGLKzRAnMBw9@|2?pf@q_jknlQDN6XGnL zZkFmNzfetS^98ci5o_-kktTtxB}CZG4;MownG?^@P+v$;p;M`J4wU8Sa57`Fk1~o( z$YO!6#%7@MKFF^FM43yRkt4S!v(sn+s5})hI1#MEnJ@#i@8eO z<`I-s{NkE#E8h=hBZK)u2!Em|<9N6%oE~w+zmATO&GUEOkXInHw}DaOZWF~%{kaW5 z)D-BL8~`=PK%!^mllgz@`}zw(+QZ%rjBQucBS+_UWQZ$&m^U%s&vS(>xP{OLzl%Ij zIfVhV5SSna;|V7;c*kO6fYwbX$z=rjkh^#kXG$W1Q)*GQ-*owxBul6C(<=MwM*q8u z#3aM$)OpJAi+aIVf(tr)x~W`Yi2*Ct+V&lA!7Mt!OX4~!?TuU*J)Qq~%}fqm_{_-TP1WfuK#M_JHaOh{FISYBw}Ak#$zbm6Uz=fX4sTuR zrdi8|Cx?L@2Sn@!dj|IVt*KNS{!U5PZ2xR$Y|fzcfu;io#CU~*qF(jLuLW2cwoHQ9 z$d%cY`feE~9-&r>S9bzAakkMF4MEV+?KK9&uTOhnQ6FSYbX2%C3op zS;MambU5;fWB6*0eg)qh@4=+SP|OzFhqYlZW} zaQ~^|n;WU2jo`N4x&U-x^lw5PW;>b%$z#$SM2WMKF}aDyf`!wU6^q%C^2N5L#At%l zIT!0qW*WzaBFTbKFH*;^?2+Z;GZV7q?#!5ZU<0H^#4lu1h9iuJNeC_?K*1edkKYs^;uHDIQX@MX z^o#YUe?$%l6-+&xVqkhei<5Phs%DBm|AQh-qQ2c%>3=T@e4nP`+Lt-Ikt_(D2ZG?n z(j%HzH1nTSBJsCB@pH$|f!&z*7BW;9HEvPNw6$BtWM4kvyneLI&-r*}N8>HT`vj5v zJv!7-jLB(lpeRMD!XV5?=nK!(#hJbKLir?ZMzrVT9KBpBbK><;R4HYs zsmQ6VEP}4fBSk-1k{4NLi0w^mBu}s^SZc)h^8VjkBS$ckvvkUEqj}BQ9J2za#_B@ZEQOhN0WxF6m+63p{t9KA%(71(}!Hpx(f)7ejSsHT=E6U=IXZIIZzM|9n zWA6l`Rig>Emq7IsVT0%U{p1Xf9Iwu_=gt*fQ8w0AjETI)(F!JEU+3n|j-)>?Pg}c4 z)qMv{Ni(mMLe1YqZFe_|*Q2pjdbx?>y!o;Ybdzwv=d6z0{slCVH{|Z1&bNZMBm1c@ zD(`+nh_W+GMagi825uu4ySX{qzsm=0IZFXM5%13$-@X^Xr{pQWf#EFY_hDEi?spax zC4=Ltx*G!(io(^?*pTv{?7Z0>>){`Q9X-l`xo1@s>B^H1BNP$m{??(;%LwLR1C|R|dT-(HXEU?mJ*0d10EazCC3H4M z`cOc;*8qkbZvG7U>+198^b~wrUeqG!ca|+l1}i`aqKYmiT}47^HdL;WL~y{)8ub=` z2*y;(aPtTDDyB!Ox;>fYTwY){z|GSGfWzQVE!4(%)j8Ugo1-YhRfe4O@)Yq%lE|5fZca`r zB9>sPA{Txi2ukt0p!9L<`2JK_apAp5dA)n--D*DKx)e=F(dF_MV4)P|n37PqacYPE zCr{D%iIO-m^lRPbUsKBIVeP!Xnmo>Q1Sv(9XS>SU@Fw8~0Wgw`g3A_U&s|o~`KCLW zCbE^$#NmzNgpo#%*r$x&`6_8nP{%i|1i~~{0Fj%zZSUF1*7yQe8&j6e{?Bs~OsQB= z6OdI-hkfN`4hz9F!ymMJtyqmvThm39J3bUduhQww=e;7#5+;0;E$Ql?uI^28+-gBh z8qkf%&VMTo)MIaD*3;vGdcLVVrovpZ-v}@lCAIUz&a@0_t1Lj9Sn_-WJF69(?qpOD zK-4%F+32nD0e*V(nqtx5^xE*w(#ClQ8yP2LqAS;D2n?k{Z4uqxh@EW3E*EqH)zi3^ zcv=oh0xChO4ws+UX`)cEir)KS(OU(j?Fx%O(yif1im1KCaq!fwJ;KxC6zz1_1;nV2hXr}-Eym<=P=Xj> z7XT7;_r87vfa@*NTgePQz3XAS28WtklO-XX@JkY!GG2q44NebJhHexS1|qVm?ofFn&3{vJ$IlI_`oJ$ zqiqjsrz>Bq^77s!eY22BHTnalc8Md-4=T#cWFbaPPD+%5(5h^nY{kAa&?G+x#88Xh z^?oK#b(&h>0!|E)8s8g*&$L&7=X3PbE$|c3z+c8Z#Lp#JA{5eQ78CA1wG}OY`%i>R z_7za@8!OErn4_%;zbpM%63F%z7oWl$kAM9-zlP!$veIW{5rnpPwweG+48Mp-WphV~ zOsoz!!LRUk4#^WOD_xa4*qSBXQv^~c(u-!u;!=TA$0=ARCafe=vBtAa%6$Bh{INBG zzytnk1+r=jboRJdri;&*w?O5p)%&W^LM*PBl=)=c{IkCOv^*eT}`S@KI&d((Ca&1nm$I! zBT6rV2jerGA;H1%@cP|O&K}EaG);H0tK?wCSUq%%ux;+^7oMh*6fx6!8COaU3Mg(e ztE(t`+WaT`YkNb#w#bI^wec9s$=1?BEP7}1&hrA%=gH|s1$bt=iAL4Q(#pEH@CgoR z<+=*|^c4>;Z0#mBiQ+x+Omm41ZqDpwQ6STb{8}bq#-+op=N%EEK?fLE$v+tYOw6Af z0WQDr2QG?edW(!92~|%p?e-kr1qz%96bOs#$k>S@Bbr&jvK@8S5I~I}SH8DNQg1tH z@t$dnQs`tobe&%E1fZ>-l-D#`a|;Ma*O-aBW&RfPPD00U7VS-ZM+=4`dH&Irl-J}5_*an zq#>!4pyjBv?laO*Tw^i=|4IKQ=zUtlFO*XsQ#k<#q};C;g2(_>Ck_UGE!a)fWLB?S z)jg}&2ReSR6k<4a{1!1_fRpYxx3L*dGL_XbQQ0ng^riy&#{m^rLU zZnnz0Xdn&xVR~t042WG-(hAQm{+&MTb2M=#;=}shOXD)zV*u3)=5XGVx!Zuo3fcN( zH9?z2%ZQ?>63i6#f=?+O^7Hge%>qJ;H@`EE8fjL8Q47-(J-YUMW9G6nk{@%J4Zet| z5JJudJb1#GwP0-tUpjxNU;^PWVD9w7T}=>BtQ9^DEP2Y-ei+rd{^-*K2hfHl`8PEg!M~Cdxoc%=G}hJ9V07bV$qD4> zY?KnFKD>(%fhdGABpwHS`felSDMB2ifCoZ4z(%KxEB(wlcQ~cr;Jcu0ZMt^w`TDIK zuU;^3b;TD5_%z60e#lv)I}sVJCosla%bJhZR@y|zy_=e-BZ&mkX;E=7Iv6aww=}b? zsy?!L=aawUZuTNp#n8sTGfw+?k4k@yo=iH>+?ZjM2e8QXi{rkk_T6Smld8T=CP;OR z!8A}`5lTSgQjTfK#W3kNo&)~4Xk?zVP)F7;mKq{9~JEW zik4S%Wn)cx9&86v->nK?jLS3}Ja)v|tJ*rQ@*|N3EldsTL?MwXi>BBAXbo2VH{o!j z5^R6=93_w}Iow3gWsMQoO(F?#m+wd^mzYpGeeAu()^c~ELy|txY>=)K1B^X;%qPFc z8>jitbS5z-K*S1!@x8Q%Ob>`U&l`4{0l<#BQ*4ia&=?dxMZe8e3;YS!2sw)V{I32fW25(FZ-U^B7!b72IPH2-eA?q+Z>v&(GO* zG+|YgzC4;SjK#g$krFs)A)k`{eXZz#z#k}R4{d#m@lpfDrumX0wV*5nX-O`MOcWm8 zk6y}G77tslQ+eJA<-Y$%$+D(;#O&@)Mg0$e^DhuPVDGo#x(uO*G8==r^WXRX6qqpxnZ}jTM}) zib3k9dJ;)O`hqVu!J+OXI!$(#?v!P<3dAHpxVWao5jw10kp4rz?>_1+Be6h+tn(o3 zR=>-dz#wZ)!RRPIbR#a8UFo>u7ZE0FIn@<#Zlfq%GW|A*R-%L;&U!Kz>`TlWO;}lK zsyA>E<_pvrH(H~Mzm>dR@V$nSi4Yw1#vmPk!;a=U*2Q`EPjT5FxBHI?b3QLF&qCtX zOBnxe7JuEp9Bu{TH~b=4(kZ1*^MCKx9@`p~+o*BcRBPImE)Qil4m%O7>E%XZ+{Obm zLGx|50?Ir$);!+fTw9{$(=P88)+s+|A5^by(1N7_0q;uzXy4DrQ5_AtzbFV|TWWq5 zOM1e)D|V&W=>AX{W^8-EU+uP-3mluE-rK&K@(`_QXY$3=9>=E+yj%e-1%UbwGF_dY zDy_8Its;dZ>YJz9BK|=>3D+C@E?{Wdv+H%WJ*{{HEnvx~pXPu0_33(#b$^^srVWuG?)?x8ui zg+_`5RAEljN;xl*NQf)&UjgqIJNf)IbgI$--+dh{l(bPtgat8(I{IBi`4+gZTtn;S)8Y;%Nc-S>j=er%R@`J0#Qmn*&DN8l_^ znw?H!J}tpyUt`)#QMTC=>G}P5X5Zw&S|l7SUSj>?L#M<3UDKDPS+F}sdC9(8KGPQM zVs_8cwGl8_wAORldzqHBlB`r}6vZs$9Q@r~O-q2Zt$v8#pej&f99104 z1y{xa-CX<5Tff&)=pu2$(+to2M$e zXjA+gePZwJ(4B@np%puf2_i|~B;tP|p1l02*!N1CoMi_W30UpQqPS6DsKb>#L(=fcw}a9pfe zU+u72X6SUF#`)L5k;U|@QBLH?0pJ+V_!w^JFxZh)`TdG_I-wzaE(N}Od{+&|P(e

yX;;79M#upr4#|haTpKyzxtq3I9X#0TNV9=HrGPN9Js_6^E80|x zf#=Gv@Cn*kGpPX!^XV$ba1Y{@s6aj&Q_7qcQ44pnZo{!J;pb)rb@L}V2d64w4(3Tf zE+|HVau7=wv%~R%o_CHAx<&JZVugoY^fC3c5FH$pVsRNC@$+;#g0gzr;9dIBl7<$) zBx&~HVa603CW3ov*#kK67f<6n?pg0Op;Ba+&rj(6)^0owBqMplV!3yVVYg9+78}vv z+YyN*2KNv~QFYKn$+P~d-<>ynL@flJIOytR2%ZrfVT9-c4RL13{eI /etc/config.yaml + +bashio::log "Done." + +bashio::log.info "Starting lxp-bridge..." + +/usr/local/bin/lxp-bridge -c /etc/config.yaml \ No newline at end of file diff --git a/addon/CHANGELOG.md b/addon/CHANGELOG.md deleted file mode 120000 index 04c99a5..0000000 --- a/addon/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ -../CHANGELOG.md \ No newline at end of file diff --git a/addon/CHANGELOG.md b/addon/CHANGELOG.md new file mode 100644 index 0000000..3f7205b --- /dev/null +++ b/addon/CHANGELOG.md @@ -0,0 +1,108 @@ +# 0.12.0 - 29th September 2023 + +* Add more sensors to HomeAssistant autodiscovery (#181, #194, @Sboshoff76) +* Add `p_battery` and `p_grid` inputs keys to show net power flows (#183) +* Avoid floating point maths oddities in e_pv_day and e_pv_all calculations (#185) +* Add internal_fault/warning_code/fault_code keys (#189, #190, #191) +* Revert to unsigned integers for inverter registers/values (#196) +* Fix charge_priority_en value in hold/21/bits MQTT message (#201) + + +# 0.11.0 - 16th July 2023 + +* Fix crash due to signed integer overflow when saving inputs to InfluxDB (#161, @dgcartersa) +* Add HomeAssistant add-on (#167, @apbarratt) +* Add loglevel option to config.yaml (#168) +* Add ac_first time register functionality (#171) + + +# 0.10.0 - 20th April 2023 + +* Fix crash in scheduler during DST transition times (#107) +* Add read individual input command and optional publishing of individual input registers (#111) +* [Internal Cleanup] Use signed integers for inverter registers/values (#115) +* Add WriteParam functionality (`lxp/cmd/all/set/param/X`) (#117) +* Decode bits in holding registers 21 and 110 and publish to `lxp/$datalog/hold/21/bits` (#119) +* Better HomeAssistant discovery message structure (#120, @unreadablename) +* Add MQTT messages to easily read/set time registers (#123) +* Add missing `lxp/cmd/$datalog/set/forced_discharge` (#125) +* Add more HA discovery sensors (#128, @unreadablename) +* Add MQTT LWT and use it in HA discovery messages (#129, #130) +* Add AC Charge/Charge Priority/Forced Discharge switches to HA discovery (#127) +* Remove v_pv inputs key (#135) +* Remove mqtt.homeassistant.sensors configuration option (#132, @lupine) +* Add HA discovery messages for number controls (AC Charge Cutoff % etc) (#132, @lupine) +* Fix crash in timesync during DST transition times (#153) +* Add option to send holding registers on startup (#147, @lupine) +* Add HomeAssistant time control discovery messages (#143, @lupine) +* Retain holding and parameter register messages (#154, @lupine) + + +# 0.9.0 - 2nd November 2022 + +* Fix incorrect FAIL MQTT reply on ReadParam commands (#93) +* Second attempt at ignoring unknown ReadInputs registers (#95) +* Update HA discovery to use newer "all" MQTT message (#98, @excieve) +* Exit on receipt of SIGTERM or SIGINT (#99, @kaitlinsm) +* Add support for replying to inverter heartbeats (#106) + + +# 0.8.0 - 1st September 2022 + +* Publish MQTT discovery packets with Retain bit set (#86) +* Be more tolerant of unknown ReadInputs registers (#89) +* Add missing p_eps and s_eps fields to ReadInput1 (#91) +* Ignore unhandled WriteParam (tcp_function=196) packets (#92) + + +# 0.7.0 - 26th June 2022 + +* Add Postgres/MySQL/SQLite support (#44, #45, #47) +* Use more meaningful labels for HomeAssistant autodiscovery (#55, @chriscn) +* Allow enabling individual HomeAssistant discovery sensors (#56) +* Support combined inputs data packet found in newer firmwares (#65, #82) +* Add internal WriteMulti packet support (not exposed to MQTT yet) (#68) +* Add scheduled tasks framework; first one is synchronize inverter clock (disabled by default) (#70) +* Log warning message when configured serial numbers don't match packets we receive from inverter (#78) +* Fix rare startup crash if inverter is in the middle of sending inputs (#80) + + +# 0.6.0 - 26th February 2022 + +* Merge input data packets into one hash when publishing to MQTT and InfluxDB (#36) +* Fix crash when InfluxDB was disabled (#42) +* Fix InfluxDB being inadvertently disabled when only MQTT should have been (#42) + + +# 0.5.1 - 2nd November 2021 + +* No functional changes; fix Windows build by bumping rumqttc crate to 0.10.0 + + +# 0.5.0 - 1st November 2021 + +* Fix "Channel closed" crash when MQTT is disabled (#31) +* Fix: Send missing MQTT lxp/hold/XX message with new register value on receipt of a WriteSingle packet (#32) + + +# 0.4.0 - 12th October 2021 + +* Fix enabling/disabling AC Charge ignoring previous register value (#27) + + +# 0.3.0 - 6th September 2021 + +* Add support for Home Assistant MQTT discovery - power flow sensors only for now (#26) + + +# 0.2.0 - 3rd July 2021 + +* Add `lxp/cmd/{datalog}/read/inputs/{n}` functionality - read input registers on demand (#16) +* Add TCP keepalives to inverter connections (#18) +* Change `time` field of input packets from ISO8601 string to integer unix timestamp for better node-red compatibility (#17) +* Fix potential hang in inverter packet processing (#16) + + +# 0.1.0 - 24th June 2021 + +* Initial release