本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
IoTで、USBセンサー温度計から取得した温度をFTPで記録していくというシステムを作成してます。
古いパソコンを利用して構築して、うまく動く事を確認しました。
これを発展させ、施設の一角に設置したいという要望が出てきましたので、昔遊んでいたOrangePI PCで、構築し直そうかなぁと、設定を見直しながらやってみてます。
初期設定はだいぶ分かりやすくまとめていて
https://www.techlive.tokyo/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に書き換え
# cat /etc/apt/sources.list deb http://ftp.jp.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.jp.debian.org/debian/ jessie main contrib non-free deb http://ftp.jp.debian.org/debian/ jessie-updates main contrib non-free deb-src http://ftp.jp.debian.org/debian/ jessie-updates main contrib non-free deb http://ftp.jp.debian.org/debian/ jessie-backports main contrib non-free deb-src http://ftp.jp.debian.org/debian/ jessie-backports main contrib non-free
時刻を日本表示に変更
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 <<EOF
open ftp.lolipop.jp
user cute-chip *********
passive
put /usr/local/sbin/temperature/ondo.html /plus01/ondo.html
bye
EOF
cronに登録
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が動作しなくなっているようです。
# ntpq -pn ntpq: read: Connection refused
で、ntpd start しようと思ったら
# /etc/init.d/ntpd start bash: /etc/init.d/ntpd: No such file or directory
はて、何が起こったんだろう。
/etc/init.d/ntp status ● ntp.service - LSB: Start NTP daemon Loaded: loaded (/etc/init.d/ntp) Active: active (exited) since Tue 2018-03-20 00:48:51 UTC; 22min ago Jan 01 19:40:37 OrangeTemperature ntp[482]: Starting NTP server: ntpd. Mar 20 00:48:51 OrangeTemperature systemd[1]: Started LSB: Start NTP daemon.
あれ、UTCに戻ってる
# date Tue Mar 20 01:12:52 UTC 2018
日本時間表記に変更
# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # date Tue Mar 20 10:13:52 JST 2018 # ntpq -pn ntpq: read: Connection refused h# /etc/init.d/ntp start [ ok ] Starting ntp (via systemctl): ntp.service.
なんだかうまくいかないのでリスタート
# /etc/init.d/ntp restart [ ok ] Restarting ntp (via systemctl): ntp.service.
原因はこれっぽい
Jan 2 05:14:42 OrangeTemperature ntpd[524]: unable to bind to wildcard address 0.0.0.0 - another process may be running - EXITING
Jessieでは
/etc/network/if-up.d/ntpdate
で、ntpdateが動くが、
Jan 2 05:14:42 OrangeTemperature ntpdate[381]: sendto(www6339uj.sakura.ne.jp): Operation not permitted Jan 2 05:14:42 OrangeTemperature ntpdate[381]: sendto(einzbern.turenar.xyz): Operation not permitted Jan 2 05:14:42 OrangeTemperature ntpdate[381]: sendto(45.77.9.126.vultr.com): Operation not permitted
時刻同期に失敗し、ntpdateが動いたままになってしまうのか、
another process may be running
というメッセージが出る。
debianのバグリポート
掲示板
を参考にすると、ntpdateスクリプト2行目に exit 0する事で
cat /etc/network/if-up.d/ntpdate #!/bin/sh exit 0 set -e
実質ntpdateを起動時に動かないようにする事で対処するって事ですね。一応この対処で私の環境ではntpが動き始めたので良しとします。起動時ntpdateで強制的に時刻合わせができないのがちょっと残念ですが。
syslogが出てない
ntpの設定を調整するにあたって、syslogが出ていないことがわかったので、rsyslogを入れました。
# apt-get install rsyslog
これでOrangePIを利用した省スペース温度測定IoT機器のセットアップ完了です。