您现在的位置是:首页 > 文章详情

年轻人不讲武德,上班摸鱼,监控老板行踪!

日期:2020-12-06点击:900

虽然已融入打工人队伍多年,但学生时代,老师站在后窗外的阴影依然挥之不去。在刷头条,看B站的时候,总是担心着老板来了


直到有了ESP-EYE 低成本的人脸识别开发板,结合云上IoT物联网服务,轻松搞定老板行踪监控。无论老板从何处来,钉钉摸鱼群总会收到实时提醒。


一、技术方案

首先,众筹一块ESP-EYE本地人脸识别开发板;其次,录入老板人脸信息;然后,把开发板连接云端IoT物联网平台;接着,通过规则引擎把数据流转到函数计算;最后,函数计算中调用钉钉群机器人,完成老板来了告警!


二、ESP-EYE 人脸识别

ESP-EYE 是一款专注于本地图像识别的开发板,板载ESP32芯片,集成200万像素摄像头,拥有8 MByte PSRAM和4 MByte flash的丰富存储,支持Wi-Fi图像传输与Micro USB调试与供电,可广泛应用于 AI 智能物联网领域的应用开发。



2.1  烧录人脸识别程序

我们基于 Arduino 编程来降低 ESP-EYE 人脸识别程序开发难度。


首先,我们在 Preferences 中新增 arduino-esp32 配置URL:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json


然后,我们在Boards Manager 中搜索并安装esp32 package(1.0.4)。


安装完成后,我们基于CameraWebServer 示例程序做二次开发。


打开 CameraWebServer 文件, 选择 CAMERA_MODEL_ESP_EYE,设置办公室的ssid和password,用于开发板联网。


修改完成后,我们在Tools 中选择Board 为 AI Thinker ESP32-CAM


点击左上角的编译和烧录按钮,等待 Arduino 程序完成编译,烧录到开发板上。稍待片刻,我们在控制台上看到如下输出,代表人脸识别程序已经成功启动。 


2.2  录入老板人脸图片


在同一局域网内,输入控制台网址,进入ESP32人脸识别程序控制台,启动视频推流,开启人脸识别,点击 Enroll Face 来完成老板们的人脸库录入


当有老板经过,我们就会在控制台看到如下日志输出: Match Face ID: 0


三、IoT 物联网平台开发

本地识别成功后,我们需要把老板来了的消息发送到云端,以便完成钉钉群告警。

3.1  创建产品和注册设备

我们在 IoT 物联网平台控制台,创建产品esp-eye摄像头,并添加物模型-属性:老板编号,标识符为bossId,取值范围 0~10

物模型属性:

我们esp-eye摄像头产品下,注册一个设备,并获取到设备身份三元组,用于和云端建立连接时的身份认证。


3.2  配置规则引擎

云产品流转,我们需要配置一条消息流转的规则引擎,把设备上报的物模型数据,流转到函数计算 pushData2DingTalk 中。


数据处理SQL编写:


转发数据到函数计算的配置:


3.3  函数计算脚本

用于接收 IoT平台 传递过来的消息,并实时推送到钉钉群中的函数计算脚本完整内容如下:

const https = require('https');
const accessToken = '钉钉机器人token';
const boss = ["唐僧","观音菩萨","如来佛祖"];

module.exports.handler = function(event, context, callback{
    //IoT平台 传递过来的 event 数据
    var eventJson = JSON.parse(event.toString());

    const postData = JSON.stringify({
        "msgtype""markdown",
        "markdown": {
            "text""老板["+boss[eventJson.bossId]+"]来了,安心工作!"
        },
        "at": {
            "isAtAll"true
        }
    });

    const options = {
        hostname'oapi.dingtalk.com',
        port443,
        path'/robot/send?access_token='+accessToken,
        method'POST',
        headers: {
            'Content-Type''application/json',
            'Content-Length': Buffer.byteLength(postData)
        }
    };
    const req = https.request(options, (res) => {
        res.setEncoding('utf8');
        res.on('data', (chunk) => {});
        res.on('end', () => {
            callback(null'success');
        });
    });

    req.on('error', (e) => {
        callback(e);
    });

    req.write(postData);
    req.end();
};


3.4  钉钉群机器人

打开摸鱼群,群管理>智能群助手,添加自定义机器人,获取到消息推送的Webhook地址,配置到函数计算脚本中。


四、ESP-EYE开发板 上云

设备上云基于 MQTT 协议,因此我们引入 PubSubClient 库,并修改 MQTT 连接的默认参数,具体如下:


设备身份三元组信息和连接参数:

/* 设备的三元组信息 */
#define PRODUCT_KEY       "替换PRODUCT_KEY"
#define DEVICE_NAME       "替换DEVICE_NAME"
#define DEVICE_SECRET     "替换DEVICE_SECRET"
#define REGION_ID         "cn-shanghai"
/* IoT物联网平台Endpoint 域名和端口号 */
#define MQTT_SERVER       PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
#define MQTT_PORT         1883
#define MQTT_USRNAME      DEVICE_NAME "&" PRODUCT_KEY
//用于身份验证的 MQTT_PASSWD和CLIENT_ID
#define CONTENT_STR_FORMAT    "clientIdesp32deviceName" DEVICE_NAME "productKey" PRODUCT_KEY "timestamp%d"
char  CLIENT_ID[80] = {'\0'};
char * MQTT_PASSWD;

WiFiClient espClient;
PubSubClient  client(espClient);


物模型通信的Topic和Payload模板:

/* topic和payload */
#define PROP_POST_TOPIC "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
#define BODY_FORMAT     "{\"id\":\"1234\",\"version\":\"1.0\",\"method\":\"thing.event.property.post\",\"params\":{\"bossId\":%d}}"


当有老板人脸匹配成功后,及时上报到云端

char jsonBuf[128];
sprintf(jsonBuf, BODY_FORMAT, face_id);

if (client.connected()) {
   boolean d = client.publish(PROP_POST_TOPIC, jsonBuf);
   Serial.print("publish:1=成功,0=失败,Code=");
   Serial.println(d);
}


最后,我们把完整版程序烧录到ESP-EYE开发板上。


五、部署监控

辛苦了一整天,大功告成!让我们找个隐蔽的角落,部署起来,守株待老板们!


终于,老板来了!

而且是老板三连,是来发年终奖了吧!



往期推荐



1、39张传感器工作原理GIF图汇总

2、智能手持测温枪开发实践

3、自建MQTT集群迁移阿里云IoT实践

4、IoT+TSDB+Quick BI 搭建楼宇环境监控


本文分享自微信公众号 - IoT物联网技术(IoT-Tech-Expo)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

原文链接:https://my.oschina.net/iotexplorer/blog/4780220
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章