Плагин HTTP-Client
-
Новый вопрос:
команда set выполняет POST запрос с телом{"cmd":1,"sn":"0480110017434B5031373020000159","par":[[5,1,"${value}"]]}
И фактически в тело передается не значение актуатора, а строка "${value}"
-
@ellab
Добрый день, пришлите пожалуйста лог с отладчика плагина
-
@dev Здравствуйте.
https://yadi.sk/d/0U-PnzCcP8Jmyg
Видимо тут проблема вложенности?
Хотя пробую делать запросы на тестовый сервер, ничего в теле нет
Если просто в тело вписать произвольное постоянное значение, оно нормально отправляется при SET
-
@ellab Добрый день, спасибо за предоставленную информацию. Доступно обновление которое решит вашу проблему, проверьте пожалуйста.
-
Все работает, спасибо!
Извините за оффтоп, а где делся тип устройства "штора"?
нужно реализовать на Megad
-
@ellab
Добрый день, здорово, вы можете создать универсальный актуатор и использовать его в MegaD
-
@dev Вот и не могу придумать как сделать.
У меня 2 канала на разных релейных: открыть и закрыть. Фактически мне надо применить команду/sec/?cmd=7:1;p100;7:0
к каждому действию.
Или тут только через сценарий?
-
@ellab, если состояние не отслеживать, а только управлять, легче сделать просто на кнопках. При нажатии кнопки сразу передать команду MegaD
Если нужно состояние - тогда нужно устройство, а управлять через сценарий. Здесь это обсуждалось именно для MegaD:
https://forum.ih-systems.com/topic/124/управление-роллетами/9
-
Уважаемые разработчики, помогите разобраться с двумя вопросами.
- Использую Яндекс.Погода API. Значения приходят в формате json и присваиваются устройствам. Устройства размещаются на экранах и показывают погоду. Наряду с другими параметрами приходит название иконки текущей погоды. Иконка доступна по адресу https://yastatic.net/weather/i/icons/blueye/color/svg/<значение из поля icon>.svg. Какими средствами можно разместить погодную иконку на экране (виджете).
- Есть прошивка для esp8266, которая управляет светодиодной гирляндой. Переключением эффектов и настройкой параметров управляет android-приложение по wifi с помощью посылки udp-пакетов на определенный порт. Как из iH отправить udp-пакет на произвольный ip-адрес и порт.
-
@int144 Добрый день,
-
Создайте устройство
Датчик универсальный бинарный
добавьте необходимое количество состояний, назначьте каждому состоянию необходимую картинку. Картинки необходимо будет предварительно загрузить. -
На текущий момент простого решения нет, вы можете создать виртуальное устройство (
RGB
илиLamp
). Создаете сценарий , привязываете ранее созданное виртуальное устройство и выполняете необходимые команды
пример:
/** * @name Новый сценарий * @desc * @version 4 */ const rgb = Device("RGBLAMP"); // id виртуального устройства startOnChange(rgb); script({ start() { const dgram = require('dgram'); const client = dgram.createSocket('udp4'); const HOST = '192.168.0.110'; const PORT = 45900; const [r, g, b, w, ww] = rgb.value; const message = new Buffer(`set value: [${r}, ${g}, ${b}]`); // данные udp, получиться такой пакет "set value: [255, 255, 255]" client.send(message, 0, message.length, PORT, HOST, () => {}); } });
-
-
@dev, спасибо за быстрый ответ.
- Я и сам думал так сделать, но у меня нет полного набора иконок и их названий. Написал в тех.поддержку Яндекс.
- Спасибо, скрипт работает, и даже переключает там что-то, только не то,что я хотел. Возможно с кодировкой нужно разобраться. Попробую tcpdump-ом посмотреть.
-
После обновления плагина перестала работать регулировка громкости. В боковом меню при перемещении ползунка значения на иконке не меняются. На кнопки включения и выключения не реагирует.
В отладчике:
03.11 21:32:31.871 IH: command [ { dn: 'VOLL_ALL', prop: 'set', val: 5 } ] 03.11 21:32:31.872 IH: send { type: 'act', data: [ { dn: 'VOLL_ALL', prop: 'set', val: 5 } ] } 03.11 21:32:31.880 IH: command [ { dn: 'VOLL_ALL', prop: 'set', val: 5 } ] 03.11 21:32:31.881 IH: send { type: 'act', data: [ { dn: 'VOLL_ALL', prop: 'set', val: 5 } ] } 03.11 21:32:31.884 http1: http://192.168.0.43/mp3play?cmd=6&data=5 03.11 21:32:31.922 IH: Plugin exit with code 1 03.11 21:32:31.926 IH: restart timer 5 03.11 21:32:34.572 IH: command fail! [ { dn: 'VOLL_ALL', prop: 'set', val: 11 } ] Plugin is not running! 03.11 21:32:34.580 IH: command fail! [ { dn: 'VOLL_ALL', prop: 'set', val: 11 } ] Plugin is not running! 03.11 21:32:35.323 IH: command fail! [ { dn: 'VOLL_ALL', prop: 'off' } ] Plugin is not running! 03.11 21:32:36.413 IH: command fail! [ { dn: 'VOLL_ALL', prop: 'on', val: '20' } ] Plugin is not running! 03.11 21:32:37.643 IH: Run /var/lib/intrahouse-c/plugins/http/index.js http1 03.11 21:32:37.679 IH: command [ { dn: 'VOLL_ALL', prop: 'off' } ] 03.11 21:32:37.681 IH: send { type: 'act', data: [ { dn: 'VOLL_ALL', prop: 'off' } ] } 03.11 21:32:38.540 IH: command [ { dn: 'VOLL_ALL', prop: 'on', val: '20' } ] 03.11 21:32:38.541 IH: send { type: 'act', data: [ { dn: 'VOLL_ALL', prop: 'on', val: '20' } ] } 03.11 21:32:39.502 IH: command [ { dn: 'VOLL_ALL', prop: 'off' } ] 03.11 21:32:39.503 IH: send { type: 'act', data: [ { dn: 'VOLL_ALL', prop: 'off' } ] } 03.11 21:32:39.857 http1: start 03.11 21:32:39.859 http1: version: 0.0.17 03.11 21:32:39.894 IH: Plugin exit with code 1 03.11 21:32:39.898 IH: restart timer 5
-
@gis Добрый день, выпущено обновление, проверьте пожалуйста.
-
@dev
Перестали парситься значения влажности shth:05.11 13:51:45.498 http1: GET http://192.168.0.41/sensors ---- HEADERS START ---- { "content-length": "47 ", "server": "lwIP/1.4.0", "content-type": "text/html", "connection": "close ", "expires": "Fri, 10 Apr 2008 14:00:00 GMT", "pragma": "no-cache" } ---- HEADERS END ---- ---- BODY START ---- hostname:ESP-TFT;shtt:20.2;shth:56.6;rtct:21.0;---- BODY END -- 05.11 13:51:45.502 http1: http://192.168.0.41/sensors --> values: ["shtt:20.2;shth:","20.2"] 05.11 13:51:45.504 IH: get [ { dn: 'STEMP_ESP_TFT', err: 'Cannot read property \'slice\' of null' }, { dn: 'SHTT_ESP_TTF', value: 20.2 } ] set { STEMP_ESP_TFT: { err: 'Cannot read property \'slice\' of null' }, SHTT_ESP_TTF: { aval: 20.2, err: 0 } }
-
@gis Добрый день, покажите пожалуйста формулу обработки значения
-
@dev Спасибо, все заработало после того, как удалил и заново создал каналы.
-
Добрый день! пытаюсь получить данные temp из json
{"observations":[{"stationID":"ISCHEP1","obsTimeUtc":"2019-11-22T14:25:55Z","obsTimeLocal":"2019-11-22 17:25:55","neighborhood":"Schepkinskoe","softwareType":null,"country":"RU","solarRadiation":null,"lon":39.80593491,"realtimeFrequency":null,"epoch":1574432755,"lat":47.34576416,"uv":null,"winddir":102,"humidity":52.0,"qcStatus":-1,"metric":{"temp":-4.9,"heatIndex":-4.9,"dewpt":-13.1,"windChill":-8.3,"windSpeed":7.4,"windGust":9.3,"pressure":1033.86,"precipRate":0.00,"precipTotal":0.25,"elev":24.4}}]}
но что то не пойму что надо записать в Извлечение данных JSON
data.observations.metric.temp ошибка
-
observations - это массив
Попробуйте так: data.observations[0].metric.temp
-
спасибо попробую
-
опрашиваемое устройство присылает ответ в JSON в виде 6 разрядного числа, каждый из разрядов которого может принимать значение 0 или 1. Как грамотно написать запрос для извлечения данных, что бы не отбрасывались первые незначащие нули?
Т.е , например, плагин читает ответ вида 010000 но в сценарий передает 10000. Куда смотреть?
UPD: Как вариант можно "выровнять" в самом сценарии,
типа:while (val.length <6 ) vl='0' + val; // добиваем 0-ми до 6 символов
но это все равно полностью не снимает вопрос...