FIWARE - TTN IoT - 代理
我正尝试让 ORION-Broker 与 IoTA-LoRa 一起运行。不幸的是,我在尝试将设备添加到代理时收到错误消息。
我使用以下 HowTo 来使用 TheThingsNetwork: https://fiware-lorawan.readthedocs.io/en/latest/users_manual/index.html#the-things-network-ttn
有人运行过它吗?我总是得到错误: 无法读取未定义的属性“findOne”。
有什么解决方法吗?
不幸的是,重新启动 IoTA 不起作用。
这是我的 Docker-compose 文件:
不幸的是,它对我来说不起作用。接下来我发布了我的 Docker-compose 文件:
version: "3.1
services:
mongodb:
image: mongo:latest
hostname: mongo-db
container_name: db-mongo
ports:
- "27017:27017"
volumes:
- /mnt/docker/mongodb:/data
orion:
image: fiware/orion
hostname: orion
container_name: fiware-orion
depends_on:
- mongodb
expose:
- "1026"
ports:
- "1026:1026"
command: -dbhost mongodb
iot-agent:
image: ioeari/iotagent-lora
hostname: iot-agent
container_name: fiware-iot-agent
depends_on:
- mongodb
expose:
- "4041"
ports:
- "4041:4041"
environment:
- "IOTA_CB_HOST=orion"
- "IOTA_CB_PORT=1026"
- "IOTA_NORTH_PORT=4041"
- "IOTA_REGISTRY_TYPE=mongodb"
- "IOTA_MONGO_HOST=mongo-db"
- "IOTA_MONGO_PORT=27017"
- "IOTA_MONGO_DB=iotagent-lorawan"
- "IOTA_PROVIDER_URL=http://iot-agent:4041"
我尝试添加一个设备,就像上面链接中的 FIWARE-HowTo 中描述的那样。
IoTA 总体上正在运行。调用: http://myhost:4041/iot/about 工作正常。但用它操作设备总是失败。
以下是完整的错误消息:
HTTP/1.1 500 内部服务器错误 X-Powered-By:Express Fiware-Correlator:c430da57-9b39-4ef1-a7e7-f27f2e6b2113 Content-Type:application/json; charset=utf-8 Content-Length:76 ETag:W/“4c-Mk5iR3/t76SWs53TC2DG+2Oquj0” 日期:2019 年 9 月 17 日星期二 08:14:03 GMT 连接:关闭
{"name":"TypeError","message":"无法读取未定义的属性‘findOne’">
错误消息表明存在 Mongo-DB 问题,但我认为这可能与 Docker 有关,特别是图像版本问题。
mongodb:
image: mongo:latest
orion:
image: fiware/orion
iot-agent:
image: ioeari/iotagent-lora
在每种情况下,您都明确或隐含地使用最新的
最新
Docker 映像,例如在 mongo-db 的情况下,当前为
mongo:4.2.0
,也许是昨天的其他版本,也许是自 LoRaWAN IoT 代理上次更新以来发生了重大变化。
最好修复为使用在 FIWARE_7.7.1 发布 时使用的一组通用版本:
-
fiware/orion:2.2.0
-
mongo:3.6
-
fiware/iotagent-lorawan:1.2.3
再试一次,看看 Mongo-DB 是否表现得更好。
Note: It looks like version tags are missing on
ioeari/iotagent-lora
, but latest corresponds tobff2c15d
which was release1.2.1
which has not yet been duplicated in the FIWARE account. For certainty, it could be better to build your own from sources.
第二点 - 您的
"IOTA_MONGO_HOST=mongo-db"
和 Orion 连接命令
command: -dbhost mongodb
不匹配,请尝试以下操作:
version: "3.1"
services:
iot-agent:
image: fiware/iotagent-lorawan:1.2.2
hostname: iot-agent
container_name: fiware-iot-agent
depends_on:
- mongo-db
expose:
- "4041"
ports:
- "4041:4041"
environment:
- "IOTA_CB_HOST=orion"
- "IOTA_CB_PORT=1026"
- "IOTA_NORTH_PORT=4041"
- "IOTA_REGISTRY_TYPE=mongodb"
- "IOTA_MONGO_HOST=mongo-db"
- "IOTA_MONGO_PORT=27017"
- "IOTA_MONGO_DB=iotagent-lorawan"
- "IOTA_PROVIDER_URL=http://iot-agent:4041"
- IOTA_LOG_LEVEL=DEBUG # The log level of the IoT Agent
mongo-db:
image: mongo:3.6
hostname: mongo-db
container_name: db-mongo
expose:
- "27017"
ports:
- "27017:27017"
command: --bind_ip_all --smallfiles
volumes:
- mongo-db:/data
orion:
image: fiware/orion
hostname: orion
container_name: fiware-orion
depends_on:
- mongo-db
expose:
- "1026"
ports:
- "1026:1026"
command: -dbhost mongo-db
volumes:
mongo-db: ~
您的一个或另一个 mongo-db 连接失败,这将导致 mongoose 具有空指针。
FIWARE 环境设置中通常出现错误
无法读取未定义的属性“findOne”
,这是由于 IoT Agent 和 MongoDB 之间的同步问题引起的。
在我们的案例中,我们也多次遇到过这个问题,我们的想法是先启动 MongoDB,然后启动 IoT Agent,如果 MongoDB 重新启动,有时我们必须在 MongoDB 之后再次重新启动 IoT Agent。