开发微信控制各种智能设备的源码(用微信控制家里的各种智能设备)

一、公网云端部分

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 微信公众号上配置指向咱们的公网服务器
这个可以用测试账号就够我们自己家用控制了

开发微信控制各种智能设备的源码(用微信控制家里的各种智能设备)

import os,sys,re,json,random,logging

debug=True
wechat_port=8001 #werobot监听的端口,需要apache反向代理映射下

#对接微信公众号的相关参数设置
WechatAppID='wxf02565d1b6123456'
WechatAppSecret='f04b29ee7ef5242f9928194baa123456'
WechatToken='wechatTokenPassword'
WechatEncodingAESKey='AhWkQssrZflDg8ARx9WMKXBdaMxOCteW12345678'

ssh_start_port=45001 #远程ssh反弹使用的起始端口
ssh_end_port=45999 #远程ssh反弹使用的结束端口

broker = 'localhost' #MQTT服务器地址
port = 1883 #MQTT服务器的端口,要确保防火墙上放开了这个端口,可以访问
username='sunbeat' #MQTT用户名
password='mypassword' #MQTT密码
client_timeout=60 #如果client有60s还没有心跳过来,则认为离线了
check_heartbeat=30 #每30s检查一次上次心跳时间

baidu_ak='IPHDEesBVxQaVxbH1G6SWwok12345678' #百度用ip查地址,用gps查地址的api接口ak(自己申请)

wechat_db='stonehead.db' #存放微信关注用户等信息的sqlite3数据库

mail_params={
'smtp_server':'smtp.qq.com', #用于发送邮件的smtp服务器
# 'smtp_port':587,
'smtp_port':465, #发邮件服务器端口
'fr_account':'12345678@qq.com', #发邮件账号
'password':'qq_smtp_password', #发邮件账号密码
}

#以下部分可以不用修改
#当前程序运行的绝对路径
app_path = os.path.dirname(os.path.abspath(sys.argv[0]))
#程序输出的log名字,这里用了"程序名.log"的格式
log_file = os.path.basename(sys.argv[0]).split('.')[0] + '.log'
log_file=os.path.join(app_path,log_file)

voice_dir=os.path.join(app_path,'voice') #存放语音消息的本地缓存目录
video_dir=os.path.join(app_path,'video') #存放视频消息的本地缓存目录
image_dir=os.path.join(app_path,'image') #存放图片消息的本地缓存目录

#定log输出格式,配置同时输出到标准输出与log文件
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
log_format= logging.Formatter(
'%(asctime)s - %(name)s - %(filename)s- %(levelname)s - %(message)s')
log_fh = logging.FileHandler(log_file)
log_fh.setLevel(logging.DEBUG)
log_fh.setFormatter(log_format)
log_ch = logging.StreamHandler()
log_ch.setLevel(logging.DEBUG)
log_ch.setFormatter(log_format)
logger.addHandler(log_fh)
logger.addHandler(log_ch)

源码下载地址

相关文章