Laravel PassportでOAuthサーバーを実装、クライアントアプリでAPIアクセスを確認

OAuthサーバーをLaravel Passportで実装する手順について解説します。

仕事では、Laravelでサービスを運用しているわけではないですが、クラウド プラットフォームのOAuthクライアント機能を調べたりするときにOAuthサーバーがわでデバッグしたいときなどに、Laravel Passportは簡単に実装してサーバーを立てられるのでとても便利に使っています。

以下、Laravelプロジェクトを新規に作るところから、PassportでOAuthサーバーを実装し、クライアントアプリからPassportサーバーに認可コードフローでアクセストークンを取得し、それを使ってAPIからユーザ情報を取得するまで、実装して確認してみます。

Laravel Passportとは

Laravel Passportは、Laravelプロジェクト公式のOAuthサーバー実装です。
OAuthサーバーというとざっくりですが、APIへのアクセス認可とアクセストークンを発行を管理するサーバーのことという理解で良いかと思います。

Laravel Passport provides a full OAuth2 server implementation for your Laravel application in a matter of minutes. Passport is built on top of the League OAuth2 server that is maintained by Andy Millington and Simon Hamp.

ドキュメントに記載されていますが、SPAやモバイルアプリの認証とトークン発行への用途の場合は、Laravel Sanctumの仕様を推奨されています。
“Laravel PassportでOAuthサーバーを実装、クライアントアプリでAPIアクセスを確認” の続きを読む

obniz Board 1Yで自動水やりの屋外対応版を工作してみた

昨年から夏は庭で野菜をプランターで栽培してるので家を空けたときにも心配要らないように、obniz Board 1Yを使って自動水やり装置を作ってみました。

作ってみたものはこんな感じです。

やっていることは定期的にバケツの水をポンプで汲み上げるだけです。

基本的なところはobniz公式ブログの記事「obniz Board 1Yのスリープ機能を使った省電力な水やりデバイス」をベースにし、屋外に設置可能なようにobniz Boardと電池をケースに収めて風雨対策をしています。
また、使用した給水ポンプはobnizのブログで紹介されているものとは別のもので、obniz内臓のモータードライバでは動きませんでした。そこで電池から直に電源を供給するようにMOSFETをobnizで制御して給水ポンプをOn/Offしています。
“obniz Board 1Yで自動水やりの屋外対応版を工作してみた” の続きを読む

Apache Cordova Android Push通知の実装と確認手順まとめ

Apache CordovaでPush通知をAndroidで実装してみてのまとめです。

iOS版は以前の記事「Apache CordvaによるPush通知の実装 iOS版」でまとめてみましたが、2015年の時点からは使用するプラグインが変わっています。
また、Apache CordovaでAndroid用の開発環境をセットアップしてAndroidの実機で動作させるまでの手順については前回の記事「MacにApache Cordova Androidプラットフォーム環境構築する」にまとめていますのでこちらも参照ください。

Push通知実装の流れを確認

Push通知の流れは以下のとおりです。

  1. FMCにデバイスを登録
  2. サーバーのプログラムよりメッセージをFMC経由で送信 (Firebase Notification Composerを使用)
  3. メッセージをデバイスで受信
  4. 受信したメッセージで生成した通知をデバイスに表示
    “Apache Cordova Android Push通知の実装と確認手順まとめ” の続きを読む

MacにApache Cordova Android用の開発環境を構築

elchikaに投稿した記事「obniz Board 1Yと距離センサー VL53L0X 使用した鍵閉め忘れ通知アプリ」では、センサーから取得したデータからドアの鍵を開閉状態を表示、また開きっぱなしだったら通知するといった簡単なアプリをPWAで作ってみました。
しかし、PWAではiOS版ではPUSH通知が利用できないことがわかり、ステータスを表示する簡単なUIと通知を受け取るくらいのアプリをさっと作る方法を改めて考えています。

この内容だと、ネイティブで作っても難しくないアプリですが、XCodeはたまにしか使わないとどこに何があるのか調べるのが面倒ですし、iOS/Androidに対応していてVSCodeなどのエディタで開発できるものが自分としては良いです。とすると、2021年7月時点では選択肢は以下の2つくらいでしょうか

あとは、Xamarinなどもありますが最近はだいぶ目にしなくなりました、Cordovaもメンテされ続けるのか不安ですが、MicrosoftとIBMが多少頑張ってそうなのでもう少し大丈夫かもしれません。
“MacにApache Cordova Android用の開発環境を構築” の続きを読む

Firebase Cloud MessagingからPWAにPUSH通知 (Androidのみ)

先日obniz IoTコンテストに参加して「obniz Board 1Yと距離センサー VL53L0X 使用した鍵閉め忘れ通知アプリ」という作品を投稿したのですが、その中でFirebaseを利用してPWAへのPUSH通知を実装しました。
コンテストでは時間が限られていたので、通知をタップしてアプリのページを開くなど実装できなかった機能があったため改めて調べ直してまとめてみました。

ところで、2021年5月現在、PWAでPUSH通知を受けられるのはモバイルだとAndroidのみでiOSは残念ながらできません。iOS向けにPUSH通知をしたい場合はやはりアプリを提供する必要があります。
また、PWAはAndroidとデスクトップのChromeで若干実装が異なっているので注意が必要です。
“Firebase Cloud MessagingからPWAにPUSH通知 (Androidのみ)” の続きを読む

obnizでTTLシリアルJPEGカメラでハマって解消したメモ

だいぶ前にAdafruitのJpegカメラを秋月電子通商で購入してobnizで試したんですが「あれ全然撮れないぞ?」となって以来ずっとパーツを眠らせていたところ、先日のIoTLTでの発表資料を拝見させていただいて解決法が判ったので自分でも忘れないうちにメモしておくことにしました。

参考にした資料: ピンのピッチ幅で苦しんだ #obniz や #gwhack の話 #iotlt

パーツは発表の中でも出てきたobnizのパーツライブラリJpegSerialCamで紹介されている製品で、秋月電子通商の小型TTLシリアルJPEGカメラ(NTSCビデオ出力付)から購入できます。
“obnizでTTLシリアルJPEGカメラでハマって解消したメモ” の続きを読む

距離センサー VL53L0X の使い方 (Arduino、ESP32)

スイッチサイエンスで、PololuのVL53L0Xモジュールを購入してArduinoとESP32で試してみたメモです。

PololuのVL53L0Xモジュールのピンアサイン

Pololuのピンホールは7つあります。

シルク 説明
VDD 電源
VIN 主電源 (基本こちらを使う)
GND グランド
SDA I2Cのシリアルデータ
SCL I2Cのシリアルクロック
XSHOT ハードウェアスタンバイ
GP01 ???

“距離センサー VL53L0X の使い方 (Arduino、ESP32)” の続きを読む

Amazon FreeRTOS ESP32-DevKit-CでMQTT Hello World (Mac版)

Amazon FreeRTOSをESP32開発ボードESP32-DevKit-Cにセットアップして、マイコンからMQTTのメッセージを送信し、AWS IoTのコンソール上で確認するHello Worldサンプルを動かしてみたので手順をまとめてみました。

FreeRTOSのセットアップ手順は公式ドキュメントの「Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法」を参考にしています。
このドキュメントではESP-IDF v3とESP-IDF v4を利用したセットアップ方法が記載されていますが、今回は「ESP-IDF v4」の手順を選択しました。
“Amazon FreeRTOS ESP32-DevKit-CでMQTT Hello World (Mac版)” の続きを読む

小型のMP3プレーヤーモジュールDFPLayerの使い方

コピペテックで技術書典Vol8向けに書いた「ESP32 と obnizOS で作る IoT 電子工作」で使ったMP3プレーヤーモジュールのDFPlayer Miniの使い方についてまとめてみました。

ピンアサインの確認

こちらは、DFPlayerのデータシートに記載されているピンのラベル付きの写真です。

本記事で使用するピンは以下の通りです。

ピン 用途 備考
VCC 電源電圧 動作電圧は3.2から5.0Vに対応
RX UARTの入力信号端子
TX UARTの出力信号端子
SPK_1 スピーカー端子+ 3W以下
GND グランド
SPK_2 スピーカー端子- 3W以下
IO1 トリガーポート1 短く押すと前の曲、長く押すとボリュームを下げる
IO2 トリガーポート2 短く押すと次の曲、長く押すとボリュームを上げる
BUSY 再生ステータス LOWのときに再生中

“小型のMP3プレーヤーモジュールDFPLayerの使い方” の続きを読む

NeoPixelリングに使えるエフェクト実装例集

NeoPixelリングに使えそうなエフェクトをいろいろと自作してみました。
テープ状のLEDとリング上のLEDで向いているエフェクトがちょっと異なる気もしますが、今回はリング向けです。

サンプルは、Arduino UNOで動作を確認しています。

事前準備

Arduino IDEのセットアップして、ArduinoとNeoPixelリングを接続します。

NeoPixel制御用ライブラリのインストール

ライブラリはAdafruit_NeoPixelを使用します。
以下の手順で追加します。

  1. Arduino IDEのメニューから[ツール] > [ライブラリを管理…]を選択してライブラリマネージャを開きます。
  2. 「NeoPixel」で検索して「Adafruit NeoPixel by Adafruit」をインストールします。

Arduino UNOとNeoPixelリングを接続

以下の配線図に従ってArduino UNOとNeoPixelリングをつなぎます。

対応表

Arduino NeoPixelリング
DIGITAL 6 IN
5V V+
GND GND

Adafruit_NeoPixelの基本的な使い方

Adafruit_NeoPixelの使い方を以下のスケッチ例を使って説明します。

こちらは、GithubのREADMEにも載っている例simpleと同じです。

#include <Adafruit_NeoPixel.h>
#define PIN        6 // 信号用のピンを指定
#define NUMPIXELS 16 // LEDの数を指定

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500

void setup() {
  pixels.begin(); // NeoPixel出力ピンの初期化
}

void loop() {
  pixels.clear(); // すべてのLEDの色を0にセット

  for(int i=0; i<NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 150, 0));
    pixels.show();
    delay(DELAYVAL);
  }
}

“NeoPixelリングに使えるエフェクト実装例集” の続きを読む