2025年4月29日 星期二

一般天氣預報-今明36小時天氣預報+ Telegram

 一般天氣預報-今明36小時天氣預報+ Telegram 






[{"id":"737e3490ea532e0d","type":"http request","z":"a95bf9b2fb1bf34a","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://opendata.cwa.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=rdec-key-123-45678-011121314","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":240,"y":140,"wires":[["5bd9a4a11c02acc0","270b38ecb9506e22"]]},{"id":"f5340d25ef565ed1","type":"function","z":"a95bf9b2fb1bf34a","name":"function ","func":"let tableData = [];\nlet locations = msg.payload.records.location;\n\nlocations.forEach(location => {\n    let locationName = location.locationName;\n    \n    // 取出時間區段\n    location.weatherElement[0].time.forEach((timeEntry, idx) => {\n        tableData.push({\n            city: locationName,\n            startTime: timeEntry.startTime,\n            endTime: timeEntry.endTime,\n            weather: location.weatherElement.find(el => el.elementName === 'Wx').time[idx].parameter.parameterName,\n            maxTemp: location.weatherElement.find(el => el.elementName === 'MaxT').time[idx].parameter.parameterName + \"°C\",\n            minTemp: location.weatherElement.find(el => el.elementName === 'MinT').time[idx].parameter.parameterName + \"°C\",\n            rainProb: location.weatherElement.find(el => el.elementName === 'PoP').time[idx].parameter.parameterName + \"%\"\n        });\n    });\n});\nflow.set(\"weatherData\", tableData)\nmsg.payload = tableData;\nreturn msg;\n\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":140,"wires":[["94232e50a9b096f9","9a45d3126da1e62d"]]},{"id":"94232e50a9b096f9","type":"ui_table","z":"a95bf9b2fb1bf34a","group":"91df7aaf835fc89e","name":"","order":5,"width":12,"height":9,"columns":[{"field":"city","title":"城市","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"startTime","title":"開始時間","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"endTime","title":"結束時間","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"weather","title":"天氣","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"maxTemp","title":"最高溫","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"minTemp","title":"最低溫","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"rainProb","title":"降雨機率","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":730,"y":140,"wires":[]},{"id":"9a45d3126da1e62d","type":"debug","z":"a95bf9b2fb1bf34a","name":"debug 352","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":180,"wires":[]},{"id":"5bd9a4a11c02acc0","type":"debug","z":"a95bf9b2fb1bf34a","name":"debug 353","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":370,"y":60,"wires":[]},{"id":"270b38ecb9506e22","type":"json","z":"a95bf9b2fb1bf34a","name":"","property":"payload","action":"","pretty":true,"x":370,"y":140,"wires":[["f5340d25ef565ed1","1301871d9b981063","65f8b1f352582e59"]]},{"id":"inject_every_hour","type":"inject","z":"a95bf9b2fb1bf34a","name":"每小時觸發","props":[],"repeat":"3600","crontab":"","once":true,"onceDelay":"1","topic":"","x":90,"y":140,"wires":[["737e3490ea532e0d"]]},{"id":"a2a9c4490849cf8b","type":"ui_dropdown","z":"a95bf9b2fb1bf34a","name":"","label":"","tooltip":"","place":"Select option","group":"91df7aaf835fc89e","order":1,"width":5,"height":1,"passthru":true,"multiple":false,"options":[{"label":"台北市","value":"臺北市","type":"str"},{"label":"新北市","value":"新北市","type":"str"},{"label":"桃園市","value":"桃園市","type":"str"},{"label":"台中市","value":"臺中市","type":"str"},{"label":"台南市","value":"臺南市","type":"str"},{"label":"高雄市","value":"高雄市","type":"str"},{"label":"基隆市","value":"基隆市","type":"str"},{"label":"新竹縣","value":"新竹縣","type":"str"},{"label":"新竹市","value":"新竹市","type":"str"},{"label":"苗栗縣","value":"苗栗縣","type":"str"},{"label":"彰化縣","value":"彰化縣","type":"str"},{"label":"南投縣","value":"南投縣","type":"str"},{"label":"雲林縣","value":"雲林縣","type":"str"},{"label":"嘉義縣","value":"嘉義縣","type":"str"},{"label":"嘉義市","value":"嘉義市","type":"str"},{"label":"屏東縣","value":"屏東縣","type":"str"},{"label":"宜蘭縣","value":"宜蘭縣","type":"str"},{"label":"花蓮縣","value":"花蓮縣","type":"str"},{"label":"臺東縣","value":"臺東縣","type":"str"},{"label":"澎湖縣","value":"澎湖縣","type":"str"},{"label":"金門縣","value":"金門縣","type":"str"},{"label":"連江縣","value":"連江縣","type":"str"}],"payload":"","topic":"topic","topicType":"msg","className":"C:\\Users\\User\\Downloads\\test.css","x":180,"y":320,"wires":[["8636f812551f7b10"]]},{"id":"1301871d9b981063","type":"debug","z":"a95bf9b2fb1bf34a","name":"debug 354","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":550,"y":100,"wires":[]},{"id":"8636f812551f7b10","type":"function","z":"a95bf9b2fb1bf34a","name":"function ","func":"let selectedCity = msg.payload;\nlet allData = flow.get(\"weatherData\") || [];\n\nlet filteredData = allData.filter(item => item.city === selectedCity);\n\nmsg.payload = filteredData;\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":340,"y":260,"wires":[["9af5d609779771c2","63a8c10c26532ac8","061d5c22afaa4329"]]},{"id":"63a8c10c26532ac8","type":"debug","z":"a95bf9b2fb1bf34a","name":"debug 355","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":530,"y":260,"wires":[]},{"id":"65f8b1f352582e59","type":"function","z":"a95bf9b2fb1bf34a","name":"function  ","func":"msg.payload=msg.payload.records.location;\nvar rawdata =msg.payload;\nvar site_number=rawdata.length;\nvar site_array=[];\nvar i;\n\nfor (i=0; i<site_number;i++)\n{\n    site_array[i]=rawdata[i].locationName;\n}\n\nmsg.payload=site_array;\n \nflow.set(\"weather_sitename\",site_array);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":200,"wires":[["49767f23c0fd65b0"]]},{"id":"49767f23c0fd65b0","type":"change","z":"a95bf9b2fb1bf34a","name":"","rules":[{"t":"set","p":"options","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":200,"wires":[["3c66bb6881bc9762","31d37c65c7878ebf"]]},{"id":"3c66bb6881bc9762","type":"ui_dropdown","z":"a95bf9b2fb1bf34a","name":"","label":"","tooltip":"","place":"Select option","group":"91df7aaf835fc89e","order":3,"width":5,"height":1,"passthru":true,"multiple":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"topic","topicType":"msg","className":"","x":180,"y":260,"wires":[["8636f812551f7b10"]]},{"id":"31d37c65c7878ebf","type":"debug","z":"a95bf9b2fb1bf34a","name":"debug 357","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":570,"y":200,"wires":[]},{"id":"9af5d609779771c2","type":"ui_table","z":"a95bf9b2fb1bf34a","group":"91df7aaf835fc89e","name":"","order":4,"width":12,"height":2,"columns":[{"field":"city","title":"城市","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"startTime","title":"開始時間","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"endTime","title":"結束時間","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"weather","title":"天氣","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"maxTemp","title":"最高溫","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"minTemp","title":"最低溫","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"rainProb","title":"降雨機率","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":350,"y":340,"wires":[]},{"id":"f59054d3041da9a3","type":"template","z":"a95bf9b2fb1bf34a","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"\n{\"chatId\": 7965218469,\n\"type\":\"message\",\n\"content\":\"選擇到的城市天氣{{payload}}\"}\n","output":"json","x":790,"y":300,"wires":[["700fe53ec9406f9f"]]},{"id":"700fe53ec9406f9f","type":"telegram sender","z":"a95bf9b2fb1bf34a","name":"天氣","bot":"f99c60fa6cddd722","haserroroutput":true,"outputs":2,"x":910,"y":300,"wires":[[],[]]},{"id":"061d5c22afaa4329","type":"function","z":"a95bf9b2fb1bf34a","name":"function  ","func":"let outputStrings = [];\nmsg.payload.forEach(item => {\n    let itemString = \"\";\n    for (const key in item) {\n        if (item.hasOwnProperty(key)) {\n            itemString += key + \": \" + item[key] + \", \";\n        }\n    }\n    // 移除最後多餘的 \", \"\n    itemString = itemString.slice(0, -2);\n    outputStrings.push(itemString);\n});\nmsg.payload = outputStrings;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":300,"wires":[["b390f01b9ea1ba8d","361345cc1e262586","5d6ead30c7620fba"]]},{"id":"b390f01b9ea1ba8d","type":"function","z":"a95bf9b2fb1bf34a","name":"function ","func":"msg.payload=msg.payload[0];\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":300,"wires":[["f59054d3041da9a3"]]},{"id":"361345cc1e262586","type":"function","z":"a95bf9b2fb1bf34a","name":"function ","func":"msg.payload=msg.payload[1];\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":340,"wires":[["0d38a31346a2aa7c"]]},{"id":"5d6ead30c7620fba","type":"function","z":"a95bf9b2fb1bf34a","name":"function ","func":"msg.payload=msg.payload[2];\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":380,"wires":[["d8beaee3b21ee3da"]]},{"id":"0d38a31346a2aa7c","type":"delay","z":"a95bf9b2fb1bf34a","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":740,"y":340,"wires":[["f59054d3041da9a3"]]},{"id":"d8beaee3b21ee3da","type":"delay","z":"a95bf9b2fb1bf34a","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":740,"y":380,"wires":[["f59054d3041da9a3"]]},{"id":"91df7aaf835fc89e","type":"ui_group","name":"Default","tab":"0a96b8dde1b2e50a","order":3,"disp":true,"width":12,"collapse":false,"className":""},{"id":"f99c60fa6cddd722","type":"telegram bot","botname":"ncutedu_weather36_bot","usernames":"","chatids":"","baseapiurl":"","testenvironment":false,"updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksprotocol":"socks5","socksport":"6667","socksusername":"anonymous","sockspassword":"","bothost":"","botpath":"","localbothost":"0.0.0.0","localbotport":"8443","publicbotport":"8443","privatekey":"","certificate":"","useselfsignedcertificate":false,"sslterminated":false,"verboselogging":false},{"id":"0a96b8dde1b2e50a","type":"ui_tab","name":"36小時天氣","icon":"dashboard","order":2,"disabled":false,"hidden":false}]

沒有留言:

張貼留言

WOKWI ESP32 模擬RFID ,LED + Python TKinter SQLite

 WOKWI ESP32 模擬RFID ,LED + Python TKinter SQLite  WOKWI ESP32程式 #include <SPI.h> #include <MFRC522.h> #include <WiFi.h> #i...