『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 12766|回复: 18

[进阶教程] 网络继电器-接入HA(MQTT转socket协议)python脚本

[复制链接]

3

主题

74

帖子

664

积分

高级会员

Rank: 4

积分
664
金钱
590
HASS币
0
发表于 2017-12-21 22:20:53 | 显示全部楼层 |阅读模式
硬件:网络继电器(支持socket协议),HA主机一台

网络继电器

网络继电器



卖家写的:原本的控制命令([size=13.6364px] [size=13.6364px]发送on1即打开第一路继电器,发送off1关闭第一路继电器,第2-8路控制方法一样。发送read读继电器的状态,如返回relay00000001,表示第一路继电器吸合,2-8路继电器断开。可延时控制,例如发送on1:02,表示继电器吸合2秒后松开,发送on:12表示继电器吸合12秒后松开,延时最长99秒。

怎么玩的不说了 直接贴脚本
#-*-coding:utf-8-*-
import paho.mqtt.client as mqtt
import sys
import socket
import signal
from time import ctime,sleep


HOST = '10.0.0.8'
PORT = 5000

# 当连接上服务器后回调此函数
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # 放在on_connect函数里意味着
    # 重新连接时订阅主题将会被更新
    client.subscribe("cmnd/Relay/#")


# 从服务器接受到消息后回调此函数
def on_message(client, userdata, msg):
    print("主题:"+msg.topic+" 消息:"+str(msg.payload))
    print (str(msg.payload))
    if str(msg.payload) == 'b\'ON\'':
       msg ='on'+msg.topic[-1]
       s.send(msg.encode('utf-8'))
       print(msg)
       #msgt = msg.topic
       #msgt.replace('cmnd','stat')
       client.publish('stat/Relay/'+msg[-1], payload='ON', qos=0, retain=False) #发布消息
    elif str(msg.payload) == 'b\'OFF\'':
       msg ='off'+msg.topic[-1]
       s.send(msg.encode('utf-8'))
       print(msg)
       #msgt = msg.topic
       #msgt.replace('cmnd','stat')
       client.publish('stat/Relay/'+msg[-1], payload='OFF', qos=0, retain=False) #发布消息

    else:
       print ('1')


s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))


client = mqtt.Client()
#参数有 Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311, transport="tcp")
client.on_connect = on_connect #设置连接上服务器回调函数
client.on_message = on_message  #设置接收到服务器消息回调函数
client.username_pw_set("mqtt", "mqtt")
client.connect("10.0.0.9", 1883, 60)  #连接服务器,端口为1883,维持心跳为60秒
client.loop_forever()


这个脚本只是测试的(功能可以实现),有很多地方需要优化,比如(意外终端之类的)

下面是ha的脚本 这个就是mqtt 很简单 我也贴下(我就贴2个看下)

#mqtt to tcp
  - platform: mqtt
    name: "Relay1"
    state_topic: "stat/Relay/1"
    command_topic: "cmnd/Relay/1"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "Relay2"
    state_topic: "stat/Relay/2"
    command_topic: "cmnd/Relay/2"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true



好了 这样就可以玩了!欢迎大神帮我优化脚本,哦 这个脚本做开机启动!!!~



评分

参与人数 1金钱 +10 收起 理由
+ 10 很好很强大!

查看全部评分

回复

使用道具 举报

3

主题

286

帖子

2603

积分

版主

懵懂的小白

Rank: 7Rank: 7Rank: 7

积分
2603
金钱
2317
HASS币
0
发表于 2017-12-21 22:24:39 | 显示全部楼层
小白来支持下
回复

使用道具 举报

2

主题

33

帖子

322

积分

中级会员

挖煤的猫

Rank: 3Rank: 3

积分
322
金钱
289
HASS币
0
发表于 2017-12-21 22:26:22 来自手机 | 显示全部楼层
牛逼啊,,,
回复

使用道具 举报

19

主题

457

帖子

8114

积分

元老级技术达人

云淡风轻近午天

积分
8114
金钱
7657
HASS币
0

教程狂人

发表于 2017-12-22 02:04:25 | 显示全部楼层
支持一下,不错哦
你这是现成的继电器哦
稳定性如何呢
回复

使用道具 举报

1

主题

231

帖子

2476

积分

金牌会员

Rank: 6Rank: 6

积分
2476
金钱
2245
HASS币
0
发表于 2017-12-22 09:53:39 | 显示全部楼层
本帖最后由 lzyscgy 于 2017-12-22 09:54 编辑

佩服大神!
这玩意不便宜,家庭遇到集中8路控制的地方也不多。
回复

使用道具 举报

1

主题

159

帖子

555

积分

高级会员

Rank: 4

积分
555
金钱
396
HASS币
0
发表于 2017-12-22 15:42:11 | 显示全部楼层
好的分享。谢谢!
回复

使用道具 举报

1

主题

282

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
金钱
940
HASS币
0
发表于 2017-12-25 07:39:32 | 显示全部楼层
太强了,鬼总~~~
回复

使用道具 举报

2

主题

121

帖子

873

积分

高级会员

Rank: 4

积分
873
金钱
752
HASS币
0
发表于 2017-12-25 15:20:19 | 显示全部楼层
我想问下这个多少钱,从那边买的啊?不方便说的话,私聊我,哈哈
回复

使用道具 举报

6

主题

270

帖子

1072

积分

论坛积极会员

积分
1072
金钱
802
HASS币
0
发表于 2018-1-16 23:58:28 | 显示全部楼层
支持一波,,,大神!~~~~~~~~~~~~
回复

使用道具 举报

14

主题

654

帖子

3826

积分

论坛元老

Rank: 8Rank: 8

积分
3826
金钱
3167
HASS币
10
发表于 2018-1-17 00:10:12 | 显示全部楼层
这个感觉装修的时候直接预留控制线可以搞很多事情
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 08:32 , Processed in 0.069297 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表