ESP8266/ESP32 + MicroPython (四) 向微信发送通知

前言:互联网 物联网 现在发展都很快,快到几天不看跟不上。

假想一个场景:厨房有个烟雾传感器,一旦触发报警惊天动地,但是主人不在家呢?并不是所有传感器都联到了物业中心,也不是所有物业中心都有人值班,不是所有值班人员都在岗位。。。可悲吧。如果这个传感器可以向微信推送消息呢?

一般来说成套智能家居系统都支持各种传感器,但是一个套餐下来上万元都轻轻松松。我就想要一个烟感报警而已,非要吃全套吗?

于是乎各种 MQTT 平台都能接入各种 带网络功能的 单片机。可是例程都是比较复杂,移植些许麻烦,考虑到开发平台和库的版本更新,网上很多文章copy回来,一次成功还是很难的。。。

其实吧,几乎所有智能控制都是基于“服务器网址+参数” 来实现的,仔细看看物联网平台的说明,找到正确的地址不难。至于参数往往注册账号后会给的。

----------------------------------------------------------------------------------------------------------------

下面进行一个简单实验:

请严格按照步骤来,别急问为什么,回头慢慢想。

ESP8266/ESP32 + MicroPython (四) 向微信发送通知_第1张图片

1、注册 巴法云 账号并登陆 (实验性质免费的)

获得 私钥 / UID 一枚 大概是 569b708650b8888888888888 这样一连串

2、新建一个 主题 / topic DHT22 (选TCP创客云,其他的大同小异,回头自己摸吧)

3、绑定微信 (放心免费的,实在担心用没有开通支付功能的小号吧)

请仔细阅读官方文档几小时。。。这个跳过,回头补课

把以下网址粘贴到浏览器

https://api.bemfa.com/api/device/v1/data/1/push/get/?uid=569b708650b8888888888888&topic=DHT22&wemsg=微信&msg=24.45 ℃

浏览器会反馈一行   “{"code":"40010","status":"sendok"}”

仔细看,这个网址就是以  分割的两段,前面是服务器网址,后面是参数,多个参数以 & 连接。

这样先实现了微信消息发送,至于单片机,看看http例程也就差不多了。

至于不会把自己的 UID topic 替换上面红色部分的也就放弃吧,虽说简单还是需要点悟性。

----------------------------------------------------------------------------------------------------------------

以 micropython 为例,先运行例程看到 DHT22 温度,并能成功联网(两个例程胶水一下)。什么,还不行? 继续折腾,直到正常为止,不然后面玩什么。

引用什么的略,仅仅写下 while 里面的部分

while True:
  d = dht.DHT22(machine.Pin(5))
  d.measure()
  print( d.temperature() , d.humidity() )  
  
  dht_temp = d.temperature() # d.temperature() 虽然结果是浮点,但是本身是个方法,不能直接  str() ,先赋值给一个变量,再str()。。。相当折腾
  dht_hum = d.humidity()    
  sdht_temp = str(dht_temp)
  sdht_hum = str(dht_hum)  
  print(sdht_temp,sdht_hum)    // 输出和上面一样,但是内涵不同了

  payload = 'https://api.bemfa.com/api/device/v1/data/1/push/get/?uid=569b708650b8888888888888&topic=DHT22&wemsg=weixin&msg='
  payload += 'temperatures:' + sdht_temp + '  humidity:' + sdht_hum
  print(payload)
  response = urequests.get(payload)
  print(response.text)
  utime.sleep(60)  # 不要太频繁,避免过量使用账号被停用

跑起来之后,我的手机每分钟提示一下。。。虽然还是有漏收的

你可能感兴趣的:(笔记,单片机,嵌入式硬件)