esp8266 发送消息给钉钉机器人-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 659|回复: 0

esp8266 发送消息给钉钉机器人

[复制链接]
发表于 2022-9-4 15:26 | 显示全部楼层 |阅读模式
钉钉机器人使用
大家可以从官网了解如何添加一个钉钉机器人 https://open.dingtalk.com/document/robots/custom-robot-access
源码
直接附上源码,webhookUrl 为钉钉机器人的webhook地址,格式类似这种:“https://oapi.dingtalk.com/robot/send?access_token=XXXXXX”

  1. #include <Arduino.h>
  2. #include <ESP8266WiFi.h>
  3. #include <ESP8266HTTPClient.h>
  4. #include <WiFiClientSecureBearSSL.h>
  5. #include <ArduinoJson.h>

  6. //WiFi连接信息(注意:需要自行修改以下内容否则ESP8266无法连接WiFi)
  7. #define ssid "xxxx"   //WiFi名称
  8. #define password "xxxxxxx"  //WiFi密码


  9. String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx";

  10. int PIR_sensor = 12;    //指定PIR模拟端口 A5
  11. int LED = 2;           //指定LED端口 13
  12. int val = 0;            //存储获取到的PIR数值


  13. void httpPostRequest(String requestUrl, String body) {
  14.   Serial.println("http post " + String(requestUrl) + " body \n" + String(body));
  15.   WiFiClientSecure client;
  16.   HTTPClient httpClient;
  17.   client.setInsecure();
  18.   httpClient.begin(client, requestUrl);
  19.   httpClient.addHeader("Content-Type", "application/json");
  20.   int httpResponseCode = httpClient.POST(body);;
  21.   Serial.println("http post " + String(requestUrl) + " code: " + httpResponseCode);
  22.   if (httpResponseCode == HTTP_CODE_OK){
  23.       String resp = httpClient.getString();
  24.       Serial.println("Send post success, resp " + String(resp));      
  25.   }
  26.   else{
  27.       Serial.println("Send post request failed!");
  28.   }

  29.   httpClient.end();  

  30. }


  31. void send_dingding_msg(String msg){
  32.    String body = "{"msgtype": "text","text": {"content":""+msg+""}}";
  33.    httpPostRequest(webhookUrl, body);
  34. }

  35. //Wifi init
  36. void wifi_init(){
  37.   Serial.begin(9600);
  38.   WiFi.mode(WIFI_STA);        //设置ESP8266为无线终端工作模式
  39.   
  40.   WiFi.begin(ssid, password); //连接WiFi
  41.   Serial.println("");
  42.   Serial.println("Connecting"); Serial.println("");
  43.   
  44.   // 等待连接
  45.   while (WiFi.status() != WL_CONNECTED) {
  46.     delay(500);
  47.     Serial.print(".");
  48.   }

  49.   //成功连接后通过串口监视器显示WiFi名称以及ESP8266的IP地址。
  50.   Serial.println("");
  51.   Serial.print("Connected to ");
  52.   Serial.println(ssid);
  53.   Serial.print("IP address: ");
  54.   Serial.println(WiFi.localIP());
  55. }

  56. void setup() {
  57.   pinMode(PIR_sensor, INPUT);   //设置PIR模拟端口为输入模式
  58.   pinMode(LED, OUTPUT);         //设置端口2为输出模式
  59.   wifi_init();
  60.   
  61. }

  62. void loop() {
  63.   val = digitalRead(PIR_sensor);    //读取A0口的电压值并赋值到val
  64.             //串口发送val值
  65.   delay(2000);
  66.   if (val == HIGH)//判断PIR数值是否大于150,
  67.   {
  68.     digitalWrite(LED,HIGH);  //大于表示感应到有人
  69.     Serial.println("detect !!!!");  
  70.     send_dingding_msg("告警:detect a human!");
  71.   }
  72.   else
  73.   {
  74.     digitalWrite(LED,LOW);   //小于表示无感应到有人
  75.   }
  76. }
复制代码
钉钉机器人发送示例
640.jpg

欢迎关注我的公众号“玩转esp8266”,原创技术文章第一时间推送。
原文链接https://mp.weixin.qq.com/s/BjlUmcrUdqxLKo0pjeyaJw

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 05:34 , Processed in 0.164279 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表