-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy path5-15-2 API(3) 공공데이터서버 만들기.txt
More file actions
1 lines (1 loc) · 9.83 KB
/
5-15-2 API(3) 공공데이터서버 만들기.txt
File metadata and controls
1 lines (1 loc) · 9.83 KB
1
[{"id":"56c6c756.194cd8","type":"subflow","name":"Iterate","in":[{"x":220,"y":219,"wires":[{"id":"99811639.8d0a58"}]}],"out":[{"x":454,"y":174,"wires":[{"id":"99811639.8d0a58","port":0}]},{"x":455,"y":259,"wires":[{"id":"99811639.8d0a58","port":1}]}]},{"id":"99811639.8d0a58","type":"function","z":"56c6c756.194cd8","name":"Iterate","func":"//Node has 2 outputs - 1 for itteration and 1 for completion\nvar nextObj, out;\nvar itt = msg.iterationInfo;\n\n\n//If the iterating has not yet begun set up the iteration metadata in the msg\nif (typeof itt === 'undefined') {\n //Make sure payload is an array\n if( Object.prototype.toString.call(msg.payload) !== '[object Array]' ) {\n msg.payload = [msg.payload];\n }\n\n msg.iterationInfo = itt = {};\n itt.index = -1;\n itt.inArray = msg.payload;\n itt.outArray = [];\n\n//Otherwise just push the input to the output array\n} else {\n itt.outArray.push(msg.payload)\n}\n\n//Goto next object\nitt.index ++;\n\n//If there are stil objects left to iterate goto the next one in the original array\nif (itt.index < itt.inArray.length) {\n nextObj = msg;\n msg.payload = itt.inArray[itt.index];\n\n//otherwise pass the out array as the payload\n} else {\n out = msg;\n msg.payload = itt.outArray;\n delete msg.iterationInfo;\n}\n\nreturn [nextObj, out];","outputs":"2","noerr":0,"x":347,"y":220,"wires":[[],[]]},{"id":"132eef50.3b65a1","type":"file in","z":"2c1aa45e.d17bec","name":"","filename":"","format":"lines","chunk":false,"sendError":false,"encoding":"utf-16le","x":438.01738357543945,"y":104.01043891906738,"wires":[["dc8aedde.c0f2a"]]},{"id":"1865f0d4.7ddbcf","type":"inject","z":"2c1aa45e.d17bec","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":127.01736450195312,"y":104.01043510437012,"wires":[["a6bbc15c.3afb"]]},{"id":"a6bbc15c.3afb","type":"function","z":"2c1aa45e.d17bec","name":"file 이름 위치","func":"msg.filename=\"d:/station_list.txt\";\n\nreturn msg;","outputs":1,"noerr":0,"x":289.0173797607422,"y":104.01044178009033,"wires":[["132eef50.3b65a1"]]},{"id":"dc8aedde.c0f2a","type":"csv","z":"2c1aa45e.d17bec","name":"","sep":"\\t","hdrin":true,"hdrout":"","multi":"one","ret":"\\n","temp":"","skip":"0","x":563.079891204834,"y":103.01040267944336,"wires":[["182f7aa3.2c5bb5"]]},{"id":"e0b67529.d134e8","type":"debug","z":"2c1aa45e.d17bec","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":888.017333984375,"y":210.0104217529297,"wires":[]},{"id":"4cc0a47c.223d8c","type":"http request","z":"2c1aa45e.d17bec","name":"","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"","x":728.017333984375,"y":210.0104217529297,"wires":[["e0b67529.d134e8"]]},{"id":"55e707f3.cd1a08","type":"change","z":"2c1aa45e.d17bec","name":"","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":568.017333984375,"y":210.0104217529297,"wires":[["4cc0a47c.223d8c"]]},{"id":"1984cb70.e9da75","type":"inject","z":"2c1aa45e.d17bec","name":"","topic":"","payload":"종로구","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":116.017333984375,"y":210.0104217529297,"wires":[["f46233da.96d77"]]},{"id":"39ca73a9.20316c","type":"function","z":"2c1aa45e.d17bec","name":"http 작성","func":"var newMsg={};\nnewMsg.payload=\"http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=\";\nvar i;\nfor(i=0;i<msg.payload.length;i++)\n newMsg.payload+='%'+msg.payload[i].toString(16);\nnewMsg.payload+=\"&dataTerm=daily&pageNo=1&numOfRows=1&ServiceKey=서비스키&_returnType=json\";\nreturn newMsg;","outputs":1,"noerr":0,"x":418.017333984375,"y":210.0104217529297,"wires":[["55e707f3.cd1a08"]]},{"id":"8cb1ea9.05ccc18","type":"function","z":"2c1aa45e.d17bec","name":"delete pootalStation","func":"var newMsg = {};\nnewMsg.collection = 'potalStation';\nnewMsg.operation = 'deleteMany';\nnewMsg.payload = { name:msg.payload.name};\nreturn newMsg;","outputs":1,"noerr":0,"x":762.0173110961914,"y":57.01045799255371,"wires":[["e4dd1912.3b9688"]]},{"id":"e4dd1912.3b9688","type":"mongodb2 in","z":"2c1aa45e.d17bec","service":"_ext_","configNode":"e5af2c46.774a1","name":"지우기","collection":"","operation":"","x":932.0173110961914,"y":57.01045799255371,"wires":[[]]},{"id":"182f7aa3.2c5bb5","type":"function","z":"2c1aa45e.d17bec","name":"insert pootalStation","func":"var newMsg = {};\nnewMsg.collection = 'potalStation';\nnewMsg.operation = 'insert';\nnewMsg.payload = { country:\"kor\", loc:msg.payload.loc, name:msg.payload.name, address:msg.payload.address};\nreturn newMsg;","outputs":1,"noerr":0,"x":755.0173110961914,"y":106.01045799255371,"wires":[["337ecd0d.d060d2"]]},{"id":"337ecd0d.d060d2","type":"mongodb2 in","z":"2c1aa45e.d17bec","service":"_ext_","configNode":"e5af2c46.774a1","name":"등록","collection":"","operation":"","x":919.0173110961914,"y":106.01045799255371,"wires":[[]]},{"id":"8a5cc732.e355d8","type":"function","z":"2c1aa45e.d17bec","name":"find.toArray","func":"msg.collection = 'potalStation';\nmsg.operation = 'find.toArray';\nmsg.payload = { 'country' : \"kor\"};\nmsg.projection = { 'name' : 1 , '_id' : 0 };\nreturn msg;","outputs":1,"noerr":0,"x":299.017333984375,"y":370.0104217529297,"wires":[["d0180ac0.289598"]]},{"id":"5b8dcad.6b65a34","type":"inject","z":"2c1aa45e.d17bec","name":"","topic":"","payload":"","payloadType":"date","repeat":"7200","crontab":"","once":false,"onceDelay":0.1,"x":128.017333984375,"y":370.0104217529297,"wires":[["8a5cc732.e355d8"]]},{"id":"d0180ac0.289598","type":"mongodb2 in","z":"2c1aa45e.d17bec","service":"_ext_","configNode":"e5af2c46.774a1","name":"admin","collection":"","operation":"","x":439.017333984375,"y":370.0104217529297,"wires":[["817fb0c.7fa565"]]},{"id":"37a219c4.cda846","type":"comment","z":"2c1aa45e.d17bec","name":"대기오염 측정소 정리 사이트","info":"사이트\nhttps://www.airkorea.or.kr/web/stationInfo?pMENU_NO=93\nhttps://www.data.go.kr/","x":163.017333984375,"y":38.01042938232422,"wires":[]},{"id":"ba767abb.ddbda8","type":"function","z":"2c1aa45e.d17bec","name":"측정소 이름","func":"global.set(\"msg_array\",msg);\nmsg.payload=msg.payload.name;\nreturn msg;","outputs":1,"noerr":0,"x":188.017333984375,"y":310.0104217529297,"wires":[["492dae22.64695"]]},{"id":"817fb0c.7fa565","type":"subflow:56c6c756.194cd8","z":"2c1aa45e.d17bec","name":"Iterate","env":[],"x":579.017333984375,"y":370.0104217529297,"wires":[["ba767abb.ddbda8"],[]]},{"id":"4d7003fe.d646ec","type":"http request","z":"2c1aa45e.d17bec","name":"","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"","x":893.017333984375,"y":310.0104217529297,"wires":[["9c1dceea.b02ca"]]},{"id":"148b4aa4.c49695","type":"change","z":"2c1aa45e.d17bec","name":"","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":733.017333984375,"y":310.0104217529297,"wires":[["4d7003fe.d646ec"]]},{"id":"4c4b7424.8f314c","type":"function","z":"2c1aa45e.d17bec","name":"http 작성 (서비스키입력)","func":"var ServiceKey = \"서비스키\"; //김동일 서비스키\nvar newMsg={};\nnewMsg.payload=\"http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=\";\nvar i;\nfor(i=0;i<msg.payload.length;i++)\n newMsg.payload+='%'+msg.payload[i].toString(16);\nnewMsg.payload+=\"&dataTerm=daily&pageNo=1&numOfRows=1&ServiceKey=\"+ServiceKey+\"&_returnType=json\";\nreturn newMsg;","outputs":1,"noerr":0,"x":528.017333984375,"y":310.0104217529297,"wires":[["148b4aa4.c49695"]]},{"id":"a570eb40.86f6d8","type":"function","z":"2c1aa45e.d17bec","name":"msg 받음","func":"var newMsg=global.get(\"msg_array\");\nreturn newMsg;","outputs":1,"noerr":0,"x":1363.017333984375,"y":310.0104217529297,"wires":[["817fb0c.7fa565"]]},{"id":"9c1dceea.b02ca","type":"function","z":"2c1aa45e.d17bec","name":"findOneAndUpdate","func":"var newMsg = {};\nnewMsg.collection = 'potalStation';\nnewMsg.operation = 'findOneAndUpdate';\nnewMsg.payload = [{ 'name':msg.payload.parm.stationName}, {$set:{ 'no2':msg.payload.list[0].no2Value, 'co':msg.payload.list[0].coValue, 'pm10':msg.payload.list[0].pm10Value, 'pm25':msg.payload.list[0].pm25Value, 'no2':msg.payload.list[0].no2Value}}];\nnewMsg.projection = { 'name' : 1 , '_id' : 0 };\n//newMsg.payload=msg.payload.list[0].no2Value;\nreturn newMsg;\n","outputs":1,"noerr":0,"x":1073.017333984375,"y":310.0104217529297,"wires":[["5ad718c8.196cd8"]]},{"id":"5ad718c8.196cd8","type":"mongodb2 in","z":"2c1aa45e.d17bec","service":"_ext_","configNode":"e5af2c46.774a1","name":"admin","collection":"","operation":"","x":1233.017333984375,"y":310.0104217529297,"wires":[["a570eb40.86f6d8"]]},{"id":"5ff4c533.1cec0c","type":"comment","z":"2c1aa45e.d17bec","name":"종로구 데이타 가져오기","info":"","x":138.017333984375,"y":170.0104217529297,"wires":[]},{"id":"44de4a84.b64d94","type":"comment","z":"2c1aa45e.d17bec","name":"측정소 대기오염정보 가져오기","info":"참조 \nhttps://github.com/kdi6033/node-red/blob/master/5-15-1%20%EA%B3%B5%EA%B3%B5%EB%8D%B0%EC%9D%B4%EC%9D%B4%ED%83%80%ED%8F%AC%ED%83%88%20%EC%9E%90%EB%A3%8C/airkorea_openapi_guide-v1_7_2.docx\n프로토콜\nhttp://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=종로구&dataTerm=month&pageNo=1&numOfRows=10&ServiceKey=서비스키&ver=1.3","x":158.017333984375,"y":270.0104217529297,"wires":[]},{"id":"f46233da.96d77","type":"converter","z":"2c1aa45e.d17bec","name":"","from":"utf-8","x":266.017333984375,"y":210.0104217529297,"wires":[["39ca73a9.20316c"]]},{"id":"492dae22.64695","type":"converter","z":"2c1aa45e.d17bec","name":"","from":"utf-8","x":338.017333984375,"y":310.0104217529297,"wires":[["4c4b7424.8f314c"]]},{"id":"e5af2c46.774a1","type":"mongodb2","z":"","uri":"mongodb://localhost:27017/admin","name":"admin","options":"","parallelism":"-1"}]