開発ノート (91)

川内 康雄

Raspberry PiでIoTなシステム開発:nvmでnodeをインストールしたときのエイリアスと実体の関係

nodeをsystemdで起動させようとしたのですが、nvmでインストールしたnodeが何処にインストールされているのか分からなかったので調べてみました。 pi@raspberrypi:~ $ ls -laF /usr/local/bintotal 40drwxrwsr-x 2 root staff 4096 Mar 5 09:11 ./drwxrwsr-x 11 root staff 4096 Mar 5 09:10 ../-rwsr-xr-x 1 root root 31264 Feb 11 11:43 gpio*lrwxrwxrwx 1 root staff 30 Mar 5 09:11 node -> /usr/local/nvm/v5.7.1/bin/node*lrwxrwxrwx 1 root staff 29…

Continue reading...
川内 康雄

Raspberry PiでIoTなIT:スタートアップ時にsystemdを使ってnodeを自動起動させる

headlessで運用するRapsberry Piのシステムを開発中です。基幹となるサービスがnodeで動くので、システム起動時に自動的に起動するように設定してみました。RaspbianがWheesyまでのときはinsservでよかったのですが、Jessieからはsystemdに変わっています。insservでも起動できるのは確認しているのですが、折角ですのでsystemdでの起動に挑戦してみます。参考にしたのはこちら。Systemdを使ってさくっと自作コマンドをサービス化してみる – QiitaNode-RED.serviceまずserviceファイルを書きます。 pi@raspberrypi:~ $ sudo nano /etc/systemd/system/node-kt.service rootで起動するのがセキュリティ的に望ましくないことは分かってはいるのですが、システムレベル、ハードウェアレベルにアクセスしないといけない関係上、やむを得ずrootにしています。 [Unit]Description=Node.js kawacchi timer serverAfter=syslog.target network.target[Service]ExecStart=/usr/local/bin/node /home/pi/kt/app.jsRestart=alwaysRestartSec=10 # Restart service after 10 seconds if node service crash$StandardOutput=syslog # Output to syslogStandardError=syslog # Output to syslogSyslogIdentifier=nodejs-ktUser=rootGroup=root[Install]WantedBy=multi-user.target 保存したところ、systemctlコマンドで認識できました。 pi@raspberrypi:~ $ sudo systemctl list-unit-files --type=service | grep nodekmod-static-nodes.service static…

Continue reading...
川内 康雄

Raspberry PiでIoTなシステム開発:nodeからwifi接続をコントロールする

nodeからRaspberry Piのwifi接続をコントロールしたいなぁ、でもexecをいちいち叩いていくのは面倒だし、と思っていたら、moduleを作ってくれている人がいました。ネットには神が沢山います。wifi-controlこのmoduleは実際にはnmcliのフロントエンドに過ぎないので、使用するためにはまずnmcliをインストールします。 Setting up policykit-1 (0.105-8) ...Setting up network-manager (0.9.10.0-7) ...The following network interfaces were found in /etc/network/interfaceswhich means they are currently configured by ifupdown:- eth0- wlan0- wlan1If you want to manage those interfaces with NetworkManager insteadremove their configuration from /etc/network/interfaces.Setting up ppp (2.4.6-3.1) ...Setting…

Continue reading...
川内 康雄

Raspberry PiでIoTなIT:光電センサの接続回路・12VLEDルームランプの接続回路の定数FIXさせました

「かわっちタイマー」と名付けたバイクジムカーナ用タイム計測機を数年前から製作していて、現在そのバージョン3を開発中です。V3はRaspberry Piで実装する予定で以前から回路を考えていたのですが、最終以下の内容でFixする事にしました。電源部。ストロベリーリナックスさんのモジュールです。実装面積が小さいので重宝しています。光電センサ入力部。ノイズ対策のためフォトカプラを使用しています。LEDルームランプのドライブ部。2SK975はTo-92みたいなパッケージですが、それなりに電流を流せるのに3.3V駆動できて便利です。圧電スピーカードライブ部。実測したところ3倍ぐらいに昇圧されていました。※2016/04/14 エラー発見です。ハードウェアPWMのピン番号はBCM18/WiringPi1です。おまけ:スイッチサイエンスのバニラ基板を使って実装します。面積が小さいので予めの計画が重要ですね。ぎりぎり収まりました。あと数個ぐらいなら部品を追加できるかもしれません。“””

Continue reading...
川内 康雄

Raspberry PiでIoTなIT:新しく認識されたインターフェースをavahiに自動的に認識させる

Raspberry Piにwifiドングル二本差し、Ethernetも接続して、ネットワークインターフェースが3個になりました。ここで困った現象が発生したのですが、電源断からのスタートアップで、avahiがインターフェースを登録してくれません。スタートアップ完了後に、systemctlからavahi-daemonをリスタートさせるとインターフェースを認識してサービスを配信します。Raspberry Piの最初に必ずやる初期設定メモ (Raspbian) » GeeksDev最初はここに書いてあるような AVAHI_DAEMON_DETECT_LOCAL=0 の問題かと思ったのですが、 sudo /etc/init.d/avahi-daemon status で起動を確認できましたし、0にしても解決しませんでした。そこでサービスだけ再起動したら繋がるのだからavahi-daemonによる認識の問題かと思いmanを見てみると、自動登録の設定項目がありました。avahi-daemon.conf(5): avahi-daemon config file – Linux man pageuse-iff-running= Takes a boolean value (“”yes”” or “”no””). If set to “”yes”” avahi-daemon monitors the IFF_RUNNING flag bit which is used by some (modern) network drivers to…

Continue reading...