About this

このサイトの目的

  • 長年開発し続けているIOTハウスのハードやソフトについて
  • 今まで経験してきたコンピュータや周辺機器、ネットワーク、IT昔話
  • 親が子供を褒め育てる環境へのヒントになればと思って
    • 子供が実験や遊び学んだ物が実用化->親が喜ぶ->親が子供を褒める->子供が褒めてもらう為に更に学び工夫する->親が子供を褒める->子供が育つ->社会が育つ

著者

  • kujiranodanna:くじらのだんな、昔からコンピュータで外部機器を制御したいと思っている人
  • 大昔1970年代コンピュータ周辺機器やネットワーク機器メンテナンス、ネットワークエンジニア、IT専門学校非常勤講師、大学非常勤講師(情報基礎)、近年はビル管理、現在は隠居生活
  • Raspberry Piや古いPCとLinuxを使いIOTハウスの開発と実践をしている人

実践IOTハウスとは

  • 家電の自動化、防犯、防災、音声応答、監視制御システムです
  • IOTハウスのIOTは(Input Output Things)入力と出力で何か出来ればIOTと思っています、Internet無くてもイベントや定時処理が出来ます
  • shell script、C、javascriptで構築され全てブラウザで操作出来ます
    • 出先から部屋の温度を確認してクーラー運転する
    • 夕方外が暗くなると玄関や部屋の明かりを点ける
    • 明け方に外の湿度を元に家庭菜園の水やりをする
    • 防犯センサーがはたらくと動画をメールする
    • 決まった時間に音楽を鳴らす
    • 火災感知器が発報するとメールと電話(ワンギリ)で知らせる
    • 外気湿度を元に床下換気扇を間欠運転させる
    • 古いノートPCをIOTハウスで復活させる
  • Homebridge Alexaを追加導入、Alexaアプリで家電を音声操作
  • 机の奥へ仕舞い込んだRaspberry Piでホームエレクトロニクス&ホームセキュリティを実現しよう

https://iot-house.jpn.org
実践IOTハウス

Open_JTalk

  • Open JTalkとは名古屋工業大学で開発された音声合成技術および同技術を応用した、日本語向けのテキストトゥスピーチ(文章読み上げ)ソフト
    標準でひらがな、カタカナ、簡単な漢字を男性声で喋らす事が出来るmeiを追加インストールする事で女性の声も喋らす事が出来ます。
    • Alexaでは文章を自由に喋らす事が出来ないのでOpen JTalkと音声ファイルmeiをインストールして使います。
    • Open JTalkはIOT-House_zeroでは荷が重いのでそこそこ能力のあるIOT-House_old_pcのiot01fへインストール
      1
      2
      3
      4
      # sudo apt install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
      # wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.8/MMDAgent_Example-1.8.zip
      # unzip MMDAgent_Example-1.8.zip
      # mv MMDAgent_Example-1.8/Voice/mei /usr/share/hts-voice/
      • アレクサ子供部屋の環境教えて・・・ペットルーム(子供部屋)の温度・湿度などOpen JTalkで喋らす、Alexaアプリ定型アクションで「子供部屋の環境教えて」を作り「iot01f.local」の「dio1high」スクリプトへ依頼する。
      • pepoiaqvoiceが[.voice_req]生成、pepojsondpepojtalkを呼び出し喋らせる。
        1
        2
        # pepoiaqvoice ; cat /www/remote-hand/tmp/.voice_req
        @子供部屋の温度,29.1度,湿度,63.3%,気圧,1015ヘクトパスカル,空気の状態,15でよいです
      • homebridge config.json抜粋
        {
          "accessory": "CMD",
          "name": "環境",
          "on_cmd": "sudo /usr/local/bin/pepoalexacmd_on iot001.local remote hand dio1high",
          "off_cmd": "sudo /usr/local/bin/pepoalexacmd_off iot001.local remote hand dio1high"
        },
      • 自動生成された「dio1high」に「pepoiaqvoice」追加、外出先から部屋の空気環境を確認出来るようにLINEでも通知・・・出先から子供部屋の様子や温度を確認してAlexaにエアコン運転を依頼出来る。
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        # cat /usr/bin/dio1high
        #!/bin/bash
        WGETMAIL=/usr/local/bin/peposendmail
        if [ mail_message = "mail" ];then
        WGETMAIL=/usr/local/bin/peposendmail
        SUBJECT=部屋の環境用+dio1high
        elif [ mail_message = "mail_message" ];then
        WGETMAIL=/usr/local/bin/pepolinemsgsend
        SUBJECT=dio1high
        /usr/local/bin/pepoiaqvoice
        MESSAGE=`cat /www/remote-hand/tmp/.voice_req`
        $WGETMAIL $MESSAGE
        ...
        Open JTalk音声デモ


        linenotify LINENotifyで部屋の空気環境を通知します

  • https://github.com/kujiranodanna/IOT-House_old_pc

AlexaボイスコマンドCMD

  • AlexaボイスコマンドCMDのTips
    • Alexaのボイス・コマンドでSwitchのオンオフする際にhomebridge-cmdプラグインを使っている・・・/var/log/homebridge.log抜粋
      [18/08/2022, 12:14:12] [照明] Setting power state to on
      [18/08/2022, 12:14:13] [照明] power function succeeded!
      [18/08/2022, 12:14:13] [照明]
      [18/08/2022, 12:14:21] [照明] Setting power state to off
      [18/08/2022, 12:14:22] [照明] power function succeeded!
      [18/08/2022, 12:14:22] [照明]
    • 照明やシーリングライトなどオンオフには学習型赤外線リモコンIRkitを使う
      • アレクサ照明つけて・・・「照明」IRデータは「iot001.local」の仮想ポート8番に登録されコマンドで「iot001.local」がIRkitへ送信する
      • homebridge config.json抜粋
        {
        “accessory”: “CMD”,
        “name”: “照明”,
        “on_cmd”: “sudo /usr/local/bin/pepoalexacmd_on iot001.local remote hand 8 1”,
        “off_cmd”: “sudo /usr/local/bin/pepoalexacmd_off iot001.local remote hand 8 1 5000”
      • アレクサ照明けして・・・オンオフが同一IRデータ、一度目はスモール点灯、二度目に消灯なので5秒後に再送信で消灯
      • pepoalexacmdコマンドを確認
        pepoalexacmd_onとpepoalexacmd_offへSymbolic link
        https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoalexacmd
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        #!/bin/bash
        .
        # ln -s pepoalexacmd ./pepoalexacmd_on; ln -s pepoalexacmd ./pepoalexacmd_off
        .
        PROG=pepoalexacmd
        CMD=$DIR/$PROG.pepocmd
        ALEXADO=/usr/local/bin/pepoalexado
        .
        cat >$CMD<<END
        #!/bin/bash
        ping -c 3 $1 >/dev/null
        $ALEXADO $1 $2 $3 $4 $5 $6
        END
        ホストネーム解決とWake upの為ping3回行いpepoalexadoをバックグランド処理
        pepoalexadoを直接叩くとホストネーム解決とWake upでAlexa側でタイムアウトになる事も
      • pepoalexadoコマンドを確認・・・リモートホストへ引数をポスト
        https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoalexado
        1
        2
        3
        4
        5
        #!/bin/bash
        .
        PROG=pepoalexado
        .
        curl -s --connect-timeout $RETRYTIME --retry $RETRY --max-filesize $GETSIZE --user-agent ${USERAGENT} --tlsv1 -k -u ${USER}:${PASSWORD} -X POST -d $data https://$RM_HOST:$PORT/$REMOTE_CGI >${WORK}
        curlのリモート・ホストネーム解決やWake upに時間が掛かりタイムアウトが発生していると思われる

Homebridge-alexaとIRkit音声コマンド・デモ

IOT-House_docker

IOT-House_dockerとは

  • IOT-House_old_pcのDocker版です。
  • IOT-House_dockerにはUbuntu 18.04 ,Ubuntu 20.04のバージョンを用意してます。
  • 実行するにはdockerのprivilegeモードでGPIOのCP2112(Silicon Laboratories社 Single-Chip HID USB to SMBus Master Bridg) Sunhayato MM-CP2122Aを動作させます。
    I2Cバスへは環境ガスセンサーBME680を接続します。
  • 実行条件
    Docker engineにはLinuxが必要、ここではUbuntu20.04デスクトップで確認しています。
    デバイスドライバーが無いWindowsとMACはCP2112の操作が出来ません。
    WindowsとMACはインターフェースをnoneとしてリモートraspberry piのIPアドレスを設定GPIOの操作します。
  • 準備
    イメージのpull
    1
    docker pull kujiranodanna/iot-house_docker:ubuntu18.04-latest
    又は
    1
    docker pull kujiranodanna/iot-house_docker:ubuntu22.04-latest
  • 実行
    1
    docker run -itd --privileged --name iot-house_docker -p 8022:22 -p 80:80 -p 443:443 kujiranodanna/iot-house_docker:ubuntuxx.xx-latest
    • もしTWE-Lite-DIPをUSBへ用意出来るなら
      1
      docker run -itd --privileged --name iot-house_docker --device=/dev/ttyUSB0:/dev/ttyUSBTWE-Lite -p 8022:22 -p 80:80 -p 443:443 kujiranodanna/iot-house_docker:ubuntuxx.xx-latest
  • 確認
    1
    2
    3
    # docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    08bf7215bed2 a54286a23d97 "/etc/rc.local_docker" 17 hours ago Up 18 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:8022->22/tcp, :::8022->22/tcp iot-house_docker
    1
    2
    3
    http://localhost
    User:remote
    Password:hand
    iot-house_docker
  • 停止
    1
    docker stop `docker ps -ql`
  • 再開
    1
    docker start `docker ps -ql`
  • コンテナ削除
    1
    docker rm `docker ps -ql`

  • ホスト側へHomebridgeHomebridge-Alexaを導入iot-house_homebridge 防犯センサーとAlexa、IOT-Houseデモ動画・・・みんなのサマーセミナー2022の8月6日土曜日1限目4階2G教室「メイドカデン!?でええやん!」授業の再現
    授業のスライド

入出力イベント設定

  1. DIO Control-1
  • 入力端子がHighからLow、またはLowからHighに変化した時に開始する動作を設定します。
  • 開始する操作を設定する2つのタブがあります。
  • 最初のタブで、操作を開始、カウンターをリセット、およびログを表示するように設定できます。
  • 送信先Addressにlinenotifyを設定するとLINEにメッセージや写真を送ることが出来ます。
    • linenotifyを使用するには事前にhttps://notify-bot.line.me/my/でline notifyアクセストークンを発行
      /etc/rc.pepo/linenotifyに設定しておく必要があります
DIO_Control-1 2. DIO Control-2 DIO_Control-2

gmail設定

  • メール設定(gmailを使う場合)
    • gmailでコマンド・レスポンスする為の設定です
    • 2022.5.30以降パスワードはGoogleの2段階認証の有効化とアプリパスワードを取得してgmailのプレーンパスワードの代わりに設定します。
    • Gmailを介して遠隔地でIOT-Houseのコマンドと応答を操作できます。
    • コマンドで出力端子のHigh/Low、レスポンスで入力端子のHigh/Low状態、温度、湿度、気圧、大気質の値、グラフ、写真、ビデオなど操作
    • 新規メールをEmail check interval時間毎チェックしSubject(keyword)に合致したキーワード内容を実行してレスポンスを返します
gmail_settings
  1. Email settingsタブ
  • Gmailを介して遠隔地でIOT-Houseのコマンドと応答を操作できます。
  • コマンドで出力端子のHigh/Low、レスポンスで入力端子のHigh/Low状態、温度、湿度、気圧、大気質の値、グラフ、写真、ビデオなど操作gmail_command

Mail コマンド
To: dokokanodareXX@gmail.com
Subject: iot009
Body: none
Mail Response
From:root <dokokanodareXX@gmail.com>Date: Tuesday, September 22, 2020 10:53 10:53To:dokokanodareXX@gmail.comSubject:iot009 IOT-House report
Body: 以下
==input list==
1:火事です=high
2:扇風機スイッチ=low
3:Input3=high
4:出力4と接続=high
5:Input5=none
6:Input6=none
7:Input7=none
8:Input8=none
9:防犯センサー=high
10:Input10=high
11:Input11=high
13:屋外照度=high
14:Input14=none
15:Input
15=none
16:Input16=none
17:CPU温度=high
18:部屋の温度=low
19:部屋の湿度=low
0:外気温度=high
21:外気湿度=low
22:気圧=high
23:ガス=high
24:空気=low
==output list==
1:換気扇=high
2:電気=low
3:Outnput3=low
4:入力4と接続=high
5:Outnput5=none
6:Outnput6=none
7:Outnput7=none
8:Outnput8=none
9:ななちゃん天井電灯
10:冷房
1:エアコン
12:暖房
13:天井電気
14:サーキュFAN
15:散水ポンプ=low
16:Outnput
16=none
17:玄関電灯=low
==Other Command==
21:CPU Temperature
22:GPIO Temperature&Humidity
23:No1 Camera Movie
24:No1 Camera Picture
25:No2 Camera Movie
26:No2 Camera Picture
27:No3 Camera Movie
28:No3 Camera Picture
29:Module Camera Movie
30:Module Camera Picture
31:Twlite Temperature&Humidity
32:CPU Temperature&Graph
33:GPIO Temperature&Graph
34:GPIO Humidity&Graph
35:Twlite Temperature&Graph
36:Twlite Humidity&Graph
37:GPIO Pressure&Graph
38:GPIO Gas&Graph
39:GPIO IAQ&Graph
40:GPIO Last Hour CSV Data

温度グラフを要求
To: dokokanodareXX@gmail.com
Subject: iot009 33
Body: none
Mail Response
From:root <dokokanodareXX@gmail.com>Date: Tuesday, September 22, 2020 12:53 10:53To:dokokanodareXX@gmail.comSubject:iot009 IOT-House report
Body : GPIO Temperature Graph Report
shot_gpio_temp_grap

config_M2M

実践IOTハウスのM2Mシナリオ

  • 家中に散らばるRaspberry Pi zero WHで分散処理

  • 個々に搭載しているデバイスや機能を外部から利用可能にする

  • 単一で完結処理出来ない機能やスペック的に厳しい物は他へ依頼する

  • ローカルネットワークに無い機能はGmailで外の世界へ依頼する

    • Gmailにより世界に繋がるM2Mの実践IOTハウス
  • 設定
    Dio ControlタブでAction:high→low or low→highでSend_mesageを選択、Addressへローカルアドレス、Messageボックスへキーワードやメッセージを設定します

    ①入力イベント:防犯センサー high→low、iot00f.localホストへMessageボックス:「dio0low」送出、iot00fが入力ポート0番イベントhigh→lowを実行

    ②Messageボックス:「あかりをつけて」送出、iot00f.localを監視しているブラウザが処理して「あかり」を設定している出力ポートをhighへ

    ③Messageボックス:「@あかりをつけて」送出、iot00f.localを監視しているブラウザが処理して「あかりをつけて」を発話・・・発話出来るブラウザが監視している場合

    Alexaで返事出来ない事をブラウザから応答できるスクリプトpepoalexahelp

    ④ AddressがGmailアドレスの場合Mail Settingsタブで設定したキーワード監視中のIOT-Houseがマッチ出力番号をHigh又はオンする、又は監視しているブラウザが処理・・・Gmailなので世界中に繋がる事が出来る、なのでM2Mで世界に繋がる実践IOTハウスです


  • 実際のIOTハウスでは

    • 人感センサーが接続されている機器からモジュールカメラが搭載している機器へ動画メールか写真メールを時間帯を切り替え依頼
    • 開発当初からGmail経由で外の世界から家の家電を操作していたがhomebridge alexaでより快適に操作・・・夏場、外出中alexaアプリでペット・ルームの温度を確認、エアコン冷房を運転
    • 寝室の温度を測定している機器から温度により換気扇が接続している機器へ運転、停止を依頼・・・熱帯夜でも無い限り27度で運転、停止すれば快適
      Auto Prosessタブで部屋温度でリモコン high・low
      出力4(リモコン)と入力4(リモコン入力)が接続を接続している為、リモコン入力のhigh,lowイベントが発生
    • 温度上昇→iot02fホストへ出力4high依頼→換気扇が運転
    • 温度下降→iot02fホストへ出力4low依頼→換気扇が停止
    • iot02fは時間帯と入力条件により換気扇を運転、停止・・・実際は省エネとハンチング防止の為、間欠運転をしている
  • more information and source
    https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoalexado
    https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepomsgsend

timelapse設定

  • timelapseシナリオ

    • raspberry piにはモジュールカメラでtimelapse機能が標準搭載されているが

    • 低スペックかつ多重処理のIOT-House_zero_w単体でtimelapseを完結するには厳しい

    • なので2台のraspberry pi zeroでサーバーとクライアント分散処理をします

    • サーバー側(https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepotimelapse)

      • raspistillコマンドのawbとannotationオプションをつけ60秒ごとにimage000.jpg,image001.jpg … image059.jpgファイル作成(スペック制限で画像サイズは640x480)
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        while true;do
        NOWSEC=`date +"%S:"`
        NOWMIN=`date +"%M:"`
        if [ $NOWSEC = "00:" ];then
        k=`printf "image%03d.jpg" $j`
        raspistill -awb flash -a 1036 -ae +25+25 -w 640 -h 480 -o $IMAGE_DIR/$k
        j=$(($j + 1))
        if [ $j -gt 59 -o $NOWMIN = "59:" ];then
        .
        fi
        done
      • 1時間ごとにこれをtimelapse.tar.gzで固め繰り返す
        1
        2
        3
        4
        mkdir $IMAGE_DIR_TMP
        mv $IMAGE_DIR/* $IMAGE_DIR_TMP/
        (cd $WORKDIR;tar cfz ${IMAGE_TIMELAPSE}.tar.gz $IMAGE_TIMELAPSE)

    • クライアント側(https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoffmpegtimelapse)

      • 1時間毎にtimelapse.tar.gzをサーバー側からゲット解凍後、日付時間毎の2021-08-17_00.mp4 … 2021-08-17_59.mp4の動画ファイル作成、htmlで閲覧できるようにしておく
      • 1時間毎のtimelapse(セキュリティ上大部分をトリミングしてます)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      while true;do
      NOWMIN=`date +"%M:"`
      if [ $NOWMIN = "05:" ];then
      NOWHOUR=`date +"%H:"`
      NOWDATE=`date +"%Y-%m-%d_%H"`
      HOURAGO=`date -d "1 hour ago" +"%Y-%m-%d_%H"`
      DAYAGO=`date -d "1 day ago" +"%Y-%m-%d"`
      WEEKAGO=`date -d "1 week ago" +"%Y-%m-%d"`
      msleep 60000
      else
      msleep 10000
      continue
      fi
      .
      curl -s --connect-timeout $RETRYTIME --retry $RETRY --user-agent ${USERAGENT} --tlsv1 -k -u ${USER}:${PASSWORD} https://$RMHOST:$PORT/$REMOTEFILE >$LOCALFILE
      .
      ffmpeg -f image2 -i $IMAGE_DIR_TMP/image%03d.jpg -vcodec libx264 -y $IMAGE_DIR/${HOURAGO}.mp4 >/dev/null 2>&1
      • 00時に時間毎ファイルから1日分2021-08-17.mp4の動画ファイル作成、外部SDカードに移動htmlで閲覧できるようにリンクしておく
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        if [ $NOWHOUR = "00:" ];then
        ls -l $IMAGE_DIR/*| grep $DAYAGO| awk '{printf("file %s\n",$9)}' >$FFMPEGINPUT
        .
        ffmpeg -safe 0 -f concat -i $FFMPEGINPUT -c copy -y $IMAGE_DIR/${DAYAGO}.mp4
        .
        mv $IMAGE_DIR/${DAYAGO}.mp4 $MP_DIR/
        ln -s $MP_DIR/${DAYAGO}.mp4 $IMAGE_DIR/${DAYAGO}.mp4
        .
        WEEKAGO_IMAGE=`ls -l $IMAGE_DIR/*| grep $WEEKAGO| awk '{printf("%s ",$9)}'`
        MP_WEEKAGO_IMAGE=`ls -l $MP_DIR/*| grep $WEEKAGO| awk '{printf("%s",$9)}'`
        if [ `echo $WEEKAGO_IMAGE| wc -w` -eq 0 ];then
        continue
        else
        rm $WEEKAGO_IMAGE
        .
        fi
      • 外部SDカードに溜まった1週間前の動画ファイルを消去
  • timelapse設定

    • サーバー側起動(/service/にサーバー・スクリプトへリンクを張りdaemotoolsで起動する)
      1
      2
      3
      4
      5
      6
      7
      8
      9
        ssh pi@iotXXX
      .
      $ sudo su
      # cd /service/
      # mkdir timelapse
      # cd timelapse
      # ln -s /usr/local/bin/pepotimelapse run
      # svstat /www/pepolinux/timelapse/
      /www/pepolinux/timelapse/: up (pid XX) X seconds
    • クライアント側(USBへ動画保存用SDカードセット後クライアント・スクリプトを起動)
      1
      2
      3
      4
      5
      6
      7
      8
      ssh pi@iotXXX
      .
      $ sudo su
      # cd /service/
      # mkdir ffmpegtimelapse
      # /usr/local/bin/pepoffmpegtimelapse run
      # svstat /www/pepolinux/ffmpegtimelapse/
      /www/pepolinux/ffmpegtimelapse/: up (pid XX) X seconds
      • 1日分のtimelapse(セキュリティ上大部分をトリミングしてます)

WindowsとMACでIOT

WindowsとMACでIOTをする

  • WindowsかMACでIoT(Internet of Things)は数多あるけど、IOT(Input Output Things)はGPIO搭載されてないので温度測定や外部端子の入出力が直接出来ません
  • ここではIOTをVirtualBox仮想化でGPIOを接続、WindowsとMACでIOTハウスを実験します
  • WindowsとMACはVirtualBoxのインストールは既に終わっていると仮定して
    • Windowsは便宜上MACからのRemote VNCでの画面キャプチャした物
  1. URLよりイメージをダウンロードしますIOT-House_old_pc_xx.7z
  2. ダウンロードしたファイル、IOT-House_old_pc_xx.7z を解凍、IOT-House_old_pc_xx.imgをVirtualBoxのDISKイメージへ変換します
    1
    2
    3
    VBoxManage convertfromraw --format VDI IOT-House_old_pc_0.01.img IOT-House_old_pc_0.01.vdi
    Converting from raw image file="IOT-House_old_pc_0.01.img" to file="IOT-House_old_pc_0.01.vdi"...
    Creating dynamic image with size 8068792320 bytes (7695MB)..
  3. 以下VirtualBoxでIOT-House_old_pc_0.XX.vdiをストレージへ設定、起動しますVirtualbox_setting
  4. USBへMONOSTICK、TWELITE、MM-CP2112Aに環境ガスセンサーBME680や温湿度センサーAM2320接続、VirtualBoxのUSBタブで接続設定をしますVirtualbox_usb_MAC
  5. MACのVirtualBoxでIOT-House_old_pcへログインVirtualbox_iot-house_MAC
  6. VirtualBox内localhostへ接続IOT-House_old_pcのControl PanelVirtualbox_iot-house_Windows
    Virtualbox_iot-house_control1_Windows
  7. VM(VirtualBox IOT-House_old_pc)経由ではあるがWindows直接続USB<->GPIO変換MM-CP2112A<->I2C接続<->環境ガスセンサーBME680の温度、湿度、気圧、IAQなど取得表示されている事がわかると思う
    Virtualbox_iot-house_control2_Windows

IOT-House_old_pc

IOT-House_old_pcとは

  • 古くなってWindowsでは使えなくなったノートPCをiot-houseで復活させる物です。
  • IOT-House_old_pcはUbuntu 18.04 LTSにraspberry piのIOT-Houseを移植したものです。
  • SunhayatoのMM-CP2112AをGPIOに使い環境ガスセンサーBME680や温度湿度センサーAM2320で使います。
  • IOT-House_old_pcはサーバーで使用するのでそれ程、高い性能は必要有りません。
  • 動作環境はCPUが1GHzメモリが約1GB程度の古いノートパソコンを想定しています。
  • raspberry pi zero Wに比べて古いノートパソコン消費電力(25W程度)は多いですが、標準でUPS搭載 (バッテリー)、速度、安定性に優れています。iot-house_old_pc_img
    Left debug MAC, Right old PC,MM-CP2112A+Self-made board,I2C sensor BME680,AM2320

ハードウエア

  • 下記容量のフッラッシュメモリを用意して下さい
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fdisk /dev/sdb

    Welcome to fdisk (util-linux 2.29.2).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.

    Command (m for help): p
    Disk /dev/mmcblk0: 7.3 GiB, 7820279808 bytes, 15273984 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x15ae16d5

インストール

  • URLよりイメージをダウンロードしますIOT-House_old_pc_xx.7z
  • ダウンロードしたファイル、IOT-House_old_pc_xx.7z を解凍、IOT-House_old_pc_xx.imgをフッラッシュメモリへ書き込みます、例えばddコマンド
    1
    dd if=IOT-House_old_pc_xx.img of=/dev/sdb bs=100M
    ノートパソコンのUSBへフッラッシュメモリとMM-CP2112Aを装着後電源を投入します、5分ぐらい立ち上げに掛かるかもしれません。

設定

  • ログイン画面が出たら user: remote, password: hand でログイン

  • ネットワークの設定を各環境に合わせ設定します、初期設定では優先LAN、ホスト名 iot000

  • 別PCからは http://iot000.local でuser:remote, password: hand でログイン

  • Control panel が表示されたら設定をします

  • ネットワークの設定が終了したら、以下コマンドGUI無しで立ち上げ時間の短縮出来ると思います。

    1
    sudo systemctl set-default multi-user.target
    iot-house_old_pc_control_panel-1
    iot-house_old_pc_control_panel-2
  • 設定方法はraspberry piのIOT-Houseを同じです