樂聯網DTU 教程3 :概述用python+Openwrt DIY DTU 連線樂聯網

weixin_33832340發表於2017-05-09

標籤: DTU Openwrt


基本準備

安裝python 2.7+
安裝python pip (非必需,這樣後面安裝py 模組可以簡單一點)

獲取python程式碼

其實就是一個簡單的tcp2serial 程式碼,感謝@瘦網蟲
python DTU github 程式碼
注意根據實際情況改動如下內容

根據自己樂聯網實際usrkey 和閘道器號
gatewayNo = 'xxx'#gateway No. in lewei50
userKey = 'your_userkey_in_lewei50'

根據實際串列埠引數,第一種是linux 下面的,第二種是windows下面的,根據實際情況二選一,serial_port=0 代表windows 下面的com1。

#serial_port="/dev/ttyUSB0"
serial_port=0#serial_port = 8  means serial id 9 in windows

連上裝置,開始看資料吧

演示python 做dtu 最簡單的方式是用PC 作為硬體,然後連上裝置,直接執行python 程式碼,就可以了。
可能出的報錯包括

  1. python 版本3.0以上print 需要括號 ,這個程式碼是針對2.7的,所以找一個2.7是比較簡單的方法
  2. python 模組沒有裝全,程式碼需要的模組沒有,自己安裝相應的模組就好

正常正常情況下可以先通過串列埠軟體跟modbus RTU 裝置通訊一下看看,如下圖

串列埠通訊正常

保證資料串列埠是可以通訊的再執行python,python執行正常正常截圖如下

openwrt 路由器

然後就可以在賬戶裡面跟modbus裝置通訊了,如下圖

openwrt 路由器

好的,這樣一個python DTU就完成了,是不是用電腦很不爽,那就接著往下看。我們來用Openwrt 跑python 當DTU 來用。

openwrt 做DTU

如果用PC 跑python 來當DTU更多的是一種示範效果的話,用Openwrt 跑python 做DTU絕對是有實際意義的。
先看一下Openwrt 路由器外觀,最右邊是一個小米手環,用來比較體積的(沒找到一元硬幣)


openwrt 路由器

為啥用Openwrt 路由器

簡單說一下用OP(openwrt 路由器簡稱,後面都用op表示了)的好處

  1. 不需要自己定製硬體,TB一堆一堆的,支援python,用來驗證原型最好不過了
  2. 路由器系統支援多上行模式,一個OP 可以同時做wifi ethernet 4g(需要usb hub) DTU 用

選擇什麼樣的OP 路由器

  1. 16M flash,外放USB介面的
  2. 推薦703 或者GL-net 系列硬體
    推薦TB一家:記得要GL-net雙網口加亞克力外殼,FLASH 16M,OP純淨系統

熟悉OP,安裝python

熟悉方法:自己研究
安裝python 方法:
OP安裝python
注意不同的OP版本有不同的安裝命令,如果是最新的CC版本,應該是如下命令

opkg update
opkg install python-light

安裝python pip

還是為了安裝python module 方便
opkg install python-pip

安裝USB串列埠橋接裝置驅動

因為串列埠需要usb橋接用,根據用到的橋接是CP2102,340,FTDI選擇不同的驅動。我手裡的是2102,所以安裝驅動就是這個命令。
opkg install kmod-usb-serial-cp210x

把python 程式碼放到Openwrt 裡面

找一個scp 客戶端把python程式碼下進去
然後

安裝模組,解決報錯,大功告成....


後面非必須內容

給OP新增一個守護程式Daemon.sh,否則py 執行出異常就會退出了

echo "hello shell" ps |grep lewei|grep -v grep if [ $? -ne 0 ] then echo "process is not exist" python lewei_tcp2serial.py& else echo "process is on" fi

OP新增一個定時任務,每分鐘執行一次守護程式
chmod 777 Daemon.sh
./Daemon.sh
新增定時任務
*/1 * * * * ./Daemon.sh

相關文章