吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12467|回复: 112
收起左侧

[Python 转载] 用微信控制家里的各种智能设备

    [复制链接]
sunbeat 发表于 2022-2-22 13:34
本帖最后由 sunbeat 于 2022-3-16 18:45 编辑

实现的用法类似如下:
用法1.jpg



具体部署方式:

一、公网云端部分


1.1 mosquitto部署

把Google_stonehead部分,部署在公网的VPS云主机上,我这里用的google的云主机。
在有公网地址的云主机上,安装mosquitto,设置相关的用户名、密码才能访问:
vi /etc/mosquitto/mosquitto.conf
port 1883
allow_anonymous false
password_file /etc/mosquitto/mosquitto.passwd
下面生成密码文件:
[root@instance-1 mosquitto]# touch /etc/mosquitto/mosquitto.passwd
[root@instance-1 mosquitto]# mosquitto_passwd /etc/mosquitto/mosquitto.passwd sunbeat Password:
Reenter password:
然后启动它
[root@instance-1 mosquitto]# systemctl enable mosquitto.service
Created symlink /etc/systemd/system/multi-user.target.wants/mosquitto.service → /usr/lib/systemd/system/mosquitto.service.
[root@instance-1 mosquitto]# systemctl start mosquitto.service
[root@instance-1 mosquitto]# systemctl status mosquitto.service
1.2 部署微信公众号对接程序
修改stonehead_config.py中相关的参数,涉及到百度的接口账号,需要自己申请下
查验如果有不够的python模块,用pip install它们
然后chmod 755 stonehead_wechat.py
./stonehead_wechat.py执行它,确保可以正确执行,并在:8001端口监听了
1.3 apache上配置反向Proxy
在/etc/httpd/conf/httpd.conf中,增加对应的代{过}{滤}理指向,这样访问x.x.x.x/wechat时,就会被apache重定向到:8001端口的stonhead_wechat程序上了
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /wechat http://localhost:8001/
ProxyPassReverse /wechat  http://localhost:8001/

1.4 微信公众号上配置指向咱们的公网服务器
这个可以用测试账号就够我们自己家用控制了

二、家中树莓派上部分

1.1 执行broadlink_learn.py的博联学习程序,对家里的射频遥控器,红外线遥控器进行学习

学习结果,会生成MyBroadlink.ini,我这里面附录的MyBroadlink.ini只是我个人的参考。

1.2 配置miio.ini和mitv.ini中的相关设置参数
miio.ini的设置,要先去学习下miservice的使用,具体可以看
https://github.com/Yonsm/MiService

1.3 配置MsgAct_config.py中相关的参数
这个要根据实际情况来了,百度的账号要提前申请

1.4 启动SubMsgAct.py的主程序
chmod 755 SubMsgAct.py
./SubMsgAct.py
确保没有相关报错,daemon正确启动了。

三、用到的智能设备情况
(由于零零散散近几年陆续购买的东西,有些价格是几年前的,有些当前可能产品已经更新换代了)

核心大脑树莓派:
树莓派.jpg
PS:发现现在还真是芯片荒,树莓派4B都出来,反而3B/3B+的板子现在仍然逆市涨价了……
我这个2019年买的3B+,竟然还升值了,变理财产品了……

核心的主控,博联RM Pro+




小米智能网关



小米智能插座


小米空调伴侣




改家里灯的遥控
由于家里灯不是智能的,因此把它的单板开关改造下,买个带射频控制的,把它装到灯开关面板里面,刚刚好。


家里的几个带风扇的灯
这个风扇灯,本身就带遥控,是射频的,因此可以直接让博联去学习它遥控器的射频信号就可以控制它了。



PS1: 射频的指令码很短,穿墙能力很不错,博联遥控放楼下客厅,还可以很轻松控制楼上最远处屋子里面的灯。而wifi那个屋子就太弱,必须另外延展进去。
PS2:这个用习惯了,感觉还是挺方便的。

一定要把这个自己的公众号放在手机桌面上,特别方便。

一定要把这个自己的公众号放在手机桌面上,特别方便。

一定要把这个自己的公众号放在手机桌面上,特别方便。

会提升很大的幸福感

零零散散折腾了好久,感觉是个不小的工程。

相关代码: wechat_iot.zip (90.01 KB, 下载次数: 43)

https://github.com/sunhanaix/wechat_iot

==========3.1=========
增加了内网树莓派要定期发送心跳信号给MQTT,
公网服务器检测到超时没收到心跳信号时,就发告警给到微信用户,提醒设备离线
增加了内网树莓派启动上线,连接到网络时,会发通知给到管理员微信用户,提醒设备上线。
==========3.1=========
增加了对内网NAT内树莓派管控的远程调度支持。
微信发送ssh指令时,公网服务器会查询当前哪个端口可以使用,MQTT发给内网的树莓派。
树莓派用autossh的端口反弹去连接公网服务器(要提前设置好自动密钥交互,免密登录)。
autossh -R 12345:192.168.x.x:22 [color=var(--color-accent-fg)]user1@x.x.x.x -N
这样可以用ssh x.x.x.x:12345的方式去ssh到内网树莓派上。

==========3.7=========
增加了在网络不好时的容错部分
作为Subscriber时,如果网络不好,设置的keepalive 60s或者600s,会超时,又没反应的情况,调整到30s,实测24小时,还比较稳定;
另外,增加了Subscriber遇到各个action时,都try ... except ..来进行容错,防止action执行失败到时subscriber线程出问题;
对于loopHeartBeat时,对PubMsg增加try ... except ..来进行容错,防止网络失败时,心跳部分线程异常退出。

==========3.9=========
增加了“准后门”接口的支持,便于后期远程维护
微信发送cmd ps -ef|grep python之类命令,可以返回该命令执行结果。
由于微信最多只支持2048bytes的报文,因此只取命令结果的前2048字节的utf8部分。

==========3.11=========
由于vps从google迁移到了搬瓦工,而搬瓦工的ssh端口不是默认的22,增加了端口适配

==========3.16=========

由于有些地方的ISP线路会检测到session没什么流量后,就给关闭了。导致autossh发起的会话被特殊关闭,造成无法管理树莓派。
增加readPorts.py程序,启动后,就自动扫描所有需要关注的端口,造成有流量的假象,保持autossh会话不要被弄成假活状态。

example

example

help

help

免费评分

参与人数 29吾爱币 +26 热心值 +28 收起 理由
happyhq + 1 我很赞同!
zzzzzyihang + 1 + 1 我很赞同!
chowhong + 1 + 1 谢谢@Thanks!
pawpaw2464 + 1 + 1 谢谢@Thanks!
Solei1 + 1 + 1 有点东西
Star0928 + 1 + 1 谢谢@Thanks!
wwh0791 + 1 + 1 牛逼了
Big999 + 1 用心讨论,共获提升!
脑子进秋刀鱼 + 1 用心讨论,共获提升!
清风十里不如你 + 1 + 1 谢谢@Thanks!
veyLucky + 1 + 1 谢谢@Thanks!
孤独尽头是自由 + 1 + 1 我很赞同!
stone009 + 1 + 1 我很赞同!
lixiuxiu + 1 + 1 牛逼了
aaabbbccc + 1 + 1 热心回复!
996781099 + 1 + 1 我很赞同!
it_harry + 1 + 1 我很赞同!
allan911 + 1 + 1 用心讨论,共获提升!
xyaxy0001 + 1 + 1 这个真的很有难度,技术大佬,学习一下
LF7758521 + 1 + 1 我很赞同!
jollna + 1 + 1 我很赞同!
imy8160 + 1 + 1 谢谢@Thanks!
wanfon + 1 + 1 谢谢@Thanks!
米饭丶 + 1 + 1 谢谢@Thanks!
SFY110 + 1 + 1 谢谢@Thanks!
lordship + 1 + 1 谢谢@Thanks!
iokeyz + 1 + 1 用心讨论,共获提升!
zhuroucheng + 1 我很赞同!
开始123 + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| sunbeat 发表于 2022-2-22 14:53
E飞翔 发表于 2022-2-22 14:03
手动打字发送太麻烦,建议做成超链接模式,点击后自动发送对应命令。

我一般用讯飞的语音输入,这类指令类的,基本文字输入准确率很高。
考虑到家里人,还是习惯对着微信语音说话,因此这里面是用了百度的语音转文字,然后再模糊匹配到最接近的那条指令上面去,目前看识别率也可以接受。

因为涉及到有时在家里(NAT内部),有时在公司(NAT外部),做超链接的话,要考虑NAT回流情况,就没做着微信里面。
(不过实际是有一个web界面可以在家里用的)
空调控制web界面.jpg
 楼主| sunbeat 发表于 2022-3-19 09:58
shisatide 发表于 2022-3-17 22:49
牛啊!楼主可以把HDMI切换器加上去嘛?还是说去搜红外射频的兼容?

不知你这个hdmi切换器是什么东西,
如果是小米电视切换到hdmi,其实也可以用micli.py那个脚本调用电视接口,去切换input源。
Television = 2
  TV_Input_Control = 1 #uint8 #rwn
    TV = 1
    DTMB = 2
    AV = 3
    HDMI_1 = 4
    HDMI_2 = 5
  Turn_Off = 2
269960696 发表于 2022-2-22 13:38
eutaxy 发表于 2022-2-22 13:39
相关设备都需要智能的哦
Datch 发表于 2022-2-22 13:50
有点看不懂 有详细一点的吗
sp0770 发表于 2022-2-22 13:50
全智能家电啊!牛B
AMDYYDS 发表于 2022-2-22 13:53
顶一个。不错
mokjf 发表于 2022-2-22 13:57
挺厉害的,我跟着教程试试,有没有具体需要什么基础的硬件,例如,智能网关?!,楼主应该写个清单出来,
E飞翔 发表于 2022-2-22 14:03
手动打字发送太麻烦,建议做成超链接模式,点击后自动发送对应命令。
anbisi 发表于 2022-2-22 14:09
楼主高明,看不明白
lordship 发表于 2022-2-22 14:13
牛啊,牛啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 14:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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