Планы

Новые релизы, обновления и т.п.

Модератор: immortal

kolizeyalex
Сообщения: 14
Зарегистрирован: Вт окт 25, 2016 2:41 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Планы

Сообщение kolizeyalex » Чт дек 16, 2021 11:19 am

Кто нибудь реализовывал такое в Планах для датчиков движения?
motion_sensor.png
motion_sensor.png (11.22 КБ) 1375 просмотров
Если да то поделитесь пожалуйста рецептом, в сценах есть, а на Плане у меня мозгов видимо не хватает реализовать, но очень хочется :roll:
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Планы

Сообщение Chainik » Чт дек 16, 2021 11:31 am

Вот пример нечто подобного, правда не в Планах, а на сцене (https://www.ab-log.ru/forum/viewtopic.p ... 022#p47022).
А в вашем примере самое интересное, каким именно образом реализован расчет времени, прошедший с момента срабатывания датчика движения, а также расчет процента использования помещения (если я правильно понял значение процентов рядом с индикатором датчика).
kolizeyalex
Сообщения: 14
Зарегистрирован: Вт окт 25, 2016 2:41 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Планы

Сообщение kolizeyalex » Чт дек 16, 2021 11:56 am

На сцене то понятно, картинка как раз и взята со сцены, это уже реализовано до меня в ПУ. Рядом с датчиком показан процент заряда батареи датчика. А вот как это реализовать в Планах не знаю, максимум добился чтобы значения обновлялись при загрузке страницы, но сами по себе значения не обновляются :cry:
Использовал этот код:

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

<script>

function setInsertData_%TuMotion01.object_id%() {

	if(window.intervalUpdateDate_%TuMotion01.object_id%) {

		window.clearInterval(intervalUpdateDate_%TuMotion01.object_id%);

	}

	

	var currentTime = parseInt(new Date().getTime()/1000);

	var sID = '%TuMotion01.object_id%';

	var sDATA = '%TuMotion01.updated%';

	var diff = currentTime-sDATA;



	if(diff <= -21) {

		beautyText = '<#LANG_DEVICES_PASSED_INCORRECT_TIME#>';

		$('.updatedText-JS-' + sID).text(beautyText);

	} else if(diff >= -20 && diff <= 10) {

		//Только что

		beautyText = '<#LANG_DEVICES_PASSED_NOW#>';

		$('.updatedText-JS-' + sID).text(beautyText);

		

		window.intervalUpdateDate_%TuMotion01.object_id% = setInterval(function() {

			setInsertData_%TuMotion01.object_id%();

		}, 1000);

	} else if(diff > 10 && diff <= 600) {

		beautyText = secondsToHms(diff, '', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';

		$('.updatedText-JS-' + sID).text(beautyText);

		

		window.intervalUpdateDate_%TuMotion01.object_id% = setInterval(function() {

			var currentTime = parseInt(new Date().getTime()/1000);

			var diff = currentTime-sDATA;



			beautyText = secondsToHms(diff, '', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';

			$('.updatedText-JS-' + sID).text(beautyText);

			

			setInsertData_%TuMotion01.object_id%();

		}, 1000);

	} else if(diff > 600 && diff <= 7200) {

		beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '') + ' <#LANG_DEVICES_PASSED_AGO#>';

		$('.updatedText-JS-' + sID).text(beautyText);

		

		window.intervalUpdateDate_%TuMotion01.object_id% = setInterval(function() {

			var currentTime = parseInt(new Date().getTime()/1000);

			var diff = currentTime-sDATA;



			beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '') + ' <#LANG_DEVICES_PASSED_AGO#>';

			$('.updatedText-JS-' + sID).text(beautyText);

			

			setInsertData_%TuMotion01.object_id%();

		}, 61000);

	} else if(diff > 7200 && diff < 25200) {

		beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '', '') + ' <#LANG_DEVICES_PASSED_AGO#>';

		$('.updatedText-JS-' + sID).text(beautyText);

			

		window.intervalUpdateDate_%TuMotion01.object_id% = setInterval(function() {	

			var currentTime = parseInt(new Date().getTime()/1000);

			var diff = currentTime-sDATA;

			

			//Считаем и делаем красиво

			beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '', '') + ' <#LANG_DEVICES_PASSED_AGO#>';

			$('.updatedText-JS-' + sID).text(beautyText);

			

			setInsertData_%TuMotion01.object_id%();

		}, 1800000);

	} else {

		//Дропаем интервал

		if(window.intervalUpdateDate_%TuMotion01.object_id%) {

			window.clearInterval(intervalUpdateDate_%TuMotion01.object_id%);

		}

		

		timeConvertVar = timeConvert(sDATA);

		currentTime = new Date();



		if(currentTime.getFullYear() == timeConvertVar[2] && twoDigits(currentTime.getMonth()+1) == timeConvertVar[1] && (currentTime.getDate() - timeConvertVar[0]) == 0) {

			beautyText = '<#LANG_DEVICES_PASSED_TODAY_IN#> ' + timeConvertVar[3] + ':' + timeConvertVar[4];

		} else if(currentTime.getFullYear() == timeConvertVar[2] && twoDigits(currentTime.getMonth()+1) == timeConvertVar[1] && (currentTime.getDate() - timeConvertVar[0]) == 1) {

			beautyText = '<#LANG_DEVICES_PASSED_YESTERDAY_IN#> ' + timeConvertVar[3] + ':' + timeConvertVar[4] + ':' + timeConvertVar[5];

		} else {

			beautyText = timeConvertVar[0] + '.' + timeConvertVar[1] + '.' + timeConvertVar[2] + ' ' + timeConvertVar[3] + ':' + timeConvertVar[4] + ':' + timeConvertVar[5];

		}

		

		$('.updatedText-JS-' + sID).text(beautyText);

	}

}



$(function() {

	if(window.intervalUpdateDate_%TuMotion01.object_id%) {

		window.clearInterval(intervalUpdateDate_%TuMotion01.object_id%);

	}

	

	setInsertData_%TuMotion01.object_id%();

	window.intervalUpdateDate_%TuMotion01.object_id% = setInterval(function() {	

		setInsertData_%TuMotion01.object_id%();

	}, 1000);

}); 



</script>
<div class="updatedText-JS-%TuMotion01.object_id%" style="font-size: 11px;">...</div>
и вставлял как Компонент - тип HTML блок (в базе пришлось увеличить поле с 255 символов до 5000), но при загрузке страницы все хорошо счетчик работает, а var sDATA = '%TuMotion01.updated%' не обновляется, только при перезагрузке страницы. Дальше не могу сообразить
kolizeyalex
Сообщения: 14
Зарегистрирован: Вт окт 25, 2016 2:41 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Планы

Сообщение kolizeyalex » Ср апр 20, 2022 10:49 am

kolizeyalex писал(а):
Чт дек 16, 2021 11:19 am
Кто нибудь реализовывал такое в Планах для датчиков движения?
motion_sensor.png
Если да то поделитесь пожалуйста рецептом, в сценах есть, а на Плане у меня мозгов видимо не хватает реализовать, но очень хочется :roll:
В общем нашел я решение:
motion.jpg
motion.jpg (9.59 КБ) 1047 просмотров
Кому надо обращайтесь, подскажу.
hard3d
Сообщения: 9
Зарегистрирован: Вс ноя 13, 2022 9:39 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Планы

Сообщение hard3d » Вс авг 27, 2023 1:14 pm

Добрый день!
Подскажите пожалуйста. Знаю, что так можно сделать.
Как правильно подготовить SVG файл, что бы в МД в выпадающем списке не отображались не нужные элементы, но при этом они оставались на виде
1.jpg
1.jpg (51.48 КБ) 367 просмотров
Ответить