homebridge node-js raspberrypi

#Homebrige で #iOS デバイスに部屋の温湿度を配信 #RaspberryPi

kght6123

kght6123

#Homebrige で #iOS デバイスに部屋の温湿度を配信 #RaspberryPi

Homebridgeを使って、Homekit(iPhone、iPad)上で温湿度を表示できるプラグイン(homebridge-temper)を作成しました。

Mojaveからは、Macでも表示できるので、楽しみです!

今までは、Homebridgeのカメラで温度計を写して、外出先から確認したりしてたので、

すごく、確認に手間が掛かりますし、見づらいし面倒です。。。

温湿度計は、電子工作する暇と場所が無いので、USBのものを使います!

TemperEasyLog (LASCAR L-USB-RT) 

EasyLogはAmazonは高いので、RS-Onlineで買いました。

ぶっちゃけ、電子工作できれば作った方が安くすみます

お金が掛かっても良いので、手短に構築したいひと向けです。

まず、TemperまたはEasyLogのCLIプログラムのコンパイルとインストールします。

下記はTinkerboardでの手順ですが、RaspberryPiでも同様と思います。(たぶん)

(ライセンス的に問題なければ、バイナリを置こうかな・・・)

Homebridgeは既にインストール済みであることが前提です。

# TEMPerがUSBで認識されていることを確認します。
$ dmesg | grep TEMP
[395909.906434] usb 1-1.2: Product: TEMPerV1.4
[395909.961175] input: RDing TEMPerV1.4 as /devices/platform/ff540000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:0C45:7401.0007/input/input5
[395910.023411] hid-generic 0003:0C45:7401.0007: input,hidraw4: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-ff540000.usb-1.2/input0
[395910.051423] hid-generic 0003:0C45:7401.0008: hiddev0,hidraw5: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-ff540000.usb-1.2/input1

# TEMPerの必須ライブラリをインストール
$ sudo apt-get install build-essential libusb-0.1-4 libusb-dev git

# TEMPerのCLIプログラムのコンパイルとインストール
$ mkdir TEMPer;cd TEMPer
$ git clone https://github.com/bitplane/temper.git
$ cd temper;cp temper.c temper.c.org;vi temper.c

# 一部、コンパイルエラーになるコードを修正します
$ diff temper.c.org temper.c
44c44
< utc = gmtime(&t);
---
> utc = localtime(&t);
47c47
< strftime(dt, 80, "%d-%b-%Y %H:%M", utc);
---
> strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);

$ make

# ビルドしたバイナリを移動
$ make
$ sudo mv temper /usr/local/bin/
$ sudo chmod u+s /usr/local/bin/temper

# 動作確認
$ sudo temper # カンマ以降が温度です
2018-01-13 12:13:35,23.260157

# EasyLogがUSBで認識されていることを確認します。
$ dmesg | grep LASCAR
[409224.992393] usb 1-1.4: Manufacturer: LASCAR LTD
[409225.007489] hid-generic 0003:1781:0EC4.0009: hiddev0,hidraw4: USB HID v1.10 Device [LASCAR LTD EL USB RT] on usb-ff540000.usb-1.4/input0

# EasyLogの必須ライブラリをインストール
$ sudo apt-get install subversion automake libtool xsltproc docbook docbook-xsl xorg-docs doxygen libusb-0.1-4 libusb-dev

# EasyLogのlibhidのコンパイルとインストール
$ mkdir -p EasyLog/libhid;cd EasyLog/libhid
$ svn co svn://svn.debian.org/libhid/trunk libhid-trunk
$ cd libhid-trunk/
$ ./autogen.sh

# Makefileから"-Werror"を削除
$ cp Makefile Makefile.org;vi Makefile

# 削除を確認
$ diff Makefile.org Makefile
267c267
< CFLAGS = -O2 -Wall -W -Werror
---
> CFLAGS = -O2 -Wall -W 

# configureから"-Werror"を削除
$ cp configure configure.org;vi configure

# 削除を確認
$ diff configure.org configure
13839,13840c13839,13840
<         CFLAGS="$CFLAGS -Werror"
<         CXXFLAGS="$CXXFLAGS -Werror"
---
>         CFLAGS="$CFLAGS"
>         CXXFLAGS="$CXXFLAGS"

# libtoolから"-Werror"を削除
$ cp libtool libtool.org;vi libtool

# 削除を確認
$ diff libtool.org libtool
167c167
< LTCFLAGS="-O2 -Wall -W -Werror"
---
> LTCFLAGS="-O2 -Wall -W"

# config.statusから"-Werror"を削除
$ cp config.status config.status.org;vi config.status

# 削除を確認
$ diff config.status.org config.status
603c603
< CFLAGS='-O2 -Wall -W -Werror'
---
> CFLAGS='-O2 -Wall -W'
905c905
< S["CFLAGS"]="-O2 -Wall -W -Werror"
---
> S["CFLAGS"]="-O2 -Wall -W"

# doc/man/Makefileから"--nonet"を削除
$ cd doc/man
$ cp Makefile Makefile.org;vi Makefile

# 削除を確認
$ diff Makefile.org Makefile
327c327
< XP = xsltproc -''-nonet
---
> XP = xsltproc
$ cd ../..

# コンパイル&インストールを実行
$ ./configure
$ make
$ sudo make install

# 共有ライブラリの再ロード
$ sudo ldconfig

# EasyLogのCLIプログラムのインストール
$ git clone https://github.com/rca/lascar-usb-thermometer.git
$ cd lascar-usb-thermometer
$ make

# ビルドしたバイナリを移動
$ sudo cp usb_termometer /usr/local/bin/
$ sudo chmod u+s /usr/local/bin/usb_termometer

# 動作確認
$ sudo usb_termometer 
temp: 24.0, hum: 40.5

# プラグインをインストール
$ npm install -g homebridge-temper

# Homebridgeの設定を開く
$ vi ~/homebridge/config.json

# 下記の「config.json」を参考に、config.jsonのplatformsにhomebridge-temperの定義を追加

## accessoriesのtypeは"temper"または"easylog"です、
### accessoriesはUSBに接続している機器のみ記述

## servicesのsubTypeはaccessoriesの中で一意にします。

$ homebridge # homebridgeを起動、場合によっては再起動!

config.json

{
    "platforms": [
        {
            "platform": "TemperPlatform",
            "accessories": [
                {
                    "name": "Temper",
                    "type": "temper",
                    "services": [
                        {
                            "name": "Temper",
                            "subType": "bbb",
                            "type": "temp",
                            "command": "sudo",
                            "param": ["temper"]
                        }
                    ]
                },
                {
                    "name": "Easylog",
                    "type": "easylog",
                    "services": [
                        {
                            "name": "Easylog Temp",
                            "subType": "ccc",
                            "type": "temp",
                            "command": "sudo",
                            "param": ["usb_termometer"]
                        },
                        {
                            "name": "Easylog Hum",
                            "subType": "ddd",
                            "type": "hum",
                            "command": "sudo",
                            "param": ["usb_termometer"]
                        }
                    ]
                }
            ]
        }
    ]
}

再起動後、下記のように温度・湿度が表示されれば成功です!

最後まで閲覧いただき、ありがとうございます!

ソースコード  npm