Sponsoring
0.導入 – 発表やSwiftHomeの概要紹介
この記事はiOSDC2022で発表したセッション、Swiftで我が家を より便利に、安全に!の発表の第0部の導入の内容をまとめた記事になります。
この発表の内容は?
この発表は、ラズパイやHerokuでのSwiftの実装についてのものです。
具体的には、
- 既存のスマートホーム機能を強化する
- 我が家の状態を監視する
- Heroku経由でiPhone、ラズパイを連携させる
といった感じです!
今回はこのプロジェクトを SwiftHome と命名しました!
用語解説
スマートホームとは?
- ネットワーク経由で家電を操作できるようにする
- 例えば、GoogleHomeからリビングの照明をつけるなど!
- 「OK, Google, リビングのライトをつけて!」
ラズパイとは?
- Raspberry Piが正式名称
- 小さなシングルボードコンピューター
- OSを書き込んだSDカードを入れて使う
Herokuとは?
- アプリケーションを実行するために必要なプラットフォームを提供するサービス(PaaS)
- 便利で使いやすいレンタルサーバーのようなイメージ
- 今回はVapor(ServerSideSwiftのフレームワークの1つ)で実装したサーバーをデプロイするのに利用する
要は、スマートホームよいぞ!!という発表です!!!
この発表で話すこと/話さないこと
○話すこと
- ラズパイやHerokuでのSwiftやVaporの実装
- 実現する機能の中で、コアな実装の手順や詳細(詳細はブログに記載)
- 実装でつまづいた点や個人的に試行錯誤した方法
×話さないこと
- ラズパイのセットアップ方法
- 主にハード周りの技術要素の詳細や原理
発表内容の注意事項
- 発表者は、ハード周りの技術に精通しているわけではないです
- 発表情報は不正確、もしくは情報が不足している場合があります
- 今回実装しているコードやリポジトリは、個人開発なので、アーキテクチャやセキュリティが適当考慮できてない箇所が多くあります
- 発表の時間やスライドのスペースの制約のため、コードや情報を全て発表/記載できないので、詳細はブログ記事(後述)を確認してください
今回実装したもの
今回SwiftHomeで実装したものを某OS風にまとめてみました!
この発表とブログでここに記載した内容を順次紹介していきます!
SwiftHomeの構成
今回実装したSwiftHomeには3つのアプリケーションが登場します。
-
SwiftHomeAp
p
(iPhoneで実装したモバイルアプリ)- ユーザーが家にいるかの判断材料にするために、位置情報、標高データをHerokuに送信する
- SuicaのIDをスキャンし、Herokuに送信
-
SwiftHomeServer
(Herokuで動いているVaporで実装したサーバーのアプリケーション)- API/WebSocketを実装して、データの仲介する
- Postgresにデータを保存する
-
SwiftHomeApp
(ラズパイで動いているSwiftのPackage)- ラズパイのGPIOを使用したLEDの操作、センサーのデータ読み取り
- Swift/Vaporの実装
- 家電の操作を行うために、SwitchBotのAPI実行
- SwiftからPython/Bashのコードの実行する
SwiftHomeでは、SwiftHomeAppとSwiftHomePiがSwiftHomeServerを経由して、データをやりとりします。
通信には、RestAPIやWebSocket通信を使用しています。
なおセキュリティを考慮して、ラズパイへは直接APIで通信できないようにしました!
用語解説
GPIOとは?
- ‘General Purpose Input/Output’の略で、汎用I/Oポートのこと
- ↓のように電源、GND(マイナス)、I/Oなどポートごとに役割が分かれている
- このピンにLEDやセンサーなどを繋げて、回路を作ることでそれらを操作できます(実物の写真!)
まとめ
この記事では、SwiftHomeの発表の導入部分の内容をまとめました。
次の記事は、「1. ラズパイでSwiftを動かす – GPIOを使って、LEDを点滅させる」になります!
1. ラズパイでSwiftを動かす - GPIOを使って、LEDを点滅させるこの記事は、「Swiftで我が家をより便利に、安全に」の発表の1部「ラズパイでSwiftを動かす - GPIOを使って、LEDを点滅させる」の内容をまとめた記事になります!...
+1
Sponsoring