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
120
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
110
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
90
Other Decks in Technology
See All in Technology
恐怖!テストコードなき夜
tsukuboshi
2
110
バクラクによるコーポレート業務の自動運転 #BetAIDay
layerx
PRO
1
590
LLM開発を支えるエヌビディアの生成AIエコシステム
acceleratedmu3n
0
360
クマ×共生 HACKATHON - 熊対策を『特別な行動」から「生活の一部」に -
pharaohkj
0
270
Gemini in Android Studio - Google I/O Bangkok '25
akexorcist
0
110
robocopy の怖い話/scary-story-about-robocopy
emiki
0
430
経験がないことを言い訳にしない、 AI時代の他領域への染み出し方
parayama0625
0
290
AI時代の知識創造 ─GeminiとSECIモデルで読み解く “暗黙知”と創造の境界線
nyagasan
0
180
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
630
猫でもわかるQ_CLI(CDK開発編)+ちょっとだけKiro
kentapapa
0
190
相互運用可能な学修歴クレデンシャルに向けた標準技術と国際動向
fujie
0
160
完璧を目指さない小さく始める信頼性向上
kakehashi
PRO
0
130
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
400
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
730
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.7k
Agile that works and the tools we love
rasmusluckow
329
21k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Git: the NoSQL Database
bkeepers
PRO
431
65k
4 Signs Your Business is Dying
shpigford
184
22k
Done Done
chrislema
185
16k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Rails Girls Zürich Keynote
gr2m
95
14k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
GitHub's CSS Performance
jonrohan
1031
460k
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