если нет терминала, то естественно не могу, поэтому и прошу рассказать как у тебя сделано )tarasfrompir писал(а): ↑Ср май 08, 2019 11:31 amа ты можешь давать ответ на вопрос из телеграмма - используя фукнцию sayTo('проба',5,'telegram1')?
[Модуль] Telegram (telegram)
Модератор: immortal
- Kvantos
- Сообщения: 295
- Зарегистрирован: Вт окт 31, 2017 1:05 pm
- Благодарил (а): 26 раз
- Поблагодарили: 49 раз
Re: [Модуль] Telegram (telegram)
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
- Kvantos
- Сообщения: 295
- Зарегистрирован: Вт окт 31, 2017 1:05 pm
- Благодарил (а): 26 раз
- Поблагодарили: 49 раз
Re: [Модуль] Telegram (telegram)
2Eraser
аналогично, при этом импортированы и команды и события, в классе room есть комнаты
Upd: Sergey Dr на телеге подсказал, что должны быть в классе room для всех объектов заполнено поле "Описание"
потому что $room_text= getObject($room['TITLE'])->description;
так заработало...
п.с. я не знаю на форуме ника Sergey Dr, чтобы сказать "спасибо"
- Вложения
-
- Snap 2019-05-08 at 12.11.10.png (56.92 КБ) 4039 просмотров
-
- Snap 2019-05-08 at 12.00.05.png (102.99 КБ) 4042 просмотра
-
- Snap 2019-05-08 at 11.58.48.png (12.81 КБ) 4044 просмотра
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: [Модуль] Telegram (telegram)
Переделал терминалы по своему образу - счас докатываю их. двое пообещали потестировать, но пока ни ответа не привета. Поэтому рассказать то могу - но обкатку еще не прошло все.... Если хочеш то пиши в лычку или в телегу...Kvantos писал(а): ↑Ср май 08, 2019 11:56 amесли нет терминала, то естественно не могу, поэтому и прошу рассказать как у тебя сделано )tarasfrompir писал(а): ↑Ср май 08, 2019 11:31 amа ты можешь давать ответ на вопрос из телеграмма - используя фукнцию sayTo('проба',5,'telegram1')?
Спасибо нам ПОМОЖЕТ..!
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: [Модуль] Telegram (telegram)
Для автора - постоянно сыпет - PHP Warning: count(): Parameter must be an array or an object that imp
ountable in E:\xampp\htdocs\modules\telegram\Telegram.php on line 1756 в цикле
ountable in E:\xampp\htdocs\modules\telegram\Telegram.php on line 1756 в цикле
Спасибо нам ПОМОЖЕТ..!
- webms
- Сообщения: 498
- Зарегистрирован: Чт дек 15, 2016 3:13 am
- Благодарил (а): 221 раз
- Поблагодарили: 88 раз
Re: [Модуль] Telegram (telegram)
вдруг не заметили сообщение)webms писал(а): ↑Вт май 07, 2019 5:25 pmУ меня в вкладке События есть меню с строкойа в Командах запись "Камеры"Код: Выделить всё
$option = array( array($em_l." Свет", $em_c." Камеры"));
когда нажимаю кнопку то пишет что неизвестная команда, если убрать иконку $em_c то все ок
а как вызвать команду Камеры с иконкой?
пс: надеюсь вы меня поняли)
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: [Модуль] Telegram (telegram)
Добавить такую же иконку в имя команды, но не факт что получитсяwebms писал(а): ↑Ср май 08, 2019 5:29 pmвдруг не заметили сообщение)webms писал(а): ↑Вт май 07, 2019 5:25 pmУ меня в вкладке События есть меню с строкойа в Командах запись "Камеры"Код: Выделить всё
$option = array( array($em_l." Свет", $em_c." Камеры"));
когда нажимаю кнопку то пишет что неизвестная команда, если убрать иконку $em_c то все ок
а как вызвать команду Камеры с иконкой?
пс: надеюсь вы меня поняли)
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
-
- Сообщения: 273
- Зарегистрирован: Вс авг 20, 2017 1:46 am
- Благодарил (а): 142 раза
- Поблагодарили: 13 раз
Re: [Модуль] Telegram (telegram)
А как отредактировать чтобы ещё температура отображалась?
Raspberry Pi3, с образа от Сергея 3.34
-
- Сообщения: 259
- Зарегистрирован: Сб май 11, 2019 6:35 pm
- Откуда: Иркутск
- Благодарил (а): 15 раз
- Поблагодарили: 59 раз
Re: [Модуль] Telegram (telegram)
Почему то неправильно считывается статус после включения - отключения. С точностью до наоборот. Пробовал выставить задержку - хоть 1, хоть 5 секунд ни к какому результату не привело. Также были проблем со считыванием при нажатии, но я заменил switch на turnOn и turnOff. Теперь только вышеописанная проблема. Причем если нажать "назад" и снова зайти в комнату - отображается актуальное состояние.
- Samir77
- Сообщения: 95
- Зарегистрирован: Чт фев 02, 2017 7:30 pm
- Благодарил (а): 755 раз
- Поблагодарили: 9 раз
Re: Модуль "Telegram"
Kvantos писал(а): ↑Вт май 07, 2019 12:44 pmТут на телеге подсказали как усовершенствовать немного (была проблема, в том что после первого нажатия кнопки меню статус не успевает поменяться и отображение текущего статуса невозможно), вот доработанный код, может пригодится. Было бы неплохо ссылку из шапки на него тоже сделать:
Команда "Освещение":Код: Выделить всё
$off = json_decode('"'.'\ud83c\udf11'.'"'); $on = json_decode('"'.'\uD83C\uDF15'.'"'); $ts = $off; $ks = $off; if (gg("Switch01.status") == 1) {$ts = $on;} if (gg("RGB01.status") == 1) {$ks = $on;} $option = array(array($this->buildInlineKeyboardButton($text=$ts."Коридор","","Callback_Switch01",""),$this->buildInlineKeyboardButton($text=$ks."Подсветка в зале","","Callback_RGB01","") ) ); $keyb = $this->buildInlineKeyBoard($option); $content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb); $this->sendContent($content);
Событие "Callback_light":Код: Выделить всё
$off = json_decode('"'.'\ud83c\udf11'.'"'); $on = json_decode('"'.'\uD83C\uDF15'.'"'); $ts = $off; $ks = $off; $sw = false; if ($callback == 'Callback_Switch01') { $sw = true; if (gg("Switch01.status") == 1) { $ts = $off; } else { $ts = $on; } cm("Switch01.switch"); } if ($callback == 'Callback_RGB01') { $sw = true; if (gg("RGB01.status") == 1) { $ks = $off; } else { $ks = $on; } cm("RGB01.switch"); } if ($sw) { $option = array(array($this->buildInlineKeyboardButton($text=$ts."Коридор","","Callback_Switch01",""), $this->buildInlineKeyboardButton($text=$ks."Подсветка в зале","","Callback_RGB01","") ) ); $keyb = $this->buildInlineKeyBoard($option); $this->editMessage($chat_id,$message_id,"Управление светом:",$keyb); }
Подскажите раз у вас получилось.. что нужно поменять в моем коде что бы сразу менялся статус???
Команда свет вот такой код
$off = hex2bin('F09F8C91');
$on = hex2bin('F09F8C95');
$objects=getObjectsByClass("SControllers");
print_r($objects);
foreach($objects as $obj) {
$state = $off;
if (gg($obj['TITLE'].".status") == 1)
$state = $on;
$option[] = $this->buildInlineKeyboardButton($text=$state.getObject($obj['TITLE'])->description,"","CallbackSwitch_".$obj['TITLE'],"");
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);
$this->sendContent($content);
callback
$off = hex2bin('F09F8C91');
$on = hex2bin('F09F8C95');
if (strpos($callback, 'CallbackSwitch_') !== false) {
$skip = true;
$obj = substr($callback, 15);
$text = getObject($obj)->description;
cm($obj.".switch");
if (gg($obj.".status") == 1)
$text .= " выключен ". $off;
else
$text .= " включен ". $on;
$this->sendAnswerCallbackQuery($callback_id,$text, false);
}
Заранее благодарен за ответ)
ASUS ASPIRE 5739G Windows 7 + Raspberry Pi3 + Broadlink + Sonoff
- Kvantos
- Сообщения: 295
- Зарегистрирован: Вт окт 31, 2017 1:05 pm
- Благодарил (а): 26 раз
- Поблагодарили: 49 раз
Re: [Модуль] Telegram (telegram)
2Samr77
у вас проблема может быть совсем не в нем, а в свойствах объекта, вернее в изменении, вероятно они не успевают поменяться.....
я брал готовый код от Eraser viewtopic.php?f=5&t=2768&p=102906#p102906
и дорабатывал под себя, вот мой рабочий код, хотя он в принципе работает, но там свойства status это команда выключателю, но нужно доработать чтобы было еще отдельное поле feedbackstatus - реальное состояние выключателя....
---МЕНЮ---
--- СОБЫТИЕ CallbackSD ---
у вас проблема может быть совсем не в нем, а в свойствах объекта, вернее в изменении, вероятно они не успевают поменяться.....
я брал готовый код от Eraser viewtopic.php?f=5&t=2768&p=102906#p102906
и дорабатывал под себя, вот мой рабочий код, хотя он в принципе работает, но там свойства status это команда выключателю, но нужно доработать чтобы было еще отдельное поле feedbackstatus - реальное состояние выключателя....
---МЕНЮ---
СпойлерПоказать
Код: Выделить всё
$this->sendAction($chat_id);
$off = hex2bin('F09F8C91');
$on = hex2bin('F09F8C95');
$run = hex2bin('F09F8F83');
$rooms = getObjectsByClass("Rooms");
$total = count($rooms);
foreach ($rooms as $room) {
$room_text= getObject($room['TITLE'])->description;
if (gg($room['TITLE'].".SomebodyHere")==1) $room_text.= " ".$run;
$option[] = $this->buildInlineKeyboardButton($text=$room_text,"","callSD_room_".$room['TITLE'],"");
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Выберите комнату:", 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$res = $this->sendContent($content);
--- СОБЫТИЕ CallbackSD ---
СпойлерПоказать
Код: Выделить всё
// код от 16.05.2019
if (strpos($callback, 'callSD_') !== false) {
$skip = true;
$cmd = explode("_", $callback);
//$this->sendAnswerCallbackQuery($callback_id, $callback." ".$cmd[1], false);
$endpoint = "editMessageText";
$content = array(
'chat_id' => $chat_id,
'message_id' => $message_id,
'parse_mode' => 'HTML'
);
$title_kb = "";
if ($cmd[1] == 'home')
{
$run = hex2bin('F09F8F83');
$rooms = getObjectsByClass("Rooms");
$title_kb = "Комнаты:";
foreach ($rooms as $room) {
$room_text= getObject($room['TITLE'])->description;
if (gg($room['TITLE'].".SomebodyHere")==1) $room_text.= " ".$run;
$option[] = $this->buildInlineKeyboardButton($text=$room_text,"","callSD_room_".$room['TITLE'],"");
}
}
if ($cmd[1] == 'room' || $cmd[1] == 'device')
{
$room = $cmd[2];
$off = hex2bin('F09F8C91');
$on = hex2bin('F09F8C95');
if ($cmd[1] == 'device')
{
$text = getObject($cmd[2])->description;
// Debmes($cmd[2]); //тут имя конкретного обьекта
$object_name = $cmd[2]; //сюда имя своего объекта
$sql = "SELECT classes.TITLE FROM objects JOIN classes ON objects.CLASS_ID = classes.ID WHERE objects.TITLE = '" . DBSafe($object_name) . "'";
$classname = SQLSelectOne($sql);
// Debmes($classname['TITLE']); //тут имя родительского класса обьекта
// cm($cmd[2].".switch");
if ($classname['TITLE'] == 'SRGB' && gg($cmd[2].".status") == 0) { //Если RGB и еще НЕ включено, то перед включением указать белый цвет (предотвращение цвета #000000)
$obj = $cmd[2];
cm($obj.".turnOn");
ClearTimeOut("rgbontimer"); //сбрасываем таймер
SetTimeOut("rgbontimer","sg($obj.'.color.#ffffff'); sg($obj.'.colorSaved.#ffffff');",2);
} else {cm($cmd[2].".switch");}
usleep(1500); //я добавил, т.к. не успевает измениться статус
if (gg($cmd[2].".status") == 1)
$text .= " включен ". $on;
else
$text .= " выключен ". $off;
$this->sendAnswerCallbackQuery($callback_id,$text, false);
$room = gg($cmd[2].".linkedRoom");
}
// кнопки устройств
$title_kb = gg($room.".Title");
$devices=SQLSelect("SELECT * FROM devices ORDER BY TITLE");
foreach($devices as $device) {
$obj = [];
$obj['TITLE'] = $device['LINKED_OBJECT'];
//$this->sendAnswerCallbackQuery($callback_id,$obj['TITLE'], false);
//$objects=getObjectsByClass("SDevices");
//foreach($objects as $obj) {
if (gg($obj['TITLE'].'.linkedRoom')==$room){
if ($device['TYPE'] == 'relay' || $device['TYPE'] == 'dimmer' || $device['TYPE'] == 'rgb')
{
$state = $off;
if (gg($obj['TITLE'].".status") == 1) $state = $on;
$option[] = $this->buildInlineKeyboardButton($text=$state.getObject($obj['TITLE'])->description,"","callSD_device_".$obj['TITLE'],"");
}
if ($device['TYPE'] == 'camera')
{
$cam = hex2bin('F09F93B7');
$option[] = $this->buildInlineKeyboardButton($text=$cam.getObject($obj['TITLE'])->description,"","callSD_camera_".$obj['TITLE'],"");
}
}
}
$option[] = $this->buildInlineKeyboardButton($text="Назад","","callSD_home","");
}
if ($cmd[1] == 'camera')
{
$this->sendAction($chat_id,"upload_photo");
$title_kb = $cmd[2];
$option[] = $this->buildInlineKeyboardButton($text="Назад","","callSD_room_".gg($cmd[2].'.linkedRoom')."_new","");
$url = BASE_URL.gg($cmd[2].".snapshotPreviewURL");
$image_path = "/var/www/files/".$cmd[2].".jpg";
try {
$data = file_get_contents($url);
$i = strlen($data);
$handle = fopen($image_path, "w");
fwrite($handle, $data);
fclose($handle);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$endpoint = "sendPhoto";
$img = curl_file_create($image_path, 'image/png');
$content['photo'] = $img;
$content['caption'] = $title_kb;
$this->deleteMessage($chat_id, $message_id);
}
if (count($cmd)>3)
{
$endpoint = "sendMessage";
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$content['text'] = $title_kb;
$content['reply_markup'] = $keyb;
$this->sendContent($content, $endpoint);
if ($endpoint=="sendMessage")
$this->deleteMessage($chat_id, $message_id);
}
- Рейтинг: 2.33%
MDM живет на 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux