1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openLuat-LuatOS

 / Детали:

[🐛Ошибка]: 【Али IoT】【Али Фэйян платформа】подписка/публикация модели topic ошибки Фразы внутри...

Предстоит сделать
Владелец
Создано  
22.06.2025

квадратных скобок переведены, но остались без изменений согласно правилам перевода.

Описание ошибки

  1. При использовании iotcloudc:subscribe для подписки на тему устройства /sys/${productkey}/${deviceName}/thing/service/property/set возникает ошибка iotcloud.lua:726: попытка индексировать nil значение (поле 'mqttc').

  2. При использовании iotcloudc.publish для отправки данных устройства на тему /sys/a1JoEO8aA4U/${deviceName}/thing/event/property/post возникает ошибка iotcloud.lua:747: попытка индексировать nil значение (поле 'mqttc').

Шаги воспроизведения```lua

sys.subscribe("iotcloud", function(cloudc, event, data, payload)
-- Обратите внимание, что здесь нет корутины, сложные операции отправляются в корутину для обработки
if event == iotcloud.CONNECT then -- Подключение к облачной платформе
print("iotcloud", "CONNECT", "Успешное подключение к облачной платформе")
aliyunconnect = 1
math.randomseed(os.time())
local t = {version = "1.0", method = "thing.event.property.post", id = math.random(1, 429496729), params = {ICCID = mobile.iccid(), IMEI = mobile.imei(), CSQ = mobile.csq()}}
local jdata = json.encode(t)
log.info("json", jdata)
iotcloudc.publish("/sys/" .. iotcloudc.product_id .. "/" .. iotcloudc.device_name .. "/thing/event/property/post", jdata, 0, 0)
-- Подписываемся на тему
-- В зависимости от проекта, подписываемся на нужные темы, комментированная ниже строка кода содержит недопустимую тему, поэтому её нельзя открывать, иначе подписка будет неудачной
-- Подписываемся на тему данных
iotcloudc:subscribe("/" .. iotcloudc.product_id .. "/" .. iotcloudc.device_name .. "/user/get") -- Подписываемся на тему, чтобы получать сообщения

    iotcloudc.subscribe("/sys/" .. iotcloudc.product_id .. "/" .. iotcloudc.device_name .. "/thing/service/property/set")
elseif event == iotcloud.RECEIVE then
    print("iotcloud", "topic", data, "payload", payload)
    -- Код пользователя
elseif event == iotcloud.OTA then
    if data then
        rtos.reboot()
    end
elseif event == iotcloud.DISCONNECT then -- Отключение от облачной платформы
    -- Код пользователя
end

end)


Если всё работает правильно, скрипт продолжит выполнение.

### Скриншоты

![Скриншот](https://foruda.gitee.com/images/1749722265140429594/afb0051b_8142673.png "Скриншот") В момент подключения используется подписка и публикация. Красные рамки указывают на места, где возникают ошибки, синие рамки — на места, где всё работает корректно.

### Журнал / Logs

![Журнал](https://foruda.gitee.com/images/1749722515829590456/5a4fee89_8142673.png "Screen Capture")
![Журнал](https://foruda.gitee.com/images/1749722560014404756/a8e0dd53_8142673.png "Screen Capture")

### Версия PACK-пакета / Version

SDK базовая версия V013_pb11.002

### Валидация

- [x] Проверено, что такой баг ранее не был отмечен / Checked that there isn't already an issue reporting the same bug to avoid creating a duplicate.
- [x] Предоставлен минимальный воспроизводимый пример или подробные шаги воспроизведения, чтобы гарантировать, что разработчики могут воспроизвести его / Provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.
- [x] Полная информация об ошибке, журналы и скриншоты предоставлены без сокращений.

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/openLuat-LuatOS.git
git@api.gitlife.ru:oschina-mirror/openLuat-LuatOS.git
oschina-mirror
openLuat-LuatOS
openLuat-LuatOS