开发者问题收集

FIWARE - TTN IoT - 代理

2019-09-15
382

我正尝试让 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’">

2个回答

错误消息表明存在 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 to bff2c15d which was release 1.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 具有空指针。

Jason Fox
2019-09-17

FIWARE 环境设置中通常出现错误 无法读取未定义的属性“findOne” ,这是由于 IoT Agent 和 MongoDB 之间的同步问题引起的。

在我们的案例中,我们也多次遇到过这个问题,我们的想法是先启动 MongoDB,然后启动 IoT Agent,如果 MongoDB 重新启动,有时我们必须在 MongoDB 之后再次重新启动 IoT Agent。

thebluemagician
2019-09-17