Рисуется на раз-два вообще без навыков viewtopic.php?p=40523#p40523Vit писал(а):может кто из присутствующих может планы помещений в 3d почертить помочь, буду благодарен
[Сценарий] Анализ периода от начала суток и построение индикатора
-
- Сообщения: 708
- Зарегистрирован: Сб авг 18, 2012 10:21 am
- Благодарил (а): 26 раз
- Поблагодарили: 183 раза
Re: стили для элементов сцен
-
- Сообщения: 222
- Зарегистрирован: Вт фев 06, 2018 9:40 pm
- Откуда: Пермь
- Благодарил (а): 117 раз
- Поблагодарили: 7 раз
Re: Анализ периода от начала суток и построение индикатора
Я тоже сделал всё как описано ( имена свойств/объектов такие-же), но почему то не взлетело ( всегда "0" ). Что может быть не так ???mazahaka7sk писал(а): ↑Вт ноя 22, 2016 11:35 amСделал все как у вас имена обьектов не менял так как у меня такие же названия но почему то не работает ( что я сделал не так подскажите??
-
- Сообщения: 530
- Зарегистрирован: Чт авг 20, 2015 11:32 am
- Откуда: Ярославль
- Благодарил (а): 61 раз
- Поблагодарили: 75 раз
- Контактная информация:
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
Сценарий работает, как я понял необходимо что бы сохранялась история свойства, проверял на других объектах, при попытке высчитать процент активности объектов простых устройств, например сколько процентов времени горит свет на кухне, сценарий вылетает с ошибкой
это связано с тем что простые устройства хранят базу в другом месте? или с чем то еще?
СпойлерПоказать
Код: Выделить всё
Error
Details
http://192.168.0.10/objects/?script=EconomModePeriod
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ADDED>='2018-12-20 00:00:00'' at line 1
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED>='2018-12-20 00:00:00'
Backtrace
#0 /var/www/lib/mysqli.class.php(396): custom_error->__construct('1064: You have ...', 0)
#1 /var/www/lib/mysqli.class.php(185): mysql->Error('SELECT COUNT(ID...', 0)
#2 /var/www/lib/mysqli.class.php(230): mysql->Exec('SELECT COUNT(ID...')
#3 /var/www/lib/sqlFunctions.class.php(90): mysql->SelectOne('SELECT COUNT(ID...')
#4 /var/www/modules/scripts/scripts.class.php(150) : eval()'d code(39): SQLSelectOne('SELECT COUNT(ID...')
#5 /var/www/modules/scripts/scripts.class.php(150): eval()
#6 /var/www/lib/common.class.php(706): scripts->runScript('EconomModePerio...', Array)
#7 /var/www/objects/index.php(172): runScript('EconomModePerio...', Array)
#8 {main}
-
- Сообщения: 315
- Зарегистрирован: Вс май 20, 2018 9:27 am
- Благодарил (а): 160 раз
- Поблагодарили: 29 раз
Re: Анализ периода от начала суток и построение индикатора
Cкрипт работает, еще раз спасибо автору!
Хотя у меня нет датчиков движения и т.п. Я думаю началось у меня после того, как я привязал светодиодную ленту к простым устройствам а простые устройства связаны в Eco группу не все конечно но, то что касается света те, точно в группе.
Если вы все сделали по инструкции и "привязали" те же объекты и свойства и у вас пишет постоянно "0%" или как у меня "100%" то проверьте свойства
NobodyHomeMode.active
EconomMode.active
У меня было постоянно 100% т.к. свойства были все время "1"! Если у вас "0" то, значить эти свойства равняются "0".
У меня он тоже долго "не работал" правда всегда писал "100%" пока после какого-то обновления Алиса не начала ни стого ни с сего говорить/писатьdengi.76 писал(а): ↑Пн сен 10, 2018 5:19 pmЯ тоже сделал всё как описано ( имена свойств/объектов такие-же), но почему то не взлетело ( всегда "0" ). Что может быть не так ???mazahaka7sk писал(а): ↑Вт ноя 22, 2016 11:35 amСделал все как у вас имена обьектов не менял так как у меня такие же названия но почему то не работает ( что я сделал не так подскажите??
и тут я заметил, что цифры начали меняться...Режим EconomMode активирован.
Включаю режим экономии
Режим Никого нет дома активирован.
Режим EconomMode диактивирован.
и т.д.
Хотя у меня нет датчиков движения и т.п. Я думаю началось у меня после того, как я привязал светодиодную ленту к простым устройствам а простые устройства связаны в Eco группу не все конечно но, то что касается света те, точно в группе.
Если вы все сделали по инструкции и "привязали" те же объекты и свойства и у вас пишет постоянно "0%" или как у меня "100%" то проверьте свойства
NobodyHomeMode.active
EconomMode.active
У меня было постоянно 100% т.к. свойства были все время "1"! Если у вас "0" то, значить эти свойства равняются "0".
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
Подскажите пожалуйста
Ругается на синтаксис, я в этом-0, а надо очень!
Где ошибка? и есть ли она?
Спасибо!
Ругается на синтаксис, я в этом-0, а надо очень!
Код: Выделить всё
http://_/objects/?script=EconomModePeriod
1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED >='1970-01-01 04:00:00'' at line 1
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED >='1970-01-01 04:00:00'
Код: Выделить всё
// Для начала нам нужно получить id нашего объекта и id класса которому принадлежит объект
$obj_title = 'espSensor_temp02.direction'; //имя объекта (поменять на свой !!!!!!!!!!!!!!!!!)
$arr_s = SQLSelectOne("SELECT * FROM objects WHERE TITLE='".$obj_title."'");
$obj_id = $arr_s['ID'];
$class_id = $arr_s['CLASS_ID'];
/* Имена свойств находятся в таблице properties
с указанием id класса если свойство заданно на уровне класса,
или id объекта если свойство принадлежит объекту лично.
*/
// Получим id свойства по его имени И (id класса ИЛИ id объекта)
$prop_title = 'direction'; //имя свойства (поменять на свое!!!!!!!!!!!!!)
$arr_s = SQLSelectOne("SELECT * FROM properties WHERE TITLE='".$prop_title."' AND (CLASS_ID='".$class_id."' OR OBJECT_ID='".$obj_id."')");
$prop_id = $arr_s['ID'];
// значения свойств находятся в таблице pvalues
// Нам нужен id. (уточнить необходимость сортировки по UPDATED)
$arr_s = SQLSelectOne("SELECT * FROM pvalues WHERE OBJECT_ID='".$obj_id."' AND PROPERTY_ID='".$prop_id."'");
$pvalue = $arr_s['ID'];
/* Зная $pvalue можно слазать за данными истории в таблицу phistory
Для нашей задачи нужно получить все записи по времени >= началу суток + 1 запись
*/
// Получить количество записей за нужный период времени
$arr_s = SQLSelectOne("SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID=".$pvalue." AND ADDED >='".date('Y-m-d H:i:s', $tmr_start)."'");
// Взять это количество записей +1
$arr_s = SQLSelect("SELECT * FROM phistory WHERE VALUE_ID=".$pvalue." ORDER BY ADDED DESC LIMIT 0 , ".(1+$arr_s['COUNT_ID']));
$tmr2 = $tmr_now;
// Переберем весь массив
foreach($arr_s as $s) {
$tmr1 = $tmr2;
$tmr2 = strtotime($s['ADDED']);
// Ограничить началом суток
if ($tmr2<$tmr_start) { $tmr2=$tmr_start; }
// Двигаясь вниз по массиву времени складывать отрезки если режим включен
if ($s['VALUE']) { $tmr_mem = $tmr_mem + $tmr1 - $tmr2; }
}
$period = round( $tmr_mem * 100 / ($tmr_now - $tmr_start) );
setGlobal("espSensor_temp02.Period",$period); //запись значения в свойство объекта (поменять на свое!!!!!!!!!!!!!!)
Спасибо!
-
- Сообщения: 104
- Зарегистрирован: Ср янв 09, 2019 8:37 pm
- Благодарил (а): 23 раза
- Поблагодарили: 26 раз
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED >='1970-01-01 04:00:00'' at line 1MaxVM писал(а): ↑Чт ноя 14, 2019 9:08 amКод: Выделить всё
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED >='1970-01-01 04:00:00'
Просит проверить правильность синтаксиса возле 'AND ADDED >='1970-01-01 04:00:00''
Нет значения value_id. После $pvalue = $arr_s['ID']; проверяйте его на пустоту. Лучше даже наличие данных, возвращённых SQLSelectOne.
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
Не могу понять следующее. Если вставляешь этот скрипт с этими данными по все работает подсчет идет. Но как только вписываешь свои объекты все падает. Пытаюсь найти таблицу phistory чтоб понять как именно должно выглядеть свойство, тоже не нахожу.JackOfShadows писал(а): ↑Чт ноя 14, 2019 10:49 amcheck the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED >='1970-01-01 04:00:00'' at line 1MaxVM писал(а): ↑Чт ноя 14, 2019 9:08 amКод: Выделить всё
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED >='1970-01-01 04:00:00'
Просит проверить правильность синтаксиса возле 'AND ADDED >='1970-01-01 04:00:00''
Нет значения value_id. После $pvalue = $arr_s['ID']; проверяйте его на пустоту. Лучше даже наличие данных, возвращённых SQLSelectOne.
У меня есть объект, сделанный через простые устройства, а именно датчик температуры с показом роста ее или падения.
espSensor_temp02.direction (В нам меняются значения 1, 0, -1)
В коде меняю
$obj_title = 'espSensor_temp02.direction'; //имя объекта (поменять на свой !!!!!!!!!!!!!!!!!)
И все падает. Не как не могу понять что ей нужно от меня
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
Вполне очевидно, что скрипт не находит такой объект, поэтому в переменной $pvalue пусто...MaxVM писал(а): ↑Чт ноя 14, 2019 4:02 pmНе могу понять следующее. Если вставляешь этот скрипт с этими данными по все работает подсчет идет. Но как только вписываешь свои объекты все падает. Пытаюсь найти таблицу phistory чтоб понять как именно должно выглядеть свойство, тоже не нахожу.JackOfShadows писал(а): ↑Чт ноя 14, 2019 10:49 amcheck the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED >='1970-01-01 04:00:00'' at line 1MaxVM писал(а): ↑Чт ноя 14, 2019 9:08 amКод: Выделить всё
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED >='1970-01-01 04:00:00'
Просит проверить правильность синтаксиса возле 'AND ADDED >='1970-01-01 04:00:00''
Нет значения value_id. После $pvalue = $arr_s['ID']; проверяйте его на пустоту. Лучше даже наличие данных, возвращённых SQLSelectOne.
У меня есть объект, сделанный через простые устройства, а именно датчик температуры с показом роста ее или падения.
espSensor_temp02.direction (В нам меняются значения 1, 0, -1)
В коде меняю
$obj_title = 'espSensor_temp02.direction'; //имя объекта (поменять на свой !!!!!!!!!!!!!!!!!)
И все падает. Не как не могу понять что ей нужно от меня
Сильно сомневаюсь что объект называется 'espSensor_temp02.direction', скорее всего он просто 'espSensor_temp02'
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
Если указываю только espSensor_temp02, то падает аналогичным образомfandaymon писал(а): ↑Чт ноя 14, 2019 4:16 pmВполне очевидно, что скрипт не находит такой объект, поэтому в переменной $pvalue пусто...MaxVM писал(а): ↑Чт ноя 14, 2019 4:02 pmНе могу понять следующее. Если вставляешь этот скрипт с этими данными по все работает подсчет идет. Но как только вписываешь свои объекты все падает. Пытаюсь найти таблицу phistory чтоб понять как именно должно выглядеть свойство, тоже не нахожу.JackOfShadows писал(а): ↑Чт ноя 14, 2019 10:49 amcheck the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED >='1970-01-01 04:00:00'' at line 1MaxVM писал(а): ↑Чт ноя 14, 2019 9:08 amКод: Выделить всё
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED >='1970-01-01 04:00:00'
Просит проверить правильность синтаксиса возле 'AND ADDED >='1970-01-01 04:00:00''
Нет значения value_id. После $pvalue = $arr_s['ID']; проверяйте его на пустоту. Лучше даже наличие данных, возвращённых SQLSelectOne.
У меня есть объект, сделанный через простые устройства, а именно датчик температуры с показом роста ее или падения.
espSensor_temp02.direction (В нам меняются значения 1, 0, -1)
В коде меняю
$obj_title = 'espSensor_temp02.direction'; //имя объекта (поменять на свой !!!!!!!!!!!!!!!!!)
И все падает. Не как не могу понять что ей нужно от меня
Сильно сомневаюсь что объект называется 'espSensor_temp02.direction', скорее всего он просто 'espSensor_temp02'
Код: Выделить всё
http://_/objects/?script=EconomModePeriod
1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED>='2019-11-14 00:00:00'' at line 1
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED>='2019-11-14 00:00:00'
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Сценарий] Анализ периода от начала суток и построение индикатора
Надо сначала убедиться что все названия правильные. Сделать сценарий в который вписатьMaxVM писал(а): ↑Чт ноя 14, 2019 4:21 pmЕсли указываю только espSensor_temp02, то падает аналогичным образомfandaymon писал(а): ↑Чт ноя 14, 2019 4:16 pmВполне очевидно, что скрипт не находит такой объект, поэтому в переменной $pvalue пусто...MaxVM писал(а): ↑Чт ноя 14, 2019 4:02 pmНе могу понять следующее. Если вставляешь этот скрипт с этими данными по все работает подсчет идет. Но как только вписываешь свои объекты все падает. Пытаюсь найти таблицу phistory чтоб понять как именно должно выглядеть свойство, тоже не нахожу.JackOfShadows писал(а): ↑Чт ноя 14, 2019 10:49 amcheck the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED >='1970-01-01 04:00:00'' at line 1MaxVM писал(а): ↑Чт ноя 14, 2019 9:08 amКод: Выделить всё
SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED >='1970-01-01 04:00:00'
Просит проверить правильность синтаксиса возле 'AND ADDED >='1970-01-01 04:00:00''
Нет значения value_id. После $pvalue = $arr_s['ID']; проверяйте его на пустоту. Лучше даже наличие данных, возвращённых SQLSelectOne.
У меня есть объект, сделанный через простые устройства, а именно датчик температуры с показом роста ее или падения.
espSensor_temp02.direction (В нам меняются значения 1, 0, -1)
В коде меняю
$obj_title = 'espSensor_temp02.direction'; //имя объекта (поменять на свой !!!!!!!!!!!!!!!!!)
И все падает. Не как не могу понять что ей нужно от меня
Сильно сомневаюсь что объект называется 'espSensor_temp02.direction', скорее всего он просто 'espSensor_temp02'как сказать тогда что нужно данные из этого объекта брать? Или я не так понимаю?Код: Выделить всё
http://_/objects/?script=EconomModePeriod 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND ADDED>='2019-11-14 00:00:00'' at line 1 SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID= AND ADDED>='2019-11-14 00:00:00'
Код: Выделить всё
$obj_title = 'espSensor_temp02';
$arr_s = SQLSelectOne("SELECT * FROM objects WHERE TITLE='".$obj_title."'");
print_r($arr_s);