directman

 
<<< Back

Индикаторы о заряде батареек без использования картинок

Очень интересное решение - в качестве индикаторов остатка и заряда батарей использовать графический шрифт. Делюсь своими наработками в этом вопросе.

Заряды батарей
Этот код вставляем в меню

<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
</head>
<font color="%admin.batterycolor%"><i class="fa %admin.batteryfa% " title="Dmitriy %admin.BattLevel%%"></i></font>
<font color="%Katy.batterycolor%"><i class="fa %Katy.batteryfa% " title="Katy %Katy.BattLevel%%"></i></font>
<font color="%Alex.batterycolor%"><i class="fa %Alex.batteryfa% " title="Alex %Alex.BattLevel%%"></i></font>
<font color="%Chuwi.batterycolor%"><i class="fa %Chuwi.batteryfa% " title="Chuwi %Chuwi.BattLevel%%"></i></font>

где у каждого пользователя admin, Katy, Alex имеются дополнительные ствойства:
BattLevel - уровень заряда берется из плагина GPS трекинг (на телефонах установлено приложение BigBrother)
batteryfa - хранится название картинки из нашего шрифта fa-battery-three-quarters
batterycolor - green, red, заполняется сценарием updatebaterry

Причем ребенок все время удаляет bigBrother, поэтому для слежения за старшими детьми не очень подходит.

скрипт updatebaterry:

$objects=getObjectsByClass("Users");
foreach($objects as $obj)
 {
 $name=$obj['TITLE'];
$charging=gg($name.'.Charging');
$bl=gg($name.'.BattLevel');
 echo  $charging;
echo $bl;
if ( $charging== 1){
sg($name.'.batterypic',"charge/batterycharged256.png");
sg($name.'.batterycolor', 'red');    } 
 else {  sg($name.'.batterycolor', 'green');}
  if  ($bl == 100){
sg($name.'.batteryfa',"fa-battery-full");  
        } 
 if  ($bl   <= 95) {
  sg($name.'.batteryfa',"fa-battery-three-quarters");
     }
 if  ($bl   <= 50) {
 sg($name.'.batteryfa',"fa-battery-half");
     }
 if ($bl   <= 20) {
sg($name.'.batteryfa',"fa-battery-quarter"); 
     }
 if ($bl   <= 5) {
 sg($name.'.batteryfa',"fa-battery-empty");      } 
}

Запуск этого скрипта можно добавить в ClockChime.onNewMinute

//когда минута оканчивается на 4, запускаем скрипт updatebaterry
$h=(int)date('G',time());
$m=date('i',time());
if ($m2=="4")   {
RunScript('updatebaterry');
}

Устройства online

Этот код добавляем в меню:

<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

 <!-- примеры шрифтов смотреть тут https://html5book.ru/shrift-awesome/ -->
</head>

<script type="text/javascript">
// Popup window code
function newPopup(url) {
popupWindow = window.open(
url,'popUpWindow','height=300,width=400,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
}
</script>

<a href="JavaScript:newPopup('/javascript/examples/sample_popup.cfm');"> 
<font size="4" color="%ESP01.stateColor%" title="ESP01 %ip.ESP01%"><i class="fa fa-share-square-o "></i></font></a>

 <font size="4" color="%Relay12.stateColor%" title="sontouch %ip.sontouch% "><i class="fa fa-hand-pointer-o "></i></font>  

<font size="4" color="%Relay09.stateColor%" title="sonoff sofit %ip.sonsofit%"><i class="fa fa-ticket "></i></font>  
<font size="4" color="%Relay10.stateColor%" title="RGBSonoff %ip.SONOFFRGB%"><i class="fa fa-ticket  "></i></font>   
<font size="4" color="%Relay07.stateColor%" title="sonoff gostinaya light %ip.songostligh% "><i class="fa fa-ticket "></i></font>  
<font size="4" color="%Relay06.stateColor%" title="sonoff spalnya %ip.sonspalna%"><i class="fa fa-ticket "></i></font>  
<font size="4" color="%Relay11.stateColor%" title="sonoff vanna %ip.sonoffvanna% "><i class="fa fa-ticket "></i></font>  

<font size="4" color="%RGBkitchen.stateColor%" title="RGBPWM %ip.ESPRGB%"><i class="fa fa-tachometer "></i></font>    

<font size="4" color="%NVR.stateColor%" title="NVR %ip.NVR% %ip.nvr%"><i class="fa fa-hdd-o "></i></font>  
<font size="4" color="%ALEXHOME.stateColor%" title="ALEXHOME %ip.ALEXHOME%"><i class="fa fa-laptop "></i></font>  
<font size="4" color="%DMSHOME.stateColor%" title="DMSHOME %ip.DMSHOME%"><i class="fa fa-laptop "></i></font>  

<font size="4" color="%slinex.stateColor%" title="slinex %ip.Slinex%"><i class="fa fa-phone"></i></font>  

<font size="4" color="%mag250_rostelekom.stateColor%" title="MAG250_ROSTELEKOM %ip.mag250_rostelecom%"><i class="fa fa-television "></i></font>  
<font size="4" color="%mag250_gostinaya.stateColor%" title="MAG250_PLANETA %ip.mag250_planeta%"><i class="fa fa-television "></i></font>  
<font size="4" color="%mag250_spalnya.stateColor%" title="WR320 %ip.wr320%"><i class="fa fa-television "></i></font>  

<font size="4" color="%H264_KORIDOR.stateColor%" title="H264_PRIHOJAYA %ip.H264_PRIHOJAYA% %H264_KORIDOR.stateColor%  " ><i class="fa fa-camera "></i></font>  
<font size="4" color="%H264_OBSHIY.stateColor%" title="H264_LIFT %ip.H264_OBSHIYKORIDOR%"><i class="fa fa-camera "></i></font>  

<font size="4" color="%xiaomi_RN3PRO_GOLD.stateColor%" title="xiaomi_RN3PRO_GOLD %ip.Xiaomi_RN3_GOLD% "><i class="fa fa-mobile "></i></font>  
<font size="4" color="%xiaomi_RN3PRO_BLACK.stateColor%" title="xiaomi_RN3PRO_BLACK %ip.Xiaomi_RN3_BLACK% "><i class="fa fa-mobile "></i></font>  
<font size="4" color="%xiaomi_RN4.stateColor%" title="xiaomi_RN4 %ip.Xiaomi_RN4% "><i class="fa fa-mobile "></i></font>  

<font size="4" color="%mqttserver.stateColor%" title="MQTT"><i class="fa fa-qrcode"></i></font> 
<font size="4" color="%mysdr.stateColor%" title="rtl_433 %mysdr.lasttime%"><i class="fa fa-qrcode"></i></font>  

<font size="4" color="%all_in_one.zaoknom_stateColor%" title="t в гостиной %all_in_one.zaoknomtemp%/%all_in_one.zaoknomhum% bat:%all_in_one.zaoknombattery% %all_in_one.zaoknom_last%"><i class="fa fa-pagelines"></i></font>  
<font size="4" color="%all_in_one.zaoknom2_stateColor%" title="t леши %all_in_one.zaoknom2temp%/%all_in_one.zaoknom2hum% bat:%all_in_one.zaoknom2battery% %all_in_one.zaoknom2_last%"><i class="fa fa-pagelines"></i></font>  
 <font size="4" color="green" title="email: %unreademail%"><i class="fa fa-envelope-o"></i></font>  

Для хранения IP адресов создан объект ip, который заполняется сценарием arp (запуск аналогично можно прописать в OnNewMinute):

$data = shell_exec('arp -a');
addClassObject('ipaddress', 'ip');
sg('ip.all',$data); 
$data2 =preg_split('/\\r\\n?|\\n/',$data);

for($i=0;$i<count($data2);$i++) {
$name=explode(' ',$data2[$i])[0];
$ipadr=str_replace(')','',str_replace('(','',explode(' ',$data2[$i])[1]));
sg('ip.'.$name,$ipadr); 
};

Цвет каждого из этих индикаторов задаем через модуль "Устройства Online"

Для устройства ESP01

Хост (адрес):* %ip.ESP01%
Действие при переходе в Online:sg('ESP01.stateColor','green');
Действие при переходе в Offline:sg('ESP01.stateColor','red');

Если честно, модуль настраивать для каждого объекта очень долго, лучше бы написать скрипт для его замены.

Также можно заметить, что имеется логотип fa-qrcode, которые показывают статус работы сервисов MQTT и внешнего приложения mysdr
Для обновления цветов этих логотипов используются сценарии:

rtl_433_state:

 $cmd='ps -A|grep 433';
//$cmd='ps -A';
$answ=shell_exec($cmd);
//echo $answ;
$rez=substr_count  ($answ,'433' );
echo $rez;
if ($rez=="1" ){sg('mysdr.statecolor','green');} 
else {sg('mysdr.statecolor','red');
if (gg('mysdr.autorestart')==1) {RunScript('meteo2mqtt');     }
} 

mqtt_open (этот сценарий можно использовать для проверки любого открытого порта:

//Проверка на работоспособность функции fsockopen
if(!function_exists('fsockopen'))       { say ( 'fsockopen не работает!'); return; }
//Используем определённые сервера на которых точно открыты нужные порты
$tests = array(1883 => '192.168.1.39') ;
//По циклу тестируем
foreach($tests as $port => $server){
    //Соединяемся
$fp = @fsockopen($server,$port,$errno,$errstr,5);
//Если удачное соединение
if($fp){  sg('mqttserver.statecolor','green'); 
sg('mqttserver.error','');             
fclose($fp);}           
//Если неудачное соединение
else{sg('mqttserver.statecolor','red'); }}

Примеры логотипов шрифта можно посмотреть тут https://html5book.ru/shrift-awesome/

Discuss (5) (8)

See also:
2021-03-02 Добавляем новые или недостающие метрики управления устройств в модуле zigbee2mqtt
2021-02-16 Установка Majordomo на JetHUB D1
2021-02-02 Shelly 1
2020-09-30 Команды для назначения владельцев папок
2020-09-16 Собираем список ip вызывных панелей с поддержкой SIP
2020-07-03 Получаем безопасный доступ к Web странице MajorDoMo
2020-04-24 Установка MajorDoMo на synology в 3 клика
2020-02-13 Настройка модуля zigbee2mqtt для работы с zigbee2mqtt или шлюзом sls zigbee gateway
2020-02-13 Настройка модуля zigbee2mqtt для работы с zigbee2mqtt или шлюзом sls zigbee gateway
2020-01-25 Команды для настройки прав пользователей на папку с majordomo
2020-01-23 Отключаем строгий режим MYSQL штатными средствами
2019-10-12 Подключаем светодиодные ленты к контроллеру MegaD
2019-10-11 Варианты интеграции электроприводов
2019-09-30 Выбор источников сигнала телевизоров LG 2013
2019-09-29 Узнаем версию дистрибутива linux
2019-09-24 Установка необходимых пакетов в xpenology через docker
2019-09-16 Примеры разметки Markdown
2019-09-14 Краткий обзор выключателей, в том числе Sonoff T4EU1C
2019-09-13 Сценарий для канала @MajorDoMo_feed
2020-03-26 Опыт установки Synology DSM
2019-09-09 Делаем majordroid лаунчером андройд по-умолчанию.
2019-09-04 Реализация сценария "кто-то пришел"
2019-09-02 Отправляем график hightcharts свойства любого объекта в телеграмм
2019-09-17 Автономная сигнализация на базе контроллера megad-2561
2019-08-27 Управление громкостью терминалов через телеграмм
2019-08-26 Полноценная консоль в браузере (wetty)
2019-08-16 Точечное регулирование радиаторов отопления
2019-08-18 Собираем голосовой помощник на базе WM8960 Audio HAT и raspberry pi zero w
2019-08-13 Общедоступная ссылка с закатом, рассветом и текущей погодой
2019-07-24 Самый дешевый вариант видеонаблюдения
2019-07-22 Запуск MajorDroid на одноплатниках, старых планшетах, телефонах.
2019-07-22 Запуск Majordroid на старом железе
2019-07-15 Устанавливаем opencv и необходимые библиотеки на ubuntu 18.04 без использования python
2019-07-05 Решение проблемы Incorrect integer value: '' for column 'ID' at row 1
2019-07-04 О приборах учета и удаленном снятии показаний (вода и газ)
2019-07-04 О приборах учета и удаленном снятии показаний (электричество)
2019-07-03 Конвертируем rs-485 в TCP-IP
2019-06-24 Наблюдение за радиационной обстановкой в регионе
2019-06-06 Меню пылесоса Xiaomi в телеграмм
2019-06-06 Удобный просмотр данных сенсоров через телеграмм
2019-06-06 Просмотр камер через телеграмм
2019-06-06 Управление светом через телеграмм
2019-06-06 Колор-пикер для телеграм
2019-05-06 Список символов emoji
2019-04-17 Установка z-way на Ubuntu
2019-04-16 Решение проблемы ERROR 1040 (HY000): Too many connections
2018-09-09 Список домофонов с IP интерфейсом
2018-08-29 Список кондиционеров с wifi
2018-08-29 Список доступных к покупке IP колонок
2018-07-15 Интеграция датчика Mi flora plant к системе УД MAJORDOMO
2018-06-13 Полезные команды для работы с git
2018-05-27 преобразование html страниц в картинку и отправка в телеграмм
2018-05-24 Полезные sql запросы
2018-05-23 Создание образа nand памяти orange pi plus2
2018-05-16 Команды для работы с базой данных напрямую
2018-04-06 Установка и настройка python на windows для работы систем распознавания
2018-04-05 Распознавание лиц подходящих к двери людей с помощью ip камеры и открытие двери, если нейросеть признала своего
2018-04-04 Управление таймерами выключения света
2018-04-04 Управление RGB контроллером на базе ESP8266
2018-04-03 Увеличение разрешения китайских камер на чипе hi3516c H264
2018-03-13 Использование колонки google home в качестве терминала Majordomo
2018-03-13 Установка и подключение rtl usb донгла для чтения датчиков температуры и кнопок 433 мгц
2018-03-13 Настройка брокера MQTT
2018-02-17 Проект "умная входная дверь"
2018-02-11 Отправка всех значений свойства объекта в телеграм
2017-12-21 получение адреса по GPS координатам
2017-12-21 получение / передача GPS координат сервису livegps.com
2017-12-21 чтение мгновенных данных U,P, I электросчетчика милур 104
2017-12-21 Получение координат с маяков и gsm сигнализаций starline-online.ru

Екатеринбург, Россия

На форуме: directman66