DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

Webサイトをスマホ用アプリに(PWA化)する 備忘録

Webサイトをネイティブなスマホのアプリとしてインストールできるようにする方法があります。

 

この記事のスマートロック用アプリもこの方法でアプリ化しています。

dreamerdream.hateblo.jp

 

基本的にはWebアプリのままだけどスマホにもインストールできるWebアプリで、PWA(プログレッシブウェブアプリ)と呼び、設定次第では位置情報やPush通知など、一部でスマホ用アプリと同等の機能をもたせられるという便利なものだそうです。

PWAをガッツリ使いこなしたければ書籍も出ています↓

 

 

ここではひとまず自分用のアプリとして動くようにサラッと纏めておきます。

元がGoogleの提供している機能らしく、iPhoneへの対応が遅いという難点もあるようですしブラウザによって対応できたりできていなかったりと、まだまだ発展途上の技術です。

ただ、Webアプリでもスマホアプリでも使えるとなると非常に便利な機能なので使わない手はありません。

 

基本的にはこちらの参考サイトの通りに作ればOK!

<参考>

3分でWebサイトを PWA としてアプリ化させてみる | PisukeCode - Web開発まとめ

 

PWAに対応させるには

  1. サイトをhttpsサイトにすること
  2. faviconだけではなく、AndroidとiPhone用アイコン(後述)を用意すること
  3. アプリの挙動をjsonで記述したmanifestファイルを用意すること
  4. JavaScriptで記したサービスワーカーを用意すること

以上。

意外と条件が少ないです。特に気になっていたスマホアプリ用の挙動やGUIを作ったりする必要は無さそうです。

 

アイコンの用意

アプリのアイコン用の画像が必要です。

512×512

256×256

192×192

の3つぐらい画像ファイルを用意する。(形式はpngで可)

 

manifestファイルの用意

Webから見える範囲に[manifest.webmanifest]ファイルを作り以下のように記述し、上のアイコンの位置をiconsにまとめて記載する。

(拡張子は「.webmanifest」または「.json」)

{

  "lang": "ja",

  "name": "ServiceName",

  "description": "サービスの説明",

  "short_name": "SN",

  "display": "standalone",

  "icons":[

    { "src": "/icons/192.png", "type": "image/png", "sizes": "192x192"},

    { "src": "/icons/256.png", "type": "image/png", "sizes": "256x256"}

  ],

  "start_url": "/top/"

}

 

nameがインストールしたときのアプリの名前になります。

start_urlはアプリが起動したときに最初に起動するページ

 

サービスワーカーを用意

javascriptファイル[serviceWorker.js]をWebサイトのトップへ配置します。

必ずトップへ配置しないと、

no matching service worker detected

とエラーが出てPWA化しません。

 

つまり、ディレクトリ内

/js/serviceWorker.js

ではなく、

/serviceWorker.js

に配置するということです。(設定はWebサーバーソフトで)

中身

self.addEventListener('install', function(e) {

  console.log('[ServiceWorker] Install');

});

self.addEventListener('activate', function(e) {

  console.log('[ServiceWorker] Activate');

});

self.addEventListener('fetch', function(event) {});

 

HTMLファイルへ記述

そしてhtmlのheadに上述のファイル類を読み込ませる記述を記入

 

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <meta name="viewport" content="width=device-width,initial-scale=1.0">

    <link rel="manifest" href="/manifest.webmanifest">

    <link rel="stylesheet" type="text/css" href="/css/mystyle.css">

    <script>

      if('serviceWorker' in navigator){

        navigator.serviceWorker.register('/serviceWorker.js').then(function(){

                console.log("Service Worker OK!");

        });

      }

    </script>

  </head>

 

確認

Webサーバーにアップロードして、GoogleChromeの検証ツールでApplicationの項目を選択するとmanifestとサービスワーカーがきちんと読み込まれているか確認することができます。

f:id:DreamerDream:20220101103207p:plain

特にエラーがなければアプリとして機能するようです。

 

 

スマホでアクセスすると

「ホーム画面に[アプリ名]を追加」

 

が下に表示されインストールが可能になります。

(※画像は加工しています)↓こんな感じ

 

スマホだけじゃなくパソコンにもインストールすることが出来ます。

 

こんな感じで、スマホのデスクトップにアプリのアイコンが表示されてタップすると立ち上がります↓

youtu.be

 

常時使うようなツール系サイトならブラウザ起動させずに(バックでは起動していますが)一発で起動するので結構便利です。

 

 

スマートロックの自作はコスパが悪い? そんなことは無いですよ!

「スマートロックを自作しました。」

dreamerdream.hateblo.jp

こういうブログを、「え?なんで既製品買わないの?」「承認欲求強すぎでしょw」「既製品のほうが安くて確実じゃん!」と冷めた目で見られる方も少なからずあります。

 

鍵の情報を出しているページでは「スマートロックの自作をおすすめできない理由」というタイトルの記事が存在します。

www.karf-vintagestore.com

この記事を読むと、「確かに!」と思うところがあります。(記事中の「素人」がどのレベルの素人かは不明ですが、仕事でITに携わっていない僕も素人です。)

実際に作るのを挫折したという報告もあります。

nu50218.dev

既製品は確かに見た目が綺麗で動作が保証されているという面に関しては評価が高いです。

しかしながら、コスパに関しては意義あり!なので反論します。

なぜならスマートロックは一度導入すれば永久的に使い続けられるものではないからです。

 

電化製品は使っていればいつか劣化して壊れますから、既製品であれば劣化による故障はほぼ買い替えとなります。

それとは別に、スマート家電と呼ばれるものには必ず「サービス期間」がついて回ります。

サービス期間は、一般的な家電の保証期間とは意味が異なることに注意です。

 

例えばスマート家電で電気を点けよう!とスマホを触ったときに、スマホから直接家電を操作しているように感じます。(※実際そういう家電もありますが…)

が、多くのスマートロックに関してこれは間違いです。

実際は、インターネットを通してサーバーからスマートロックを操作しています。

目には見えないので普段は意識しませんが、ネット上のサーバーが運用されていないとスマートロックは使えないのです。

つまり、このサーバーの運用期間がサービス期間ということになります。

 

実際に終了した商品の例

www.itmedia.co.jp

このように、サービスが終了するときは「◯月から使えなくなります」と突然アナウンスされ、製品自体は壊れていないのにあっけなく使えなくなります。

 

また、サーバーは動いているけれど、スマホのソフトウェアが更新終了してしまうパターンもあります。

qrio.me

support.akerun.com

更新終了なので、スマホの相性によっては今後インストールしても使えるかもしれないし、使えないかもしれません。実にアバウトな告知ですが、最終出荷辺りで購入したものは最悪3年程度で使えなくなってしまう可能性もあるということです。

 

使えなくなってしまったスマート家電は

買い替え

しか選択肢はありません。

 

何年かごとに買い換えが必要です。 そう考えると 自作=コスパが悪い とは言えません。逆に 既製品=コスパが悪い とも言えるのです。

特に鍵がダブルロックの場合は2つ買い換えないといけませんのでお値段も倍。

買い換えると当然使い勝手も変わります。いつも便利に使っていた機能が使えなくなったり、余計な機能が付いてきたりします。

そして買い換えた後の元のスマートロックは当然廃棄処分ですよね?

自作品なら不要になっても部品取りやリメイクしていつまでもアップデートして使うことができます。

故障しても汎用電子部品で構成された自作スマートロックであれば部品交換で安く修理対応できます。

どうです?自作スマートロックは実にエコロジーでSDGsな取り組みだと思いませんか?

 

既製品スマートロックはいくら高価なものでも結局はスマホと同じように消耗品です。「その次代の新製品に買い換えること」を当然として最初から購入すべきでしょう。

新製品であれば数年は確実にサービスが継続されていることでしょう。

 

 

「サービスの終了」

これはスマートロックに限らず、あらゆるスマート家電にいつか訪れる運命です。

www.iedge.tech

 

いや、でも今や8000円を切ってるって・・・やすいなー

 

CentOS Stream release 8アップデートでエラー 備忘録

普段Webアプリのサーバーで使っているSentOS Stream 8で定期アップデートをしようとしましたら、

sudo dnf update

 

見たこと無いようなあるようなエラーに遭遇しました。

エラー: 

 問題: パッケージ kmod-kvdo-6.2.6.14-86.el8.x86_64 には kernel-modules-uname-r >= 4.18.0-408.el8 が必要ですが、どのプロバイダーからもインストールできません

  - パッケージの最良アップデート候補をインストールできません kmod-kvdo-6.2.6.14-84.el8.x86_64

  - パッケージ kernel-modules-4.18.0-408.el8.x86_64 は除外フィルタリングに一致しません

(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)

 

????なんだこれ?

少し悩みましたが、過去記事に発見!!

dreamerdream.hateblo.jp

 

なんかしらんけど、いつの間にか日本語での案内になってるー!!

ということで、対処方法は過去記事と全く一緒。というか、自分でkarnelアップデートを禁止してただけというオチです(なんじゃそりゃ・・)。

/etc/yum.conf

に書き込んだ箇所を

#exclude=kernel*

コメントアウトするだけ。

 

sudo dnf update

 

インストール済み:

  kernel-4.18.0-408.el8.x86_64               kernel-core-4.18.0-408.el8.x86_64               kernel-devel-4.18.0-408.el8.x86_64               kernel-modules-4.18.0-408.el8.x86_64              

削除しました:

  kernel-4.18.0-358.el8.x86_64               kernel-core-4.18.0-358.el8.x86_64               kernel-devel-4.18.0-358.el8.x86_64               kernel-modules-4.18.0-358.el8.x86_64

ちゃんとアップデートできました。

 

日本語でのエラー表示って見慣れていないから焦りました^^;日本人なのに・・・

 

これまでも何度かありますが、今回も備忘録に救われましたのでまた困らないように個人的な備忘録として残しておきます。

 

 

 

MZDAOに参加してみました メンバー募集を再開してます

皆さん「MZDAO(エムズィーダオ)」ってご存知でしょうか?

※MZDAOについて既にご存知で、「初期メンバーで登録することをスッカリ忘れていて、参加できる機会を探してた! 」というかたは今回メンバーの募集を再開していますので是非この機会に参加してください。

www.mzdao.jp

 

 

- MZDAOって? -

ファッション通販ZOZOTOWNの創業者、前澤友作(まえざわゆうさく)社長が立ち上げたばかりの全く新しいスタイルの会社(組織?)です。

※現段階でZOZOTOWNの社長ではないけれど、見慣れているのでブログ内では「前澤社長」と書きます。

<前澤社長>

 

といっても現段階では会社ではありません。ゆくゆくは「DAO」という新しい形態の会社組織を取ることを目標にしているようですが、現時点では人を集めたコミュニティールームがあるだけで、どのようにDAOとして活動していくのか?具体的に何をするのか?は全くの未定です。

コミュニティーからの記事の引用は規約違反になるので出来ませんが、「こういう流れで事業をしていきますよ。」というロードマップは既に初期メンバーに公開されています。

現段階で決まっていることは、事業も含め活動内容すべてを前澤社長筆頭に集まったメンバーでアンケート取って決める!ただそれだけです。

 

今後事業として何をするかは全くの未定!良く言えば未知数!!それでも、前澤社長の知名度と信用、そしてメンバーの「何かが変わりそう!」という期待値から初回メンバーだけで全国各地から24万人が参加しているコミュニティーになっています。

すごい数ですね。。。しかも無料ではなく、ワザワザ「月会費500円」を払って参加しています。(もちろん僕も)

月額500円で22万人なので→ざっくり毎月1億円以上集まることになります。

もしMZDAOの目標メンバー数である100万人を集まったら→月5億円集まります。

そんなわけで、「お金を集めるだけの詐欺じゃないのか?」という批判的な意見も当然あります。

しかし、これだけ社会的な地位とお金に困っていない人が詐欺をする必要性が無いし、僕からするととんでもない金額だけど前澤社長からすれば微々たる金額に過ぎない額を持ち逃げしたところで利が無いことは解りますよね。

 

まあ前代未聞の事業を計画するのですから、これから立ち上げる全ての事業が大成功する!!ということはまず無いでしょう。

事業の失敗=詐欺だと世間から捉えられかねない可能性は充分にあります。

 

つまり、何も始まっていない今の段階で月額500円にどれだけの価値を見いだすか?は各々の価値観、人それぞれの期待値だけです。

人が「良かったよ!」と言っていることを試しても自分はそうではなかったりすることってありますよね。

 

ここでは僕が何故このような「何も決まっていない事業」に参加しようと思ったのかの理由を5つ挙げてみますので、もし今現在参加しようかどうか悩んでいる方は「月500円の価値が見いだせるか」の参考にしてみてください。

 

 

考えることが好き

現段階で行われたMZDAOの具体的な活動は「事業提案」だけです。

9月にMZDAOは初期メンバー24万人を対象に「これから展開していく事業の提案」を受け付けていました。

初回事業提案募集の内容は「年間の営業利益100億円規模の事業」ですって。

なかなか初回から難題が与えられました。しかし、よく考えてみると「年間」ですからね。

月換算だと10億円弱、なるほど!目標メンバー数の100万人皆が月1000円払う価値のある事業を提案すれば良いんですね!

ということで、人生で初めて100億円という数字に真面目に向き合うことが出来、5つほど事業提案をすることができました。

メンバーには当然ながら提案のプロも含まれるはずなので、全くの素人提案の採用はまず無いだろうけれど、それでもダメ元で未知の分野で新しいことを考えてみました。夢が膨らんでモノ作りと同じようにめちゃめちゃ楽しかったです!!

※ちなみに、最終的にMZDAOに寄せられた提案数16,648件、スゲェ・・・

 

普通じゃない人が好き

前澤社長って民間の日本人で始めて宇宙に行った人なんですよ。

皆さんは仮に宇宙に行けるだけの資産があったとして、「宇宙に行く」それだけのために巨額の費用をかけられますか?売名行為だか何だかと周りからの批判も当然あるでしょう。僕なら周りの反応が恐くて行かないです。

これだけでも言い出しっぺが普通の考え方じゃない人だということがわかります。

こういう突拍子もないことをする人にすごく憧れます。

コミュニティーでは前澤社長の人間性がすごく見て取れます。「これだけデカイことをしようとするんだからさぞかしグイグイ先陣切って引っ張っていくようなカリスマ性を持ってるんだろうなー」と思っていたら20万人超えのメンバーのコメントにしっかり向き合ってメンバーの批判的な意見にも目を向けて、悩んでいることを素直に打ち明けてくれたりとすごく人間味溢れる場面が見られます。

内容ついてはコメントやアンケートへの回答も出来るので、偉い人が単に良い事ばっかり纏めて配信しているメールマガジンを読むよりもずっと偉人を身近に感じられます。

 

経験値になる

例えばこのブログでよく取り上げている「3Dプリンター」や「プログラミング」ですが、僕も始めた当初はチンプンカンプンで何が出来るのか全く未知でしたが、今や僕にとっては両方とも無くてはならない存在になっています。

何でもそうですが、周りから見ているだけでは所詮他人事。「へー!」ぐらいにしか感じられないことでも、実際自分で使ってみると新しい発見が山ほどあります。

これは既存のものだけではなく、これから出てくるサービスでも同じだと思うのです。

例えが下手すぎて上手く伝わらないかもしれませんが、MZDAOも同じです。

実際にコミュニティーに参加してみてコメント書いて事業提案することで、今までもこれからも自分の人生の中で関わることがまず無かったような前澤社長にメッセージを届けることが出来たという経験を得ました。これって結構凄いことです。

これから発表される事業にもこれまで自分が全く考えも及ばなかったような分野の提案があるんだろうなー!とワクワクしますしこれからも参加できる可能性があるものならダメ元で何でも参加してみようと思います。

 

安い

中には参加費月額500円は高い!と言う方もあります。

一度有名人のメルマガの価格を調べてみてください。月額500円を超えるメルマガなんて山のようにあります。ざっくり調べると600〜800円台が多いように思います。ほぼ週一回の配信です。

対してMZDAOの配信は「2回/週程度」と言っているけど、実際1回/2日のペースで配信されています。

ましてやコンテンツが配信されるだけではなく記事にコメントを書いたり、他人のコメントが見れたり、決して理想ばっかり書いてあるわけじゃない。そしてリアルタイムで事業の展開をしていくのですから、一方的に配信されたものを見るだけのメルマガより参加型の面白いコンテンツだなと僕は思います。

具体的な内容は書けませんが、コミュニティーでは今まで知らなかったビジネス用語も出てきて、その度に知識が増えます。

この配信を見ているだけでも勉強になるので500円以上の価値は充分にあるかなと僕は思います。

 

面白そう

上で散々理由を挙げましたが、やっぱり僕の参加する一番の理由は「面白そう!」と感じられるところです。

皆さんは「面白そう!」でモノを買いますよね?

「面白そう」だから映画見ますよね?DVD買いますよね?

「面白そう」だからゲーム買いますよね?

僕にとってはそれと同じ感覚です。アミューズメントパークのクレーンゲームに500円なんてすぐ使っちゃいますよね?面白いからです。

極論、こういったコンテンツは「面白そう!」と感じるか否か?で選んでしまえばいいと思うんですよね。

別に面白く無ければ退会したらいいわけですし。

 

以上です。

もし参加を悩んでおられる方があればこの記事が少しでも参考になれば幸いです。

今回の募集で参加される方と初期メンバーとの待遇の違いは、これまでの経緯を見る限りは特に無さそうです。

事業提案は初期メンバーのみで行いましたので、今後はそこから提案を絞って事業を始める段階からの参加ということになります。

「MZDAOとか知らなかったけどなにそれ面白そう!」と思われた方がありましたら、モノ作り大好きな方と一緒に盛り上げていきたいです!

 

MZDAOの参加はこちらから

www.mzdao.jp

 

マイページ↓

app.mzdao.jp

 

3Dプリンターを使ってスマートロックを自作する ⑧オリジナルの機能

前回、自作スマートロックの完成披露をしました。

dreamerdream.hateblo.jp

 

今回は自作だからこそできる市販のものには無いオリジナルの機能を2つ紹介します。

 

①内側からは自動解錠

外に出るための解錠操作にいちいち物理ボタンを押すのって煩わしいですよね。ましてやスマホから操作しないとイケナイなんて全くスマートじゃない!

ということで、ロックにスイッチを付けて内側からの解錠をスマートにしました。

www.youtube.com

この方法だとスイッチを押す→解錠→ドアを開けるという動作が1ステップで済みます。

良いアイデアだと思いましたが、最初のスイッチを押すという場面で一気に力を入れてしまう家族が使うとキーが重くなってロックがスムーズに開かないという問題が浮上しました。

そこで人感センサーを使ってドアノブに触れる前に解錠することにしました。

youtu.be

動画は超音波式の人感センサーの実験ですが、誤作動が多いので最終的には赤外線式の人感センサーを採用しました。

使ってみるとこれは便利です。玄関で靴を履いて立ち上がって一歩歩いたぐらいのタイミングぐらいで解錠されます。

もし誤作動した場合は10秒で施錠します。

 

②オートロックの発動条件

最初の設計では、扉が閉まってから10秒でオートロックする。という方法を採用していました。

市販のスマートロックにもよくあるオートロックですね。

しかし、ポストを見に行くだけとか、一瞬の外出でもオートロックがかかり、締め出される可能性が浮上。

締め出された場合は緊急用に無線式の指紋認証キーを使うことで解錠できるようにしていましたが、オートロックに慣れていない家族から煩わしいと不評・・・(悲)。

ということで、まずはオートロックのワンタイム制を採用。

スマホからオートロックの「設定」を押すと一度だけオートロックが発動するようにしました。

これを外出する前に設定しておくと外に出てからキーの操作をする必要が無くなります。

ただ、一度オートロックの便利さを体験してしまうと外出前にこの操作をすることすら煩わしくなるのが人間です。

解決するのに一番簡単な方法は「玄関に物理的なボタンを設置してワンタイムのオートロックを設定できるようにする。」という方法ですが一度完成したものに物理ボタンを追加するのは手間です。

 

ということで考えた結果、外出後に施錠する条件としてドアの開閉時間を取り入れることにしました。

ドアを一度閉めてから→ドア開ける(一秒以内)→閉める→2秒後に施錠。

というロジックを組みました。

1秒以内で開けて閉める。という条件は日常では使わないので「明らかな意図した動作」として発動条件としてはピッタリです。

使ってみると、これまた便利!!最初からこうしときゃ良かったと感じました。

 

今後また使いながら便利な機能を模索していきます。

これからスマートロックを自作する方の参考になれば幸いです。

<最初の記事>

dreamerdream.hateblo.jp

 

 

 

3Dプリンターを使ってスマートロックを自作する ⑦完成

前回はSocket通信でのセキュアな通信方法を考えてみました。

dreamerdream.hateblo.jp

 

今までの内容でスマートロックを自作する準備が整いましたので実際に取り付けていきます。

 

今回、全システムの詳細は物が物だけにセキュリティーの都合上掲載しません。

ただし、システム自体は過去の記事のものを組合わせているだけですのでそれほど複雑な要素はありません。

 

スマホからの制御はVPS上にDjangoで作ったサイト。

dreamerdream.hateblo.jp

 

VPSから制御器へは暗号化したSocket通信。暗号化については前回記事参考。

dreamerdream.hateblo.jp

 

サーボモータの制御はpigpioを利用しました。

dreamerdream.hateblo.jp

注意点として、pigpioをpythonで使うと何故かきちんと制御できない不具合が発生しました。その場合、コード内で「pigpio.pi()」を実行する時間を遅らせる(30秒ぐらい待つ)ことで対処出来ることが判明しました。原因は不明です。

 

サーボモーターはSG92Rを採用。

dreamerdream.hateblo.jp

 

 

当初の予定としてはこんなイメージを作っていましたが、玄関に制御器をそのまま置くのは邪魔だし玄関にあっても見た目の良いものを作るのは非常に手間なので制御器は隣の部屋に隠すことにしました。

 

試しにこちらのElecrowの液晶ディスプレイ搭載モデルを使って作ってみたけど、やっぱり邪魔・・・

dreamerdream.hateblo.jp

試作品↓

見た目的には問題なさそうだけど、玄関に設置するとどうしても目立ってしまいます。ひっそりとオートロック化したいので勿体ないけど却下。

 

配線を壁に貫通させる必要があるのでしばらく躊躇していましたが、こんな方法を発見しました↓

dreamerdream.hateblo.jp

この方法で大きな穴を空けることなく隣の部屋に配線を通しました。

 

扉の開閉感知に使う予定のマグネットセンサーは不慮の事故により使えなくなってしまいましたので、フォトインタラプタを採用しました。

dreamerdream.hateblo.jp

 

さらに、大型の液晶画面は不要なのでLCDディスプレイを採用

dreamerdream.hateblo.jp

本体は隠すので大きくスペースに余裕をもたせられます。

本体が大きいと配線が楽です。

 

配線のモールは出来るだけ細いものを選んだのでギリギリサイズ、配線面倒臭いですが頑張って線を繋げていきます。

ダブルロック面倒くさい〜

 

モールに配線をぶち込んだら完成!!配線全く目立ちません。

見た目スッキリですよね^^vいやぁ、苦労した甲斐がありました。どんな後付スマートロックよりコンパクトに収まっているという自信があります。中身がサーボモーターとギアだけなので当然ですが。

スマートロック自体は鍵と取っ手の隙間に収まっていて、さらに磁石で留めているので結露等で脱落する心配はありません。

欲を言えばもうちょっと取っ手と色が合わせられたらもっと良かったです。

 

このモールの通らないビミョーな隙間用カバーが作れちゃうのは3Dプリンターならではですね。

 

作ったWebアプリはスマホ用アプリとして登録しました。

dreamerdream.hateblo.jp

 

 

では、実働動画

youtu.be

 

アプリはウェブアプリをスマホアプリ化してます。

 

ひとまずスマホからスマートロック操作できたので今回の工作はひとまず完成!です。

今後これにいろいろな機能を付加していきます。

人感センサーで解錠の実験↓

youtu.be

超音波式の人感センサーを実際に稼働させてみると音(特に金属音)による誤作動が非常に多いことが判明しましたので集電型の人感センサーに変更しました。

 

今後の予定(願望)

・解錠操作せずに扉が開いた場合は警告メールを送る

・制御器として玄関にタブレットを設置する

・指紋認証させる

・時間によってオートロックを設置したり解除したりする

・予約時間に施錠確認する(夜10時とか)

・Bluetoothでスマホの距離を測って帰宅時に自動解除させる

いろんな追加機能が思いつきます。

 

制作過程をショート動画にしてみました↓


www.youtube.com

 

 

dreamerdream.hateblo.jp

 

 

*1: '0.0.0.0' , [ポート番号]

3Dプリンターを使ってスマートロックを自作する ⑥単純な制御通信におけるセキュリティーの考察

前回、スマートロックの制御方法を考えました。

dreamerdream.hateblo.jp

 

スマホから鍵の操作はVPSに構築したWEBアプリを経由することとし、VPSから鍵の操作は自宅のラズパイで制御することにしました。

 

今回は具体的な通信手段を考えます。

通信内容は「施錠」「解錠」等の単純な信号であるため単純なsocket通信で賄うこととします。

ただ、万が一、悪質なハッカーが通信を傍受して飛ばしているデータが自宅の鍵のデータだと判明してしまうとデータを改竄されネットワークのみならず自宅への侵入を許してしまうことになりかねません。

 

f:id:DreamerDream:20210623142823p:plain

 

別にそこまで考えなくても、接続先のIPアドレス(VPSサーバー)を指定してそこからのアクセスのみ通信する。とすれば良いかもしれません。

しかし万が一には備えるべきです。

 

 

スマホからWEBアプリへは現時点で安全性の確立されたセキュアなhttps(SSL)通信を行なうのでデータが漏洩することはまあまず無いでしょう。

<過去記事>

dreamerdream.hateblo.jp

 

WEBアプリのように「どこからでもどの端末からでもユーザー情報を持っていればアクセス可能」とする場合は上のような公開鍵を用いたSSL通信が有効です。

 

今回はWEBサーバーから自宅のラズパイという決まった相手とsocket通信で簡単なコマンドを送るだけですので共有鍵が1つあれば解決するように思います。

 

f:id:DreamerDream:20210623143303p:plain

問題点として、共有鍵が1度判明してしまえば後の通信内容は全て判明してしまうことになります。

ましてや素人がお手軽に作ったような暗号文ならばプロにかかればひとたまりも無いでしょう。

 

 

【ここから先は、noteの有料記事として投稿しました。】

申し訳ありません。このままブログで書き続けたいところなのですが、スマートロックの肝となるセキュリティーに係る重要な部分ですので限定的な公開とさせていただくことにしました。

有料記事の内容は

・複合されにくい暗号の工夫

・複合を試みる気を無くす工夫

・実際の暗号化したsocket通信の外部からの見え方

を記載しています。

 

※有料記事にも実際のコードは記載していません。オリジナル暗号通信の作成方法だけでコピペで使える内容ではございませんのでご注意ください。

※今回の記事内容を飛ばしましても次回「3Dプリンターを使ってスマートロックを自作する⑦」の記事以降に特に影響はございません。

 

<この記事の続き(note記事)>

note.com

 

次回、スマートロックを組み立てていきます。

dreamerdream.hateblo.jp

 

 

kampa.me