填个天气通的坑(gzip)

从hassbian论坛上找到一个无限制的天气通api,想从里面提取数据。可是怎么搞获取到的都是一堆乱码。


最后通过网页调试软件才找到原因:因为原网页是经过gzip压缩的,所以到获取数据之后,要解压才能正常显示。
QQ图片20190624155946.png
好了,知道原因就好搞了,一顿百度,找到了解决办法

1在 settings.js内找到functionGlobalContext 在之后添加为functionGlobalContext: { zlib:require(‘zlib’) }
QQ截图20190624155655.png

再http获取二进制数据后,加个 function内容
[mw_shl_code=applescript,true]context.global.zlib.gunzip(msg.payload, function(err, buffer){ if (!err) { node.send( { payload: buffer.toString() }); } else { /* handle error / } }); return;[/mw_shl_code]
输出即正常


[mw_shl_code=applescript,true]{“id”:“b261a76b.18c398”,“type”:“tab”,“label”:“流程1”,“disabled”:false,“info”:""},{“id”:“f769bbd7.7b1168”,“type”:“function”,“z”:“b261a76b.18c398”,“name”:“gzip解码”,“func”:"context.global.zlib.gunzip(msg.payload, function(err, buffer){ if (!err) { node.send( { payload: buffer.toString() }); } else { /
handle error */ } }); return;",“outputs”:1,“noerr”:0,“x”:400,“y”:340,“wires”:“f3c1e722.47c038”,“90457f7c.af39”]]},{“id”:“b3d020f4.f5fa5”,“type”:“inject”,“z”:“b261a76b.18c398”,“name”:"",“topic”:"",“payload”:“1”,“payloadType”:“num”,“repeat”:"",“crontab”:"",“once”:false,“onceDelay”:0.1,“x”:90,“y”:340,“wires”:“cd01dfd3.cef11”]]},{“id”:“f3c1e722.47c038”,“type”:“debug”,“z”:“b261a76b.18c398”,“name”:"",“active”:false,“tosidebar”:true,“console”:true,“tostatus”:true,“complete”:“true”,“x”:530,“y”:180,“wires”:]},{“id”:“cd01dfd3.cef11”,“type”:“http request”,“z”:“b261a76b.18c398”,“name”:“天气通”,“method”:“GET”,“ret”:“bin”,“url”:“http://zhwnlapi.etouch.cn/Ecalender/api/v2/weather?citykey=101210403",“tls”:"",“x”:230,“y”:340,“wires”:“f769bbd7.7b1168”]]},{“id”:“9697a382.44dc5”,“type”:“debug”,“z”:“b261a76b.18c398”,“name”:"",“active”:true,“tosidebar”:true,“console”:true,“tostatus”:true,“complete”:“true”,“x”:710,“y”:340,“wires”:]},{“id”:“90457f7c.af39”,“type”:“json”,“z”:“b261a76b.18c398”,“name”:"",“property”:“payload”,“action”:"",“pretty”:false,“x”:570,“y”:340,“wires”:"9697a382.44dc5”]]}][/mw_shl_code]
其他的,自己抄抄改改取数据,再用mqtt接入吧