https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=自己申请微信公众号的TOKEN

输出结果:  由于aRDUINO串口不支持打印中文所以乱码,但是微信端接受正常。

代码实现:

#include <ESP8266WiFi.h>

#define WEIXIN_TOKEN  "19_qLywZOTSRQsE3NhNthVSL-MCFtpgC26QZZlard0yjaXAxW3G3TtNCnoTneMQrQtK-CcpjsruX084iVuLFBsuVRmJJgYKCSlJhcASOH5To_dHPe7jPj30HpGBIif22Pn3be77Hu8Z56KVs8LTOREbAIAYBO"
#define PRODUCT_TYPE "gh_e93c1b3098b9"
#define PRODUCT_ID "gh_e93c1b3098b9_dae1c2072212185c"
#define host "api.weixin.qq.com"
#define httpPort 80
#define ssid "HUAWEI-H3VBKZ"
#define password "13991320168" void setup() {
Serial.begin(115200);
delay(10); // We start by connecting to a WiFi network Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid); WiFi.begin(ssid, password); //works! while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
} Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
} /*
输入:
String UESRID 微信用户ID
String CONTENT 要发送的内容
输出: 无
*/
void SendMsgToUser(String UESRID,String CONTENT){ String data =(String) "{"
+ " \"touser\":\""+UESRID+"\","
+ " \"msgtype\":\"text\","
+ "\"text\" :"
+ "{ \"content\":\""+CONTENT+"\", }"
+ "}" ; Serial.println("/**************************************************/");
Serial.print("connecting to ");
Serial.println(host); // Use WiFiClient class to create TCP connections
WiFiClient client; if (!client.connect(host, httpPort)) { //works!
Serial.println("connection failed");
return;
} // We now create a URI for the request
String url = "/cgi-bin/message/custom/send";
url += "?access_token=";
url += WEIXIN_TOKEN; int length = data.length(); String postRequest =(String)("POST ") + url + " HTTP/1.1\r\n" +
"Content-Type: application/json;charset=utf-8\r\n" +
"Host: " + host + ":" + httpPort + "\r\n" +
"Content-Length: " + length + "\r\n" +
"Connection: Keep Alive \r\n" +
+"\r\n"
+data
+"\r\n";
// Serial.println(postRequest);
client.print(postRequest); delay(600);
//处理返回信息
String line = client.readStringUntil('\n'); while (client.available() > 0) {
line +='\n';
line += client.readStringUntil('\n'); } Serial.println(line);
client.stop(); Serial.println();
Serial.println("closing connection!"); } int msgnum=0;
void loop() { if(msgnum<100){
msgnum++;}
else { msgnum=0; } delay(10000); String UESRID="ognVI6JsmBGd7lxYTZY4GH29LcNg";
String CONTENT=(String)"这是来自ESP8266发送的第"+msgnum+"条消息:\r\n 电量统计: 98\r\n 空气质量: 89\r\n 连接地址:<a href=http://www.qq.com >!"; SendMsgToUser(UESRID,CONTENT);
}

  

遇到问题:

问题一:

一定时间内,有推送消息限制。20条。如果推送了20条用户没有给公众号发送消息或者互动(点击菜单什么的),微信服务器停止推送消息。

所以每当我从公众号接受20条消息,就要手动给公众号回复消息。

问题二:

  1. {
  2.  
    "errcode":45015,
  3.  
    "errmsg":"response out of time limit or subscription is canceled hint: [ZE1Uxa0498age8]"
  4.  
    }
     
     
     原因是当用户微信不活跃时间超过24小时(此时间当前是多少由腾讯定),不会将信息推送到用户微信公众号

微信硬件平台(八) 4 ESP8266通过微信公众号给用户推送消息的更多相关文章

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

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

  2. .NET微信公众号开发-6.0模板消息

    一.前言 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板 ID向用户主动推送提醒.通知消息.这个意思也就 ...

  3. 免注册公众号的三种微信推送消息服务的C#代码实现

    有时候我们需要监控一些网络上的变化,但是每次去刷新网页却又很麻烦,而且大部分刷新的时候网页并没有更新.那么有没有一个工具,可以监控网页变化,并将变化的结果推送到手机微信上呢? 这里有很多应用场景,比如 ...

  4. $Django 支付宝支付,微信服务号推送消息 (测试需要把应用程序部署到服务器上)

    一 支付宝支付 大概 支付宝支付 正式环境:需要用营业执照去申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appDaily.ht ...

  5. java-给微信推送消息 利用企业微信

    目的:给关注用户推送消息 场景:自动化测试,运维监控,接口访问等报错预警.例如线上接口报错,发送提醒消息 准备工作: 1:注册企业号(为什么不用公众号呢?) 企业号注册 2:常用参数介绍: 1:COR ...

  6. asp.net 实现微信公众平台的主动推送信息

    通过学习借鉴朋友的实现方法进行整理(微信公众帐号主动发送消息给用户,asp.net版本). /// <summary> /// MD5 32位加密 /// </summary> ...

  7. php 微信登录 公众号 获取用户信息 微信网页授权

    php 微信登录 公众号 获取用户信息 微信网页授权 先自己建立两个文件: index.php  和  getUserInfo.php index.php <?php //scope=snsap ...

  8. 微信公众平台主动推送消息(asp.net)

    /// <summary>        /// MD5 32位加密        /// </summary>        /// <param name=" ...

  9. 微信小程序与微信公众号同一用户登录问题

    微信小程序与微信公众号同一用户登录问题 最近在做微信小程序与微信公众号登录合并的接口.整理相关资料以及个人认识的心得写了这篇文章与大家一起分享. 首先,简单说下我遇到的问题是我们的程序调用微信小程序得 ...

随机推荐

  1. AI产品经理成长路

    AI产品经理成长路 https://www.jianshu.com/p/4b98314ad3c0 以下都是自己平时知识的一些总结,只是一些个人的愚见,下面出现的公司.书籍.视频.网站都是自己看过体验过 ...

  2. SD Consultant Year End Activities

    SD Consultant Year End Activities What are the year ending activities to be done for SAP SD?   S.No ...

  3. Javascript 对象 - 日期对象

    日期对象 在JavaScript中提供了Data对象,用于处理和日期有关的内容.通过Data对象可以获取系统时间.设置时间等.Data对象也具有prototype和constructor属性. 1创建 ...

  4. Android 布局巧用之include、merge、ViewStub

    原文链接:https://mp.weixin.qq.com/s/bTA2gztUzqvqER2rz56RRQ 相信大家经常听到include.merge.ViewStub这样的标签,官方也提到这三种布 ...

  5. MyEclipse TestNG插件安装与配置

    MyEclipse TestNG插件安装与配置   by:授客 QQ:1033553122 测试环境 jdk1.8.0_121 myeclipse-10.0-offline-installer-win ...

  6. F5负载的应用IIS日志记录的不是真实IP的处理方法

    如果没有这一项,在服务里添加上 将F5XForwardedFor.dll拷贝到应用目录下 添加筛选器: 名称:F5XForwardedFor 可执行文件:F5XForwardedFor.dll所在的目 ...

  7. js获取选中日期的当周的周一和周日

    js获取选中日期的当周的周一和周日 第一种方法(推荐): function getWeekStr(str) { // 将字符串转为标准时间格式 str2 = Date.parse(str); let ...

  8. Android Studio调试时遇见Install Repository and sync project的问题

    我们可以看到,报的错是“Failed to resolve: com.android.support:appcompat-v7:16.+”,也就是我们在build.gradle中最后一段中的compi ...

  9. 修改minifest使桌面软件支持高dpi

    在VisualStudio中可以很方便的设置manifest以支持高dpi的用户界面.当然也可以手工修改manifest文件来添加对高dpi的支持. QQ在高dpi方面做的尤其差,对高dpi的支持迟迟 ...

  10. python leetcode 字符串相乘

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", num ...