如何連接 Z-Wave 裝置到 QIoT Container Station / OpenHAB

  • 切換 Z-Stick 到 Inclusion-mode 並跟你的 Z-Wave 裝置配對。 本教學以 FGPB-101 Fibaro Button 為例
  • 此部分教學可參考 Z-Stick 說明書
  • 將 Z-Stick USB 插入你的 NAS 裝置
  • 透過SSH連接你的NAS(可參考本教學).
  • 輸入 insmod /usr/local/modules/cdc-acm.ko
  • 如果顯示以下訊息代表你的 cdc-acm.ko 已經安裝好了 :
  • 輸入 ls -al /dev/ttyACM* 查看你的 Z-Stick 裝置路徑
    • 本例中我們找到 /dev/ttyACM0
  • 輸入chmod 666 /dev/ttyACM0變更許可為允許任何人讀取與寫入
  • 建立一個 OpenHAB docker 然後新增裝置 /dev/ttyACM0,並輸入 :
    docker run –name=openhab-zwave \
    -p 18080:8080 -p 8443:8443 -p 5555:5555 \
    -v /share/Container/OpenHab/addons/:/openhab/addons \
    -v /share/Container/OpenHab/userdata/:/openhab/userdata \
    -v /share/Container/OpenHab/conf/:/openhab/conf \
    –device=/dev/ttyACM0 \
    –privileged \
    –tty \
    openhab/openhab:2.2.0-amd64-debian
  • 在你的 NAS 上開啟 Container Station > Overview > openhab-zwave ( 你新增的Container ) > [the given URL]
    • 你也可以在瀏覽器上輸入<NAS IP>:18080
  • 進入 OpenHAB 介面後點選 Standard > PAPER UI
  • 點擊 Add-ons > BINDINGS > 搜尋並安裝 MQTT Binding 跟 Z-Wave Binding

  • 點選上方 ACTIONS 標籤,搜尋並安裝 MQTT Actions
  • 此時我們要把 Z-Wave Controller 加進OpenHAB的 Things。點選 Configuration > Things > +
  • Click on Z-Wave Binding > Z-Wave Serial Controller
  •  Serial Port 裡面輸入 Z-Stick 裝置路徑 /dev/ttyACM0,然後點選上方打勾
  • 新增按鈕為一個新的Thing,點選 + > 點選 Z-Wave Binding > 點擊Z-Wave裝置旁的勾,本例中顯示為 Z-Wave Node 4
    • 輸入裝置的名稱然後點選 Add Thing
  • 接下來,連接你的 new Thing的Channel。在 Things 頁面下選擇你的 Thing 跟你想連接的 channel > 點擊 Create new Item
  • 在本教學中我們使用以下設定,然後點擊 Link
  •  Control 頁面下,我們可以看見 Thing 的資訊
    • 可以看到 FGPB-101 的 Scene Numbers為下列數值 :

    • Number of Button Presses
    • Scene Number
    • 1
    • 1.0
    • 2
    • 1.3
    • 3
    • 1.4
    • 4
    • 1.5
    • 5
    • 1.6
    • hold down
    • 1.2
    • release
    • 1.1

QIoT Suite Lite 配置

  • 開啟 QIoT Suite Lite 並建立新的IoT Application. 點擊 IoT Applications > Add IoT Application > 命名 > Create
  • 點擊你的 Application > Things > Add Thing 並配置你的 OpenHAB Thing 如下 :
  • 點擊 Add Resource 圖示
  • 輸入以下資訊並點擊 Add
  • 接下來切換到 Rule 頁面
    • 新增 QBroker
    • 雙擊 QBroker > add,新增剛才建立的 Button resource 
  • 連接 QBroker 跟 debug node 並儲存
  • 在 Things 頁面下, 點擊 Connect a Device 圖示
  • 選取 MQTT > Next
  • 開啟 File Station 並移至 /Container/OpenHab/conf/services/ 然後編輯 mqtt.cfg
  • 編輯 mqtt.cfg,資訊需與 QIoT Suite Lite提供的資訊相符。 注意: tcp address 為 10.0.3.1
    • (右圖為 mqtt.cfg )
  • 在電腦中的檔案編輯器新增一個 .rules 的檔案(可為任意名稱),檔案裡必須包含下列文字

// each rule needs its own rule name

    rule “MQTT test”

    // TRIGGER CONDITION:   when Item FGPB101_SceneNumber changes (e.g. from 1.0 to 1.3)

    when

            Item FGPB101_SceneNumber received update

    /* SCRIPT:      

            if FGPB101_SceneNumber changes to 1.0 do

                    publish value=1

            if FGPB101_SceneNumber changes to 1.3 do

                    publish value=2

            if FGPB101_SceneNumber changes to 1.4 do

                    publish value=3

            if FGPB101_SceneNumber changes to 1.5 do

                    publish value=4

            if FGPB101_SceneNumber changes to 1.6 do

                    publish value=5

            if FGPB101_SceneNumber changes to 1.2 do

                    publish value=”up”

            if FGPB101_SceneNumber changes to 1.1 do

                    publish value=”down”

            *these values are SceneNumber/values are provided in the table above

    */                    

    then

            if (FGPB101_SceneNumber.state == 1.0){

                    logInfo(“test”, “push 1x”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: 1}’)

            }

            if (FGPB101_SceneNumber.state == 1.3){

                    logInfo(“test”, “push 2x”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: 2}’)

            }

            if (FGPB101_SceneNumber.state == 1.4){

                    logInfo(“test”, “push 3x”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: 3}’)

            }

            if (FGPB101_SceneNumber.state == 1.5){

                    logInfo(“test”, “push 4x”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: 4}’)

            }

            if (FGPB101_SceneNumber.state == 1.6){

                    logInfo(“test”, “push 5x”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: 5}’)

            }

            if (FGPB101_SceneNumber.state == 1.1){

                    logInfo(“test”, “release up”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: “up”}’)

            }

            if (FGPB101_SceneNumber.state == 1.2){

                    logInfo(“test”, “hold down”)

                    publish(“qiot”, “qiot/things/admin/openhab/button”, ‘{“value”: “down”}’)

            }

    end

  •  File Station 中, 移至 /Container/OpenHab/conf/rules/ 並拖曳剛才新增的 .rules 檔到這個資料夾。
  • 回到 QIoT Suite Lite 並確認 debug node
  • 按下數次 FGPB-101 Button 並觀察 debug node 的數值

恭喜你成功連結 Z-Wave 裝置在 QIoT 上!

  • 其他資訊 :

如何使用 MQTT 連接到 QNAP QIoT Suite Lite?

OpenHAB Rules Documentation

OpenHAB MQTT Binding

OpenHAB MQTT Actions

OpenHAB ZWave Binding

Related posts

發表迴響