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
AndroidThingsとFirebaseで始めるホームセキュリティ / Android ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Katsuya Kato
February 08, 2018
Technology
5.6k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AndroidThingsとFirebaseで始めるホームセキュリティ / Android Things Home Security
Droidkaigi2018発表資料
Katsuya Kato
February 08, 2018
More Decks by Katsuya Kato
See All by Katsuya Kato
複業メンバーと共に創るカウシェ
katsuyax
0
780
WWDCでこの先生きのこるには / WWDC2017
katsuyax
0
110
watchOS3の新機能 / watchos3
katsuyax
0
110
Firebaseを使ってみた
katsuyax
0
58
iPhone(iOS)のアプリ内課金 / in app purchase
katsuyax
0
120
Other Decks in Technology
See All in Technology
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
2
610
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
140
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
620
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
230
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
220
JavaScript 研修 (2026)
recruitengineers
PRO
1
440
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
200
Webアクセシビリティ入門 2026
recruitengineers
PRO
2
430
ラジオの科学
frievea
0
270
ガバメントクラウドでのランサムウェア対策
techniczna
2
940
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
140
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
140
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Site-Speed That Sticks
csswizardry
13
1.4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
Raft: Consensus for Rubyists
vanstee
141
7.6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
330
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
360
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
720
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Transcript
Droidkaigi2018 Katsuya Kato
,1* ¢ %(!0Kato Katsuya ¢ Android / iOS ¢
3"$ . ¢ +& 2 # ¢ '/- ) 2
#%/' ¢ Raspberry Pi -* Android Things&, )
"$!+. ( 3
"#%' 0>< ¢ E,67 ¢ :A.3 B;*=7
¢ )1/8 D ¢ C@(HF, /29 5 ¢ C@(4?-+ ¢ IG ! $& 4
Android Things ¢ Google IoT ¢ ¢ : Raspberry Pi
3 5 // . / . /
Android Things ¢ Android,-1 ¢ #'$'( ¢
GPIO5/20 ¢ #'& Rainbow HAT1 ¢ LED4x14"%).4.3* ! &* etc ¢ GPIO1+ http://crossbridge- lab.hatenablog.com/entry/googlehome-androidthings- led
¢ ADK(Accessory Development Kit) ¢ Android
¢ https://developer.android.com/adk/index.html ¢ 2011/2012 Google I/O 7
" ¢ Android Things with Raspberry Pi ¢
Nature Remo ¢ ¢ Linking ¢ Bluetooth! ¢ Firebase ¢ Firebase Realtime Database ¢ Cloud Functions for Firebase ¢ Firebase Cloud Messaging ¢ Geofencing 8
9
35 ¢ 6'2 /9"+&). *$!,1:@ B04> 1. '2A#.
(Linking%(")= Android Things'2 7: 2. 7: Firebase Realtime Database?<8 3. <8&-Cloud Functions for Firebase "+&).*$!,1:(FCM); 10
Linking*/#%)- ¢ NTT&.E37G>?5<C 9 4 *1% Project Linking ¢ 6A
$' Linking$' D ¢ ;H!2 ¢ F:I:!2 ¢ ,"2LED etc ¢ 1,00082,5008B: ¢ Android/iOS6A +02 (2 @= 11 https://linkingiot.com/
1 12 1 2. E B Firebase Realtime Database Cloud
Functions for Firebase 3.E B. 3. (FCM)
Linking(!# )* ¢ SDK$% ¢ https://linkingiot.com/developer/api.html ¢ +
Jar,'&" 13
Linking$&!A/1 Android Things(,4K ¢ !*-3C 14 // BeaconScannerSDK?H +! val
scanner = BeaconScanner(this) val filter = IntentFilter() // >;9 698$#FGD5 // =B98$#9 670 filter.addAction(Define.filterBeaconScanResult) // '-=B9 6BroadcastReceiver70 registerReceiver(receiver, filter) // '!ID!*-)%70 !*-3C // 63N"- M:<0E@0.L2)%3IJ scanner.startScan(intArrayOf(6), 0)
Linking Android Things ¢ 15
var receiver: BeaconReceiverBase = object : BeaconReceiverBase() { internal var receivedData: BeaconData? = null override fun onReceiveScanResult(beaconData: BeaconData?) receivedData = beaconData handler.postDelayed(updateTask, 0) } //
Linking/$& Android Things! (7 ¢ +*) 16 internal var updateTask:
Runnable = Runnable { //rawData 838 06 val dataOpenCloseSensor = receivedData?.getOpenCloseSensor() if (dataOpenCloseSensor != null) { // 05 raw (12 '912"4 #- val binary = String.format("%12s", Integer.toBinaryString(dataOpenCloseSensor!!)) .replace(" ".toRegex(), "0") val binaryState = binary.substring(0, 1) // '912 val binaryCount = binary.substring(1) // '9%, // .
Linking Android Things ¢ 17 // Firebase
Realtime Database val database = FirebaseDatabase.getInstance().reference.child("state") database.child("door1_state") .setValue(Integer.parseInt(binaryState)) database.child("door1_count") .setValue(Integer.parseInt(binaryCount,2)) } }
Cloud Functions for Firebase ¢ Firebase HTTPS
¢ Realtime Database ¢ Firebase Authentication ¢ Crashlytics ¢ Cloud Storage ¢ Realtime Database 18
Realtime Database Node.js 19 const functions = require('firebase-functions');
const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.push = functions.database.ref("/state/door1_state/") .onWrite(event => { const item = event.data; const payload = { data: { title: "", message: "1 " + (item.val() === 0 ? " " : " "), } }; //
4 20 // . /
¢ 21
Geofencing ¢ 5;70: ='ED& /" ?) # ¢ Google Play
Service+9: $B A5;70,6 3@ 14( ¢ Google Play Service API> &TargetSDK26.!-/ !70C ¢ *< %82 ¢ https://github.com/googlesamples/android-play-location 22
('Geofencing4. ¢ Geofencing4 Android!*+ $ 6#&:7/0- Database3/ ¢ Cloud Functions5
8, $61 " )9% 2 23
24
"( ¢ 745 !.,'$ ) ¢ Raspberry Pi2%/+1 2%/LED3*
#6-&→ )808 25
7 ¢ LinuxLIRC(Linux Infrared Remote Control) 164,- Android. '
$'(* ¢ Android Things035/ 8 +2"%#(&!)1 http://www.lirc.org/ 26
#&%)(!* Nature Remo ¢ #&%)(!* ¢ ;+ ;IRKit/KIRKit,L7 ¢ @:'
!*J)(!*60 NH?A ¢ GC 4D2I)(!*.F<O 4DM= B> ¢ -"$USBE9 ¢ API31 85 27 http://nature.global/
<: ¢ Nature Remo-6!$%( ) .* =3 84 ¢
Geofencing 502 " !#&ON0; OFF ¢ ()Geofencing 1' ¢ 07*()/ /9 ,+ 28
9? 1. '.*,$3"-/ @K6JHK6J! Firebase Database>7 2. Android ThingsFirebase
DatabaseIG: AI!<B>7 6JNature RemoAPI!L ¢ Nature RemoAPI1%0+)*2& #3( +)*;FCloud Functions!C →=8API!L 54DE 29
Nature Remo)!API" ¢ API&% https://developer.nature.global/ ¢
¢ '# $ ¢ '# $)! ¢ ¢ ()! etc 30
Nature Remo API 1. 2. API
ID 3. API 31
Nature Remo API 32 $ curl -H ‘Authorization: Bearer {TOKEN}’
-H ‘accept: application/json’ -H ‘Content-Type: application/x-www-form-urlencoded’ -X POST ‘https://api.nature.global/1/signals/{ ID}/send’ ¢ https://api.nature.global/1/signals/{ ID}/send
33
"$ ¢ Android Things (% or #!
*'&) 34
- 2 ¢ Android ThingsUSB*&Web' !# ¢ )%(" Linux
' ¢ Android Things+$, 35
2 36
.-), ¢ Android Things("* ¢ USB$ /!+%'& Web#(
37
38
"'=92. ¢ ;1 ,*6 ¢ Linking#%?7 ¢ (*A+),>#%(
*5 0<7 ¢ &!$(* ¢ ,5 1834(-/34) @: 39
10#$&+FN@ Android Things,.%(',.%( ¢ ,.%( ¢ Android5=I -"*-.!>
¢ )%&. LBUSBJ<E/D6 )%&.Q4P!:A7 ¢ ',.%( ¢ K9C-"*-.Linux38!?5 ¢ Raspberry Pi 3&LinuxHGOM2; 40
¢ <M.*790(@JVO ¢ ;DEB&L#!.*790(>4:,8:F T.+5&UC PIA ¢
Z$Q 'AndroidKR&N=W13)- &\IoT@ #S ¢ Y[Linux 169/2# ¢ G? "]H# 'Android Things&X% ¢ Linking13)- 41
42