使用HTTPS协议向微信公众号推送消息,(使用ESP8266的低成本实现)

前几天被朋友问到这个东西的实现方式,花了一下午时间研究一下,特此记录。没有排版比较乱。

一丶前往微信公众平台注册微信微信公众号,一个邮箱只能注册一种类型的公众号,这里使用订阅号。如果想让推送的消息显示在微信消息列表的话则需要注册为服务号(需要费用)。

注册成功后长这样,途中可能会有其他提示,正常填写资料就可以了

这个号并不是我们需要的,因为没有进行微信认证,微信认证比较麻烦,而且需要一定的费用,我们需要再申请一个测试号

点击开发者工具

公众平台测试账号

成功后会得到下面的两个信息,这两个信息是用来https GET访问令牌需要的。访问令牌是调用API的关键信息

回到上一个界面进入开发者文档

找到获取访问令牌的URL(需要传入两个参数,就是上面提到的那两个)

找到以下的关键信息,复制下来(只需要这两个接口就能实现微信推送消息)

上面的post接口中需要传入请求体,格式必须是json格式(不了解json数据的可以先去百度一下,方便后续操作)

touser 表示用户ID

template_id 表示模板ID

url 表示推送的消息中附加的网址链接

miniprogram 代表附加的小程序链接

client_msg_id 消息ID

data 对应的是消息模板的关键键

接下来定义一个消息模板

点击新增测试模板

模板标题代表推送给用户消息的标题

所有的模板数据以  {{  开头,以.DATA}} 结尾

添加三条模板数据就如上所示,one tow three 分表代表json数据的三个键盘,推送数据时也要通过对应的键。

里面的文字会原始的显示在推送通知当中。添加完毕后会有一个模板ID,模板ID对应上面的 template_id

接下来使用API tester 模拟一次推送过程

首先是获取访问令牌

GET 地址https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 参数需要自行更改为自己的

请求成功后会返回一条json数据 包含两个信息 :token和 有效时间  7200秒也就是两个小时,用来调试完全够用

先把token复制下来保存

找到推送模板消息的URL https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

我讲模板消息定义为一下内容,传入自己的用户ID和模板ID,用户ID就是公众号粉丝列表中的加密后的微信号

开始推送

对应用户于公众号的消息界面会接到一下通知,这就说明推送成功了

原理已经搞明白了,接下来就是使用不同的语言实现了,我这里使用的是MicroPython,之前考虑过使用Arudino的方式去做,但是Arduino

只有http的库,https不太好用

IDE使用的是Thonny, 8266MicroPython固件版本使用V1.19.1

代码和工具都放在gitee仓库中 仓库地址:https://gitee.com/zhangzongxiang/wechat-test-project.git

使用Thonny将固件烧录到8266后,将代码复制到系统中

boot 就是启动文件,开发版在每次复位后会执行boot里面的程序(这个文件是固件中自带的)

board 里面包含了外设的初始化(包括LED灯,按键,Wifi的链接)

body.json 是post请求体文件,因为文件太大所以使用文件进行存放

config.json 包含配置信息。(WiFi名称,密码,appid,app密钥,请求天气的城市)

mian 和 Task 就是主要的程序文件了,有什么问题可以翻翻代码

body 文件中只需要更改两个值(用户ID,和模板ID)

config文件中的所有的值都需要更改(键不需要动)

程序运行后按下开发板上的按键一秒松开,天气接口和随机生成古诗的接口程序中有,也可以自行修改

使用ESP8266nodeMCU 向微信推送模板数据的更多相关文章

  1. python 微信推送模板消息

    #!/usr/bin/env python #-*- coding: utf-8 -*- import httplib import json import MySQLdb #从数据库中获取acces ...

  2. SpringBoot 实现微信推送模板

    导读 由于最近手头上需要做个Message Gateway,涉及到:邮件(点我直达).短信.公众号等推送功能,网上学习下,整理下来以备以后使用. 添加依赖 在SpringBoot项目中添加依赖 < ...

  3. 微信公众号实现无限制推送模板消息!可向指定openID群发

    微信认证的服务号才有推送模板消息接口所以本文需要在认证服务号的情况下学习 以上就是模板消息,只有文字和跳转链接,没有封面图.在服务号的后台添加功能插件-模板消息即可. 模板消息,都是在后台选择一个群发 ...

  4. 微信开发之获取openid及推送模板消息

    有很多的朋友再问我怎么获取code,openid之类的问题,在这里我就给大家分享一下. 在做微信支付是需要获取openid的,推送模板消息也是需要openid包括其他一些功能分享等也都是需要的,ope ...

  5. C#微信接口之推送模板消息功能示例

    本文实例讲述了C#微信接口之推送模板消息功能.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...

  6. day93之微信推送

    python之微信推送详解 用什么推送   -邮件   -微信推送   -短信推送微信推送   -公众号(不能主动给用户发消息)    -认证的公众号:需要营业执照,需要交钱,可以发多篇文章    - ...

  7. 让微信推送Jenkins构建消息

    Jenkins作为开发必备之神器,各家大小公司都在使用.Jenkins自身内置了基于邮件推送构建结果的功能.但是随着移动互联网的发展,邮件这玩意已经越来越少使用了,是否有一种办法能把jenkins构建 ...

  8. 接入WxPusher微信推送服务出现错误:Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

    背景 使用WxPusher微信推送服务 ,可以及时的将服务的一些运行异常信息,发送到自己的微信上,方便了解服务的运行状态(PS:这个服务是免费的). 你可以在这里看到WxPusher微信推送服务的接入 ...

  9. 使用WxPusher给自己的个人微信发送提醒消息(WxPusher微信推送服务)

    1.背景 我们很多时候,我们在服务器上运行软件,发生一些业务异常,需要给我们发送一个及时的提醒,或者是使用一些耗时软件,比如抢车票,抢课,刷优惠券当任务运行成功以后,也需要及时的发送消息给自己 ,告诉 ...

随机推荐

  1. NC15553 数学考试

    NC15553 数学考试 题目 题目描述 今天qwb要参加一个数学考试,这套试卷一共有 \(n\) 道题,每道题qwb能获得的分数为 \(a_i\) ,qwb并不打算把这些题全做完, 他想选总共 \( ...

  2. 全国土壤阳离子交换量CEC空间分布数据

    数据下载链接:百度云下载链接​ 土壤阳离子交换量,简称CEC,是指土壤胶体所能吸附各种阳离子的总量.土壤阳离子交换量 cation exchange capacity 即CEC 是指土壤胶体所能吸附各 ...

  3. 函数式(Functional)接口

    public class LambdaTest2 { @Test public void test1(){ happyTime(500, new Consumer<Double>() { ...

  4. C++指针探究

    周五听实习师父指点了一下C++的强制类型转换概念,师父说了一句"强制类型转换其实就是告诉编译器不用检查当前位置的类型,程序猿自己知道类型". 今天整理之前的学习笔记的时候又发现,在 ...

  5. HMS Core图形图像技术展现最新功能和应用场景,加速构建数智生活

    [2022年7月15日,杭州]HUAWEI Developer Day(华为开发者日,简称HDD)杭州站拉开帷幕.在数字经济不断发展的今天,开发者对图形图像的开发需求更加深入和多样化,从虚拟环境重构到 ...

  6. WSL2安装Ubuntu20.04

    前言:听说WSL2需要Window版本在1904以上(我的window版本是1909,所以未能验证真实性) 启用WSL 控制面板 → 程序 → 程序和功能 → 启用或关闭Windows功能 勾选 适用 ...

  7. git 生成key并添加key(Windows)

    简介 一般来说,在项目代码拉取或者提交前都需要添加项目权限,除此之外也需要将对应设备的public key添加至对应的git上,因此需要生成public key 步骤 1.安装git插件(Window ...

  8. DP の 百题大过关(5/100)

      动态规划自古以来是DALAO凌虐萌新的分水岭,但有些OIer认为并没有这么重要--会打暴力,大不了记忆化.但是其实,动态规划学得好不好,可以彰显出一个OIerOIer的基本素养--能否富有逻辑地思 ...

  9. Deployment之滚动更新策略。

    1.Deployment控制器详细信息中包含了其更新策略的相关配置.kubectl describe命令中输出的StrategyType.RollingUpdateStrategy字段等: root@ ...

  10. 题解【P1833 樱花】

    题目 有 \(n\) 棵樱花,有三种: 只能看一次 最多看 \(A_i\) 遍 能无限看 看每棵樱花都需要一定时间 \(T_i\),求从 \(T_s\) 开始,到 \(T_e\) 结束(时间)最多能看 ...