シリアル通信ソフト

シリアル通信ソフトepiconとは

  • epiconはLinuxのシリアル通信ソフトです。

  • 実践IOTハウスでは、Raspberry PiのUSB接続ToCoStick(トコスティック)からシリアル通信でTOCOS TWE-Liteで温湿度計AM2321センサーやAI・DIOを制御に使っています。

  • SwitchやRouterなどシリアルポートでとコンソールPCでConfig設定するネットワーク機器はメーカーや機種を問わず使えると思います。

  • Cisco製SwitchやRouterは設定を自動化する際、事前に作成したテキストデーターをコピー&ペーストして、コンフィグの流し込みを行います。
    この時文字と改行の送出ディレィを行いコンフィグデーターの取りこぼしを防ぐことが重要です。

  • このシリアルコンソールとして重要な文字と改行の送出ディレイをepiconはサポート、コンフィグを安心してコピー&ペーストが出来ます。

  • この他、簡易telnet、zmodemなどのファイル転送ソフト、shell、マクロ、外部ソフトの起動などCUIだが多機能でコンパクトな作りとなっています。

  • インストール
    Download
    https://osdn.net/projects/pepolinux/releases/p3211

    1
    2
    3
    4
    5
    6
    7
    # tar xvfz epicon-XX.XX.tar.gz
    # cd epicon
    # ./configure
    # make
    # make install
    uninstall
    # make uninstall
  • 使い方

    • 起動、オプションなし(com1:/dev/ttys0ポート、9600bps、8bitノンパリティ)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # epicon

      ** Welcome to epicon Version-5.2 Copyright Isamu Yamauchi compiled:Feb 24 2021 **
      exec shell ~!
      send binary files ~f
      send break ~b
      call rz,sz,sx,rx ~rz,~sz,~sx,~rx
      call kermit ~sk,~rk
      external command ~C
      change speed ~c
      exit ~.
      Connected /dev/ttyS0
    • 終了方法
      Enter~.
    • 通信状態->shellへ->コマンド入力->exitで元の通信状態に戻る
      Enter~!
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
        epicon wait
      # ls
      AUTHORS README configure.ac install-sh
      COPYING aclocal.m4 depcomp missing
      ChangeLog autom4te.cache epicon.c patch-gkermit1.0+counter-CentOS4.2
      INSTALL config.h epicon.h patch-gkermit1.0+counter1.2.1
      Makefile.am config.h.in epicon.nr sample.scr
      Makefile.in config.status epicon_main.c stamp-h1
      NEWS configure epicon_uty.c
      # exit
      epicon run
    • Switchの設定、オプションあり(/dev/ttyUSB0,19200bps,キャラクタディレイ:30ms,CRディレイ:50ms)大昔の経験で、これ位のディレイを設定するとコンフィグの取りこぼしが起こらない。
      1
      # epicon -d 30 -D 50 -s 19200 -l /dev/ttyUSB0
    • Switchの設定、オプションあり(telnet,キャラクタディレイ:20ms,CRデレイ:50ms)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      # epicon -d 20 -D 50 -n 192.168.0.1:23

      ** Welcome to epicon Version-5.2 Copyright Isamu Yamauchi compiled:Feb 24 2021 **
      exec shell ~!
      send binary files ~f
      send break ~b
      call rz,sz,sx,rx ~rz,~sz,~sx,~rx
      call kermit ~sk,~rk
      external command ~C
      change speed ~c
      exit ~.

      Telnet Server 1.10 All rights reserved.


      login :
    • “-c”オプション:外部スクリプトの指定
      • mono-wireless無線モジュールTWELITEとMONOSTICKで温湿度計AM2321センサー、アナログ入力、デジタル入出力信号を離れた場所から遠隔監視・制御がするプログラム pepotocsctlで使用しています。twelite_dip_monostick
      • 以下は、AM2321センサーから温湿度を読み取るスクリプトを作成してepiconを起動します。
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        # /usr/local/bin/epicon -s 115200 -ql /dev/ttyUSBTWE-Lite -c $CMD
        # cat $CMD
        #!/bin/bash
        RETRY=5
        I2CRD="-1"
        while [ ${RETRY} -ne 0 ];do
        retry_time=`echo -en $RANDOM |cut -c 1-2`
        echo -en ":7888AA015C0000X\r\n"
        msleep 50
        read -s -t 1 I2CRD || I2CRD="-1"
        echo -en ":7888AA015C03020004X\r\n"
        msleep 50
        read -s -t 1 I2CRD || I2CRD="-1"
        msleep
        echo -en ":7888AA025C0006X\r\n"
        msleep 50
        read -s -n 28 -t 1 I2CRD || I2CRD="-1"
        TMP=`echo -en ${I2CRD} | wc -c`
        [ ${TMP} -eq 28 ] && break
        RETRY=$((${RETRY} - 1))
        [ ${RETRY} -eq 0 ] && break
        RETRY=$((${RETRY} - 1))
        msleep $retry_time
        I2CRD="-1"
        done
        echo -en ${I2CRD} >/dev/stderr
  • マニュアル抜粋

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    # man epicon

    epicon(1) epicon Manuals

    NAME
    epicon is Easy Personal Interface Console terminal software. First I
    am sorry. Because my English linguistic power is very shabby, this sen‐
    tence is being translated by the machine. Because of that, read it in
    the interpretation which it is tolerant of though it thinks that it is
    a little funny translation.

    SYNOPSIS
    usage:
    epicon [-options [argument] [-options [argument]]
    [-b ] <--escape cannot be used
    [-c external_command]
    [-d send_charcacter_delay(ms)]
    [-D send_CR_delay(ms)]
    [-e escape_char]
    [-f send_file]
    [-F send_file_effective_delay]
    [-m ] <--input echo mode
    [-M ] <--line mode
    [-l com_port]
    [-L output_log_file]
    [-n ip_address[:port]]
    [-p [server_port]]
    [-q ] <--quiet mode
    [-s speed]
    [-v ] <--show version
    [-x bit_length (5|6|7) parity(o|e|n) stop_bit (1|2)]
    [-z ] <--auto rz prohibition

    defaults:
    speed: 9600b/s (Higest of 460800)
  • Please check the source code below
    https://github.com/kujiranodanna/IOT-House/tree/master/raspberrypi/usr/src/epicon

臭いセンサー

pepoiaq2ledとは

  • 環境ガスセンサーBME680から読み出したガス抵抗値5分毎50カウント平均値80%、温度10%、湿度10%から計算された空気質:IAQ(indoor air quality)0〜500をブラウザは数値と共にgood(緑)〜very_bad(赤)色で表現しています。

    bme680_iaq_img
  • これをpepoiaq2ledでGPIO出力から3色LEDを点灯させることが出来ます。

  • 常時起動していれば臭いセンサー・アプライアンスとして活用出来ます。

    • pepoiaq2ledは以下コマンドにてdaemontools経由で起動させます。
      1
      2
      3
      4
      # cd /www/pepolinux
      # ln -s /usr/local/bin/pepoiaq2led iaqled
      # cd /service/
      # ln -s /www/pepolinux/iaqled iaqled
      daemontoolsで起動したpepoiaq2ledは以下コマンドで停止・起動・確認をおこないます。
      1
      2
      3
      # svc -d /www/pepolinux/iaqled
      # svc -u /www/pepolinux/iaqled
      # svstat /www/pepolinux/iaqled
  • Raspberry_piのBME680と3色LEDでチューブ入りにんにくの臭いを検出デモ動画

  • Please check the source code below
    https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoiaq2led

pepotocsctl

pepotocsctlとは

  • pepotocsctlとはmono-wireless無線モジュールTWELITEとMONOSTICKで温湿度計AM2321センサー、アナログ入力、デジタル入出力信号を離れた場所から遠隔監視・制御が出来るプログラムです。
    twlite_img
    pepotocsctl単独では動作しません、別途epiconが必要です。 Tocos無線モジュールのGPIOとAM2321センサーをコマンドで操作できます
    1
    2
    3
    # pepotocsctl
    # pepotocosctl
    usage /usr/local/bin/pepotocosctl read->chno:0-6 | write->chno:0-6 [DO:0|1|f] to 300000ms
    DI(デジタルインプット)の4ポート分リード
    1
    # pepotocsctl 0 7
    DI(デジタルインプット)の一番ポートリード
    1
    # pepotocsctl 1 1
    DO(デジタルアウトプウト)一番ポートへ1をライト
    1
    2
    # pepotocsctl 1 1
    1
    DO(デジタルアウトプウト)一番ポートへ1をライト、5秒間保持
    1
    2
    # pepotocsctl 1 1 5000
    0
    I2C温湿度計AM2321センサーのリード
    1
    2
    # pepotocsctl 5
    2016/01/20,19:16:19,4.0℃,75.4%
    アナログ入力リード
    1
    2
    # pepotocosctl 6
    4080,4080,4080,4080
    ライトアフターリード
    1
    2
    # pepotocosctl 0 0
    7;4080,4080,4080,4080
    デジタルインプットとアナログインプットリード
    1
    2
    # pepotocosctl 7
    f;1952,4080,4080,4080
    リードウエイト・DIの変化を指定時間待つ
    1
    2
    # pepotocosctl 7 120
    e;4080,4080,4080,4080
  • Please check the source code below
    https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepotocosctl

pepogpioctld

pepogpioctldとは

  • gpioの入出力制御と環境ガスセンサーBME680のデーターを元に空気質を数値化するデーモンです。

  • BME680センサーが接続されている場合、pepobme680が作成した2021/02/04/17:22:23,10.2,43.0,1018.9,3436 値から、ガス抵抗値5分毎50カウントの平均値80%、温度10%、湿度10%を元に以下のような空気質:IAQ (indoor air quality)を計算、付加します。

  • IAQ is Sample 0(Good) to 500(Hazardous) Temperature(17-28℃):10% Humidity(40-70%):10% Gas(Gas±Gas_base/Gas_base):80%

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [iot00f:root#] cat /www/remote-hand/tmp/.pepobme680
    2021/02/04/17:22:23,10.2,43.0,1018.9,3436
    日時,温度,湿度,気圧,ガス抵抗

    [iot00f:root#] cat /www/remote-hand/tmp/.gpiodi_read_data
    di[0]=1
    di[1]=1
    di[2]=1
    di[3]=0
    gpio_i2c=17:25:15,10.2,43.0,1019,3436,21
    日時,温度,湿度,気圧,ガス抵抗,空気質

    [iot00f:root#] cat /www/remote-hand/tmp/.gpiodo_write_data
    do[0]=0
    do[1]=0
    do[2]=0
    do[3]=0

    BME680環境ガスセンサーを接続してグラフ表示させます

  • Please check the source code below
    https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepogpioctld

pepoalexado

pepoalexadoとは

  • Alexaで電気をつけたり、消したり、温度を聞いたりする為に作成、IOTハウスに分散しているRaspberry PiへGPIOの出力やjsonデータを取得します
    pepoalexado
    usage /usr/local/bin/pepoalexado host user password [write->chno:0-17 [DO:0|1] [timer->1 to 300000ms]] or read->json_name

  • GPIO 3 ON
    pepoalexado iot001.local remote hand 3 1

  • GPIO 3 OFF
    pepoalexado iot001.local remote hand 3 0

  • I2CガスセンサーBME680のjsonデータを取得
    pepoalexado iot001.local remote hand gpio_i2c
    { “date”: “08:47:11”, “temp”: “27.5℃”, “hum”: “79.7%”, “pres”: “1006hPa”, “gas”: “2055427Ω”, “iaq”: “17” }

  • I2CガスセンサーBME680の気圧データを取得
    pepoalexado iot001.local remote hand gpio_i2c.pres
    1020hPa

  • 屋外照度がlow/highを取得 ->屋外照度が暗くなれば部屋の電気をつけるなどの判定に使う
    pepoalexado iot01f.local remote hand ai2di12
    low

  • iot01f.localのGPIO 4番ポート入力low->highイベント登録されたコマンドdio3highを実行
    dio3highはモジュールカメラ10秒動画メールを登録している、これはカメラ接続がないGPIO入力イベントから他カメラ接続のRaspberry Piのモジュールカメラを起動出来る
    実践IOTハウスではAlexaへの防犯カメラ起動に使用
    pepoalexado iot02f.local remote hand dio3high

  • chromeなどブラウザが、https://iot01fを閲覧中は登録している文言で音声操作と応答をそのブラウザが返す
    pepoalexado iot01f.local remote hand voice_req 電気を消して ->電気を消してを実行します
    pepoalexado iot01f.local remote hand voice_req 部屋の温度教えて ->部屋の温度は24.0℃です

  • Alexaのhomebridge/config.json設定例

    アレクサ、ダインニング電気つけて

    アレクサ、ダインニング電気消して

    アレクサ、防犯カメラオン

    アレクサ、防犯カメラオフ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    {{{
    "platforms": [
    {
    "platform": "Alexa",
    "name": "Alexa",
    "username": "user",
    "password": "pass"
    }
    ],
    "accessories": [
    {
    "accessory": "CMD",
    "name": "ダイニング電気",
    "on_cmd": "sudo /usr/local/bin/pepoalexado iot001.local remote hand 3 1",
    "off_cmd": "sudo /usr/local/bin/pepoalexado iot001.local remote hand 3 0"
    },
    {
    "accessory": "CMD",
    "name": "防犯カメラ",
    "on_cmd": "sudo /usr/local/bin/pepoalexado iot03f.local remote hand dio3low",
    "off_cmd": "sudo /usr/local/bin/pepoalexado iot02f.local remote hand dio3high"
    },
    }}}
  • Please check the source code below
    https://github.com/kujiranodanna/IOT-House/blob/master/raspberrypi/usr/local/bin/pepoalexado