Skip to main content

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 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" 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. So viwe behövdeneeded någotsomething somclose sitter nära.by.

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 on enaone sidan,side, ochand skickarpasses informationenthe vidareinformation tillon to Home Assistant viaover etta meddelandeprotokollmessaging somprotocol hetercalled MQTT on denthe andraother sidan.side.

I stora drag:Skalman architecture

Skalman

In ──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

to

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 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 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 up ochand manyou sittersit därthere ochscratching kliaryour sig i huvudet.head.

NyckelnThe varkey attwas to tvingaforce Bluetooth-kontrollernthe Bluetooth Pi:ncontroller atton pratathe denPi gamlato dialektenspeak the old dialect ochand stängaswitch avoff kraventhe 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 pairing vanligtmode sätt.the Tricketusual ärway. attThe trick is to slåflip avthe ochmain power huvudströmbrytarenswitch off and on 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 then köryou manrun parningenthe 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 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 ärBluetooth knutenbond tillis dentied specifikato Bluetooth-adaptern.the Byterspecific viBluetooth adapter. If we swap the dongle, elleror flyttarmove överto tilla endifferent annandevice enhetdown längrethe fram,line, fårwe'll vihave körato helarun parningsprocedurenthe igen.whole pairing procedure again.

BrygganThe sombridge hållerthat ihopties alltit all together

The Pi:nPi körruns tvåtwo delar:parts:

  • EnA läsarereader somthat gördoes exaktexactly enone sakthing iat taget:a kopplartime: uppconnects motto Skalman, läserreads avthe status (elleror skickarsends etta kommando)command), ochand kopplardisconnects nercleanly igenagain. snyggt.It Denuses användera ettclever smartlibrary bibliotekthat somreuses återanvändera encached cachaddevice enhetsreferensreference iställetinstead förof attscanning sökathe igenomairwaves eternevery varjetime, gång,which vilketmakes görthe uppkopplingenconnection betydligtconsiderably snabbare.faster. EnA lås-mekanismlock sermakes tillsure attonly baraone enBluetooth Bluetooth-session pågårruns åtat gången,a time, ingetso krockar.nothing collides.
  • SjälvaThe brygganbridge itself, somwhich medruns jämnathe mellanrumreader at regular intervals (varevery femtefive minut)minutes) körand läsaren,publishes ochthe publicerarresult resultatet tillto MQTT. DenIt skickaralso ocksåsends utout så kalladso-called auto-discovery, vilketwhich betyder attmeans Home Assistant automatisktautomatically skaparcreates rättthe entiteterright utanentities attwithout vius behöverhaving konfigurerato någotconfigure föranything by hand. ÅtIn andrathe hålletother lyssnardirection, brygganthe bridge kommandonlistens frånfor commands from Home Assistant ochand översättertranslates demthem tillinto klipparensthe språ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 place, platsa poppaderow detof uppentities enpopped radup, entiteter,entirely helt automatiskt:automatically:

  • BatterinivåBattery level
  • VadWhat klipparenthe görmower justis nudoing right now (klipper,mowing, heading vägout, ut,heading home, vägcharging, hem, laddar, parkeradparked …)
  • LaddningsstatusCharging status
  • EventuellaAny felkodererror codes
  • OchAnd ena riktigproper gräsklippar-kontrolllawn mower control medwith knapparbuttons förto attstart, starta,pause pausaand och dockadock

KlipparensThe mångamower's olikamany lägendifferent översättsmodes tillare någratranslated into begripligaa tillståndhandful iof gränssnittet,understandable 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 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 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 Skalman ståris ion dockanthe dock, ärthe kontaktenlink stabilis ochstable avläsningarnaand funkarthe fint.readings work fine.
  • NärWhen honit's ärout ute och klippermowing ochand rörmoving sigaround runtthe tomtengarden, missarthe brygganbridge oftaoften enmisses avläsning.a Detreading. görThat's ingetno allvarligtbig deal bryggan loggar,the hopparbridge över,logs ochit, försökerskips igenit, nästaand gångtries utanagain attnext krascha.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 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 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 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 the sig.foundation Menis grundensolid, stårand stadigt,it's ochmowing hon klipper på.away.