OrangePI PC を久々に触る IoTでUSB温度測定に利用してみる

IoTで、USBセンサー温度計から取得した温度をFTPで記録していくというシステムを作成してます。

古いパソコンを利用して構築して、うまく動く事を確認しました。

自作でIoT USB接続して温度を計測しwebリアルタイム更新

これを発展させ、施設の一角に設置したいという要望が出てきましたので、昔遊んでいたOrangePI PCで、構築し直そうかなぁと、設定を見直しながらやってみてます。


 

初期設定はだいぶ分かりやすくまとめていて
http://technical.live-on.net/orange/Linux03.html

こんな感じでできます。今回は、デスクトップマネージャが必要ないので、Debian_jessie_mini.img.xzを利用しました。
https://drive.google.com/drive/u/0/folders/0B1hyW7T0dqn6fndnZTRhRm5BaW4zVDVyTGlGMWJES3Z1eXVDQzI5R1lnV21oRHFsWnVwSEU

設定が完了すると、

初期パスワード
ユーザ名:orangepi
パスワード:orangepi

でログイン可能です。rootのパスワードもorangepiです。極力最低限で設定が済むように不要アプリケーションは導入しません。

基本的なアプリをインストール

apt-get install vim ssh

source.listをjpに書き換え

 

時刻を日本表示に変更

root@OrangePI:/home/orangepi# date
Mon Mar 19 04:41:53 UTC 2018
root@OrangePI:/home/orangepi# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
root@OrangePI:/home/orangepi# date
Mon Mar 19 13:41:56 JST 2018

キーボードの日本語対応

dpkg-reconfigure keyboard-configuration
Generic105(intl)
Japanese
Japanese
The default
No Compose

ま、基本的にSshで利用するのでキーボードも変更しなくてもいいかもですが、一応USBキーボードを接続する事も考えてキーボードレイアウトを日本語にしておきます。

電源ボタンが押されたらシャットダウンする

apt-get install acpi

あれれ、きかない。このボタン私のOrangePIは壊れてしまっているようで、このボタン何の反応もしません。ちなみに、shutdownコマンドを走らせたあと電源ボタンを押して起動もしてきません。

ACアダプタを抜き差しすると電源入ります。うむー。単に私のが壊れているだけなのか。OragePIがおかしいのか謎です。ま、深い事は気にしないで先に進めたいと思います。

USB温度計準備

USB温度計をOrangePI PCに差し込みます。

dmesg
[ 730.100124] usb 7-1: new low-speed USB device number 2 using sunxi-ohci
[ 730.335152] generic-usb 0003:0C45:7401.0002: input,hidraw1: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-sunxi-ohci-1/input0
[ 730.410985] generic-usb 0003:0C45:7401.0003: hiddev0,hidraw2: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-sunxi-ohci-1/input1

これはちゃんと認識してます。

makeするのに必要なアプリを取得
apt-get install build-essential libusb-0.1-4 libusb-dev git

git hubから温度測定ソースを取得
git clone https://github.com/bitplane/temper.git

temper# vi temper.c
して、時刻表示部分を書き換え

if (!((tempc > -0.0001 && tempc = 4)) {
/* Apply calibrations */
tempc = (tempc * scale) + offset;

struct tm *utc;
time_t t;
t = time(NULL);
utc = localtime(&t);

char dt[80];
strftime(dt, 80, “%Y-%m-%d %H:%M:%S”, utc);

printf(“%s,%f\n”, dt, tempc);
fflush(stdout);

return 0;
}

次にmake して、temper実行ファイルを作成
make

mkdir /usr/local/sbin/temperature
mv temper /usr/local/sbin/temperature/
chmod u+s /usr/local/sbin/temperature/temper

ftpアップロード

ftpup.shを作成(ftpアップロードスクリプト)
#!/bin/sh

ftp -n <> /usr/local/sbin/temperature/ondo.txt
1 * * * * * /usr/local/sbin/temperature/ftpup.sh

ntpの設定

測定時間がずれないようNTP設定もして時間を調整しておく

apt-get install ntp

root@OrangePI:/usr/local/sbin/temperature# ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
*172.104.91.26 157.7.208.12 3 u 20 64 1 23.104 3.889 2.031
108.61.181.39 10.84.87.146 2 u 19 64 1 23.296 3.858 0.508
172.104.105.31 157.7.235.92 3 u 18 64 1 22.897 4.363 0.291
129.250.35.251 249.224.99.213 2 u 17 64 1 15.370 4.931 0.335

ntpq -pnでエラー

なんだか、再起動したらntpが動作しなくなっているようです。

で、ntpd start しようと思ったら

はて、何が起こったんだろう。

あれ、UTCに戻ってる

日本時間表記に変更

なんだかうまくいかないのでリスタート

 

原因はこれっぽい

Jessieでは

で、ntpdateが動くが、

時刻同期に失敗し、ntpdateが動いたままになってしまうのか、

another process may be running

というメッセージが出る。

debianのバグリポート

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=818846

掲示板

https://askubuntu.com/questions/403616/ntpd-unable-to-bind-to-wildcard-address-0-0-0-0-another-process-may-be-runnin

を参考にすると、ntpdateスクリプト2行目に exit 0する事で

実質ntpdateを起動時に動かないようにする事で対処するって事ですね。一応この対処で私の環境ではntpが動き始めたので良しとします。起動時ntpdateで強制的に時刻合わせができないのがちょっと残念ですが。

syslogが出てない

ntpの設定を調整するにあたって、syslogが出ていないことがわかったので、rsyslogを入れました。

 

これでOrangePIを利用した省スペース温度測定IoT機器のセットアップ完了です。

1件のコメント

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です