2016年6月10日金曜日

RaspberryPI3でBlynk libraryを使ってみる

RaspberryPI3でBlynk libraryを使ってみる

IoT時代ということでここを参考にRaspberry PI3と温湿度センサーのDHT11を使って温度計測をしてみる。

スマホ側の準備

IFTTTの準備

1.IF by IFTTTをインストールし、アカウントは取得する。

2.IF by IFTTTを起動し、画面右上のすり鉢のようなアイコンをタップ

enter image description here

3.「My Recipes」を開いて「+」(プラス)アイコンをタップ

enter image description here

3.画面下の「Create a New Recipe」をタップ

enter image description here

4.If の右側の「+」をタップした後に、「Maker」を選択。
enter image description here

enter image description here

5.Trigger として 「Receive a web request」を選択し、Event Name に“alert-temp”と入力
※RaspberryPi側から送信する Event Name と同じ名称にする必要あり。

enter image description here  

6.then の右側の「+」をタップした後に、「IF Notifications」を選択。

enter image description here

enter image description here

7.Action として「Send a notification」を選択し、Notification に“異常温度が計測されました。”などと入力し、Continueをタップ。
enter image description here

8.「Finish」をタップすれば Recipe は完成し、My Receipesに登録されます。
enter image description here

9.「+」をタップし、Makerを選択し、
enter image description here

「設定」をタップ。
enter image description here

以下のキーをメモっておく。
enter image description here

Blynkの準備

1.Blynkをインストール
2.プロジェクトの作成
enter image description here

3.プロジェクト名を入れてHARDWARE MODELとして”Raspberry Pi 3B”を選択。
AUTH TOKENはメモしておくこと。

enter image description here

4.「+」をタップし、「Value Display S」を2つ、「History Graph」を 1 つ追加
enter image description here

enter image description here

4.「Value Display S」、「History Graph」はそれぞれ以下のように設定
[1つ目]
名称: “温度”
INPUT: “Virtual”の“V0”
FREQUENCY: “10sec”
enter image description here

[2つ目]
名称: “湿度”
INPUT: “Virtual”の“V1”
FREQUENCY: “10sec”
enter image description here

「History Graph」
上から順に、以下を設定。
“Virtual”の“V0”、“温度”
“Virtual”の“V1”、“湿度”、
SHOW LEGEND を“ON”
enter image description here

こんな感じになったら完成です。
enter image description here

Raspberry PI側の準備

Raspberry Pi 用の C言語で書かれた GPIOアクセスライブラリのWiringPiのインストール

$ git clone git://git.drogon.net/wiringPi
$ cd ./wiringPi
$ ./build

blynk-libraryのインストール

$ git clone https://github.com/blynkkk/blynk-library.git
$ cd blynk-library/linux
$ make clean all target=raspberry

Curlライブラリのインストール

$ sudo apt-get update
$ sudo apt-get install libcurl4-openssl-dev

ソースコードの編集

今回変更及び追加するファイル一覧は以下。
kuro-iotexp1.cpp 追加ソースコード
kuro-iotexp1.h 追加ヘッダファイル
Makefile 変更(パッチ適用)
main.cpp 変更(パッチ適用)

ソースファイルと差分ファイルをダウンロード

$ wget http://driver.cfd.co.jp/cfd-drv/files/kuro-iotexp_kit/kuro-iotexp1.cpp
$ wget http://driver.cfd.co.jp/cfd-drv/files/kuro-iotexp_kit/kuro-iotexp1.h
$ wget http://driver.cfd.co.jp/cfd-drv/files/kuro-iotexp_kit/Makefile.patch
$ wget http://driver.cfd.co.jp/cfd-drv/files/kuro-iotexp_kit/main.cpp.patch

パッチを適用

$ patch -u -b < Makefile.patch
$ patch -u -b < main.cpp.patch

main.cpp を編集

以下の行の xxxxxxxx の箇所を IFT

char url[] = "https://maker.ifttt.com/trigger/alart-temp/with/key/xxxxxxxxxxxxxxxxxxxxxx";

再ビルド

$ make clean all target=raspberry

実行

tokenはBlynkででてきたAUTH TOKENを入れる。

$ sudo ./blynk --token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[0] Blynk v0.3.7 on Linux
[5001] Connecting to blynk-cloud.com:8442
[5206] Ready (ping: 95ms).
[5692] Trouble detected: http://docs.blynk.cc/#troubleshooting-flood-error
Read DHT11
Temperature = 27 degree C, Humidity = 58 %

となったので動き出したし、Blynkのほうでもデータが取得できた。

しかし、IFTTTへのPushの動検ができていないため、
意図的にIFTTTにpushされる温度にしても、
“Push IFTTT”とでるがスマホ側でPushされない。

試しにhttps://ifttt.com/makerからHow to Trigger Eventsを
クリックし、evnet nameを入れるとちゃんとPushできたし、
Raspberry PIの端末で以下のcurlを実施してもPushできた。
enter image description here

IFTTTへの自動的にPushするのはもう少し別のサンプルを
見ながら理解を深めるとします。

2016年6月9日木曜日

AACGAIN

AACGAIN

UbuntuでMP3の音量を揃えるにはeasyMP3GainをUbuntuソフトウエアセンターから
インストールすればできるが、aacgainを別途インストールする必要がある。
以下でインストール可能

$ sudo add-apt-repository ppa:robert-tari/main
$ sudo apt-get update
$ sudo apt-get install aacgain

2016年6月8日水曜日

固定IP化したらPINGが通らなくなった

固定IP化したらPINGが通らなくなった

Raspberry PI3へのSSH通信が急にできなくなった。
調べてみると固定IP化したのが何か影響してそう。

enter image description here

この接続を完了するにはIPv4アドレス化が必要になりますにチェックがされてなかった。
これにチェックしたら今のところはうまくSSHでつながってます。

— 2016/6/11追記 —
やっぱりまたSSHでつながらくなったので調べたところ以下を試したら
うまく行っている。

$ sudo vi /etc/nsswithc.conf
#hosts:          files mdns4_minimal [NOTFOUND=return] dns
#hosts:          files dns

— 2016/6/12 追記 —
また、SSHでつながらなくなった。
ゲートウエイやwww.yahoo.jpは繋がるのにPCとRaspberry PI3だけがつながらない。
再度ググッてみたところルーターの再起動という手があった。

やってみたところSSHでつながるようになった。
だいぶ時間を取られました。
また、同じ状態になったらまずはルーターの再起動をしてみます。

2016年6月5日日曜日

Python3ではmysql-pythonが使えない

Python3ではmysql-pythonが使えない

Python3ではMysql-pythonが使えないということで
mysqlclientとmysql-connector-phythonを導入する必要があるということ。

$ sudo pip3 install mysqlclient
$ sudo pip3 install --upgrade pip

試しに以下のようにMySQLでデータベースを用意する。

$ mysql -u root -p
mysql> create database list;
mysql> create table list.personal(id int, name varchar(20));
mysql> show tables from list;
+----------------+
| Tables_in_list |
+----------------+
| personal       |
+----------------+
mysql> insert into list.personal(id,name) values(1,'Satoh');
mysql> select * from list.personal;
+------+-------+
| id   | name  |
+------+-------+
|    1 | Satoh |
+------+-------+
定義は省略できるので、以下でもOK.
mysql> insert into list.personal values(2,'Kondo');

以下のコード(dbsample.py)を作成し、データベースの読み出しと追加ができた。

python3 dbsample.py
#!/usr/bin/python3

import MySQLdb
def showUser():

    connector = MySQLdb.connect(
            user='root',
            passwd='mysql',
            host='localhost',
            db='list',
            charset="utf8")

    cursor = connector.cursor()

    # read
    cursor.execute("select * from personal")

    for row in cursor.fetchall():
        print("ID:" + str(row[0]) + "  NAME:" + row[1])

    # insert
    sql = u"insert into list.personal values(3,'Abe')"
    cursor.execute(sql)
    connector.commit()

    # read
    cursor.execute("select * from personal")

    for row in cursor.fetchall():
        print("ID:" + str(row[0]) + "  NAME:" + row[1])

    cursor.close
    connector.close

参考
http://note.kurodigi.com/python3-mysql/

Python - if name == ‘main‘: の意味に関しては以下が参考になった。
http://azuuun-memorandum.hatenablog.com/entry/2015/05/09/002549

2016年5月30日月曜日

VirtualBoxで入れた同じproxyのゲストOSにアクセスする

VirtualBoxで入れた同じproxyのゲストOSにアクセスする

1.ホストPCのネットワーク接続でアダプタを確認

2.”Virtual Box”にてゲストOSをクリックし、ネットワーク設定で以下を設定
 設定⇒ネットワーク⇒アダプター1で以下を設定
 割り当て: ブリッジアダプター
 名前: 先ほど調べたホストPCのアダプタ
 高度: プロミスキャストモード: すべて許可
 enter image description here
 
3.”VirtualBox”のファイル⇒環境設定⇒プロキシーでホストとポートを設定。
enter image description here

4.ゲストOS(Ubuntu mate16.04)を起動
Edit ConnectionsでIPアドレスを固定する。
enter image description here

enter image description here

5.ゲストOSの/etc/profileに以下を追加
 
 $ sudo vi /etc/profile
 # 最終行に追記 (プロキシサーバーを環境変数に設定)
MY_PROXY_URL="http://username:password@your.proxy.address:8080/"
HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
FTP_PROXY=$MY_PROXY_URL
http_proxy=$MY_PROXY_URL
https_proxy=$MY_PROXY_URL
ftp_proxy=$MY_PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy
$ source /etc/profile
$ sudo /etc/init.d/networking start
$ sudo vi /etc/rc.local
/etc/init.d/networking start
 

6.ホストもしくは他のPCから以下でゲストOSのサーバーにアクセスできた。
  http://10.56.87.88:8080/share/page/

2016年5月16日月曜日

node.jsでeddystoneを使ってみる

node.jsでeddystoneを使ってみる

iBeaconと同様な機能でGoogleのオープンソース版がeddystoneということで、
node.jsは入れたのですが、eddystoneを使うには以下も必要ということなのでインストールして送信実験をしたのですが、少し手間取ったのでメモしておきます。

$ npm install eddystone-beacon

http://dev.classmethod.jp/smartphone/eddystone-edison/
を参考にsample.jsをhttps://goo.gl/で短縮URLを取得して実行したが、
以下のエラーが発生

bleno warning: adapter state unauthorized, please run as root or with sudo
               or see README for information on running without root/sudo:
               https://github.com/sandeepmistry/bleno#running-on-linux

https://github.com/sandeepmistry/bleno#running-on-linux
を見てみるとRunning without root/sudoとするために以下が必要。

$ sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)

もう一度以下でを実行したら送信できました。

$ node ./sample.js

受信側はAndroidアプリのiBeacon & Eddystone Scannerで受信しました。

bleno のインストール

Peripheralsとなるためのライブラリらしい。

$ mkdir bleno
$ cd bleno
$ npm install bleno

http://dream-of-electric-cat.hatenablog.com/entry/2015/04/13/221940

2016年5月11日水曜日

VNCでアクセスすると日本語入力できない

VNCでアクセスすると日本語入力できない

UbuntuからRaspberry Pi3にインストールしたUbuntu MateにVNC接続したが日本語が入力できなかったがいろいろ調べた結果、以下でできたので忘れないようにメモしておきます。

リモート側のUbuntuの設定

1.RemminaのRDPでキーボードレイアウトを00000411-Japanese

Raspberry PI3側の設定

1.ibus-mozcのインストール

sudo apt-get install ibus-mozc

2.~/.vnc/xstartupに以下の文言を追加

$ vi ~/.vnc/xstartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx &

3.reboot
4.VNC接続する。
5.システム→設定→ユーザー向け→言語サポートで
 キーボード入力に使うIMシステムを”iBus”
6.reboot

これで半角全角キーを押すことで日本語入力できた。

https://gakupuro.com/uncategorized/vnc-ibus-mozc