工程化设计还包括资源识别和可配置性设计、低功耗设计、后期施工简化设计、超时故障处理、系统看门狗等等实现了系统的可用好用。

资源识别和可配置性设计

通过扫描网络可用的控制设备,达到识别系统的被控制设备数量,同时把每一个控制器的ip记录下来。ip与控制指令再通过配置文件实现一一对应关系。采用micropython的好处是,使用文件系统,使用json数据非常方便这种配置策略的实现。比如下面是配置连接无线路由的配置文件,可以随时修改,适应不同的房子配置。
wifi=TP-LINK_Exxx|password=Lin12345678
读取的函数:

def getwifiAp():
    fl=open("Ap.txt",'r')
    tempstr=fl.read()
    fl.close()
    x=tempstr.find('wifi=')
    y=tempstr.find('password=')
    essid=tempstr[5:y-1]
    password=tempstr[y+9:]
    return essid,password

再如:采用两个json文件实现键盘命令与被控制对象的对应关系。
第一个关联按键命令与控制对象

{"lin":[
{"cmd":"j","action":"ON","ser":[0]},
{"cmd":"k","action":"OFF","ser":[0]},
{"cmd":"l","action":"ON","ser":[1]},
{"cmd":"m","action":"OFF","ser":[1]},
{"cmd":"a","action":"ON","ser":[0,2]},
{"cmd":"b","action":"OFF","ser":[0,2]},
{"cmd":"g","action":"ON","ser":[2]},
{"cmd":"h","action":"OFF","ser":[2]}
]}

第二个为通过资源识别出来的被控制对象ip地址

{"lin": ["192.168.1.100", "192.168.1.111", "192.168.1.112"]}

下面程序可以读取json配置文件

def getCmd(cmdx):
    #relation command to webserver
    rtIp=[]
    ff=open("test.json", "r")
    cmdfilestr=json.loads(ff.read())
    ff.close()
    #all active webserver
    ff=open("Online_web.json", "r")
    Online_web=json.loads(ff.read())
    ff.close()
    for i in range(0,len(cmdfilestr['lin'])):
        aa=cmdfilestr['lin'][i]
        bb=aa["cmd"]
        if chr(cmdx)==bb:
            thisIp=aa['ser']
            thisAct=aa['action']
            for i in thisIp:
                rtIp.append(Online_web['lin'][i])
            return rtIp,thisAct
        
    return [],''

使用内部ip控制,要记得设置路由器,把ip地址固定好。

后期施工简化以及低功耗设计

采用单火设计可以很容易施工,但是现在大部分灯泡都是低功耗灯泡,单火开关很容易导致闪烁出现。采用零线火线设计的开关,由于以前布线都没有零线,在墙壁内穿线,难度不是一般大。把控制开关安装在电灯处,对于一般家庭,最合适,最方便施工。当然这样又带来新的问题,原来习惯的墙上开关不能使用,只能短接,怎么办?去掉原来的开关,对应很多人来说不习惯,而且语音控制也不适合各种场合,比如早起、喧闹环境等。没有零线,又要使用开关,最后只能使用电池供电的开关,但是电池供电功耗是很大问题,WiFi耗电量太大,以后经常换电池智能化带来好处,会被经常换电池搞得得不偿失。所以后来按键采用低功耗蓝牙按键,估计一个纽扣电池用一年半载应该没有问题。因为按键电路没有按下处于休眠状态,消耗电流是nA级,按下完成功能也就耗电几个mS时间。
最后墙上控制按键,设计了两种,一种随意贴的形式,另一种是替换原来的暗盒开关,但是也采用低功耗蓝牙设计。
从这样分析来看,像电灯这些简单的控制,还不如整个系统采用蓝牙网络。可是蓝牙在家庭网络的地位好像不够,很多设备还是WiFi控制,比如我的新空调、电饭锅等,所以混合网络,两个网络都支持还是需要的。

智能化系统架构图 智能化系统设计_python


智能化系统架构图 智能化系统设计_低功耗_02

关于最主要的micropython控制的通信部分还是留在下一期再讲吧。