首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以将CoAPthon (Python的CoAP)连接到node-CoAP(nodejs的CoAP)吗?

我可以将CoAPthon (Python的CoAP)连接到node-CoAP(nodejs的CoAP)吗?
EN

Stack Overflow用户
提问于 2021-06-03 00:19:08
回答 1查看 115关注 0票数 1

我正在处理一个raspberry pi项目,在该项目中我运行python脚本,并希望将该脚本中的传感器数据发送到我的nodejs服务器。我正在尝试将python脚本中的CoAP服务器连接到节点服务器上的客户机。使用的库是python中的CoAPthon和nodejs中的node-coap。当我尝试连接CoAPServer时,发现编码错误,有什么解决方法吗?错误:"utf-8‘编解码器无法解码位置3中的字节0xbd :开始字节无效“。

CoAPthon服务器的python版本如下所示。

代码语言:javascript
复制
#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客户端如下所示。

代码语言:javascript
复制
//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}`);
});

我得到的错误是

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-08-12 14:24:12

这看起来像是coapython中的一个bug --没有理由认为一个令牌必然代表UTF-8编码中的任何内容。请验证这在最新版本中是否仍然存在,如果是,请向CoAPython开发人员报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67808935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档