问题标签 [google-cloud-iot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1327 浏览

python - Google IoT - 接收通知的正确模式(订阅工作)

我正在关注本教程,并且我的代码已经将消息发布到/devices/sm1/events主题,其中sm1是我的设备 ID。

我想知道如何订阅这个主题,因为教程说要使用/devices/sm1/config,但我收到的是空消息。我已经尝试使用发布中使用的相同“路径”(/devices/sm1/events),但它也不起作用。

奇怪的是,我给主题的名称是sm1,而与我的设备关联的主题在 GoogleIoT 控制台上显示为projects/myprojectname/topics/sm1. 因此,除了发现如何订阅提到的主题之外,我还感谢任何与在 GoogleIoT 中使用 pub/sub 主题的正确方法相关的解释(文档不是很清楚)。

这是我的subscribe.py

我的输出:

连接状态:0
主题:/devices/sm1/config -- 有效负载:
主题:/devices/sm1/config -- 有效负载:

0 投票
1 回答
257 浏览

google-cloud-platform - Does google iot-core support MQTT WILL messages

I was wondering if google iot core support will messages concept. I tried to set will message for topic events on the device (devices\device-id\events) but had no luck with it... any ideas?

thanks

0 投票
2 回答
601 浏览

mqtt - Google IoT MQTT 网桥问题

我们有一个基于物联网的应用程序设备,它被配置为通过来自各种服务提供商(如 Google、AWS 和 Azure)的 MQTT 桥与我们的仪表板进行通信。

所以流程是:

  1. 设备启动与服务提供商的 TLS 会话。
  2. 订阅特定主题并等待来自服务提供商的消息,超时时间为 5 秒。
  3. Dashboard 定期向同一主题发布消息。
  4. 物联网服务提供商将其广播给所有订阅的设备。

发布和订阅消息使用 MQTT QOS 1服务。

观察:

AWS 和 Azure 在上述流程中运行良好,但设备在 3-5 次成功迭代后停止接收来自 Google MQTT 桥的消息,即使我们的仪表板正在向 Google IoT MQTT 桥发布消息。

对于 Google,我们发现与 Azure 和 AWS 相比,控制流是不同的。

对于 Google,我们需要在每次等待接收消息之前订阅和取消订阅给定主题,而对于 AWS 和 Azure,我们需要在打开 MQTT 连接期间订阅一次。

问题:

有时会发生 5 秒设备超时,因为它无法从 Google MQTT 网桥接收订阅主题的消息。添加多次重试以克服超时问题未成功,因为在开机后设备操作 45-60 秒后设备无法从 Google MQTT 桥接接收消息,问题仍然存在。

  • Google MQTT 网桥是否有限制定期接收消息而不是每次都订阅?
  • 设备如何在不超时(5 秒)的情况下从 Google MQTT 网桥接收消息?
  • 建立 MQTT 重新连接超时后,是否有任何解决方法可以恢复设备?
0 投票
2 回答
193 浏览

multi-tenant - Google IoT 核心中的多租户

是否有规定以多租户方式使用 Google IoT 核心,以便不同的用户可以使用同一个项目,但仍然只能看到他们自己的设备注册表、设备等?

0 投票
1 回答
124 浏览

devops - 未找到 Google IoT-core v1 API 发现

我在尝试从我的远程服务器(托管在 Digital Ocean 上)访问 google iot-core API 时遇到了一些问题。同一段代码可以在我的本地机器上运行,并且我确保即使服务密钥也是相同的,但没有明确的消息可以为我指明某个大致方向。

我不确定这是否是发现 API 的问题,因为我可以使用下面的 curl 命令在本地计算机上获得正确的响应,但是当我尝试在远程服务器上执行此操作时,它返回了 404 错误。以前有人经历过吗?

0 投票
2 回答
3238 浏览

google-cloud-platform - Google Cloud IoT - MQTT 发布主题无效

我正在使用带有 paho-mqtt 的 Python 客户端在 Google Cloud IoT 的这个特定主题中发布:projects/my_project/topics/sm1. 基于 Google IoT 文档的示例,我的代码如下:

当我运行时,客户端连接但不发布。在 Google IoT Console 中,我可以看到以下错误消息:

MQTT 发布主题无效:projects/my_project/topics/sm1

这是输出:

正在连接到 Google IoT Broker...
已连接,状态为:0 -- msg:连接已接受。
真正
的发布...
数据未发布!
('on_disconnect', '发生了一些错误。1:内存不足。')

这真的很奇怪,因为主题在那里,已创建,并且有与之关联的订阅!

任何帮助将不胜感激。我已经阅读了以下文档和代码:

0 投票
0 回答
1180 浏览

mosquitto - OpenWRT mosquitto_pub 版本似乎不支持 TLS,但我的 MQTT 代理需要 TLS

我解决了我的问题,请参阅此问题的结尾以获取我的解决方案。

我是 Mosquitto|MQTT 菜鸟,所以我为接下来的一切道歉。

在例如 Ubuntu 上安装了 mosquitto 并且一切正常,我可以随心所欲地做到这一点:

我想从 Onion Omega2 设备执行等效操作,并使用一个容器openwrt-x86-generic-rootfs作为它的开发代理运行(可能是问题 #1)

然后,我拥有mosquitto_pubmosquitto_sub上面的 Ubuntu 版本不同的版本,形式的标志-f并且--flag不受支持。这些工具似乎没有提供任何版本信息。

我认为这些版本已经过时,但我不知道是否可以更新到比opkg install上述版本更新的版本(问题 #2)。

与 Unix 示例一样,我想连接的 Google Cloud IoT 代理需要 TLS(不是相互的),但 OpenWRT Mosquitto 客户端似乎不包含允许 TLS 的选项。没有等价于--cafile。没有这个,我想我被封锁了。(问题#3)。

问题:

  • Onion Omega2 设备上的 Mosquitto 是否支持 TLS?
  • OpenWRT Mosquitto 客户端过时了吗?我可以升级吗?
  • 有没有办法让我使用 TLS 将 Onion 连接到 Google 的 MTQQ?

谢谢!!

在 Onion Omega2 设备上,Mosquitto 安装为我提供了不同/当前版本的工具,其中包括一个cafile标志,这对我有用。奇怪的是,这个版本的工具提供了帮助,例如-u,但该工具将接受--username

因此,我可以在 Omega2 上运行以下命令,并且都对我有用:

和:

在哪里:

LONG_REGISTRY=projects/${PROJECT}/locations/${REGION}/registries/${REGISTRY}

并且,回答我的问题:

  • Onion Omega2 上安装的 Mosquitto 工具支持 TLS
  • 我(假设)OpenWRT Mosquitto 客户端已过时;这不一样
  • 是的,上面的示例演示了使用 Cloud IoT 发布和订阅

我是不在 Cloud IoT 领域的 Google 员工,我认为我最需要 Mosquitto 的帮助。

0 投票
2 回答
966 浏览

iot - Google IOT - 设备订阅 /devices/XXXX/config 以外的其他内容

我正在尝试 Google IOT 和 Google PubSub。我正在将 MQTT 消息从设备发送到我订阅的 pubsub 队列(我称之为“服务器”)。从谷歌云控制台,我更新设备设置,并在设备中收到设置消息。

谷歌教程中的一切工作正常,但我想知道是否可以以另一种方式设置消息传递:即“服务器”将消息发送到设备使用 MQTT 订阅的 pubsub 队列。

本页末尾的架构让我觉得只有“config”mqtt 队列(/devices/XXXX/config)可以这样使用。

我需要的是从“服务器”到“设备”的 1to1 通信,恐怕唯一的方法是使用配置

0 投票
0 回答
1193 浏览

android-things - 如何从 Android Studio 发布和接收数据并将其保存在 Google Cloud IoT Core 上?

我是一名学生,正在做一个 Android Things 项目,该项目是关于将 Rasperi pi 与加速度计传感器连接以获取加速度数据,我在 Android Studio 中完成了编码部分并且传感器工作正常,然后我尝试将我的项目连接到按照本教程进行云计算:http: //blog.blundellapps.co.uk/tut-google-cloud-iot-core-mqtt-on-android/

我想我必须通过在 MainActivity 类中调用下面的这个方法将加速度计数据发布到云端,我这样做了但仍然有错误,请参阅我在这个问题末尾所做的更新。

另外,我是否必须在云平台中做一些事情才能接收数据?我已经设置了与我的 Google IoT Core 详细信息的通信,如下面的代码所示:

这是我在云中看到的:在此处输入图像描述

这是我在 Android Studio 中的加速数据: 在此处输入图像描述

我的项目由两个模块组成,但在这里我将只附加第二个模块,因为问题仅限于 3000 个字符,而我认为第二个模块是我需要编辑的。

示例模块:

AccelerometerActivity 类:

BoardDefaults 类:

IotCoreCommunicator 类:

IotCorePasswordGenerator 类:

MainActivity 类:

更新:

我在 IotCoreCommunicator 类中的 publishMessage() 方法上添加了第三个输入(int 加速),如下所示:

然后我在 MainActivity 类中的 run() 方法上调用它,如下所示:

但我在下面的屏幕截图中仍然有这个错误:(';' or )预期)

在此处输入图像描述

此外,我添加的第三个输入显示为从未使用过,如下面的屏幕截图所示,这有什么影响吗?

在此处输入图像描述

谢谢你。

0 投票
1 回答
300 浏览

google-cloud-platform - Stackdriver 中的 Google Cloud IoT Core 状态数据

我想知道是否有任何方法可以让通过 Google IoT Core 发送的设备状态数据显示在 Stackdriver 中,可能作为自定义指标。

从本质上讲,我想使用 Stackdriver 来监控我的设备,但不是将代理部署到所有设备上,我可以利用现有的安全连接,因为它们连接到 IoT Core。我可以从设备向状态主题发布一条 MQTT 消息,其中包含一些相关信息(例如,CPU 百分比、正在运行的进程数等)。然后我可以使用 Stackdriver 在出现问题时进行可视化并发出警报。

据我所知,我只能在 Stackdriver 中监控 IoT Core 的基本信息,比如发送了多少字节。我可以通过订阅 Google Cloud Pub/Sub 中的遥测主题来读取状态数据,但接下来的挑战是将这些数据导入 Stackdriver。

有任何想法吗?