DIY个人智能家庭网关——python篇之门磁触发后自动点亮WIFI灯带
2017-02-27 23:38
423 查看
#!/usr/bin/env python # -*- coding: utf-8 -*- import serial import socket import threading from time import sleep import json import subprocess UDP_BROCAST_HOST = '192.168.1.255' # UDP广播发送地址 UDP_BROCAST_PORT = 1235 # UDP广播发送端口 RECV_PORT = 1234 # UDP接收端口 UDP_ADDR = (UDP_BROCAST_HOST, UDP_BROCAST_PORT) # 打开串口 ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.5) # 门磁的地址码 door_sensor_addr = "0x5555" # WIFI灯带的MAC地址作为设备的唯一ID wifi_light_id = "5c:cf:7f:d5:06:d3" # UDP 收发器 class UdpTransceiver(threading.Thread): run = False def __init__(self,addr,port): threading.Thread.__init__(self) self.socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) self.socket.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) address = (addr, port) self.socket.bind(address) def set_recv_cb(self,cb): self.recv_cb = cb def close(self): self.socket.close() def run(self): run = True while self.run: data,addr = self.socket.recvfrom(1024) self.recv_cb(self,TransceiverType.udp, addr,data) def send(self,addr,data): self.socket.sendto(data,addr) def stop(self): self.run = False def recv(serial): while True: data =serial.read(64) if data == '': continue else: break sleep(0.02) return data if __name__ == "__main__": # 创建UDP接口 udpTrans = UdpTransceiver(UDP_BROCAST_HOST, RECV_PORT) while True: data =recv(ser) if data != '': print "receive %s"%data s = json.loads(data) if s["addr"] == door_sensor_addr: # 命令为:设置工作模式 params有3个参数,1表示渐亮模式,10和80表示10秒从灭渐变到80%的亮度 cmd = {"cmd":"set_mode","id":wifi_light_id,"params":["1","10","80"]} # 转换成json json_str = json.dumps(cmd) # 发送命令 udpTrans.send(UDP_ADDR, json_str.encode())
相关文章推荐
- DIY个人智能家庭网关——python篇之读取USB串口,获取门磁报警信息
- DIY个人智能家庭网关——硬件篇之WIFI灯带DIY
- DIY个人智能家庭网关——python篇之推送门磁报警信息到手机
- DIY个人智能家庭网关—— python篇之获取手机WIFI连接(上线/下线)状态
- DIY个人智能家庭网关——python篇之推送消息到手机
- DIY个人智能家庭网关—— 路由器篇之安装python
- DIY个人智能家庭网关——python篇之推送手机上下线事件
- DIY个人智能家庭网关—— python篇之获取路由器外网地址
- DIY个人智能家庭网关——硬件篇之433M无线接收解码器(一)
- DIY个人智能家庭网关——硬件篇之433M无线接收解码器(二)
- DIY个人智能家庭网关—— 路由器篇之刷机
- DIY个人智能家庭网关——手机篇之客户端设计
- DIY个人智能家庭网关—— 手机篇之Jpush推送平台
- DIY个人智能家庭网关—— 路由器篇之申请公网IP
- DIY个人智能家庭网关—— 前言
- DIY个人智能家庭网关—— 路由器篇之配置DDNS
- 浅谈智慧家庭小优机器人通过WIFI+SSDP方式接入华为智能网关
- 使用Python脚本自动修改Windows的IP、网关和DNS设置
- 个人写的股票智能交易系统,让自动买卖股票不是梦
- Linux下使用python自动修改本机网关代码分享