Nurmikko vihertää jo paikka paikoin. Brucke heräsi talviunilta ilman ongelmia.
Tulipa eilen illalla hieman nuuskittua leikkurin lähettämiä ja vastaanottamia paketteja. Ensimmäisenä silmään pisti käytetty 1883-portti. Minähän sit otin ja kävin reboottaamassa leikkurin ja sain kaapattua viestin, jossa luodaan yhteys MQTT-brokeriin. Kuten jo tuo 1883-portti antaa olettaa niin liikenne on salaamatonta, eli pystyin tuosta yhdistämisviestistä lukemaan selkokielisenä käytettävän käyttäjätunnuksen ja salasanan. MQTT Explorer yhdisti em. credentiaaleilla brokeriin ja pääsin kuuntelemaan viestiliikennettä. Katsoin sieltä mielestäni olennaisimmat, eli mitä viestejä liikkuu kun lähetän mobiiliäpistä käskyt: pysähdy, leikkaa, telakkaan, reunaleikkuu.
Tämän jälkeen ajoin ylös docker-kontin jossa mosquitto broker. Kotiverkkoni reitittimeen konffasin NAT:n joka ohjaa robotilta lähtevän mqtt-liikenteen tähän luomaani brokeriin. Tässä vaiheessa robotti vaati rebootin, jotta suostui yhdistämään uuteen brokeriin. Brokereita on useampi (tai ainakin toinen fallbackinä), sillä jossain vaiheessa säätäessäni estin palomuurilla kaiken liikenteen robotilta ulkoverkkoon, niin logeissa näkyi toinenkin IP-osoite johon se yritti yhdistää.
Koodi:
Topic: /device/22121680005700012345/update
Payload: {"cmd":509,"lv":2,"log":"D/cutting [Sat May 25 12:19:17 2024] (2160)find border in,cycle right, angle=34\n"}
Topic: /device/22121680005700012345/get
Payload: {"cmd":101,"mode":4}
Robotti päivittää statustaan brokerille säännöllisesti update-päätteisellä topikilla, mutta äppillä statuksen voi halutessaan myös päivittää (en vielä ehtinyt tähän perehtymään). En ole koskaan robottiin kytkennyt muistitikkua lokkausta varten kiinni, mutta olettaisin että jsonin log on samaa liikennettä, jota muistitikulle tallentuisi? Robottia komennetaan get-päätteisellä topikilla. Tilat menee seuraavasti: 0 = Stop, 1 = Leikkaa, 2 = Palaa telakkaan, 4 = reunaleikkuu, cmd on joka kerralla sama 101.
Sanomattakin on siis selvää että Sunseekerin toteutus on ihan hirveä tietoturvan näkökulmasta. Olisivat edes käyttäneet salattua MQTT:tä. Jos joku haluaisi tehdä kiusaa näillä roboteilla, niin se olisi ihan luvattoman helppoa... En tiedä ymmärsinkö ihan väärin, mutta pikaisella katsannalla minulle jäi sellainen kuva että tuo Sunseeker HASS integraatio on edelleen riippuvainen tästä valmistajan brokerista?
Mitä ajatuksia porukalla herää siitä miten tämä pilvestä irroitus kannattaisi tehdä, jotta sen pystyisi mahdollisimman moni halukas toteuttamaan? Itselläni reititin on Mikrotikin järeähkö malli, jossa NAT-sääntöjä voi tehdä täysin vapaasti, mutta pystyykö vastaavia tekemään kuluttajaluokan vehkeissä? Toinen pakollinen paha tässä toteutuksessa on palvelimen tarve, ehkä jokaisella pilvestä irroittajalla jo valmiiksi löytyy vähintään joku raspbi, jossa brokeria voi pyörittää? Itse en koe äppille mitään tarvetta, jos saan vastaavat ohjausnappulat kotiautomaatiooni (OpenHAB), joten oma ajatukseni on että tässä ollaan tekemässä vain rajapintaa MQTT-yhteensopivalle kotiautomaatiolle.