AWS Greengrass 发布到一个主题奇怪的​​异常

问题描述

在我的项目中,我使用 pymodbus 从通过 RS486 USB 适配器连接到传感器的树莓派读取注册表值,并希望使用 greengrass 发布到 MQTT 主题

...
# Configuration Parameters (default if not passed in environment)
unit_id = int(os.getenv('UNIT_ID') or '1')
port = os.getenv('SERIAL_PORT_DEVICE') or '/dev/ttyUSB0'
mb_baudrate = int(os.getenv('SERIAL_BAUD_RATE') or '9600')
modbus_mode = os.getenv('MODBUS_MODE') or 'rtu'
mb_timeout = int(os.getenv('MODBUS_TIMEOUT') or '1')

mbclient = ModbusClient(method=modbus_mode,port=port,timeout=mb_timeout,baudrate=mb_baudrate)

logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout,level=logging.DEBUG)

# Creating a greengrass core sdk client
client = greengrasssdk.client('iot-data')

def run_sync_client():
    while True:

        mbclient.connect()

        # set the address and number of bytes that will be read on the modbus device
        address = 0x00
        count = 1
        rre = mbclient.read_input_registers(address,count,unit=unit_id)
        logging.info(rre.registers)
        # publish results to topic in AWS IoT
        client.publish(topic='test/topic_data',payload=rre.registers[0].encode())

        time.sleep(5)

run_sync_client()

def lambda_handler(event,context):
    return

我使用 pip install greengrasssdk 来安装我的 sdk,但是当我部署我的 lambda 时,在 greengras 中创建我的组件并将它部署到我的树莓上,我得到了响应:

2021-02-03T09:22:49.622Z [ERROR] (pool-2-thread-31) IbmutSensor:greengrass_ipc_python_sdk.ipc_client.IPCException:HTTP 错误 400:错误请求。 {serviceInstance=0,serviceName=IbmutSensor,currentState=RUNNING}

我也尝试用 rre.registers[0].encode() 更改 'test'.encode() 但没有任何改变。 如果我删除日志中的 client.publish 行,我会看到来自传感器的正确数据,我的发布问题在哪里?

非常感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...