7
2

More than 3 years have passed since last update.

Andoroid端末上でNode.jsアプリを実行してみた

Last updated at Posted at 2020-05-07

概要

コロナの関係で妻と二人在宅勤務を実施中。2階で仕事をしている妻が送ったメッセージ(コーヒーが飲みたい、など)を1階リビングのgoogle homeに喋らせるシステムをNode.js、Node-REDで作成した。自宅に‎Raspberry Piが無いためPC上でシステムを動作させていたが、PCの変わりにスマホ上で動作させられないかと考え、本対応を実施。

環境

  • 端末
    • Android 9
  • Androidにインストールしたアプリ
    • Termux:Android上でLinuxターミナルを実行するためのアプリ。root化不要。無料アプリ。
    • WiFi Keyboard:PCのキーボードでスマホの入力が可能。
    • Termux:Boot:Nodeアプリ、Node-REDの自動起動に利用。有料アプリ。
  • Termux上でインストールしたアプリ
    • Node V14.0.0
    • npm 6.14.4
    • Node-RED

構成

Termuxにnode.js、npm、Express、Node-REDをインストール。

Node-REDのnode-red-contrib-castノードを利用しPOSTしたメッセージをgoogle homeに喋らせるWEB APIを作成。

Expressでメッセージ入力用の簡単なページを作成し、入力されたメッセージをWEB API経由でgoogle homeに送信する。

実施内容

必要なアプリのインストール

  1. Termux
    Android上でNode.jsを動作させるため、初めはDory - node.jsを試したが、Node.jsのバージョンがv6と古く、アップデートする方法がわからなかったため断念。v6だとNode-REDがインストールできない。Termuxは最新のNode.jsがインストールでき、Node-REDも問題なくインストールできた。ちなみにNode-REDの公式ページでもTermuxを利用することが推奨されている。
  2. Node、npm、Express
    Termuxのターミナルから通常の手順でインストール可能。WiFi Keyboardを利用するとコマンド入力が楽になる。
  3. Node-RED
    公式ページ掲載の手順でインストール。フローの編集はPCのブラウザからhttp://スマホのIPアドレス:1880にアクセスして実施
  4. Termux:Boot
    Google Playからインストール(有料)。インストール後、アプリの説明欄に従い、ホームディレクトリは以下に~/.termux/boot/の様にディレクトリを作成。このディレクトリに後ほど自動起動用のスクリプトを作成する。

Node-REDでgoogle homeへのメッセージ送信APIを作成

基本的な手順は以下のページを参考に実施。

https://qiita.com/dozensofdars/items/6cec7db44636374b5382

今回Node.jsアプリからPOSTできるようにするため、node-red-contrib-castノードの前後をhttp inノードとhttp responseノードで挟めばOK。http responseノードを設定しないと、APIを呼び出したままアプリがだんまりになってしまうので注意。アプリからはmessageパラメタにgoogle homeに喋らせたい文言をセットしてPOSTするよう実装する。

メッセージ入力用ページの作成

Expressでメッセージ入力ページ、メッセージ送信結果表示ページを作成。詳しい説明は割愛。

Termux:Bootの設定

NodeのアプリとNode-REDの自動起動のためTermux:Bootの設定を実施。~/.termux/boot/ディレクトリ配下に任意の名前でファイルを作成し、以下の様にコマンドを記載。これでスマポ起動時に自動的にNode-REDとNodeアプリが実行される。

node-red    
node (Nodeアプリ配置フォルダ)/bin/www  

以上

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2