Удаленный доступ к модемам Unet с использованием JSON - PullRequest
2 голосов
/ 06 апреля 2020

Я пытаюсь использовать JsonTypeAdapter в модеме для передачи некоторых данных из удаленного источника. Адаптер включается с помощью сценария запуска модемов (JsonAdapter.enable ()), и к модему устанавливается порт TCP на порт 1100. Я следую примеру «Hello world» в документации Fjåge и отправляю следующую JSON на модем:

{"action":"send","message":{"clazz":"org.arl.unet.DatagramReq","data":{"data":{"clazz":"[B","data":"aGVsbG8gd29ybGQh"},"msgID":"8152310b-155d-4303-9621-c610e036b373","perf":"REQUEST","recipient":"phy","sender":"MyCustomInterface"}}}

Я установил для logLevel значение «ALL» и вижу, что в журнале я получаю входящее TCP-соединение, но данные не передаются модем. Я подписываюсь на физический агент, но не получаю никаких уведомлений в WebShell (хотя использование UnetSocket работает нормально).

Я предполагаю, что либо JsonAdapter не активен в этом соединении TCP, либо строка JSON неисправна или неправильно отправлена ​​моим приложением, либо что-то еще, что я пропустил.

1 Ответ

3 голосов
/ 07 апреля 2020

Я скопировал любое вставленное вами сообщение JSON, и оно отлично сработало для меня. Шаги, которые я предпринял:

  1. Я использовал unet audio SDOAM для проверки:
$ bin/unet -c audio
Modem web: http://localhost:8080/
> iface
tcp://192.168.1.8:1100 [API]
ws://192.168.1.8:8080/ws [API]
tcp:///192.168.1.8:1100//127.0.0.1.55832 [API]
unetsh: console://- [GroovyScriptEngine]
websh: ws://192.168.1.8:8080/fjage/shell/ws [GroovyScriptEngine]

Интерфейс API 192.168.1.8:1100 сообщает мне, какой порт прослушивает модем ( порт 1100). Итак, я подключаюсь к нему:

$ nc 192.168.1.8 1100
{"alive": true}

{"alive": true} говорит мне, что я подключен к правильному порту, и модем говорит "привет": -)

Сейчас Я копирую и вставляю ваше JSON сообщение:

{"action":"send","message":{"clazz":"org.arl.unet.DatagramReq","data":{"data":{"clazz":"[B","data":"aGVsbG8gd29ybGQh"},"msgID":"8152310b-155d-4303-9621-c610e036b373","perf":"REQUEST","recipient":"phy","sender":"MyCustomInterface"}}}

Я получаю ответ обратно:

{"action":"send","message":{"clazz":"org.arl.fjage.Message","data":{"msgID":"41b8264c-be98-4bbe-8b72-8986606513ae","perf":"AGREE","recipient":"MyCustomInterface","sender":"phy","inReplyTo":"8152310b-155d-4303-9621-c610e036b373","sentAt":1586233766542}},"relay":false}

, подтверждающий, что сообщение было получено и передается другому подчиненные контейнеры. Вскоре за этим следует «гудящий» звук, который издает мой SDOAM для отправки кадра через звуковую карту, и два сообщения (TxFrameStartNtf и TxFrameNtf), подтверждающие, что передача была успешно завершена:

{"action":"send","message":{"clazz":"org.arl.unet.phy.TxFrameStartNtf","data":{"txTime":15784016,"txDuration":1511416,"type":2,"msgID":"0a5bae1e-b16c-4bbb-8fcf-36ad55ffc64e","perf":"INFORM","recipient":"#phy__ntf","sender":"phy","inReplyTo":"8152310b-155d-4303-9621-c610e036b373","sentAt":1586233767349}},"relay":false}
{"action":"send","message":{"clazz":"org.arl.unet.phy.TxFrameNtf","data":{"txTime":15759432,"type":2,"location":{"clazz":"[D","data":""},"msgID":"f6e1dee6-ed31-4850-9d90-7b591a740971","perf":"INFORM","recipient":"MyCustomInterface","sender":"phy","inReplyTo":"8152310b-155d-4303-9621-c610e036b373","sentAt":1586233768761}},"relay":false}
...