假期归来,年轻人不讲武德,上班摸鱼,竟在办公室用 IoT 技术监控老板行踪!...

虽然小编已融入打工人队伍多年,在电脑前刷头条、看B站的时候,总是担心背后,有老板来了

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

01

老板行踪监控技术方案

e6e4cd6a3b48b2ad88fad29563474b67.png

首先,众筹一块 乐鑫 ESP-EYE 本地人脸识别开发板;

其次,偷偷录入老板人脸信息;

然后,把开发板连接阿里云 IoT 物联网平台;

接着,通过规则引擎把人脸识别数据流转到函数计算;

最后,在函数计算中调用钉钉群机器人,完成老板来了告警!

02

乐鑫 ESP-EYE 人脸识别

99e3cb41b6e7f8ef4539edf13eab1726.png

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

烧录人脸识别程序

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

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

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

47c1f113e16b7ba63fbcfb577ce2fd8b.png

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

97822c1456a2530bdce2a933b9e85647.png

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

15f5b5de3d613a6e608e699d49e84e12.png

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

0e07f983822982fb6ed999296d347705.png

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

72c79daa73ea680ce970b3bfc6ff3a3f.png

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

f1df91de189e2e90f46a8ae6fa4fb319.png

录入老板人脸图片

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

52b84e1c417e6a2b07ad3243215b88d0.png

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

40868d9a06e8e417b2137b606f4b974a.png

03

云端钉钉群告警逻辑开发

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

物联网开发

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

53d436d251ffae37da5403dc0c5bae14.png

物模型属性:

c66ff8033d7d5381bd11cb4bd9122f30.png

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

ef162585b26b784c2149ff6bc37add58.png

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

855b620e879d022ded5e81c30a6a841b.png

数据处理SQL编写如下:

34b59f21a6b67f929b0ce23fbf454b8c.png

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

950f74d6de9dbf898b296e71811dff4c.png

函数计算开发

函数计算脚本用于接收 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',
        port: 443,
        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();
};

钉钉群告警配置

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

b64e3c0d7fab5d5b541eb3a3317f6c0f.png

04

乐鑫 ESP-EYE 开发板上云

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

fe8ce95f12f576bbe4806a29f6ff87c3.png

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

/* 设备的三元组信息 */
#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开发板上。

b09a6d83ed7b63e47c64fa6f1779c038.png

05

现场部署监控

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

1608461b9897b38b39b5af5bca52004a.gif

终于,老板来了!

而且是老板三连,是来发开年红包5b3cff2c9d65140f5cfae16360e3d4b5.png了吧!

2a15d9b5faacc6e9b443c323be90a2c0.png

最后,在AIGC人工智能大模型时代,给大家推荐两个不错的专栏。

7d542b50f4625d8d971703a9d2f389a5.png

87c7531418413746aa1eb3addea60696.png

往期推荐

4400929c7003212a63fbee1e3c594a20.png

☞ 高德地图: 红绿灯倒计时大揭秘

☞ 高速“车牌付”会取代 ETC 吗?

☞ 屋顶光伏项目躺着赚钱 or 新型骗局

☞ 我为什么放弃中移OneNET平台?

☞ 这苦逼的IoT物联网行业我坚持了十年

☞ 云厂商「物联网平台」不香了吗?

7b74bbfa42a4743772abc59357eea7da.png

0f442d67585553eaf5216a8a42b88529.png

24dab3ca81fd4cb12c1a476eefbaa524.gif

6d99e31739f029da0f793d3830d56e08.gif

5faf0c97ab7a14d6da287f6672342099.gif

6511b7f7383b8169f13afe7e973a5ccc.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值