==============2020/05/06更新说明==============
各位大佬非常抱歉,最近太忙了,都没有看这边的回复
基本上一些问题点都已经由楼下的大佬们补充了
1、关于提到的本地图片存放路径,最简单的方法就是你可以将解压缩后的文件放在你的HA目录www文件夹下,你的HA必须是可以公网访问的,不管你是通过域名或者IP地址,比如你可以直接用HA的域名加上绝对路径/local/images/天气/封面图/CLEAR_DAY.jpg访问这张图片,如下两张截图
另外关于docker文件夹的访问可以讲HA的www目录映射给到node-red的容器,如下截图
那么你node-red里面的路径就要写成类似这样,那个网址的乱码是我从网页中直接复制过来中文就成这样了,也可以直接改成中文的
2、还有个关于本地位置的获取,我用的是手机的位置,NR流代码如下,用的高德WEB服务中的坐标转换API。
用这个flow需要修改这边的全局变量。
flow
获取手机位置.txt (3.6 KB)
==============以上是2020/05/06的更新说明==============
基于彩云api 2.4 与 高德地理,所以你需要这两个API…
这个是借(抄)鉴(袭)产生的简洁清爽美观版本
没有小姐姐!
没有小姐姐!
没有小姐姐!
流程图与简要说明:
实际效果图:
<企业版微信会有高亮效果,微信上没有,都是灰色的>
封面图:
<也可以自己去找或者直接用网上的图>
封面图1.zip (3.2 MB)
封面图2.zip (3.4 MB)
flow:
[
{
"id": "92ae69c8.c14858",
"type": "http request",
"z": "c69f2c5.2c677d",
"name": "天气预报",
"method": "GET",
"ret": "obj",
"paytoqs": false,
"url": "https://api.caiyunapp.com/v2.4/{{{cy_api}}}/{{{longitude}}},{{{latitude}}}/forecast.json?unit=metric:v2&alert=true",
"tls": "",
"proxy": "",
"authType": "",
"x": 480,
"y": 400,
"wires": [
[
"8007cbf.2e55a38"
]
]
},
{
"id": "7aab9065.7091d",
"type": "http request",
"z": "c69f2c5.2c677d",
"name": "实时天气",
"method": "GET",
"ret": "obj",
"paytoqs": false,
"url": "https://api.caiyunapp.com/v2.4/{{{cy_api}}}/{{{longitude}}},{{{latitude}}}/realtime.json",
"tls": "",
"proxy": "",
"authType": "",
"x": 480,
"y": 360,
"wires": [
[
"8007cbf.2e55a38"
]
]
},
{
"id": "8007cbf.2e55a38",
"type": "join",
"z": "c69f2c5.2c677d",
"name": "",
"mode": "custom",
"build": "object",
"property": "payload",
"propertyType": "msg",
"key": "topic",
"joiner": "\\n",
"joinerType": "str",
"accumulate": false,
"timeout": "",
"count": "3",
"reduceRight": false,
"reduceExp": "",
"reduceInit": "",
"reduceInitType": "",
"reduceFixup": "",
"x": 610,
"y": 400,
"wires": [
[
"56725bbc.1c1c34"
]
]
},
{
"id": "cc5ecdf1.3335",
"type": "inject",
"z": "c69f2c5.2c677d",
"name": "定时上午8点推送",
"topic": "",
"payload": "{\"mode\":\"time\"}",
"payloadType": "json",
"repeat": "",
"crontab": "00 08 * * *",
"once": false,
"onceDelay": 0.1,
"x": 130,
"y": 380,
"wires": [
[
"da704354.14499"
]
]
},
{
"id": "56725bbc.1c1c34",
"type": "function",
"z": "c69f2c5.2c677d",
"name": "获取数据",
"func": "var data_realtime = msg.payload.realtime.result.realtime\nvar data_forecast = msg.payload.forecast.result\nvar data_georegeo = msg.payload.georegeo.regeocode\nvar r = {};\n\nvar aqi = data_realtime.air_quality.aqi.usa\nif (aqi <= 50 && aqi >= 0) {r['aqi_desc'] = '优';}\nelse if (aqi <= 100 && aqi >= 51) {r['aqi_desc'] = '良';}\nelse if (aqi <= 150 && aqi >= 101) {r['aqi_desc'] = '轻度污染';}\nelse if (aqi <= 200 && aqi >= 151) {r['aqi_desc'] = '中度污染';}\nelse if (aqi <= 300 && aqi >= 201) {r['aqi_desc'] = '重度污染';}\nelse if (aqi > 300) {r['aqi_desc'] = '严重污染';}\nr['aqi'] = aqi\n\nvar skycon_en = data_realtime.skycon\nvar SKYCON_TYPE = {\n 'CLEAR_DAY':'晴天☀️',\n 'CLEAR_NIGHT':'晴夜🌙',\n 'PARTLY_CLOUDY_DAY':'多云🌥',\n 'PARTLY_CLOUDY_NIGHT':'多云️☁️',\n 'CLOUDY':'阴☁️',\n 'LIGHT_HAZE':'轻度雾霾🟨',\n 'MODERATE_HAZE':'中度雾霾🟧',\n 'HEAVY_HAZE':'重度雾霾🟥',\n 'LIGHT_RAIN':'小雨🌧',\n 'MODERATE_RAIN':'中雨☔',\n 'HEAVY_RAIN':'大雨⛈️',\n 'STORM_RAIN':'暴雨⛈️',\n 'FOG':'雾🌫',\n 'LIGHT_SNOW':'小雪🌨',\n 'MODERATE_SNOW':'中雪❄️',\n 'HEAVY_SNOW':'大雪⛄️',\n 'STORM_SNOW':'暴雪☃️',\n 'DUST':'浮尘🌁',\n 'SAND':'沙尘‼️',\n 'WIND':'大风💨'\n}\nr['skycon'] = SKYCON_TYPE[skycon_en]\nr['skycon_en'] = skycon_en\n\nr['uv_des'] = data_realtime.life_index.ultraviolet.desc\nr['temperature'] = data_realtime.temperature\nr['humidity'] = data_realtime.humidity * 100\n\nr['pm10'] = data_realtime.air_quality.pm10\nr['pm25'] = data_realtime.air_quality.pm25\n\nvar probability = data_forecast['minutely']['probability']\nr['probability_30'] = Math.round(probability[0] * 100)\nr['probability_60'] = Math.round(probability[1] * 100)\nr['probability_90'] = Math.round(probability[2] * 100)\nr['probability_120'] = Math.round(probability[3] * 100)\n\nr['description'] = data_forecast.forecast_keypoint\n\nr['coldRisk'] = data_forecast.daily.life_index.coldRisk[0].desc\nr['carWashing'] = data_forecast.daily.life_index.carWashing[0].desc\n\n//未来2小时内每半小时的降雨概率\nvar predit = []\nglobal.set(\"predit_toggle\", false);\n\nfor (var key = 0; key < 4; key++){\n if(probability[key] > 0.5){\n predit.push (\"未来\" + (key+1)*30 + \"分钟,降雨概率将超过\" + Math.round(probability[key] * 100) + \"%;\")\n global.set(\"predit_toggle\", true);\n }\n}\nmsg.predit = predit.join('\\n');\n\n//取当前雨量\nvar intensity = data_realtime.precipitation.local.intensity\nglobal.set(\"intensity\", intensity)\n\n// data_forecast['alert']['content'][0] = {}\n// data_forecast['alert']['content'][0]['title'] = \"宇宙气象台发布纠结预警!\"\n// data_forecast['alert']['content'][0]['county'] = \"火星\"\n// data_forecast['alert']['content'][0]['description'] = \"预计宇宙历2020年将会经历超强宇宙风暴!可能会将火星吹到M78星云。请做好预防措施!\"\n\n\n//预警消息\nvar alert_content_info = data_forecast['alert']['content']\nif (alert_content_info.toString() !== '') {\n msg.alert_s = true\n msg.alert_title = alert_content_info[0]['title']\n msg.alert_city = alert_content_info[0]['county']\n msg.alert_info = alert_content_info[0]['description']\n} else {\n msg.alert_s = false\n}\n\n\nmsg.type = \"image\";\nmsg.filename = `/hawww/images/天气/封面图/${skycon_en}.jpg`;\nmsg.picr_url = `http://xxxxxxxxxxxx/${skycon_en}.jpg`\nmsg.address = data_georegeo.formatted_address\n\nmsg.weather = r;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 740,
"y": 400,
"wires": [
[
"e747cd41.81267",
"d2cd4dee.5731e"
]
]
},
{
"id": "fe0c1a97.ed7de8",
"type": "bizwechat-upload",
"z": "c69f2c5.2c677d",
"name": "上传素材",
"bizwechat": "",
"x": 440,
"y": 640,
"wires": [
[
"b7434b8d.78e858"
]
]
},
{
"id": "1cfe438f.47013c",
"type": "file in",
"z": "c69f2c5.2c677d",
"name": "读取",
"filename": "",
"format": "",
"chunk": false,
"sendError": false,
"encoding": "none",
"x": 310,
"y": 640,
"wires": [
[
"fe0c1a97.ed7de8"
]
]
},
{
"id": "6edcfb72.5b7ce4",
"type": "template",
"z": "c69f2c5.2c677d",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "html",
"syntax": "mustache",
"template": "<!DOCTYPE html>\n<html>\n<body>\n\n<div style=\"text-align:center;position:relative; width:100%;height:100%;\">\n <img src=\"{{picr_url}}\"\n alt=\"\" style=\"border-radius:10px;width: auto;height: auto;max-width:80%;max-height:80%;\">\n <span\n style=\"position:absolute;top:70%;left:0%;font-weight:bold;color: white; text-shadow: black 0.1em 0.1em 0.2em;font-size:16px;display:inline-block;width:100%;word-wrap:break-word;white-space:normal;\">{{weather.description}}</span>\n</div>\n<br>\n<div style=\"background-color:#66CCCC;width:90%;height:120px;text-align:center;margin:auto;border-radius:10px;box-shadow: 2px 3px 5px #8f9299;\">\n <table frame=\"void\" rules=\"none\" cellspacing=\"0\" style=\"table-layout:fixed;width: 98%;height: 92%;margin:auto;\">\n <thead style=\"color: #FFFFFF;\">\n <tr>\n <th colspan=\"3\" style=\"height:30px;font-size:24px;font-weight:bold;\">天气状况</th>\n </tr>\n </thead>\n <tbody style=\"background-color:#66CCCC;color: #FFFFFF;\">\n <tr style=\"font-weight:bold;font-size:18px;\">\n <td>{{weather.temperature}}°C</td>\n <td>{{weather.humidity}}%</td>\n <td>{{weather.uv_des}}</td>\n </tr>\n <tr style=\"font-size:14px;\">\n <td>温度</td>\n <td>湿度</td>\n <td>紫外线强度</td>\n </tr>\n </tbody>\n </table>\n</div>\n<br>\n<div style=\"background-color:#99CCFF;width:90%;height:140px;text-align:center;margin:auto;border-radius:10px;box-shadow: 2px 3px 5px #8f9299;\">\n <table frame=\"void\" rules=\"none\" cellspacing=\"0\" style=\"table-layout:fixed;width: 98%;height: 92%;margin:auto;\">\n <thead style=\"color: #FFFFFF;\">\n <tr>\n <th colspan=\"3\" style=\"height:30px;font-size:24px;font-weight:bold;\">空气质量</th>\n </tr>\n </thead>\n <tbody style=\"background-color:#99CCFF;color: #FFFFFF;\">\n <tr style=\"font-weight:bold;font-size:18px;\">\n <td>{{weather.aqi_desc}}</td>\n <td>{{weather.pm10}}μg/m3</td>\n <td>{{weather.pm25}}μg/m3</td>\n </tr>\n <tr style=\"font-size:14px;\">\n <td>空气质量(AQI)</td>\n <td>可吸入颗粒物、飘尘(PM10)</td>\n <td>细颗粒物(PM2.5)</td>\n </tr>\n </tbody>\n </table>\n</div>\n<br>\n<div style=\"background-color:#CCCCFF;width:90%;height:140px;text-align:center;margin:auto;border-radius:10px;box-shadow: 2px 3px 5px #8f9299;\">\n <table frame=\"void\" rules=\"none\" cellspacing=\"0\" style=\"table-layout:fixed;width: 98%;height: 92%;margin:auto;\">\n <thead style=\"color: #FFFFFF;\">\n <tr>\n <th colspan=\"4\" style=\"height:30px;font-size:24px;font-weight:bold;\">降雨概率</th>\n </tr>\n </thead>\n <tbody style=\"background-color:#CCCCFF;color: #FFFFFF;\">\n <tr style=\"font-weight:bold;font-size:18px;\">\n <td>{{weather.probability_30}}%</td>\n <td>{{weather.probability_60}}%</td>\n <td>{{weather.probability_90}}%</td>\n <td>{{weather.probability_120}}%</td>\n </tr>\n <tr style=\"font-size:14px;\">\n <td>30分钟降雨概率</td>\n <td>60分钟降雨概率</td>\n <td>90分钟降雨概率</td>\n <td>120分钟降雨概率</td>\n </tr>\n </tbody>\n </table>\n</div>\n<br>\n\n</body>\n</html>",
"output": "str",
"x": 720,
"y": 640,
"wires": [
[
"40d9ab42.b28c34"
]
]
},
{
"id": "40d9ab42.b28c34",
"type": "function",
"z": "c69f2c5.2c677d",
"name": "推送消息",
"func": "Date.prototype.Format = function (fmt) { \n var o = {\n \"M+\": this.getMonth() + 1, //月份 \n \"d+\": this.getDate(), //日 \n \"h+\": this.getHours(), //小时 \n \"m+\": this.getMinutes(), //分 \n \"s+\": this.getSeconds(), //秒 \n \"q+\": Math.floor((this.getMonth() + 3) / 3), //季度 \n \"S\": this.getMilliseconds() //毫秒 \n };\n if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n for (var k in o)\n if (new RegExp(\"(\" + k + \")\").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\n return fmt;\n}\nvar mydate = new Date().Format(\"yyyy年MM月dd日 hh:mm:ss\");\n\n\nvar aqi = msg.weather.aqi\n\nif (aqi <= 50 && aqi >= 0) {aqi = '优🍀';}\nelse if (aqi <= 100 && aqi >= 51) {aqi = '良🤧';}\nelse if (aqi <= 150 && aqi >= 101) {aqi = '轻度污染😷';}\nelse if (aqi <= 200 && aqi >= 151) {aqi = '中度污染😱';}\nelse if (aqi <= 300 && aqi >= 201) {aqi = '重度污染😵';}\nelse if (aqi > 300) {aqi = '严重污染☠️';}\n\n\nwechat = {\n \"touser\" : \"@all\",\n \"msgtype\" : \"mpnews\",\n \"mpnews\" : {\n \"articles\":[\n {\n \"title\": `最新天气情况`, \n \"thumb_media_id\": `${msg.media_id}`,\n //\"author\": \"Author\",\n //\"content_source_url\": \"URL\",\n \"content\": `${msg.payload}`,\n \"digest\": `${mydate}\\n当前位置是:${msg.address}附近\\n---------------------------\\n现在天气:${msg.weather.skycon}\\n空气质量:${aqi}\\n温度:${msg.weather.temperature}℃\\n湿度:${msg.weather.humidity}%\\n${msg.weather.description}\\n今日天气${msg.weather.coldRisk}感冒;${msg.weather.carWashing}洗车。`\n }\n ]\n },\n \"safe\":0\n}\n\nmsg.payload = {};\nmsg.payload = wechat;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 860,
"y": 640,
"wires": [
[
"b9ad5c2e.c73e"
]
]
},
{
"id": "b7434b8d.78e858",
"type": "change",
"z": "c69f2c5.2c677d",
"name": "media_id",
"rules": [
{
"t": "move",
"p": "payload.media_id",
"pt": "msg",
"to": "media_id",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 580,
"y": 640,
"wires": [
[
"6edcfb72.5b7ce4"
]
]
},
{
"id": "b9ad5c2e.c73e",
"type": "bizwechat-push",
"z": "c69f2c5.2c677d",
"name": "",
"bizwechat": "",
"x": 1000,
"y": 640,
"wires": [
[]
]
},
{
"id": "1ae3b155.17c45f",
"type": "link in",
"z": "c69f2c5.2c677d",
"name": "推送天气消息",
"links": [
"337b0792.53d888"
],
"x": 15,
"y": 460,
"wires": [
[
"37a7a954.d95176"
]
]
},
{
"id": "f620e578.3c30f8",
"type": "http request",
"z": "c69f2c5.2c677d",
"name": "实时位置",
"method": "GET",
"ret": "obj",
"paytoqs": false,
"url": "https://restapi.amap.com/v3/geocode/regeo?key={{{gd_api}}}&location={{{longitude}}},{{{latitude}}}&poitype=&radius=10&extensions=all&batch=false&roadlevel=0",
"tls": "",
"proxy": "",
"authType": "",
"x": 480,
"y": 440,
"wires": [
[
"8007cbf.2e55a38"
]
]
},
{
"id": "713a6f07.58686",
"type": "inject",
"z": "c69f2c5.2c677d",
"name": "定时下午17点推送",
"topic": "",
"payload": "",
"payloadType": "date",
"repeat": "",
"crontab": "00 17 * * *",
"once": false,
"onceDelay": 0.1,
"x": 130,
"y": 420,
"wires": [
[
"da704354.14499"
]
]
},
{
"id": "63e27bbe.5103d4",
"type": "switch",
"z": "c69f2c5.2c677d",
"name": "toggle为真",
"property": "predit_toggle",
"propertyType": "global",
"rules": [
{
"t": "true"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 330,
"y": 540,
"wires": [
[
"e1f2df8a.93357"
]
]
},
{
"id": "e1f2df8a.93357",
"type": "switch",
"z": "c69f2c5.2c677d",
"name": "当前无雨",
"property": "intensity",
"propertyType": "global",
"rules": [
{
"t": "lte",
"v": "0.02",
"vt": "num"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 480,
"y": 540,
"wires": [
[
"836c5803.760da8"
]
]
},
{
"id": "836c5803.760da8",
"type": "delay",
"z": "c69f2c5.2c677d",
"name": "限制频率",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "hour",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"x": 620,
"y": 540,
"wires": [
[
"e73c6d0b.5e7b6"
]
]
},
{
"id": "e73c6d0b.5e7b6",
"type": "function",
"z": "c69f2c5.2c677d",
"name": "推送消息",
"func": "Date.prototype.Format = function (fmt) { \n var o = {\n \"M+\": this.getMonth() + 1, //月份 \n \"d+\": this.getDate(), //日 \n \"h+\": this.getHours(), //小时 \n \"m+\": this.getMinutes(), //分 \n \"s+\": this.getSeconds(), //秒 \n \"q+\": Math.floor((this.getMonth() + 3) / 3), //季度 \n \"S\": this.getMilliseconds() //毫秒 \n };\n if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n for (var k in o)\n if (new RegExp(\"(\" + k + \")\").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\n return fmt;\n}\nvar mydate = new Date().Format(\"yyyy年MM月dd日 hh:mm:ss\");\n\nwechat = {\n \"touser\" : \"@all\",\n \"msgtype\" : \"textcard\",\n \"textcard\" : {\n \"title\" : `${msg.weather.description}`,\n \"description\" : `<div class=\\\"gray\\\">${mydate}</div><div class=\\\"highlight\\\">${msg.predit}</div>`,\n \"url\" : `空白页面,还没想好。`,\n \"btntxt\":\"详细\"\n },\n}\n\nmsg.payload = {};\nmsg.payload = wechat;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 760,
"y": 540,
"wires": [
[
"4268aa4d.2ef1f4"
]
]
},
{
"id": "4268aa4d.2ef1f4",
"type": "bizwechat-push",
"z": "c69f2c5.2c677d",
"name": "",
"bizwechat": "",
"x": 900,
"y": 540,
"wires": [
[]
]
},
{
"id": "da704354.14499",
"type": "function",
"z": "c69f2c5.2c677d",
"name": "基础数据",
"func": "var msg1 = {};\nvar msg2 = {};\nvar msg3 = {};\n\n\n//彩云API\ncy_api = 'xxxxxxxxxxx'\n\n//高德API\ngd_api = 'xxxxxxxxxxxx'\n\n//获取经度\n// longitude = global.get(\"lon\");\nlongitude = \"110.3537954\"\n//获取纬度\n// latitude = global.get(\"lat\");\nlatitude = \"28.3706806\"\n\n\nmsg1.mode = msg.payload.mode;\nmsg2.mode = msg.payload.mode;\nmsg3.mode = msg.payload.mode;\n\nmsg1.topic = 'realtime';\nmsg2.topic = 'forecast';\nmsg3.topic = 'georegeo';\n\nmsg1.cy_api = cy_api;\nmsg2.cy_api = cy_api;\nmsg3.gd_api = gd_api;\n\nmsg1.longitude = longitude;\nmsg2.longitude = longitude;\nmsg3.longitude = longitude;\n\nmsg1.latitude = latitude;\nmsg2.latitude = latitude;\nmsg3.latitude = latitude;\n\nreturn [msg1, msg2, msg3];",
"outputs": 3,
"noerr": 0,
"x": 340,
"y": 400,
"wires": [
[
"7aab9065.7091d"
],
[
"92ae69c8.c14858"
],
[
"f620e578.3c30f8"
]
]
},
{
"id": "d05c051b.d8ddd8",
"type": "inject",
"z": "c69f2c5.2c677d",
"name": "定时降雨预警",
"topic": "",
"payload": "{\"mode\":\"alert\"}",
"payloadType": "json",
"repeat": "600",
"crontab": "",
"once": false,
"onceDelay": "1",
"x": 140,
"y": 340,
"wires": [
[
"da704354.14499"
]
]
},
{
"id": "d2cd4dee.5731e",
"type": "debug",
"z": "c69f2c5.2c677d",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"x": 910,
"y": 400,
"wires": []
},
{
"id": "e747cd41.81267",
"type": "switch",
"z": "c69f2c5.2c677d",
"name": "mode内容",
"property": "mode",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "alert",
"vt": "str"
},
{
"t": "else"
}
],
"checkall": "false",
"repair": false,
"outputs": 2,
"x": 150,
"y": 580,
"wires": [
[
"63e27bbe.5103d4",
"8cf3e32b.13c1c",
"7a141c4c.535f04"
],
[
"1cfe438f.47013c"
]
]
},
{
"id": "37a7a954.d95176",
"type": "change",
"z": "c69f2c5.2c677d",
"name": "微信主动模式",
"rules": [
{
"t": "set",
"p": "payload.mode",
"pt": "msg",
"to": "wechat",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 140,
"y": 460,
"wires": [
[
"da704354.14499"
]
]
},
{
"id": "8cf3e32b.13c1c",
"type": "switch",
"z": "c69f2c5.2c677d",
"name": "alert为真",
"property": "alert_s",
"propertyType": "msg",
"rules": [
{
"t": "true"
}
],
"checkall": "false",
"repair": false,
"outputs": 1,
"x": 320,
"y": 580,
"wires": [
[
"dc0ec132.7278c"
]
]
},
{
"id": "dc0ec132.7278c",
"type": "switch",
"z": "c69f2c5.2c677d",
"name": "对比位置",
"property": "alert_city",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "payload.georegeo.regeocode.addressComponent.district",
"vt": "msg"
}
],
"checkall": "false",
"repair": false,
"outputs": 1,
"x": 460,
"y": 580,
"wires": [
[
"cf49df3f.9a60f"
]
]
},
{
"id": "cf49df3f.9a60f",
"type": "rbe",
"z": "c69f2c5.2c677d",
"name": "",
"func": "rbe",
"gap": "",
"start": "",
"inout": "out",
"property": "alert_info",
"x": 590,
"y": 580,
"wires": [
[
"d4f9dd8f.a89a4"
]
]
},
{
"id": "d4f9dd8f.a89a4",
"type": "function",
"z": "c69f2c5.2c677d",
"name": "推送消息",
"func": "Date.prototype.Format = function (fmt) { \n var o = {\n \"M+\": this.getMonth() + 1, //月份 \n \"d+\": this.getDate(), //日 \n \"h+\": this.getHours(), //小时 \n \"m+\": this.getMinutes(), //分 \n \"s+\": this.getSeconds(), //秒 \n \"q+\": Math.floor((this.getMonth() + 3) / 3), //季度 \n \"S\": this.getMilliseconds() //毫秒 \n };\n if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n for (var k in o)\n if (new RegExp(\"(\" + k + \")\").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\n return fmt;\n}\nvar mydate = new Date().Format(\"yyyy年MM月dd日 hh:mm:ss\");\n\nwechat = {\n \"touser\" : \"@all\",\n \"msgtype\" : \"textcard\",\n \"textcard\" : {\n \"title\" : `${msg.alert_title}`,\n \"description\" : `<div class=\\\"gray\\\">范围:${msg.alert_city}</div><div class=\\\"gray\\\">${mydate}</div><div class=\\\"gray\\\">-----------------------------</div><div class=\\\"highlight\\\">${msg.alert_info}</div>`,\n \"url\" : `空白页面`,\n \"btntxt\":\"详细\"\n },\n}\n\nmsg.payload = {};\nmsg.payload = wechat;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 720,
"y": 580,
"wires": [
[
"766cfcdc.437a04"
]
]
},
{
"id": "766cfcdc.437a04",
"type": "bizwechat-push",
"z": "c69f2c5.2c677d",
"name": "",
"bizwechat": "",
"x": 860,
"y": 580,
"wires": [
[]
]
},
{
"id": "7a141c4c.535f04",
"type": "debug",
"z": "c69f2c5.2c677d",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"x": 350,
"y": 480,
"wires": []
}
]