我正在进行一个raspberry pi项目,在该项目中我运行python脚本,我想将该脚本中的传感器数据发送到我的nodejs服务器。我正在尝试用python脚本将CoAP服务器连接到节点服务器上的客户端。使用的库是python中的CoAPthon和nodejs中的NodeCoAP。当我尝试连接协同服务器时,服务器说编码错误,对此有解决方案吗???
错误:“utf-8”编解码器无法解码位置3中的字节0xbd:无效的开始字节”。
CoAPthon服务器的python版本如下所示
#CoAPServer.py
from coapthon.server.coap import CoAP
from coapthon.resources.resource import Resource
gotin=1
class sensor(Resource):
def __init__(self, name="sensor", coap_server=None):
super(sensor, self).__init__(name, coap_server, visible=True,observable=True, allow_children=True)
self.payload = str(gotin)
self.content_type = "text/plain"
def render_GET(self, request):
return self
class CoAPServer(CoAP):
def __init__(self, host, port):
CoAP.__init__(self, (host, port))
self.add_resource('/sensor', sensor())
def main():
server = CoAPServer("0.0.0.0", 5682)
try:
server.listen(10)
except KeyboardInterrupt:
print("Server Shutdown")
server.close()
if __name__ == '__main__':
main()
nodejs-CoAP客户端如下所示
//app.js
const express = require("express");
const app = express();
const path = require("path");
const port = process.env.PORT || 3000;
app.use(express.static(path.join(__dirname, "public")));
var coap = require('coap');
var packet = require('coap-packet');
var req = coap.request({
host: '127.0.0.1',
pathname: '/sensor',
port: 5682,
method: 'get'
})
var payload = {
user : 'ash'
}
req.write(JSON.stringify(payload));
req.setOption('Content-Format','text/plain');
console.log(req);
req.on('response', function(res) {
console.log('response code', res.code);
res.pipe(process.stdout)
});
req.end();
app.listen(port, () => {
console.log(`🚀🚀Listening on port : ${port}`);
});
我得到的错误是
Traceback (most recent call last):
File "E:\practice\raspberrypi\CoAPServer1.py", line 28, in <module>
main()
File "E:\practice\raspberrypi\CoAPServer1.py", line 23, in main
server.listen(10)
File "C:\Users\91948\AppData\Local\Programs\Python\Python39\lib\site-packages\coapthon\server\coap.py", line 153, in listen
message = serializer.deserialize(data, client_address)
File "C:\Users\91948\AppData\Local\Programs\Python\Python39\lib\site-packages\coapthon\serializer.py", line 57, in deserialize
message.token = token_value.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 0: invalid start byte
这看起来像是Python中的一个bug,没有理由假设令牌必然表示UTF-8编码中的任何内容。请确认这在最新版本中仍然存在,如果是,请向CoAPython开发人员报告
相关问题 更多 >
编程相关推荐