Нужна помощь по подключению оборудования GlobalCahe (WiFi to IR: WF2IR)

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Ответить
AVB
Сообщения: 16
Зарегистрирован: Вт ноя 10, 2015 4:01 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Нужна помощь по подключению оборудования GlobalCahe (WiFi to IR: WF2IR)

Сообщение AVB » Чт окт 29, 2020 7:50 pm

Здравствуйте, форумчане!

Достался мне вот такой девайс GlobalCahe (WiFi to IR: WF2IR), для управления АV, ТВ по ИК каналу.

Подскажите, как мне отправить на него ИК команду из MJD по нажатию на созданную кнопку в меню.

Оборудование имеет IP адрес и порт по которому взаимодействует.
Формат команды для отправки ИК сигнала, судя по спецификации API iTach (можно посмотреть по ссылке https://yadi.sk/d/LgJHdLiehswrNg):

sendir, 1: 2,2445,40000,1,1,4,5,4,5,8,9,4,5,8,9,8,9

Помогите пожалуйста!
AVB
Сообщения: 16
Зарегистрирован: Вт ноя 10, 2015 4:01 pm
Благодарил (а): 0
Поблагодарили: 3 раза

Нужна помощь по подключению оборудования GlobalCahe (WiFi to IR: WF2IR)

Сообщение AVB » Вт ноя 03, 2020 9:35 am

Здравствуйте!

Вот нашел еще информацию.
Вот так отправка команд реализовано в iRidium (источник https:()//dev.iridi.com/Global_Cache/ru):

Цитата:
ИК команды можно отправить через JavaScript. Используйте для отправки метод .Set и .Send из Drivers API:

var device = IR.GetDevice("Global Cache");
var CommandString = 'sendir,1:1,1,36127,1,1,96,31,17,16,16,16,16,32,16,32,49,32,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,17,16,16,16,16,16,32,16,16,16,16,16,16,16,16,32,32,16,16,16,16,16,16,16,16,32,17,16,16,16,16,16,32,16,4624';
var CommandName = "COMMAND";
IR.AddListener(IR.EVENT_ONLINE , device, function()
{
device.Set(CommandName, ""); // .Set command by name
device.Send([CommandString,0x0D]); // .Send command as string
});


Оформление ИК команды для метода Send подробно описано в iTach API.

P.S.
Помогите, адаптировать данное решение к MJD!
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1754 раза
Контактная информация:

Re: Нужна помощь по подключению оборудования GlobalCahe (WiFi to IR: WF2IR)

Сообщение skysilver » Вт ноя 03, 2020 10:47 am

AVB писал(а):
Вт ноя 03, 2020 9:35 am
Вот так отправка команд реализовано в iRidium (источник https:()//dev.iridi.com/Global_Cache/ru):
Это лишь верхний уровень. На нижнем полноценная JS-библиотека, которая и реализует весь протокол обмена.

Парой-тройкой строчек на PHP интеграцию не сделать. Нужно писать полноценную PHP-библиотеку, которая реализует протокол работы с WF2IR.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Нужна помощь по подключению оборудования GlobalCahe (WiFi to IR: WF2IR)

Сообщение tarasfrompir » Вт ноя 03, 2020 11:34 am

skysilver писал(а):
Вт ноя 03, 2020 10:47 am
AVB писал(а):
Вт ноя 03, 2020 9:35 am
Вот так отправка команд реализовано в iRidium (источник https:()//dev.iridi.com/Global_Cache/ru):
Это лишь верхний уровень. На нижнем полноценная JS-библиотека, которая и реализует весь протокол обмена.

Парой-тройкой строчек на PHP интеграцию не сделать. Нужно писать полноценную PHP-библиотеку, которая реализует протокол работы с WF2IR.
Так в принципе если знаете что отправлять то через сокет попробуйте отправку. Подсматривал на джава - тут - https://github.com/estbeetoo/globalcache/
Чтото типа этого

Код: Выделить всё

	// Default command
	function sendcommand($command, $parameter) {
		$this->reset_properties();
		$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if($socket === false) {
			$this->success = FALSE;
			$this->message = socket_strerror(socket_last_error());
			$this->message = iconv('CP1251', 'UTF-8', $this->message);
		} else {
			$result = @socket_connect($socket, $IPDEVICE, 4998);
			if($result === false) {
				$this->success = FALSE;
				$this->message = socket_strerror(socket_last_error($socket));
				$this->message = iconv('CP1251', 'UTF-8', $this->message);
			} else {
				$packet = $command.(strlen($parameter)?':'.$parameter:'');
				socket_write($socket, $packet, strlen($packet));
				$this->success = TRUE;
				$this->message = 'OK';
			}
			socket_close($socket);
		}
		return $this->success;
	}
Спасибо нам ПОМОЖЕТ..!
Ответить