我的代码正确连接到 AWS-END-POINT,但是当我尝试使用本地网络 IP 连接到 Greengrass 核心时。我收到这个错误。
E/flutter (12349): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error:
E/flutter (12349): CERTIFICATE_VERIFY_FAILED: Hostname mismatch(handshake.cc:352))
Run Code Online (Sandbox Code Playgroud)
我已经检查过 greengrass 核心。工作正常。它与网络客户端的连接非常好。我认为使用 ip 地址而不是 URL 地址可能存在一些问题。但我不确定。有人可以帮忙吗?
我正在运行的代码是:
import 'dart:async';
import 'dart:io';
import 'package:mqtt_client/mqtt_client.dart';
import 'dart:convert' show utf8;
import 'dart:convert';
Future<int> main() async {
const String url =
'192.168.8.106';
const int port = 8883;
const String clientId =
'MY CLIENT ID';
MqttClient client = MqttClient(url,clientId);
client.port = port;
client.secure = true;
final SecurityContext context = new SecurityContext(withTrustedRoots: …
Run Code Online (Sandbox Code Playgroud) 使用 AWS greengrass 处理边缘情况,我们计划在设备上运行多个 docker 容器,这些容器将使用 MQTT 相互通信。
到目前为止,我们成功安装并连接 greengrass、部署容器并使用与 greengrass 组件aws.greengrass.clientdevices.mqtt.Moquette 的进程间通信。
ipc_client = awsiot.greengrasscoreipc.connect()
Run Code Online (Sandbox Code Playgroud)
这是使用套接字连接。
如何使用主机、端口和身份验证将我的应用程序连接到本地 MQTT 代理?
像这样的东西
myAWSIoTMQTTClient = AWSIoTPyMQTT.AWSIoTMQTTClient(CLIENT_ID)
myAWSIoTMQTTClient.configureEndpoint(ENDPOINT, PORT)
if PATH_TO_ROOT and PATH_TO_KEY and PATH_TO_CERT:
myAWSIoTMQTTClient.configureCredentials(PATH_TO_ROOT, PATH_TO_KEY, PATH_TO_CERT)
myAWSIoTMQTTClient.connect()
Run Code Online (Sandbox Code Playgroud)
到目前为止我只能使用IPC建立连接。特别是对于开发来说,替代连接模式会很有帮助。此外,我们还想将外部设备连接到 MQTT 代理。
感谢您的支持!
我想知道什么时候人们会青睐 Greengrass 而不是 FreeRTOS?任何陷阱或经验提示都将受到高度赞赏
谢谢!
我正在运行多个 Greengrass 核心,它们将数据发送到 MQTT 流。我在 GGC 上部署了 Lambda,读取传入的 SerialPort 并将其推送到 Stream。
但现在我想检查哪个设备正在发送数据 - 我尝试用这个来检查主机名
import socket
host = socket.gethostname()
Run Code Online (Sandbox Code Playgroud)
但核心发送值“沙箱”,所以我认为 lambda 无权读取主机名。
SDK没有这方面的文档: https://github.com/aws/aws-greengrass-core-sdk-python
我想将数据推送到 mqqt 流,如下所示:
response = client.publish(
topic='customer/events/{DEVICE-ID or UID or ARN}/',
payload=jsonData.encode())
Run Code Online (Sandbox Code Playgroud)