+3
Completed

Доступ к каналам системы в локальной сети (протокол HTTP)

Команда 1М 8 years ago updated by Сергей Курицын 6 years ago 21

Начиная с версий прошивок для контроллеров 0.6.0.6 и наносервера 1.0.6.7 - добавлена возможность доступа к каналам системы посредством API на базе протокола HTTP.

Описание: http://f1m.userecho.com/topics/90-dostup-po-protokolu-http-v-lokalnoj-seti-sostoyanie-kanalov-api/

Добрый день, как отправлять данные понятно, а вот как принимать данные датчиков не совсем.

Принимать можно периодически считывая или сообщить на какой порт передавать данные - команда 3.

Я так понимаю наносервер не передает данные о состоянии датчиков, планируется ли в дальнейшем это исправить? Планируется ли добавить в "Конфигуратор" в "Сценарии" возможность прописывать свою строку GET запроса?

Совсем все поняли не так. Вы сообщаете системе(контроллеру) командой 3 порт приёма своей системы. На этот адрес и порт, указанный в команде 3, при изменении значения канала будет отправлено сообщение, формат описан в статье.

Все правильно понял :). С управлением "Наносервер 1M NS1010" и конусом проблем нет, все включается, выключается, меняется статус. Далее: при попытке указать порт для наносервера получаем:

Status Code: 404 value=1 (from cache) Идем смотреть API

В случае ошибки:

Ответ: HTTP/1.1 404 value=<код ошибки>

Коды ошибок:

1 - неверный код команды

Т.е. "Наносервер 1M NS1010" не может отсылать данные о состоянии датчиков, верно?


Далее устанавливаем порт для "Конус"

получаем ответ:

Status Code: 200 value=80

Отлично порт установлен. Включаем сниффер, срабатывает датчик движения, смотрим с трех разных портов на установленный ip адрес и порт отсылается информация, ok. Я так понимаю "Конус" при сработке отправляет GET запрос формата "?channel=<id канала>&value=<значение канала>" Правильно я понимаю?

Далее.

1. Нужно обработать запрос, хотелось бы для этого выделить отдельный PHP файл например nano.php (вот тут я может немного не понимаю), а не использовать index.php основной системы т.е. формат запроса по идее должен быть такой "nano.php?channel=<id канала>&value=<значение канала>"

2. Температурный датчик конуса шлет при изменении value=199 вместо температуры, что тоже не правильно.

В статье в сравнительной таблице указано какие команды поддерживаются. 1М Core пока данный функционал не поддерживает. Наносервер 3 команду поддержит в следующем обновлении.

1. Сообщения абстрагировано от системы, обработчиком может быть простая программа на любом языке и платформе.

Поэтому обрабатывать необходимо так как позволяет Ваша платформа.

2. В системе все числа целочисленные. Поэтому температура имеет значение *10.

В статье в сравнительной таблице указано какие команды поддерживаются. 1М Core пока данный функционал не поддерживает. Наносервер 3 команду поддержит в следующем обновлении.


Когда планируется поддержка наносервера?

Тестируем, думаем до конца недели.

Добрый день, когда планируется поддержка наносервера?

+1

Поддержка добавлена...

После перезагрузки конуса данные перестают идти на внешний порт.

Да все правильно, адрес и порт не сохраняется, в следующей версии исправим.

А что теперь мешает в палитру добавить примитивы в виде температуры влажности или еще бог весть каких значений для передачи в систему значений от самодельных датчиков? Для авторизации можно использовать такие же ключи как и при активации. Прописывать их в прошивке той же ESP. Ну или поддержка MySensors сразу вам 100500 юзверей бы обеспечила. Система то у вас мега четкой стала после выхода ядра и конусов.

Спасибо! Мы работаем над этим направлением.

Добрый день, планируется ли передача данных при смене состояния флагов, кнопок? И еще хотелось бы отправлять произвольный GET запрос со сценариев.

+1

Добрый день! Флаги и кнопки проверим. Произвольный формат HTTP запроса, пока не рассматриваем. Его реализация будет рассмотрена после выхода обновленного кабинета. Ориентировочно до конца года.

"...Флаги и кнопки проверим..."

Добрый день, когда планируете?

+1

До конца недели.

+1

Обновили прошивку наносервера.

такой вопрос, делаю запрос на состояние канала, запрос такой

getURL('http://192.168.1.42:8080/command=1&channel=2956'); //управление через get $data=getURL('http://192.168.1.42:8080/command=1&channel=value'); //чтение состояния и показаний яерез get setGlobal('test.1_m',$data); //запись показаний в свойство но ни чего не возвращается, где я косячу?