前言:
目前各位老铁们对“js取系统当前时间”可能比较重视,同学们都想要学习一些“js取系统当前时间”的相关资讯。那么小编也在网摘上搜集了一些对于“js取系统当前时间””的相关内容,希望你们能喜欢,咱们一起来了解一下吧!--------在一个时间区间内,由条件触发发送邮件提醒
条件准备:
1、一个nodemcu单片机、数字式人体红外传感器,通过mqtt协议发送数据到tb平台;
2、thingsboard平台已经创建好对应的设备,其设备token已烧录至nodemcu中;
3、nodemcu上电后,可以看到该设备遥测数据已经正常上发;
4、设备通电后,数据按每两秒一条上行数据。当感应到红外线 online为:100,否则为:1;
问题:
需要在某个时间区间内当设备感应到红外线,然后触发一个邮件推送来提醒设备管理人员。并且推送次数至多不超过2条。
规则链:
根据问题描述,可以通过tb中的规则节点来实现这一需求。
重点规则节点:
1、用“Switch”节点来判断是否为“人体红外传感器”的设备数据
2、用“Switch”节点的js代码获取系统时间并定义出有效数据的时间区间
3、用“设备属性集”节点,来实现条件成立后只发送几次邮件提醒。这里需要引入一个变量,用来判断发了几次邮件。
4、用“script”节点来判断这个服务端数据的是否小于2(至多2次)
5、用变换节点中的“to email”节点来创建邮件接收地址
6、用变换节点中的“script”节点,对服务端数据值每次+1操作,并保存属性数据;
7、整个规则链
备注:
nodemcu的代码可参考如下:
#include "ThingsBoard.h"#include <ESP8266WiFi.h>int sensor= 12; // Digital pin D6 ,接人体红外传感器数字OUT口int timeOut = 0;#define WIFI_AP "SSID" // wifi 用户名#define WIFI_PASSWORD "*********" // wifi 密码#define TOKEN "wWMPRLLQYn**********" // 设备Token#define THINGSBOARD_SERVER "3.*.*.*" #define PORT 1883 // Baud rate for debug serial#define SERIAL_DEBUG_BAUD 115200// Initialize ThingsBoard clientWiFiClient espClient;// Initialize ThingsBoard instanceThingsBoard tb(espClient);// the Wifi radio's statusint status = WL_IDLE_STATUS;void setup() { pinMode(sensor, INPUT); // declare sensor as input pinMode(Status, OUTPUT); // declare LED as output // initialize serial for debugging Serial.begin(SERIAL_DEBUG_BAUD); WiFi.begin(WIFI_AP, WIFI_PASSWORD); pinMode(LED_BUILTIN, OUTPUT); InitWiFi();}void loop() { delay(2000); if (WiFi.status() != WL_CONNECTED) { reconnect(); } Serial.println("444444444"); Serial.println(WiFi.localIP()); if (!tb.connected()) { // Connect to the ThingsBoard Serial.print("Connecting to: "); Serial.print(THINGSBOARD_SERVER); Serial.print(" with token "); Serial.println(TOKEN); if (!tb.connect(THINGSBOARD_SERVER, TOKEN, PORT)) { Serial.println("Failed to connect"); return; } } Serial.println("Sending data..."); // Uploads new telemetry to ThingsBoard using MQTT. // See ; // for more details long state = digitalRead(sensor); Serial.println(state); // 增加延时处理,当红外感应从高电平变为低电平后,做一个延时处理给平台推送更多有效数据; // 减轻数据波动 if (state == HIGH) { tb.sendTelemetryInt("online", 100); digitalWrite(LED_BUILTIN, LOW); // Turn the LED off by making the voltage HIGH timeOut = 0; } else { timeOut++; } if(timeOut >= 10){ Serial.println("Motion absent!"); tb.sendTelemetryInt("online", 1); digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on (Note that LOW is the voltage level }else{ tb.sendTelemetryInt("online", 100); digitalWrite(LED_BUILTIN, LOW); // Turn the LED off by making the voltage HIGH } tb.loop();}void InitWiFi(){ Serial.println("Connecting to AP ..."); // attempt to connect to WiFi network WiFi.begin(WIFI_AP, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to AP");}void reconnect() { // Loop until we're reconnected status = WiFi.status(); if ( status != WL_CONNECTED) { WiFi.begin(WIFI_AP, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected to AP"); }}
标签: #js取系统当前时间