From 93c1f8d3bcad0f1f45cd030222a5e89f418cc462 Mon Sep 17 00:00:00 2001 From: vaku Date: Sun, 19 Jul 2026 00:53:01 +0300 Subject: [PATCH] Fix entity names and add units per the product brief VOUT_MAX is the safety limit above which the UPS refuses to boot an externally-powered Pi, not an output voltage setting. Also clarify PI_RUNNING, WATCHDOG_GRACE and TOUCH_STATE names, and add documented units: timeouts and watchdog values are CLI-scaled seconds, AUTO_SHDN_TIME is minutes; SHDN_DELAY stays raw ticks. Co-Authored-By: Claude Fable 5 --- .../lifepo4wered_monitor.cpython-314.pyc | Bin 10702 -> 10839 bytes hassio-addon-lifepo4wered/config.json | 2 +- .../lifepo4wered_monitor.py | 32 ++++++++++-------- .../__pycache__/test_monitor.cpython-314.pyc | Bin 7681 -> 8370 bytes tests/test_monitor.py | 11 ++++++ 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/hassio-addon-lifepo4wered/__pycache__/lifepo4wered_monitor.cpython-314.pyc b/hassio-addon-lifepo4wered/__pycache__/lifepo4wered_monitor.cpython-314.pyc index aacfbd50cbf0e0e038f81d22b5a75ed61a84e92b..d1f45cc23df39bb7c6325ea46dd33339cd56f28a 100644 GIT binary patch delta 981 zcmXw1O>7fK6rS;Bz4qF*6O)7#*74eL<0RCH(iAvUt>nKZv|xvgV+$qH%Geuw(b{Wf zcL{b?1zM0&sP#Ho;hXQh@4Yvp z_vYc!?|I)5-&;H&cK5}~xn$%=-y;rco#)&)4%o(sx8S#(e|az5I0C>r0{|*CxdIoX z1;i>W00NMP3fv4l1!q9hRbawEVv2=1MjDn5NC%~n0{gDBmrZfTQE(+;AGioEu_5qj z8~`^M1-&ZiZRwD7m{bW;@c4dBFHahEje(<#3MWIIGhV*~Zgx~32jPv*dH-$5p$zGa z7BN2%#B&2zpc_9J82ixfvl^<2juFjp6IfeY6ZZ^_5YG-&RHLk4P*6**D~3_3Dh4VN z;VR9KV^83x(?aws|0c8b{@=4le;pX#?)$Aj{@}e$_7C6SWAETrxy!JA{vTmthb8BZ z69}_E%so1MY=@(+3-|}SZo>Wptefw$K!|n&_+=p4mjWraGkV}N2U{msJ?z{Xdg_L& z`18;qSj0C&0@U!mP|{f?BC6q6p)~B`r1%$njYHvK=VcmR#UF%^!xe0VPal+Npr3%v zDhTNa(XQwk{xdx7`I6Er6t3dI$UOW4uSSASl?Kk?jfl{HjZ%%m7KO|BZY1LA-Aw)O z@Z-o7yG`hm4mY;KgvC>(i=u9sP0JK7=$c8UCYrif(lmWtJge&_ZjHx3Vr+L}IiHi0 zxm>>OOIRd>YGPflDA`HI=9d=ISvj3KnK;w-E!8ZuqOUi^ilUWTM8?m?qnypu)du0N zSdg`$L0Bvn=Fole6v97=1!rj^UonwSEu?ev^1PHtW!giipMMni2>X;b&fOj=&bC-Rv#rJ`Y$%)MuO^10>I z!oC#9>sGlYp0!L7!7@}~KLIk`+*2EYs1AR|?yT4hg>C^S| zra4{KRHb2}y=7`RGm-Vszu4R5Hoi3xhd<+ACT@%jd%ccJuH8`&4D1Rn7~LKI7((Z+ Ogj$WJn)xdG%YTr7)e}f*_MTN7iYKp9;`}? zX#C4yJeZhx;;QM@i}7X*HzG7>Jb3Wp0YaiNF>$8lCG+j~-uvF0nK%0-xi!w6+nUb2MmXz(3oz~V& z^7h+mYzdTXUEmTAfD?3rT7}dqwMoZGRlDTtKdP$fBt8hvSyU)?lvmyL47^`{#5o|u zWnBLT;-SVCx5%I|(ix2sz*igBpaXwx4E7oh;%Bp2ff#BdyyBTwjf}papk=wB7)Cm$ z7$`*&_sBBr_=4v{)Z4l4d|=t-ns?mI&oVoFWXIS0_UyLr{Gr2I&mID+lijxfZ|6RT z6HOuO;OW7>@?z5}W6P5spUS^mzB&0Rx|dzo@~Wo9MLTMszE#z-I!fXFE*{QdP8hUj zNf_mDN*IQ}@GD`j<1Yyqbp-yDz;{pULkAM6q(or~Z}|J+HT>CsrS&=uRGZoqgmi@H z-e?{71$ta}DW&&8Yq$`Ih3*hqaprY>UN%g9zQR^VplM3R6dTbD6{>hAz&ET@I!ECt zg%Y*~1FqT;ss99@2}W(3gzlDa1g9*m-bB%yFPcIjy`&b31z|zYn`EGP??g9bFdOzU zB7-Ago_=ECkY8jf?AS$lFp)^g$;3+im@3@VbyG0af}$5qqS^@isrY@kBSgg9MBjd;}_$xYFAX$G*!z9*?c-j($32x z!}54?AUU!^sbH9ClT=q+$;8Ca=uyU%)Qg#!qa0sx$nvzFk>%PTpVRwyQFuuqK%inV zmJRe8_y}#7PtWK*gtN`>I}D-yAdZ=66prKWX!Jis2=Lhe diff --git a/hassio-addon-lifepo4wered/config.json b/hassio-addon-lifepo4wered/config.json index b5c5f93..f1a646e 100644 --- a/hassio-addon-lifepo4wered/config.json +++ b/hassio-addon-lifepo4wered/config.json @@ -1,6 +1,6 @@ { "name": "LiFePO4wered Addon", - "version": "0.1.2", + "version": "0.1.3", "init": false, "slug": "lifepo4wered", "description": "Add-on with service and MQTT monitor for LiFePO4wered/Pi+ UPS", diff --git a/hassio-addon-lifepo4wered/lifepo4wered_monitor.py b/hassio-addon-lifepo4wered/lifepo4wered_monitor.py index 495735d..d34a31c 100644 --- a/hassio-addon-lifepo4wered/lifepo4wered_monitor.py +++ b/hassio-addon-lifepo4wered/lifepo4wered_monitor.py @@ -83,23 +83,25 @@ DIAG_VOLTAGE = [ ("VBAT_MIN", "Battery minimum voltage"), ("VBAT_SHDN", "Battery shutdown voltage"), ("VBAT_BOOT", "Battery boot voltage"), - ("VOUT_MAX", "Output maximum voltage"), + ("VOUT_MAX", "Max output voltage to allow boot"), ("VIN_THRESHOLD", "Input voltage threshold"), ] -# raw-value diagnostic registers (units vary or are unitless flags/timers) +# raw-value diagnostic registers; units per the product brief (the CLI +# scales the timeouts to s and AUTO_SHDN_TIME to min; SHDN_DELAY stays +# raw ~8 Hz ticks) DIAG_RAW = [ - ("AUTO_BOOT", "Auto boot mode"), - ("SHDN_DELAY", "Shutdown delay"), - ("AUTO_SHDN_TIME", "Auto shutdown time"), - ("PI_BOOT_TO", "Pi boot timeout"), - ("PI_SHDN_TO", "Pi shutdown timeout"), - ("WATCHDOG_CFG", "Watchdog mode"), - ("WATCHDOG_GRACE", "Watchdog grace"), - ("WATCHDOG_TIMER", "Watchdog timer"), - ("PI_RUNNING", "Pi running flag"), - ("LED_STATE", "LED state"), - ("TOUCH_STATE", "Touch state"), + ("AUTO_BOOT", "Auto boot mode", None), + ("SHDN_DELAY", "Shutdown delay", None), + ("AUTO_SHDN_TIME", "Auto shutdown time", "min"), + ("PI_BOOT_TO", "Pi boot timeout", "s"), + ("PI_SHDN_TO", "Pi shutdown timeout", "s"), + ("WATCHDOG_CFG", "Watchdog mode", None), + ("WATCHDOG_GRACE", "Watchdog grace period", "s"), + ("WATCHDOG_TIMER", "Watchdog timer", "s"), + ("PI_RUNNING", "Pi running", None), + ("LED_STATE", "LED state", None), + ("TOUCH_STATE", "Touch button state", None), ] @@ -184,11 +186,13 @@ def discovery_messages(discovery_prefix, state_topic, availability_topic): value_template=millivolts(key), ) - for key, name in DIAG_RAW: + for key, name, unit in DIAG_RAW: + extra = {"unit_of_measurement": unit} if unit else {} yield entity( "sensor", key, name, entity_category="diagnostic", value_template="{{ value_json.%s }}" % key, + **extra, ) yield entity( diff --git a/tests/__pycache__/test_monitor.cpython-314.pyc b/tests/__pycache__/test_monitor.cpython-314.pyc index ab252ba127bec9ac0f937db9dffac285032f406f..e8e4d0af7fd60023ef3abd0180a48dd5d1ce5368 100644 GIT binary patch delta 801 zcmZut&rcIU6rR~_Yg@Ku>9&;C7AXW{#cD*w#z+*aM53Us22A`hF74Vb+Af)0z#1YD zHG&t!Nzj95FP^X$y^(nFCQU?eqly24{63hNI0K0>k(bOj^S<}K@6F8E@waW>Ca=d0 zXw0l%>-#Fsc<(u3H+kah@CAV>$Zpfq4NR|G(E#E?>6`PQJL;g#JOIwskMuAKWV;C3 zlK>2H0AL@vQ57VuQl)oan3--xKTpb@U_CE$|FS)?!_RqLHAgvc}YuT>2 zJ&TU$3HkmrUN?A&IhZHlN%jj8@#Y$TJpEk9;ivQBefT^P`3(8x3UMs|T z+)TZ&XN2JiW^2PD-7Nl&TC{8f1XD$9QVV0i@uI z#8hHYY@Oxj#nd_vr896m^+OOBgh*M4yu3UYYnhK8edqroq?RkFZb<+x&w{h2?5tT7 zVvB+}**VcU7rrnrT->m8E*atg`R#k^#yxaa7yW@Wc`qgH_$E!shLnTnOUOUXLAkV1 z{TRYNGFZ!V|_&!W+b;%%I7=`4NX9*JN8J z&dHBN3z@34Ctu)J;!`cwPtMOv%S`vvWGM=p94ltQdW$(bwQ}+-u?$AX&CKG{m>AtR z&ys9qWQ?1vAl=LuIC+V51|#1jdC|#AGLqcUKwFD4Kt%3jZy6m%qsbLA%99t$I5UQA zek!w!kuiL7k6b5X1yE9ss{o`9M1)PYlb00-v2Jn1$LA(y=EcWr3Kpe-BU