連載①(全体像) で構成を決めたので、今回は実際に手を動かします。ゴールは Raspberry Pi に .NET を入れて、最初の Blazor アプリを起動し、同じLAN内の別PCから表示することです。
Table of contents
Open Table of contents
前提(第1回のおさらい)
- Raspberry Pi 3 以降(ARMv7以降。Pi Zero無印・Pi1は.NET非対応)
- Raspberry Pi OS(64bit)(Lite可)
- SSH が有効(別PCから操作すると楽。
raspi-configで有効化)
以下のコマンドは、Pi上のターミナル(またはSSH接続先)で実行します。
STEP 1:.NET をインストール
.NET は Microsoft 公式の dotnet-install スクリプトで入れます。ここでは開発もPi上で行うため、SDK を入れます(既定でSDKが入ります)。
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel LTS
パスを通します。
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.bashrc
source ~/.bashrc
インストールを確認します。バージョンが表示されればOKです。
dotnet --version
💡 Pi(ARM)でのビルドはPCより遅めです。「PCで開発 → Piへ配布」という手もありますが、まずはPi上で完結させるのが分かりやすいので本連載はこの形で進めます(配布の自動化は[連載⑨]で扱います)。
STEP 2:Blazorアプリを作成
温度モニタリング・ダッシュボードの土台として、Blazor Web App を作ります。
dotnet new blazor -o TempMonitor
cd TempMonitor
dotnet new blazorは Blazor Web App テンプレート(.NET 8以降)。既定の対話レンダリングは Server(=Interactive SSR)で、まさに連載①で選んだ構成です- ※ 旧
blazorserverテンプレートは .NET 8 で廃止されています。blazorを使ってください
STEP 3:ローカルで起動する
dotnet run
起動すると http://localhost:5xxx のようなURLが表示されます。ただし既定では localhost 限定で、Pi自身からしか見えません。まずPi上のブラウザ(デスクトップ版の場合)で開ければ成功です。
STEP 4:LAN内の別PCから見る
別PCから見るには、全ネットワークインターフェースで待ち受けさせます。--urls で 0.0.0.0 を指定します。
# PiのIPアドレスを確認
hostname -I
# すべてのインターフェースで待ち受け(ポート5000)
dotnet run --urls "http://0.0.0.0:5000"
あとは別PCのブラウザで http://<PiのIPアドレス>:5000(例 http://192.168.1.50:5000)を開けば、Piで動くBlazorアプリが表示されます。
- 環境変数でも指定できます:
ASPNETCORE_URLS=http://0.0.0.0:5000 - Raspberry Pi OS は既定でファイアウォールが有効でないことが多いですが、有効化している場合は該当ポートを許可してください
つまずきポイント
- HTTPSは今回は使わない:Linuxでの開発用証明書の信頼は手間がかかるため、LAN内検証はHTTPで進めます。安全なHTTPS化と外部公開は[連載⑩]でCloudflare Tunnelを使って扱います
- ポートが使用中:
--urlsのポート番号を変える(例5001) dotnetが見つからない:source ~/.bashrcを再実行、またはターミナルを開き直す
まとめ
- .NET は dotnet-install スクリプトでPiに導入し、
dotnet --versionで確認 - 土台は
dotnet new blazor(Blazor Web App=既定Server) - 別PCから見るには
--urls "http://0.0.0.0:5000"で待ち受け、http://<PiのIP>:5000にアクセス
次回(第3回)は、LEDと押しボタンをGPIOで扱い、Webの画面から操作します。いよいよハードに触れていきます。
