Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Teaching a Vaccum Robot to be a Webradio in Go ...
Search
GoDays
January 30, 2019
Technology
1
74
Teaching a Vaccum Robot to be a Webradio in Go - Tobias Kohlbau, myOpenFactory
Teaching a Vaccum Robot to be a Webradio in Go - Tobias Kohlbau, myOpenFactory
GoDays
January 30, 2019
Tweet
Share
More Decks by GoDays
See All by GoDays
Standing on the shoulders of giants - Tomasz Janiszewski - D2IQ
godays
1
130
How to instrument Go code in 2020 - Björn Rabenstein - Grafana Labs
godays
1
250
12 Factor CLI Apps with Cobra - Markus Zimmermann - cosee
godays
0
400
Integration and end-to-end testing with TestContainers-Go - Nikolay Kuznetsov & Erdem Toraman - Zalando
godays
1
1.1k
Fun with Functions - Frank Müller - Loodse
godays
0
120
Amazon SNS/SQS with Go - Paul Borlin - Compassion International
godays
1
310
Writing a language parser in 15min (or less) - Xavier Coulon - Red Hat
godays
0
110
A story about distributed computing before the cloud arrived - Rogier Lommers - bol.com
godays
0
110
Serverless Ops – Bye-bye Bash, Hello Go! - Rob Sutter - Amazon
godays
0
93
Other Decks in Technology
See All in Technology
アウトプットから始めるOSSコントリビューション 〜eslint-plugin-vueの場合〜 #vuefes
bengo4com
3
1.9k
OPENLOGI Company Profile for engineer
hr01
1
46k
頭部ふわふわ浄酔器
uyupun
0
240
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
640
【SORACOM UG Explorer 2025】さらなる10年へ ~ SORACOM MVC 発表
soracom
PRO
0
170
Retrospectiveを振り返ろう
nakasho
0
140
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
14
82k
「タコピーの原罪」から学ぶ間違った”支援” / the bad support of Takopii
piyonakajima
0
150
Observability — Extending Into Incident Response
nari_ex
1
590
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
AIがコードを書いてくれるなら、新米エンジニアは何をする? / komekaigi2025
nkzn
7
2.8k
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
520
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4k
Bash Introduction
62gerente
615
210k
Docker and Python
trallard
46
3.6k
Code Review Best Practice
trishagee
72
19k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Designing for Performance
lara
610
69k
Side Projects
sachag
455
43k
Practical Orchestrator
shlominoach
190
11k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
RailsConf 2023
tenderlove
30
1.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
Transcript
TEACHING A VACCUM TEACHING A VACCUM ROBOT TO BE A
WEBRADIO ROBOT TO BE A WEBRADIO IN GO IN GO
ABOUT ME ABOUT ME Tobias Kohlbau So ware Developer @
Twitter: GitHub: myOpenFactory GmbH myOpenFactory GmbH @toktech @toktech tobiaskohlbau tobiaskohlbau
OBJECT OF INTEREST OBJECT OF INTEREST Xiaomi Mi Robot Vacuum
Cleaner
WHY XIAOMI VACUUM CLEANER? WHY XIAOMI VACUUM CLEANER? Cheap Works
like a charme Silent
None
HACKABLE HACKABLE Ubuntu OS powered by ARM v7 Processor Root
access without opening the device Cleaning Robot Hacking bit.ly/2VI5aTr bit.ly/2VI5aTr
MOTIVATION MOTIVATION 1. Seriously: Did my vacuum just talked to
me? 2. I want to hijack this
None
Cross compilation toolchain libasound for Vaccum Go based mp3 player
Running on my VACUUM
package main import ( "io" "log" "os" "github.com/hajimehoshi/go-mp3" "github.com/hajimehoshi/oto" )
func main() { res, err := http.Get("https://static.kohlbau.de/audio.mp3") if err != nil { log.Fatal(err) } decoder, err := mp3.NewDecoder(res.Body) if err != nil { log.Fatal(err) } defer decoder.Close() player, err := oto.NewPlayer(decoder.SampleRate(), 2, 2, 8192) if err != nil { log.Fatal(err) } defer player.Close() if _, err := io.Copy(player, decoder); err != nil { log.Fatal(err) } }
SECRET INGREDIENTS SECRET INGREDIENTS Webserver REST API Magic (some people
call it UI)
DEMO DEMO https://github.com/tobiaskohlbau/dustrobo https://github.com/tobiaskohlbau/dustrobo
QUESTIONS? QUESTIONS? @toktech @toktech