Китайская панель в подрозетник с экраном 480*480
Модератор: immortal
-
- Сообщения: 149
- Зарегистрирован: Чт фев 13, 2020 6:39 pm
- Благодарил (а): 23 раза
- Поблагодарили: 38 раз
Китайская панель в подрозетник с экраном 480*480
На сайте коннекта появился новый блог от Xor https://connect.smartliving.ru/profile/ ... 0-480.html
Устройство довольно бюджетное, с хорошим функционалом.
Прошивка заточена под другую систему УД, но вполне вписывается и в Мажордом.
Направление для большинства новое, малопонятное.
Предлагаю в этой теме делиться решениями по этой железяке.
Пока что с поддержкой Xor делаю первые шаги.
Редактирование страниц в файле {}pages.jsonl
Что удалось:
1. Нижняя строка с переходами по страницам
{"comment":"---------- All Pages ----------"}
{"page":0,"id":7,"obj":"btn","action":"prev","x":0,"y":440,"w":158,"h":40,"text":"\uE141","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
{"page":0,"id":8,"obj":"btn","action":"back","x":161,"y":440,"w":158,"h":40,"text":"\uE2DC","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":24}
{"page":0,"id":9,"obj":"btn","action":"next","x":321,"y":440,"w":158,"h":40,"text":"\uE142","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
2. Время и дата
{ "page": 1, "id": 5, "obj": "label", "x": 230, "y": -13, "w": 240, "h": 100, "text_font": 100, "text_color": "#FFFF00", "align": "center", "text": "98:80:00", "template": "%H:%M" }
{ "page": 1, "id": 6, "obj": "label", "x": 230, "y": 100, "w": 240, "h": 32, "text_font": 28, "text_color": "#FFFF00", "align": "center", "text": "Wednesday", "template": "%d-%m-%Y" }
У кого есть что добавить - делитесь.
Устройство довольно бюджетное, с хорошим функционалом.
Прошивка заточена под другую систему УД, но вполне вписывается и в Мажордом.
Направление для большинства новое, малопонятное.
Предлагаю в этой теме делиться решениями по этой железяке.
Пока что с поддержкой Xor делаю первые шаги.
Редактирование страниц в файле {}pages.jsonl
Что удалось:
1. Нижняя строка с переходами по страницам
{"comment":"---------- All Pages ----------"}
{"page":0,"id":7,"obj":"btn","action":"prev","x":0,"y":440,"w":158,"h":40,"text":"\uE141","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
{"page":0,"id":8,"obj":"btn","action":"back","x":161,"y":440,"w":158,"h":40,"text":"\uE2DC","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":24}
{"page":0,"id":9,"obj":"btn","action":"next","x":321,"y":440,"w":158,"h":40,"text":"\uE142","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
2. Время и дата
{ "page": 1, "id": 5, "obj": "label", "x": 230, "y": -13, "w": 240, "h": 100, "text_font": 100, "text_color": "#FFFF00", "align": "center", "text": "98:80:00", "template": "%H:%M" }
{ "page": 1, "id": 6, "obj": "label", "x": 230, "y": 100, "w": 240, "h": 32, "text_font": 28, "text_color": "#FFFF00", "align": "center", "text": "Wednesday", "template": "%d-%m-%Y" }
У кого есть что добавить - делитесь.
- Рейтинг: 1.16%
- xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 289 раз
- Поблагодарили: 632 раза
Re: Китайская панель в подрозетник с экраном 480*480
отправляю данные на панель москитом с помощью скрипта send_mqtt
пример картинки с камеры
{"page":4,"comment":"---------- Page 4 ----------"}
{"id":1,"obj":"tabview","btn_pos":1}
{"id":10,"obj":"tab","parentid":1,"text":"Камера 2"}
{"id":20,"obj":"tab","parentid":1,"text":"Tab 2"}
{"id":30,"obj":"tab","parentid":1,"text":"Tab 3"}
{"id":12,"obj":"img","src":"L:/fon.png","x":15,"y":10,"auto_size":1,"w":460,"parentid":10}
{"id":11,"obj":"img","src":"L:/fon.png","x":15,"y":10,"auto_size":1,"w":460,"parentid":20}
со стороны мдм скриншот от камеры пишется сюда c:\_majordomo\htdocs\cms\images\cam2.jpg
меняем картинке размеры на 445*320 и делаем пнг
потом отправляем на панель - 4 страница объект 12 свойство src --> p4b12.src
у меня в настройках москита имя топика plate, подставляйте своё
Код: Выделить всё
if($params['topic']){
$topic = $params['topic'];
}else{
$topic = "mqtt/ttime";
}
if($params['value']){
$value = $params['value'];
}else{
$value = time();//gg('mqtt.status');
}
include_once(DIR_MODULES . 'mqtt/mqtt.class.php');
$mqtt = new mqtt();
$rezult = $mqtt->mqttPublish($topic, $value, 0, 0);
{"page":4,"comment":"---------- Page 4 ----------"}
{"id":1,"obj":"tabview","btn_pos":1}
{"id":10,"obj":"tab","parentid":1,"text":"Камера 2"}
{"id":20,"obj":"tab","parentid":1,"text":"Tab 2"}
{"id":30,"obj":"tab","parentid":1,"text":"Tab 3"}
{"id":12,"obj":"img","src":"L:/fon.png","x":15,"y":10,"auto_size":1,"w":460,"parentid":10}
{"id":11,"obj":"img","src":"L:/fon.png","x":15,"y":10,"auto_size":1,"w":460,"parentid":20}
со стороны мдм скриншот от камеры пишется сюда c:\_majordomo\htdocs\cms\images\cam2.jpg
меняем картинке размеры на 445*320 и делаем пнг
потом отправляем на панель - 4 страница объект 12 свойство src --> p4b12.src
у меня в настройках москита имя топика plate, подставляйте своё
Код: Выделить всё
//panel
$file ='c:\_majordomo\htdocs\cms\images\cam2.jpg';
list($width, $height) = getimagesize($file);
$src = imagecreatefromjpeg($file);
$dst = imagecreatetruecolor(445, 320);
imagecopyresampled($dst, $src, 0, 0, 0, 0, 445, 320, $width, $height);
imagepng($dst, 'c:/_majordomo/htdocs/cms/images/cam21.png');
imagedestroy($dst);
imagedestroy($src);
$par = array(
'topic'=> "hasp/plate/command/p4b12.src",
'value' => "http://192.168.1.7/cms/images/cam21.png"
);
rs("send_mqtt", $par);
Последний раз редактировалось xor Пн фев 19, 2024 2:44 am, всего редактировалось 2 раза.
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
- xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 289 раз
- Поблагодарили: 632 раза
Re: Китайская панель в подрозетник с экраном 480*480
отправить иконку из встроенного шрифта https://www.openhasp.com/0.7.0/design/fonts/#icons для
{"page":1,"id":42,"obj":"label","x":360,"y":200,"h":50,"w":60,"text":"\uE594","align":2,"text_color":"Gray","text_font":45}
в зависимости от режима темно/светло
поменять цвет этой иконки
{"page":1,"id":42,"obj":"label","x":360,"y":200,"h":50,"w":60,"text":"\uE594","align":2,"text_color":"Gray","text_font":45}
в зависимости от режима темно/светло
Код: Выделить всё
if(gg('DarknessMode.active')){
$a = json_decode('"\uE594"');
}else{
$a = json_decode('"\uE5A8"');
}
$par = array(
'topic'=> "hasp/plate/command/p1b42.text",
'value' => $a
);
rs('send_mqtt', $par);
Код: Выделить всё
$par = array(
'topic'=> "hasp/plate/command/p1b42.text_color",
'value' => "Lime"
);
rs('send_mqtt', $par);
Последний раз редактировалось xor Пн фев 19, 2024 2:57 am, всего редактировалось 2 раза.
win10 connect https://connect.smartliving.ru/profile/303
- xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 289 раз
- Поблагодарили: 632 раза
Re: Китайская панель в подрозетник с экраном 480*480
ещё можно добавить правила навигации - см. Limit page prev/next between 1 and 4AK1 писал(а): ↑Сб фев 17, 2024 6:59 pm
1. Нижняя строка с переходами по страницам
{"comment":"---------- All Pages ----------"}
{"page":0,"id":7,"obj":"btn","action":"prev","x":0,"y":440,"w":158,"h":40,"text":"\uE141","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
{"page":0,"id":8,"obj":"btn","action":"back","x":161,"y":440,"w":158,"h":40,"text":"\uE2DC","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":24}
{"page":0,"id":9,"obj":"btn","action":"next","x":321,"y":440,"w":158,"h":40,"text":"\uE142","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
так закольцуем переход стрелочками только для 1,2,3,4 страницы, если есть какая-нибудь 5, то туда кнопками не попасть теперь, только программно
например
Код: Выделить всё
$par = [
"topic" => "hasp/plate/command/page",
"value" => 5,
];
rs("send_mqtt", $par);
{"page":0,"id":7,"obj":"btn","action":"prev","x":0,"y":448,"w":160,"h":32,"text":"\uE141","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
{"page":0,"id":8,"obj":"btn","action":"back","x":161,"y":448,"w":160,"h":32,"text":"\uE2DC","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":24}
{"page":0,"id":9,"obj":"btn","action":"next","x":322,"y":448,"w":160,"h":32,"text":"\uE142","text_color":"#FFFFFF","radius":0,"border_side":0,"text_font":32}
{"comment":"---------- Limit page prev/next between 1 and 4 ----------"}
{"page":1,"id":0,"prev":4}
{"page":4,"id":0,"next":1}
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 149
- Зарегистрирован: Чт фев 13, 2020 6:39 pm
- Благодарил (а): 23 раза
- Поблагодарили: 38 раз
Re: Китайская панель в подрозетник с экраном 480*480
Простой способ передавать значения на панель в поле текста.
Например есть элемент типа label:
{ "page": 1, "id": 12, "obj": "label", "x": 25, "y": 150, "w": 100, "h": 50, "text_font": 40, "text_color": "#FFFF00", "align": "center", "text":"----"}
В панели mqtt мажордома прописываю:
Путь: hasp/1/p1b12/
Путь (write): hasp/plate_1/command/p1b12.text
И прописываю связанный объект и свойство.
При изменении свойства это отображается на панели.
Но при включении панели эти данные появляются только при изменении.
Поэтому надо предусмотреть принудительную отправку данных при появлении панели в сети.
Например есть элемент типа label:
{ "page": 1, "id": 12, "obj": "label", "x": 25, "y": 150, "w": 100, "h": 50, "text_font": 40, "text_color": "#FFFF00", "align": "center", "text":"----"}
В панели mqtt мажордома прописываю:
Путь: hasp/1/p1b12/
Путь (write): hasp/plate_1/command/p1b12.text
И прописываю связанный объект и свойство.
При изменении свойства это отображается на панели.
Но при включении панели эти данные появляются только при изменении.
Поэтому надо предусмотреть принудительную отправку данных при появлении панели в сети.
- Рейтинг: 3.49%
- xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 289 раз
- Поблагодарили: 632 раза
Re: Китайская панель в подрозетник с экраном 480*480
заодно при этом имеет смысл и прочитать состояния встроенных реле, которые в оффлайне могли переключить произвольноAK1 писал(а): ↑Пн фев 19, 2024 4:11 pmПростой способ передавать значения на панель в поле текста.
Например есть элемент типа label:
{ "page": 1, "id": 12, "obj": "label", "x": 25, "y": 150, "w": 100, "h": 50, "text_font": 40, "text_color": "#FFFF00", "align": "center", "text":"----"}
В панели mqtt мажордома прописываю:
Путь: hasp/1/p1b12/
Путь (write): hasp/plate_1/command/p1b12.text
И прописываю связанный объект и свойство.
При изменении свойства это отображается на панели.
Но при включении панели эти данные появляются только при изменении.
Поэтому надо предусмотреть принудительную отправку данных при появлении панели в сети.
а почему я использую отдельный скрипт на отправку данных в панель - неохота заводить много свойств, например, для строки "Пн, 19 февраля".
Я её формирую динамически, так же есть куча атрибутов, типа цвета текста, для чего тоже жаба душит создавать свойство(
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 149
- Зарегистрирован: Чт фев 13, 2020 6:39 pm
- Благодарил (а): 23 раза
- Поблагодарили: 38 раз
Re: Китайская панель в подрозетник с экраном 480*480
Фактически получился новый вид терминалов.
Нужен баланс потребностей и возможностей. Не перегружать терминал всем возможным.
А разнообразие способов вывода информации не помешает.
Нужен баланс потребностей и возможностей. Не перегружать терминал всем возможным.
А разнообразие способов вывода информации не помешает.
-
- Сообщения: 149
- Зарегистрирован: Чт фев 13, 2020 6:39 pm
- Благодарил (а): 23 раза
- Поблагодарили: 38 раз
Re: Китайская панель в подрозетник с экраном 480*480
Для будущего модуля.
В табличке д.б. поля: устройство / страница / ID поля / отображаемое св-во / .....
Тогда и актуализацию отображаемой информации при перезапуске / включении можно организовать.
Дизайном страниц модуль можно и не загружать.
В табличке д.б. поля: устройство / страница / ID поля / отображаемое св-во / .....
Тогда и актуализацию отображаемой информации при перезапуске / включении можно организовать.
Дизайном страниц модуль можно и не загружать.
-
- Сообщения: 149
- Зарегистрирован: Чт фев 13, 2020 6:39 pm
- Благодарил (а): 23 раза
- Поблагодарили: 38 раз
Re: Китайская панель в подрозетник с экраном 480*480
Привязал к топику LWT метод.
При включении и перезапуске отправляются актуальные данные в панель.
Пока список оформил в виде массива.
include_once(DIR_MODULES . 'mqtt/mqtt.class.php');
$mqtt = new mqtt();
$h_ar = [
['p1b12', 'TempUlica57.value'],
['p1b14', 'Гараж_4_rele.My_Pres'],
];
$num = count($h_ar);
for($i=0; $i < $num; $i++) {
$topic = "hasp/plate_1/command/".$h_ar[$i][0].".text";
$var = gg($h_ar[$i][1]);
$rezult = $mqtt->mqttPublish($topic, $var, 0, 0);
}
При включении и перезапуске отправляются актуальные данные в панель.
Пока список оформил в виде массива.
include_once(DIR_MODULES . 'mqtt/mqtt.class.php');
$mqtt = new mqtt();
$h_ar = [
['p1b12', 'TempUlica57.value'],
['p1b14', 'Гараж_4_rele.My_Pres'],
];
$num = count($h_ar);
for($i=0; $i < $num; $i++) {
$topic = "hasp/plate_1/command/".$h_ar[$i][0].".text";
$var = gg($h_ar[$i][1]);
$rezult = $mqtt->mqttPublish($topic, $var, 0, 0);
}
- Рейтинг: 1.16%
- xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 289 раз
- Поблагодарили: 632 раза
Re: Китайская панель в подрозетник с экраном 480*480
Аналоговые часы
{"page":6,"comment":"---------- Page 6 ----------"}
{"id":30,"obj":"img","src":"L:/clock.png","x":50,"y":60,"auto_size":0}
{"obj": "line", "id": 13, "points": "[[258,211],[136,201]]", "line_width": 8, "line_color": "#40A2D8"}
{"obj": "line", "id": 14, "points": "[[223,217],[373,151]]", "line_width": 10, "line_color": "#40A2D8"}
циферблат - картинкой, стрелочки рисуем вызовом скрипта раз в минуту
пока корявенько){"page":6,"comment":"---------- Page 6 ----------"}
{"id":30,"obj":"img","src":"L:/clock.png","x":50,"y":60,"auto_size":0}
{"obj": "line", "id": 13, "points": "[[258,211],[136,201]]", "line_width": 8, "line_color": "#40A2D8"}
{"obj": "line", "id": 14, "points": "[[223,217],[373,151]]", "line_width": 10, "line_color": "#40A2D8"}
циферблат - картинкой, стрелочки рисуем вызовом скрипта раз в минуту
Код: Выделить всё
$m = date("i");
$h = date("H");
if($h > 12) $h = $h - 12;
//длина стрелок
$r_m = 90;
$r_h = 70;
//ширина часов
$w = 400;
//высота часов
$he = 400;
//положение концов стрелок в радианах
$gM = (6 * $m - 90) * 3.1415926 / 180;
$gH = (30 * ($h + $m / 60) - 90) * 3.1415926 / 180;
//координаты минутной стрелки
$xM = (int)( $r_m * cos($gM) + $w/2);
$yM = (int)($r_m * sin($gM) + $he/2);
$xM1 =(int)(25 * cos($gM - 3.1415926) + $w/2);
$yM1 = (int)(25 * sin($gM - 3.1415926) + $he/2);
//координаты часовой
$xH = (int)($r_h * cos($gH) + $w/2);
$yH = (int)($r_h * sin($gH) + $he/2);
$xH1 = (int)(25 * cos($gH - 3.1415926) + $w/2);
$yH1 = (int)(25 * sin($gH - 3.1415926) + $he/2);
$a = "[[$xM1,$yM1],[$xM,$yM]]";
$par = array(
'topic'=> "hasp/plate/command/p6b13.points",
'value' => $a
);
rs("send_mqtt", $par);
$a = "[[$xH1,$yH1],[$xH,$yH]]";
$par = array(
'topic'=> "hasp/plate/command/p6b14.points",
'value' => $a
);
rs("send_mqtt", $par);
Последний раз редактировалось xor Чт фев 22, 2024 1:16 am, всего редактировалось 1 раз.
win10 connect https://connect.smartliving.ru/profile/303