[{"id":"027947ecfdd7a328","type":"inject","z":"8dd364ff59dec1bf","name":"定时执行","props":[{"p":"payloada","v":"","vt":"date"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":0.1,"topic":"BYD_CAR_GPS","x":110,"y":240,"wires":[["9e06e16cf2632b4f"]]},{"id":"eb8237449b6c0d4c","type":"http request","z":"8dd364ff59dec1bf","name":"获取车机数据","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://10.10.10.14:8889/bydck?sign=qcbybydck","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":460,"y":200,"wires":[["34cbbd47594326b4"]],"info":"自行修改接口地址"},{"id":"9e06e16cf2632b4f","type":"function","z":"8dd364ff59dec1bf","name":"配置协议头","func":"// 初始化 headers 对象\nmsg.headers = {};\n\n// 设置 User-Agent\nmsg.headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36";\nmsg.headers['Content-Type'] = "application/json; charset=utf-8",\nmsg.rejectUnauthorized = false; // 忽略 SSL 证书错误\n// 返回消息对象\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":240,"wires":[["eb8237449b6c0d4c","8e36b11509f10bcf"]]},{"id":"9e1eeeafdf674a7d","type":"function","z":"8dd364ff59dec1bf","name":"坐标转换","func":"//定义一些常量\nvar x_PI = 3.14159265358979324 * 3000.0 / 180.0;\nvar PI = 3.1415926535897932384626;\nvar a = 6378245.0;\nvar ee = 0.00669342162296594323;\n\n/**\n* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换\n* 即 百度 转 谷歌、高德\n* @param bd_lon\n* @param bd_lat\n* @returns {*[]}\n*/\nfunction bd09togcj02(bd_lon, bd_lat) {\n var x_pi = 3.14159265358979324 * 3000.0 / 180.0;\n var x = bd_lon - 0.0065;\n var y = bd_lat - 0.006;\n var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);\n var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);\n var gg_lng = z * Math.cos(theta);\n var gg_lat = z * Math.sin(theta);\n return [gg_lng, gg_lat]\n}\n\n/**\n* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换\n* 即谷歌、高德 转 百度\n* @param lng\n* @param lat\n* @returns {*[]}\n*/\nfunction gcj02tobd09(lng, lat) {\n var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);\n var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);\n var bd_lng = z * Math.cos(theta) + 0.0065;\n var bd_lat = z * Math.sin(theta) + 0.006;\n return [bd_lng, bd_lat]\n}\n\n/**\n* WGS84转GCj02/谷歌、高德\n* @param lng\n* @param lat\n* @returns {*[]}\n*/\nfunction wgs84togcj02(lng, lat) {\n if (out_of_china(lng, lat)) {\n return [lng, lat]\n }\n else {\n var dlat = transformlat(lng - 105.0, lat - 35.0);\n var dlng = transformlng(lng - 105.0, lat - 35.0);\n var radlat = lat / 180.0 * PI;\n var magic = Math.sin(radlat);\n magic = 1 - ee * magic * magic;\n var sqrtmagic = Math.sqrt(magic);\n dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);\n dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);\n var mglat = lat + dlat;\n var mglng = lng + dlng;\n return [mglng, mglat]\n }\n}\n\n/**\n* GCJ02/谷歌、高德 转换为 WGS84 gcj02towgs84\n* @param lng\n* @param lat\n* @returns {*[]}\n*/\nfunction gcj02towgs84(lat, lng) {\n if (out_of_china(lng, lat)) {\n return [lat, lng]\n }\n else {\n var dlat = transformlat(lng - 105.0, lat - 35.0);\n var dlng = transformlng(lng - 105.0, lat - 35.0);\n var radlat = lat / 180.0 * PI;\n var magic = Math.sin(radlat);\n magic = 1 - ee * magic * magic;\n var sqrtmagic = Math.sqrt(magic);\n dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);\n dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);\n var mglat = lat + dlat;\n var mglng = lng + dlng;\n return [lat * 2 - mglat, lng * 2 - mglng]\n }\n}\n\nfunction transformlat(lng, lat) {\n var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));\n ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;\n ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;\n ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;\n return ret\n}\n\nfunction transformlng(lng, lat) {\n var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));\n ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;\n ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;\n ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;\n return ret\n}\n\n/**\n* 判断是否在国内,不在国内则不做偏移\n* @param lng\n* @param lat\n* @returns {boolean}\n*/\nfunction out_of_china(lng, lat) {\n return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false)\n}\n/** \nlet lng = msg.payload.data.longitude / 1000000\nlet lat = msg.payload.data.latitude / 1000000\nmsg.payload = {"domain":"device_tracker","service":"see","data":{"dev_id" : "car", "gps": gcj02towgs84(lat, lng) }} \n*/\nconst payloadObj = typeof msg.payload === 'string' ? JSON.parse(msg.payload) : msg.payload;\nlet lng = payloadObj.data.longitude / 1000000;\nlet lat = payloadObj.data.latitude / 1000000;\n\nmsg.payload = {\n "domain": "device_tracker",\n "service": "see",\n "data": {\n "dev_id": "car",\n "gps": gcj02towgs84(lat,lng ),\n "gps_accuracy": 5 // 可选:GPS 精度(单位:米)\n }\n};\nreturn msg;\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":640,"y":280,"wires":[["a26977c99eee6ecd"]]},{"id":"8e36b11509f10bcf","type":"http request","z":"8dd364ff59dec1bf","name":"获取车辆位置","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://10.10.10.14:8889/bydck?sign=cxwz","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":460,"y":280,"wires":[["9e1eeeafdf674a7d"]]},{"id":"34cbbd47594326b4","type":"function","z":"8dd364ff59dec1bf","name":"JSON处理","func":"msg.payload = typeof msg.payload === 'string' ? JSON.parse(msg.payload) : msg.payload;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":200,"wires":[["be2714b13d376afd","aa2f275f115a3d49"]]}]