NEWS
Драйвер MQTT
-
Добрый день всем,
строку для отображения. Но проблема в том, что ESP не публикует этот топик (но подписан на все топики /nodename/* по willcard, следовательно получит информауию и обработает).Следовательно надо этот топик опубликовать средствами IOB. Вопрос - как?
Создать в админ такой объект ручками
Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ? `
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt -
Создать в админ такой объект ручками `
Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ?
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt
Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
-
Возникла странная проблема. Создаю объект руками, через админку назначаю значение, все отлично, по MQTT модуль принимает данные и отображает мгновенно.
А вот когда я изменяю состояние этого объекта из JavaScript, то в админке вижу что состояние меняется, но модуль по MQTT обновления не получает. Пробовал setState с ask = true, и false,
без разницы. При рестарте модуля ESP он читает данные из топика, но при обновлении из скрипта - нет.
Куда копать, где грабли ?
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt
Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше? ` клиент подписан? Js скрипт запущен?
-
Попробуй слать и отслеживать с помощью mqtt-spy. Мне часто помогает помогает понять ,что происходит с mqtt `
Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
клиент подписан? Js скрипт запущен?
Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять.
-
Поставил mqtt-spy и вижу что MQTT драйвер не шлет ничего, когда топик обновляется из javascript. Мистика.
Куда копать дальше?
клиент подписан? Js скрипт запущен?
Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять. ` а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?
-
клиент подписан? Js скрипт запущен? `
Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять.
а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?
Вот видно на скрине (выделен красным) топик который я создал.
!
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/
-
Да, конечно.
1. Клиент (ESP) подписан, и обрабатывает изменение топика как нужно. Тут нет проблем. Ставим ручками в админке значение mqtt объекта, оно передается подписчикам (mqtt-spy подтверждает), ESP тоже получает и отрабатывает.
2. Js скрипт запущен. Он производит установку значения объекта через setState. В админке я вижу что изменение состояние объекта есть (from: javascript.0). НО: mqtt-spy подписанный на этот топик не видит изменений. ESP соответственно тоже.
Отсюда вывод: MQTT - брокер на IOB не рассылает изменения подписчикам. Топик (объект) MQTT создан ручками в админке. Может в этом дело? Не могу понять.
а в какой ветке создан? Подписывается на отдельный топик или на всю ветку?
Вот видно на скрине (выделен красным) топик который я создал.
! mqtt_topic.jpg
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/ ` очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще
-
Вот у меня MQTT в прошивке от MaksMS, стабильно работает только с авторизацией…
Но драйвер MQTT уже много с того времени потерпел изменений.
-
а в какой ветке создан? Подписывается на отдельный топик или на всю ветку? `
Вот видно на скрине (выделен красным) топик который я создал.
! mqtt_topic.jpg
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/
очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще
Странно. Включил Trace output for every message: в настройках драйвера (версия 1.2.4, я так понимаю последняя). Но никаких дополнительных сообщений в логе с уровнем debug не увидел. Или я включил отладку не в том месте?
-
Вот у меня MQTT в прошивке от MaksMS, стабильно работает только с авторизацией…
Но драйвер MQTT уже много с того времени потерпел изменений. `
ну у меня он то работает и без авторизации с ESP. да и проблема не в ESP собственно, а в том, что почему-то MQTT не отдает изменения сделанные через JS . Причем только в случае с самодельным топиком. А управление gpio например на те же ESP работает отлично.
-
Вот видно на скрине (выделен красным) топик который я создал.
! mqtt_topic.jpg
Клиент ESP подписывается регэкспом на всю свою ветку:
mqtt-0 2016-11-21 12:01:32.004 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^mqtt.0.sh-esp-klad..*/
mqtt-0 2016-11-21 12:01:32.003 info Client [ESP8266001a53d2] subscribes on "sh-esp-klad.#" with regex /^sh-esp-klad..*/
очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще
Странно. Включил Trace output for every message: в настройках драйвера (версия 1.2.4, я так понимаю последняя). Но никаких дополнительных сообщений в логе с уровнем debug не увидел. Или я включил отладку не в том месте? `
http://forum.iobroker.net/download/file … &mode=view -
очень странно, последние версии драйверов? В настройках драйвера все ок? Дебаг Включи еще `
Странно. Включил Trace output for every message: в настройках драйвера (версия 1.2.4, я так понимаю последняя). Но никаких дополнительных сообщений в логе с уровнем debug не увидел. Или я включил отладку не в том месте?
[http://forum.iobroker.net/download/file … &mode=view](http://forum.iobroker.net/download/file.php?id=6886&mode=view)
Спасибо, было перед глазами но не заметил
Впрочем проблема решилась следующим образом - я при помощи mqtt-spy запостил данные в созданный ручками объект топика MQTT. После этого видимо что-то внутри драйвера пришло в состояние шеншуя, и после этого апдейт топика из JS работает нормально, и сообщения уходят подписчикам.
По мере изучения IOB я все больше прихожу к пониманию необходимости приобретения шаманского бубна. Самый полезный инструмент, после синей изоленты, конечно
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать?
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать? ` 4 ым пунктом просто говорит что объект изменился, 5ым пунктом шлет изменение клиенту. Что не так? Код Меги давай и настройкиmqtt
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать?
4 ым пунктом просто говорит что объект изменился, 5ым пунктом шлет изменение клиенту. Что не так? Код Меги давай и настройкиmqtt
Не то что он шлет в топик не 0, а {"val":0}. Кроме того обрати внимание что в том state стоит флаг ask = true. А настройке mqtt драйвера сказано что не слать состояние с ask = true. Смори скрин с настройками ниже:
!
-
Новая проблема с брокером MQTT.
Начал разбиратся почему при рестарте брокера иногда самопроизвольно включаются устройства, управляемые по MQTT, и вот что при включении логирования выяснил:
1. запуск mqtt брокера и подписка интересующего нас клиента
2016-11-23 10:58:23.135 - ^[[32minfo^[[39m: mqtt.0 Starting MQTT server on port 1883
2016-11-23 10:58:25.091 - ^[[32minfo^[[39m: mqtt.0 Client
[color=#ff0000][ESP826600d3304e] connected2016-11-23 10:58:25.104 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^sh-esp-ver2..*/
2016-11-23 10:58:25.105 - ^[[32minfo^[[39m: mqtt.0 Client [ESP826600d3304e] subscribes on "sh-esp-ver2.#" with regex /^mqtt.0.sh-esp-ver2..*/
2. Клиент получает от брокера сохраненное значение интересующего нас GPIO, посколько при создании топика установлен флаг retain : (пока все нормально, выход выключен)
2016-11-23 10:58:25.133 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//~~[color=#ff0000]~~sh-esp-ver2/output15] "/sh-esp-ver2/output15": 0
3. ESP отдает брокеру тоже самое:
2016-11-23 10:58:25.195 - ^[[34mdebug^[[39m: mqtt.0 Server received "
[color=#ff0000]/sh-esp-ver2/output15" (number): 04. Брокер запоминает это:
2016-11-23 10:58:25.206 - ^[[34mdebug^[[39m: mqtt.0 stateChange mqtt.0.~~[color=#ff0000]~~sh-esp-ver2.output15: {"val":0,"ack":true,"ts":1479887905196,"q":0,"from":"system.adapter.mqtt.0","lc":1479887085735}
5. И шлет клиенту ESP нечто в своем внутреннем представлении. <u>Упс:</u>
2016-11-23 10:58:27.848 - ^[[34mdebug^[[39m: mqtt.0 Send to client [ESP826600d3304e//sh-esp-ver2/output15] "/sh-esp-ver2/output15": {"val":0}
6. Бедная ESP отпарсив очевидно это {"val":0} решает что надо включить GPIO что и делает, и бодро репортует брокеру:
2016-11-23 10:59:49.070 - ^[[34mdebug^[[39m: mqtt.0 Server received
[color=#ff0000]"/sh-esp-ver2/output15" (number): 1Вопрос по пункту 5: а зачем брокер шлет это подписчикам. И можно ли это отключить?
Может быть Bluefox может подключится и прокоментировать? `
Номер 5 действительно странно.Но вот что более странно, так это зачем клиенту знать о своих же состояниях при старте?
Отключи выдавать собственные значения при старте.
-
Новая проблема с брокером MQTT.
…..
Номер 5 действительно странно.
Но вот что более странно, так это зачем клиенту знать о своих же состояниях при старте?
Отключи выдавать собственные значения при старте.
Ну собственно знать собcтвенные состояние при коннекте иногда полезно. Например было что-то включено, затем клиент ребутнулся по питанию, и IOB ему сделает Total Recall
Отключить я попробую.
Но все-таки может посмотреть в чем проблемы:
1. брокер отдает state несмотря что в нем ask = true
2. state отформатирован во внутреннем формате IOB (т.е. {"val":0}).
В принципе если исправить п.2, чтобы слал без всяких тегов типа val: - это проблему бы решило, я так думаю.
Но и с п.1. тоже по-хорошему разобратся бы надо. Мало ли где еще это вылезет.
-
Я не пойму пока откуда это приходит {val: 0}, но попробуй заменить в lib/common.js функцию state2string на
function state2string(val) { if (typeof val === 'object') { if (val.ack === undefined && val.val !== undefined) { if (val.val === null) return 'null'; return val.val.toString(); } else { return JSON.stringify(val); } } else { return (val === null) ? 'null' : (val === undefined ? 'undefined' : val.toString()); } }
и перестартуй драйвер.
Насчёт ack: true
Mqtt сервер ещё и брокер. То есть он пересылает сообщения от клиентов mqtt другим участникам. Ну а так как твой клиент подписан на свои топики, то он их и получает.
ack работает на сообщения, которые приходят со стороны ioBroker. От других драйверов.
-
Я не пойму пока откуда это приходит {val: 0}, но попробуй заменить в lib/common.js функцию state2string на
function state2string(val) { if (typeof val === 'object') { if (val.ack === undefined && val.val !== undefined) { if (val.val === null) return 'null'; return val.val.toString(); } else { return JSON.stringify(val); } } else { return (val === null) ? 'null' : (val === undefined ? 'undefined' : val.toString()); } }
и перестартуй драйвер.
Насчёт ack: true
Mqtt сервер ещё и брокер. То есть он пересылает сообщения от клиентов mqtt другим участникам. Ну а так как твой клиент подписан на свои топики, то он их и получает.
ack работает на сообщения, которые приходят со стороны ioBroker. От других драйверов. `
Заменил. Сейчас драйвер падает вот с такими сообщениями:
! 2016-11-24 13:04:57.688 - ^[[31merror^[[39m: uncaught exception: Cannot read property 'ack' of null
! 2016-11-24 13:04:57.688 - ^[[31merror^[[39m: TypeError: Cannot read property 'ack' of null
! at state2string (/opt/iobroker/node_modules/iobroker.mqtt/lib/common.js:20:16)
! at sendState2Client (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:92:136)
! at Connection. <anonymous>(/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:489:37)
! at emitOne (events.js:96:13)
! at Connection.emit (events.js:188:7)
! at Connection.emitPacket (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:13:8)
! at emitOne (events.js:96:13)
! at Connection.emit (events.js:188:7)
! at Connection. <anonymous>(/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/node_modules/reduplexer/node_modules/readable-stream/lib/_stream_readable.js:786:14)
! at emitNone (events.js:86:13)</anonymous></anonymous> -
Следующая попытка:
function state2string(val) { if (val && typeof val === 'object') { if (val.ack === undefined && val.val !== undefined) { if (val.val === null) return 'null'; return val.val.toString(); } else { return JSON.stringify(val); } } else { return (val === null) ? 'null' : (val === undefined ? 'undefined' : val.toString()); } }