Major updates: - Complete Rust rewrite (pilot-v2/) with working MQTT client - Fixed MQTT event loop deadlock (background task pattern) - Battery telemetry for Linux (auto-detected via /sys/class/power_supply) - Home Assistant auto-discovery for all sensors and switches - Comprehensive documentation (AVANCEMENT.md, CLAUDE.md, roadmap) - Docker test environment with Mosquitto broker - Helper scripts for development and testing Features working: ✅ MQTT connectivity with LWT ✅ YAML configuration with validation ✅ Telemetry: CPU, memory, IP, battery (Linux) ✅ Commands: shutdown, reboot, sleep, screen (dry-run tested) ✅ HA discovery and integration ✅ Allowlist and cooldown protection Ready for testing on real hardware. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
rd_("b()bio000000bv4bv5b[]bcabeq00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bid00bu8665555canycbusccpucgidchddciotcordcpidcqos0cruncssdcsysctls0ctcp111cuidcveccack000caddccmd0ccmp0000ccpu0ccwd0cdup0cexe0cf32cf64cfmt000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cmax00000cmutcnew000000000000000000000000000000000000000000000000conecpidcqos0000000cramcstrctcpctlscu16cu32cu64daddr0ddeadddiskdfromdhashdidledintoditemditer00dkilldpathdpipedpolldquitdsegvdstop0dtstpdttindttoudtermdtrapdunixduserdxcpudxfszdalpndbooldcode0dcpusddrop0000000000000000000000000000dfivedfrom0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dhash00dinit0000000000000000000000000000dinto000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000diter0dkilldkinddlist0000dname00000dnext0dpath0dping0dpkid00000000000000000dpoll0dread000000000000000000000000000000000000000drecv0droot0dsize0000000000000000000000dswapdunitdunixduserdwaiteabortealarmebytesechildecloneedebugederefediskseemptyeerror000000eevent0egroupelogin0enever00eosstrepoweresleepeuser1euser2eusersewinchealiasebrandecheck0eclean000eclone0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ederef00000000000000000000000000000000000eisizeelabelelinuxeloginesliceestate000etasksetopic0000etupleeusizeewrite000000000000000000000000000000000000000000000falwaysfbannedfborrowfclient0ffilterfgroupsfhangupfhasherfkernelfoptionfpacket0fparkedfpuback0000000000fpubrec0000000000fpubrel0000000000fresult0frustlsfsenderfsignalfsimple0fstringfsuback000000000fsystemftypeidfurgentfwakingfwebpki0fzombieeasu32fborrow000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fclient0fcommonfevents0fgroupsfmemory00fparentfpuback0fpubrec0fpubrel0freason0000000000fretain000fsource00000fstatusfsuback0ftopicsfuptimegconnack0000000gconnect0000000gdnsname0gdefaultgdisplaygelapsedgfailure0gfromstrghashmapghashsetgillegalgloadavggmacaddrgpingreq0000000000gprocessgpubcomp0000000000gpublish0000000000grequest000gsubfail0gsuccess00000000gtimeout0gtoownedgtracinggtryfromgtryintogunknown0gconnack0gconnect0gdefault000000000000000000000000genviron0gfifteengfilters00gmatches0fmaxqosgmessage0fnewallgnolocalgoptionsgpayload0gpending0gpointergprocessgpubcomp0gpublish00000greasonsgrefresh0000grumqttcgsysinfoftryack000ftypeid000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fuseridhawaitackhbytesmuthconnfail0hcontinuehderefmuthdiskkindhdurationhincoming000hiteratorhlastwill0hnetworkshorderinghoutgoing00hpingresp0000000000hprotocolhtlserror0htostringhunsuback000000000huserlandhvecdequehwakekillgcpuarchhcriticalgfromstr00gfromu32ggroupid0hinflight00glistmut000gnewmany0hpassword0gpktsize000hprotocolhreceivedgruntimegtoowned0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000gtryfrom0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000gtryinto000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000gtryrecv0hunsuback0husername0hvalidategwithcmdgwithcpu0gwithcwdgwithexegwithramiborrowmuticomponenticoversionidiskusageieventloop0iformatteriinterruptimqttstate000ipartialeqipkidinuseipointableiprofilingirecverrorisenderrorisubscribe0000000000itransportiunsubfail0iutf8errorhboottimehclientid000icollision0hcpuusage00hderefmut00000000000000000000000000000000ieventloop000hfreeswap0ifrequency0hhostnamehintoiter0000000000hkillwithhlastwill00imqttbytes000iprocesses0ireferencehsetloginisubscribe00000htostring0000000000000itransport0husedswaphvendoridhwithroothwithswaphwithuserjatmostonce0jcomponentsjconnection0jdisconnect0000000000jinvalidqos0jnotconnack0jnotconnectjpackettype0jpartialordjpubackfail0jpubrecfail0jpubrelfail0jserverbusy0jstateerror000jthreadkindjtryrequest0jupdatekindiborrowmut000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000icloneinto0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000??????idiskusage0jeverything000ifrombytesikeepalive000iosversionjproperties000000000000ireadbytesisessionidistarttimeitotalswapkasyncclient0katleastonce0kbadclientid0kclienterror0kexactlyonce0kfixedheader0klockblockedkmqttoptions0knetworkdatakpubcompfail0krefreshkindkservermoved0kunspecifiedkunsolicited01kunsubscribe0000000000kwrongpacket0jcleanstart0jclientauthkcredentials0jfilesystemjfreememory0jfromsender0jmacaddressjmanualacks000jmountpointjpackettype0jpartialcmp0000000000jreasoncode0jreceivemaxjrefreshalljrefreshcpuktemperaturejthreadkindjtopicaliasjtotalspacektransmittedjtrypublish000kunsubscribe00000jusedmemoryjvalidtopic0jwithmemory0jwithoutcmdjwithoutcpu0jwithoutcwdjwithoutexejwithoutramlcgrouplimitslclientconfigldisconnected0lflushtimeoutlintoiteratorlinvalidalias0linvalidstate0lonlyifnotsetlpacketidzero0lpubackreasonlpubrecreasonlpubrelreasonlrequestsdone0ltopicnotutf80ltryrecverrorltrysenderrorlvirtualalarmkcontenttype0kframelength0kfromsenders0kisremovablekloadaveragekmqttoptionskrecvtimeout0krefreshlist0000krefreshpidskreturncodes0ksetinflightktokiorustlsktotalmemory0kvalidfilter0kwithenvironkwithoutrootkwithoutswapkwithoutusermawaitpingresp0mclonetouninitminvalidreasonmnotauthorized000000mprocessstatusmprotocolerror0mpubcompreasonmquotaexceeded0000lcgrouplimitslcleansession0lhaswildcards0lpublishbytes0lreasonstring0000000ksetlastwill0lsettransport0ltrysubscribe000lwrittenbytesnaddrparseerrorncpurefreshkindnnetworkoptionsnnetworktimeoutnonnewsubscribe0npackettoolarge0npayloadnotutf8npayloadtoolong0nunsubackreasonmawaitpingresp0mbrokeraddress0mdelayintervalkgetuserbyidmisunspecifiedmkernelversionmrefreshmemorymresponsetopic0lsetkeepalive0msubscribemany000mtotalreceivedmtrydisconnect000mvirtualmemorylwithcpuusagemwithfrequencymwithprocessesmwithoutmemory0oboundarycrossed0oconnectionerror0odeserialization0oinvalidprotocol0omalformedpacket000opayloadrequired0oqosnotsupported0osubscribefilterotryfrominterrornavailablespacemclonetouninit0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ndistributionidmgetcurrentpidmglobalcpuinfomlongosversionmmaxpacketsize000nnetworkoptions00npreserveretainnreceivemaximum0nrefreshprocessnsessionpresent0msetbinddevicemsetcleanstartnsetcredentials0msetmanualacks0mtlswithconfigmtopicaliasmax00ntryunsubscribe000nuserproperties000000000000mwithdiskusagenwithoutenvironA`collisiontimeout0A`keepalivetimeoutA`oneverysubscribe0A`pubackpropertiesA`pubrecpropertiesA`pubrelpropertiesA`recvtimeouterrorA`serverdisconnect0A`sessiontakenoverA`subackpropertiesA`tlsconfiguration0A`topicnameinvalid000A`unspecifiederror0000A`useanotherserver0oavailablememoryocorrelationdata0opacketsreceivedopendingthrottle0oretainavailableoserverreferencentotalreadbytesAaconnackpropertiesAaconnectpropertiesAaconnectreturncode0Aaconnectionrefused0Aaemptysubscription000Aainsufficientbytes0Aainvalidpackettype0AamemoryrefreshkindAanovalidkeyinchain0AapubcomppropertiesAapublishpropertiesAaretainforwardrule0A`supportedsignalsAaserverunavailableAatopicaliasinvalidAaunexpectedconnectoeffectiveuseridoprocessesbynameorefreshcpuusageA`refreshprocessesA`refreshspecificsoserverkeepaliveosetcleansessionA`totaltransmittedowithoutcpuusageA`withoutfrequencyA`withoutprocessesAblastwillpropertiesAbmaximumconnecttimeAbmessageratetoohighAbnovalidcertinchain0AbprocessrefreshkindAbretainnotsupported0AbservershuttingdownAbserviceunavailable0AbsubscriptionidzeroAbtopicfilterinvalid00AbunsubackpropertiesAaconnectpropertiesAaconnectiontimeout0A`effectivegroupidA`errorsonreceivedA`newwithspecificsA`trysubscribemany000A`withoutdiskusageAcbadusernamepassword0AaissupportedsystemAcinvaliddnsnameerrorAcinvalidpropertytype0AcnormaldisconnectionAcsubscribepropertiesAcsubscribereasoncode0Abauthenticationdata00AbpacketstransmittedAaphysicalcorecountAaretainforwardruleA`setmaxpacketsize0Aasetnetworkoptions0AasetreceivemaximumA`settopicaliasmaxAasetuserpropertiesAatotalwrittenbytesAdadministrativeactionAddisconnectreasoncodeAdinvalidprotocollevel0Adpayloadformatinvalid000Adpayloadsizeincorrect0Abcollisionpingcount0Abrequestprobleminfo0AcresponseinformationAasetopenfileslimitAbsetpendingthrottle0Aeincorrectpacketformat0Aenomatchingsubscribers0AenosubscriptionexistedAepacketidentifierinuse00AeunsubscribepropertiesAdauthenticationmethod00AcerrorsontransmittedAchandleprotocolerrorAcrefreshcpufrequencyAcrefreshcpuspecificsAcrequestresponseinfo0Afconnectionrateexceeded0AffloatingpointexceptionAfimplementationspecificAfincomingpackettoolarge0AfinvalidremaininglengthAfoutgoingpackettoolarge000AfreceivemaximumexceededAfrefusedprotocolversion0AcbrokertopicaliasmaxAdhandleincomingpacket0Adhandleoutgoingpacket0AdrefreshpidsspecificsAdsetconnectpropertiesAdsetconnectiontimeout0AdtotalpacketsreceivedAgbadauthenticationmethodAemessageexpiryinterval0Adnewwithrefreshedlist0000AdprocessesbyexactnameAepublishwithproperties0Aesessionexpiryinterval0AesetauthenticationdataAdtlswithdefaultconfigAhclientidentifiernotvalidAhinvalidconnectreturncode0AhinvalidretainforwardruleAhmalformedremaininglength0Ahnovalidclientcertinchain0Ahpacketidentifiernotfound0Ahpayloadsizelimitexceeded00AhuninterruptibledisksleepAemaxoutgoingpacketsize0Afpayloadformatindicator0AfrefreshmemoryspecificsAfrequestchannelcapacity0AesetrequestprobleminfoAdsettcprecvbuffersizeAdsettcpsendbuffersizeAgsubscriptionidentifiersAetotalerrorsonreceivedAidisconnectwithwillmessageAgrefreshprocessspecificsAgsetauthenticationmethodAfsetrequestresponseinfoAgsubscribewithproperties0AgtotalpacketstransmittedAjinvalidsubscribereasoncode0AjsubscriptionidnotsupportedAjunsupportedprotocolversionAhassignedclientidentifierAkimplementationspecificerror0000AhminimumcpuupdateintervalAirefreshprocessesspecificsAhtotalerrorsontransmittedAhtrypublishwithproperties0Aiunsubscribewithproperties0Aisetrequestchannelcapacity0AjpublishbyteswithpropertiesAksharedsubscriptionavailableAjtrysubscribewithproperties0AnsharedsubscriptionnotsupportedAksubscribemanywithproperties0AosharedsubscriptionsnotsupportedAltryunsubscribewithproperties0AmwildcardsubscriptionavailableBawildcardsubscriptionsnotsupported0AmgetoutgoinginflightupperlimitAmsetoutgoinginflightupperlimitB`subscriptionidentifiersavailableAntrysubscribemanywithproperties0Bcsubscriptionidentifiersnotsupported") |