Skalman on Home Assistant
Skalman ion Home Assistant
DetThis häris ärthe berättelsenstory omof hurhow viwe fickgot vårour robotgräsklipparerobot –lawn enmower — a Husqvarna Automower 310 somthat gårgoes underby namnetthe name Skalman –— attto dykashow uppup iin Home Assistant, medcomplete batteristatus,with vadbattery denstatus, hållerwhat påit's meddoing justright nu,now, ochand knapparbuttons förto attstart, starta,pause pausaand ochsend skickait hemhome. den.It Detsounded lätsimple enkeltin itheory. teorin.It Det var det inte riktigt.wasn't.
BakgrundenBackground
Skalman äris enan äldreolder modellmodel (årsmodellroughly runt2016 2016)vintage). DenThere's harno ingencloud molntjänstservice viwe kommercan åtreach –— the "Automower Connect"-menyn imenu klipparenon ärthe låstmower bakomis locked behind a "kontaktacontact dinyour återförsäljare",dealer" såmessage, denso vanligathe vägennormal route via HusqvarnasHusqvarna's app ochand officiellaofficial integration varwas stängdclosed förto oss.us. DetThe endaonly vithing hadewe atthad jobbato medwork varwith was Bluetooth (BLE), somwhich klipparenthe pratarmower lokalt.speaks locally.
ProblemetThe medproblem with Bluetooth äris räckvidd.range. KlipparenThe ochmower dessand laddstationits stårcharging enstation brasit bita bort,fair ochdistance våraway, and our Home Assistant-Assistant server nårcan't intereach ditthat medfar over Bluetooth. SåSo viwe behövdeneeded någotsomething somclose sitter nära.by.
SåHow serthe lösningensolution utworks
LösningenThe blevanswer enturned litenout to be a small Raspberry Pi somplaced stårout utenear närathe klipparenmower. DenIt fungeraracts somas ena brygga:bridge: denit pratartalks Bluetooth medto Skalman påon enaone sidan,side, ochand skickarpasses informationenthe vidareinformation tillon to Home Assistant viaover etta meddelandeprotokollmessaging somprotocol hetercalled MQTT påon denthe andraother sidan.side.
I stora drag:
SkalmanIn ──Bluetooth──►broad Raspberrystrokes: the Pi (bryggan)sits ──MQTT──►close enough to get a decent Bluetooth link, and it's running around the clock anyway since it looks after other things out in the shed. Home Assistant ◄──kommandon────never ◄──kommandon──has
Pi:ncare står tillräckligt nära för att få hyfsad Bluetooth-kontakt, och den är ändå alltid igång eftersom den sköter andra saker ute i förrådet. Home Assistant behöver aldrig själv bry sig omabout Bluetooth –itself den— prenumererarit barajust påsubscribes detto brygganwhat publicerar.the bridge publishes.
Bluetooth-parningenThe –Bluetooth denpairing kluriga— bitenthe tricky bit
DetThis härwas varthe detpart somthat togtook absolutby längstfar tid,the ochlongest, detand ärit's värtworth attwriting skrivadown nerso såwe vidon't slipperhave svettasto likasweat mycketas nästamuch gång.next time.
EnA modern Bluetooth-Bluetooth stack (somlike denthe ione enin nya recent Raspberry Pi) villwants somto standardpair parausing medthe denmost säkrastesecure metoden:method krypteradby default: encrypted "secure connections" medwith skyddprotection motagainst avlyssning.eavesdropping. EnA gammal2016-era gräsklipparelawn frånmower 2016can't kando intethat. det.It Denonly pratarspeaks barathe densimpler, enklare,older äldre dialektendialect ("legacy pairing" medusing metodenthe "Just Works") method). ResultatetThe blirresult attis klipparenthat svararthe medmower ettpolitely artigtreplies "parningpairing stödsnot inte"supported" ochand läggerhangs påup –— ochand manyou sittersit därthere ochscratching kliaryour sig i huvudet.head.
NyckelnThe varkey attwas to tvingaforce Bluetooth-kontrollernthe påBluetooth Pi:ncontroller atton pratathe denPi gamlato dialektenspeak the old dialect ochand stängaswitch avoff kraventhe pådemand detfor avanceradethe säkerhetsläget.advanced Närsecurity bådamode. sidornaOnce välboth pratadesides sammawere språkspeaking gickthe detsame vägen.language, it went through.
EttOne extra hinder:hurdle: eftersombecause parningsmenynthe ipairing klipparenmenu äron låstthe gårmower detis intelocked, attyou sättacan't denput iit parningslägeinto påpairing vanligtmode sätt.the Tricketusual ärway. attThe trick is to slåflip avthe ochmain påpower huvudströmbrytarenswitch off and on –— dåthat öppnaropens klipparena ettthree-minute trepairing minuterwindow långton parningsfönster.the Undermower. detDuring fönstretthat behöverwindow telefonensthe phone's Bluetooth varaneeds avstängdto be off (klipparenthe släppermower baraonly lets one device in enat enheta i taget)time), ochand såthen köryou manrun parningenthe påpairing on repeat tillsuntil denit nappar.takes. HosFor ossus togit dettook etta parcouple försök.of attempts.
EnOne viktigimportant detalj:detail: självathe Bluetooth-parningenBluetooth ochpairing klipparensitself PIN-kodand ärthe mower's PIN code are tvåtwo heltcompletely olikaseparate lagerlayers. Bluetooth-bindningenThe iBluetooth sigbond kräverneeds ingenno kod,code, medanwhereas maskinensthe machine's PIN skickasis avsent programvaranby förstthe efteråt,software påafterwards, applikationsnivå.at Brathe attapplication vetalevel. närGood manto felsökerknow –when mantroubleshooting kan— hayou encan fungerandehave Bluetooth-kopplinga ochworking ändåBluetooth blilink nekadand förstill attbe PIN-lagretrejected strular,because ellerthe tvärtom.PIN layer is misbehaving, or the other way around.
Notera:Note:Bluetooth-bindningenTheärBluetoothknutenbondtillisdentiedspecifikatoBluetooth-adaptern.theByterspecificviBluetooth adapter. If we swap the dongle,ellerorflyttarmoveövertotillaendifferentannandeviceenhetdownlängrethefram,line,fårwe'llvihaveköratohelarunparningsprocedurentheigen.whole pairing procedure again.
BrygganThe sombridge hållerthat ihopties alltit all together
PåThe Pi:nPi körruns tvåtwo delar:parts:
EnAläsarereadersomthatgördoesexaktexactlyenonesakthingiattaget:akopplartime:uppconnectsmotto Skalman,läserreadsavthe status (ellerorskickarsendsettakommando)command),ochandkopplardisconnectsnercleanlyigenagain.snyggt.ItDenusesanvänderaettcleversmartlibrarybibliotekthatsomreusesåteranvänderaencachedcachaddeviceenhetsreferensreferenceiställetinsteadförofattscanningsökatheigenomairwaveseterneveryvarjetime,gång,whichvilketmakesgörtheuppkopplingenconnectionbetydligtconsiderablysnabbare.faster.EnAlås-mekanismlocksermakestillsureattonlybaraoneenBluetoothBluetooth-sessionpågårrunsåtatgången,asåtime,ingetsokrockar.nothing collides.SjälvaThebrygganbridge itself,somwhichmedrunsjämnathemellanrumreader at regular intervals (vareveryfemtefiveminut)minutes)körandläsaren,publishesochthepublicerarresultresultatet tillto MQTT.DenItskickaralsoocksåsendsutoutså kalladso-called auto-discovery,vilketwhichbetyder attmeans Home Assistantautomatisktautomaticallyskaparcreatesrätttheentiteterrightutanentitiesattwithoutviusbehöverhavingkonfigureratonågotconfigureföranything by hand.ÅtInandrathehålletotherlyssnardirection,brygganthepåbridgekommandonlistensfrånfor commands from Home Assistantochandöversättertranslatesdemthemtillintoklipparensthespråk.mower's language.
AlltEverything körsruns somas ena tjänstservice somthat startarstarts automatisktautomatically ochand startarrestarts omitself sigif självsomething omgoes något krånglar.wrong.
VadWhat somshowed dökup upp iin Home Assistant
NärOnce discovery välwas varin påplace, platsa poppaderow detof uppentities enpopped radup, entiteter,entirely helt automatiskt:automatically:
BatterinivåBattery levelVadWhatklipparenthegörmowerjustisnudoing right now (klipper,mowing,påheadingvägout,ut,headingpåhome,vägcharging,hem, laddar, parkeradparked …)LaddningsstatusCharging statusEventuellaAnyfelkodererror codesOchAndenariktigpropergräsklippar-kontrolllawn mower controlmedwithknapparbuttonsförtoattstart,starta,pausepausaandoch dockadock
KlipparensThe mångamower's olikamany lägendifferent översättsmodes tillare någratranslated fåinto begripligaa tillståndhandful iof gränssnittet,understandable såstates attin kortetthe iinterface, so the card in Home Assistant heltsimply enkelt visarshows "klipper"mowing", "dockad"docked", "pausad"paused" elleror "fel"error".
SäkerhetSecurity
FrånTo börjanbegin lågwith, meddelandetrafikenthe påmessage entraffic lived on a deladshared community-community broker. DetWe gickmoved viaway ifrånfrom ganskathat snabbtfairly ochquickly flyttadeand alltshifted tilleverything ento our egen,own, privatprivate broker medwith inloggninga login. AnledningenThe ärreasoning enkel:is kommando-topicensimple: ärthe vägencommand topics are the way in förto att faktisktactually styracontrol klipparen.the Liggermower. deIf påthey ensit on a broker somthat andraothers kommercan åt,reach, kanothers andracould iin teorintheory skickasend ivägthe gräsklipparen.mower Nuoff. ärNow trafikenthe privattraffic ochis autentiserad.private and authenticated.
EnA buggbug viwe fickhad jagato chase
EnA roligfun detaljdetail somworth ärremembering: värdfor attseveral minnas: under flera dagar rapporteradedays Skalman finreported nice status iin Home Assistant, menbut the Play-knappenPlay gjordebutton ingentingdid nothing –— klipparenthe vägrademower lämnarefused dockan.to leave the dock.
DetIt visadeturned sigout attthe start-kommandotstart översattescommand tillwas being translated into "återuppta"resume", vilketwhich baraonly fungerarworks omif klipparenthe redanmower äris mittalready iin enthe pausadmiddle klippsession.of Fråna dockad/parkerad/schemastyrdpaused statusmowing händesession. alltsåFrom ingentinga alls.docked/parked/schedule-controlled Fixenstate, varnothing atthappened låtaat all. The fix was to make Play iställetsend skicka etta "klippmow nu"-kommandonow" somcommand gårinstead, förbione schematthat ochbypasses skickarthe utschedule denand direktsends enit stund.out Efterfor deta lyddewhile den.straight away. After that it obeyed.
RäckviddRange ochand tillförlitlighetreliability
Bluetooth genomthrough ena förrådsväggshed ärwall inteisn't magi.magic. SignalenThe ärsignal ganskais svag,fairly ochweak, detand märks:it shows:
NärWhen Skalmanstårisiondockanthe dock,ärthekontaktenlinkstabilisochstableavläsningarnaandfunkarthefint.readings work fine.NärWhenhonit'säroutute och klippermowingochandrörmovingsigaroundruntthetomtengarden,missarthebrygganbridgeoftaoftenenmissesavläsning.aDetreading.görThat'singetnoallvarligtbig–dealbryggan—loggar,thehopparbridgeöver,logsochit,försökerskipsigenit,nästaandgångtriesutanagainattnextkrascha.cycle without crashing.
VillIf viwe hawant stenhårdrock-solid status äveneven underwhile klippningmowing, finnsthere ettare para vägarcouple framåt:of hållaways enforward: Bluetooth-kopplinghold öppena helaBluetooth tidenconnection iställetopen förthe attwhole kopplatime uppinstead omof ochreconnecting omover igen,and ellerover, sättaor enput Bluetooth-a Bluetooth repeater närmarecloser tomten.to Menthe förgarden. vårtBut behovfor –our vetaneeds batteri— ochknowing läge,the ochbattery kunnaand styramode, –and räckerbeing dagensable lösningto gott.control it — today's solution does the job nicely.
Bonus: regnvakta rain guard
EftersomSince viwe ändåhad hadecontrol kontrollover överthe klipparenmower byggdeanyway, viwe enbuilt litena regnvakt.little Virain harguard. ingenWe egendon't regnsensor,have såour viown använderrain väderprognosen.sensor, Närso detwe regnaruse hållsthe weather forecast. When it's raining, Skalman kvaris ikept dockan,on ochthe hondock, fårand dessutomit väntaalso enhas inställbarto stundwait efteran attadjustable regnetwhile slutatafter såthe attrain gräsetstops hinnerso torkathe litegrass innancan hondry åkerout uta igen.bit Detbefore finnsheading reglageout iagain. gränssnittetThere förare attcontrols slåin avthe ochinterface påto skyddetswitch ochthe justeraprotection huron längeand honoff skaand vänta.to Regnvaktenadjust respekterarhow klipparenslong egetit schemashould –wait. denThe släpperrain baraguard spärren,respects denthe tvingarmower's aldrigown utschedule henne.— it only releases the hold, it never forces it out.
Status
Skalman äris iup drift:and running: status synsshows iin Home Assistant, ochand start, pauspause ochand dockadock fungerar.all Detwork. somWhat's återstårleft äris mestmostly finlirpolish –— framförabove alltall attmaking görathe avläsningenreadings mermore tillförlitligreliable medanwhile honit's ärout uteand ochmoving. rörBut påthe sig.foundation Menis grundensolid, stårand stadigt,it's ochmowing hon klipper på.away.