精易论坛

标题: 易语言+micropython单片机实现公众号远程控制继电器开关抽水 [打印本页]

作者: callme大大    时间: 2022-3-6 11:40
标题: 易语言+micropython单片机实现公众号远程控制继电器开关抽水
本帖最后由 callme大大 于 2022-3-6 11:45 编辑

警告:  需要具备基本的电路常识,220V 乱接线,存在触电风险!!
需要准备:
软件端:公众号一个,可以是个人的订阅号。易语言和sunny服务端模块套件。  我已经用这个做好了公众号套件(见尾部源码)
硬件端:ESP32开发板一个(刷micropython固件
),18650电池组,继电器一个     大概成本50元。


实现总体效果:

效果演示视频:https://www.douyin.com/video/7071819287652027684



公众号后端:


原理概述,
esp32 WIFI联网,访问你的公众号套件程序,这里是把公众号和服务端做到一起了。 本机电脑使用花生壳内网穿透。  当然你也可以直接内网访问。
硬件端作为下位机,只负责连接服务端,和收命令,开关继电器,至于什么时候开,什么时候关,完全由服务端决定。
软件端,也就是公众号服务端,负责接收命令,识别并返回json。传输开关参数0和1,开关的时间,这个案例里是抽水的时间参数,你可以根据自己的项目自己改。


软件 - VX公众平台-服务端.zip (878.89 KB, 下载次数: 205)

最后献上源码,源码写的比较乱,但语法应该是没什么问题,看的不舒服轻喷。
部分代码,需要提出来说明下,一个是服务端的链接这里是我的花生壳生成的,还有个是WIFI的账号密码,一共要改的就这三个东西,非常简单。



#####客户端的代码片段开始
#连接WiFi
def connectWifi(ssid,passwd):   
  global wlan
  wlan = network.WLAN(network.STA_IF)
  wlan.active(True)   #激活网络
  wlan.disconnect()   #断开WiFi连接
  wlan.scan()
  time.sleep(1)
  wlan.connect(ssid, passwd)   #连接WiFi
  a=0
  while(wlan.ifconfig()[0] == '0.0.0.0'):   #等待连接
    time.sleep(1)
    a=a+1
    print( str(a)+"次ip:"+wlan.ifconfig()[0])
    if a>300:
        connectWifi(SSID,PASSWORD)
  return True
def choushui_api():
    state=0
    t=0
    try:
        dic=json.loads(urequests.get("http://xxxxxx").text)            #这里要改成你自己的花生壳链接
        state=int(dic["choushui"])
        t=int(dic["choushui_time"])
    except:
        print("网络异常,正在检查")
        state=-1
        if wlan.ifconfig()[0] == '0.0.0.0':   #等待连接            
            print("连接异常,正在尝试连接WIFI")
            connectWifi(SSID,PASSWORD)
    gc.collect()  
    return state,t
def choushui(t):
    msg=""
    for  a in range(4):
        #告知服务器已经开始抽水
        dic=json.loads(urequests.get("http://huang582716403.vicp.cc/api?state=1&time="+str(t)).text)        
        msg=dic["msg"]   
        if(msg=="ok"):
            break
        time.sleep(a)
    Relay.value(1) # 打开继电器   
    b=int(t/10)
    for a in range(b):
        time.sleep(10)
        state,t=choushui_api()
        if(state==0):
            break
    Relay.value(0)# 关闭抽水   
    for a in range(6*60*6):        
        time.sleep(10)
        dic=json.loads(urequests.get("http://huang582716403.vicp.cc/api?state=0&time="+str(t)).text)        
        msg=dic["msg"]
        if(msg=="ok"):
            break        
    return True

# 初始化工作
def makerobo_setup():
    global Relay
    global SSID,PASSWORD
    global wlan
    wlan = None  #wlan
    SSID = "ap_server"  #修改为你的WiFi名称
    PASSWORD = "hr582716403"  #修改为你WiFi密码
    Relay = machine.Pin(16,machine.Pin.OUT) # 设置Pin模式为输出模式
    Relay.value(0) # 关闭继电器


connectWifi(SSID,PASSWORD)

#####客户端的代码片段结束






















作者: Conquer    时间: 2022-3-6 12:00
沙发沙发
作者: love355024    时间: 2022-3-6 12:26
太厉害了吧
作者: xjshuaishuai    时间: 2022-3-6 13:02

作者: 78226800    时间: 2022-3-6 13:13
太强大了!!!!
作者: 牙子    时间: 2022-3-6 13:41

作者: callme大大    时间: 2022-3-6 14:20
补充一下,这里单片机端的继电器一共就三根线接线,控制线要接  GP16,至于电源接线就随意了,GND是负极,3.3V是正极输出。
作者: quary888    时间: 2022-3-6 19:44
谢谢楼主分享!!! 好人一生平安!!!
作者: aneeo    时间: 2022-3-6 19:59
不错的思路 支持下
作者: jingyi11023995    时间: 2022-3-7 08:29
公众号难搞……
作者: qbb1822    时间: 2022-3-7 09:12
感谢分享,学习中。。。
作者: wuqingg    时间: 2022-3-7 10:29
这样的帖子就应该得到支持和鼓励
作者: Ls60    时间: 2022-3-7 19:33
大佬,膜拜!
作者: xkso    时间: 2022-3-8 10:13
顶一下好好好好好好好好好好好好好好好好好好好好
作者: jlh200    时间: 2022-3-8 11:15
支持开源~!感谢分享
作者: barrylp    时间: 2022-3-8 15:07
牛,感谢分享!
作者: tsf521    时间: 2022-3-8 22:46
牛,感谢分享!
作者: aerfa    时间: 2022-3-9 03:57
缺少关键模块
作者: callme大大    时间: 2022-3-9 10:18
aerfa 发表于 2022-3-9 03:57
缺少关键模块

有疑问的可以进群:143303889
作者: ghost猪    时间: 2022-3-9 21:48

作者: plt1111    时间: 2022-3-10 00:59
支持开源~!感谢分享
作者: 邓伟伟    时间: 2022-3-14 17:47
123333313222222222
作者: pq9999    时间: 2022-3-15 20:02
法国使馆和上市公司
作者: welking    时间: 2022-3-16 22:56
顶,学习一下
作者: yxj123    时间: 2022-3-17 15:09
顶,学习一下
作者: yxj123    时间: 2022-3-17 15:13
顶,学习一下
作者: yxj123    时间: 2022-3-18 13:46
顶,学习一下
作者: 渁煑渔    时间: 2022-3-18 14:53
不错,学习公众号来的
作者: Toomy    时间: 2022-3-18 20:31
一个问题: 公众号的服务对接链接,如果我只有公网ip 没有域名的情况下(也不nei网穿透),怎么填写,因为不能填写带端口的情况
作者: a22558577    时间: 2022-3-19 14:29
我来看看,这是什么东东
作者: callme大大    时间: 2022-3-20 11:00
Toomy 发表于 2022-3-18 20:31
一个问题: 公众号的服务对接链接,如果我只有公网ip 没有域名的情况下(也不nei网穿透),怎么填写,因为 ...

你有公网IP直接填IP做域名啊,没玩过网站吗,类似 http://192.168.1.1/
作者: Toomy    时间: 2022-3-20 11:46
callme大大 发表于 2022-3-20 11:00
你有公网IP直接填IP做域名啊,没玩过网站吗,类似 http://192.168.1.1/

好的 谢谢哈!
作者: pq9999    时间: 2022-4-9 20:49
yr返回日日日日日日欢迎欢迎
作者: 383586982    时间: 2022-4-10 18:54
牛B
作者: 1974861632    时间: 2022-4-11 10:20
学习学习111111sdsdsd
作者: a6391000    时间: 2022-4-11 10:24
有开发板的购买链接吗 ?不知道购买那个啊

作者: a6391000    时间: 2022-4-11 10:34
支持库有下载地址吗?我缺3个支持库啊啊啊啊。。。。。。。
作者: jhaa888888    时间: 2022-4-11 11:43
牛逼呀,学习一下,谢谢楼主
作者: 易友软件    时间: 2022-4-11 14:11
易语言+micropython单片机实现公众号远程控制继电器
作者: xgtxgt    时间: 2022-4-11 14:25
支持库麻烦再提供一下。
作者: callme大大    时间: 2022-4-11 20:46
a6391000 发表于 2022-4-11 10:24
有开发板的购买链接吗 ?不知道购买那个啊

esp32 普通版,s版,精简版全都可以,通用。我这个测试的是精简版。
作者: callme大大    时间: 2022-4-11 20:49
xgtxgt 发表于 2022-4-11 14:25
支持库麻烦再提供一下。

有几个是直接删掉就行的,。应该都带了。如果确实哪个没有到群里下载。

作者: princebuji    时间: 2022-4-18 08:19
这个我喜欢!支持!棒
作者: princebuji    时间: 2022-4-18 08:45
NanMuModule?这是什么
作者: shjcpc    时间: 2022-4-18 08:52
下载了,谢谢分享
作者: callme大大    时间: 2022-4-21 14:47
princebuji 发表于 2022-4-18 08:45
NanMuModule?这是什么

不需要的模块
作者: 初学易语言    时间: 2022-4-22 20:30
楼主是大神
作者: 渡不得……    时间: 2022-5-21 22:04
硬件端 这个需要自己焊接什么的吗 还是直接有成品 大佬带一带 也想整一个
作者: 不想低调    时间: 2022-5-24 12:21
膜拜大神,虽然看不懂
作者: jingyigg    时间: 2022-6-6 20:12
楼主这好厉害,不过为什么用语音指令,不怕误识别吗
作者: jingyigg    时间: 2022-6-6 20:16
很有意思,请问这个有购买连接吗ESP32开发板一个(**icropython固件),18650电池组,继电器一个     大概成本50元
作者: jingyigg    时间: 2022-6-6 20:20
大佬有没有考虑做一个企业VX的服务器套件,感觉现在企业VX没公众号那么多限制,更多可玩性
作者: jingyigg    时间: 2022-6-20 17:14
你好,楼主大大,我看了一下代码,你的语音回复是通过TX云的文本合成语音生成mp3文件,然后通过公众号的临时素材接口上传,可是我看企业VX的api文档里面说语音素材只支持amr格式,有什么办法转换呢
作者: jingyigg    时间: 2022-6-20 17:27
你那个素材_临时上传是不是要认证公众号才能使用的接口
作者: callme大大    时间: 2022-6-21 20:42
jingyigg 发表于 2022-6-20 17:14
你好,楼主大大,我看了一下代码,你的语音回复是通过TX云的文本合成语音生成mp3文件,然后通过公众号的临 ...

你是想做企业VX吗?可以加我下V  582716403,你这样说描述不够清晰。
作者: jingyigg    时间: 2022-6-21 22:05
callme大大 发表于 2022-6-21 20:42
你是想做企业VX吗?可以加我下V  582716403,你这样说描述不够清晰。

我看了api文档,原来公众号的临时素材上传语音素材是支持mp3格式和amr格式,可是需要认证的公众号才能调用临时素材上传接口。然后企业VX的临时素材上传只支持amr格式,想用企业VX,像你的展示视频那样后台回复语音,可是文本转语音生成的是mp3,上传上去播放不出声音的
作者: Chrismk    时间: 2022-7-7 16:47
膜拜大神
作者: 我爱小妞    时间: 2022-7-24 04:40
有没有可能 一个服务器能控制多个继电器呢
作者: 天外飞雪    时间: 2022-7-30 21:35
缺少关键模块
作者: s468161015    时间: 2022-7-30 21:38
我还以为用易语言写单片机程序嫩
作者: 电子发烧友    时间: 2023-2-16 17:45
这样的帖子就应该得到支持和鼓励
作者: Christmas    时间: 2023-7-15 16:11
是这么理解吗?
发送消息到公众号 -->  公众号套件处理后,通过nei网穿透发送开关0|1到个人PC  --> PC控制ESP32  




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4