Изменить значение веб-переменной от входных данных

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
anapogo
Сообщения: 36
Зарегистрирован: Сб дек 31, 2016 5:28 pm
Благодарил (а): 8 раз
Поблагодарили: 1 раз
Контактная информация:

Изменить значение веб-переменной от входных данных

Сообщение anapogo » Чт фев 02, 2017 7:20 pm

Подскажите пожалуйста
На вход веб-переменной по get-запросу приходят значения "ON" и "OFF"
К ней привязано свойство обьекта
Как в свойстве обьекта получить из OFF -> 0, а из ON -> 1 ?
ON\OFF получаю, а нужно 1\0
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Изменить значение веб-переменной от входных данных

Сообщение Kod.Begemot » Чт фев 02, 2017 8:09 pm

Не пробовал делать конкретно с веб переменными, но полагаю что в коде "Действие при изменении" можно, используя значение текущее (по идее это $params) его обработать..

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

 
if ($params == 'ON') {$params  = 1; }
if ($params  == 'OFF') {$params = 0; }
setGlobal("Вашапеременная",$params);
 
За это сообщение автора Kod.Begemot поблагодарили (всего 2):
anapogo (Чт фев 02, 2017 9:26 pm) • nikorde (Пт фев 03, 2017 8:03 am)
Рейтинг: 2.33%
anapogo
Сообщения: 36
Зарегистрирован: Сб дек 31, 2016 5:28 pm
Благодарил (а): 8 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Изменить значение веб-переменной от входных данных

Сообщение anapogo » Чт фев 02, 2017 9:26 pm

Kod.Begemot писал(а):Не пробовал делать конкретно с веб переменными, но полагаю что в коде "Действие при изменении" можно, используя значение текущее (по идее это $params) его обработать..

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

 
if ($params == 'ON') {$params  = 1; }
if ($params  == 'OFF') {$params = 0; }
setGlobal("Вашапеременная",$params);
Не получается

пробовал так по Вашему:
if ($params == 'ON') {$params = 1; }
if ($params == 'OFF') {$params = 0; }
setGlobal("GKotelOn.ON",$params);

пробовал так:
if (trim($params) == "ON")
setGlobal("GKotelOn.ON","0");
else setGlobal("GKotelOn.ON","1");

пробовал так:
if (trim($params) == "ON")
$params = 0;
else $params = 1;

пробовал так:
if (trim($params) == "ON") $params = 0; else $params = 1;
setGlobal("GKotelOn.ON",$params);

время обновления в базе меняется, если включена привязка к обьекту GKotelOn
но значение в базе все-равно ставится ON\OFF
если отключена привязка к обьекту - значения не меняются
Аватара пользователя
Kod.Begemot
Сообщения: 358
Зарегистрирован: Чт июн 20, 2013 5:53 pm
Благодарил (а): 32 раза
Поблагодарили: 42 раза

Re: Изменить значение веб-переменной от входных данных

Сообщение Kod.Begemot » Чт фев 02, 2017 9:57 pm

Ну тогда просто привязываете к переменной GKotelOnWord (условно), создаете метод - к примеру GKotelOnWordChange, в переменной GKotelOnWord выбираете "запускать при изменении" - GKotelOnWordChange, а мой код (или ваш :) ) пишете этот метод. Так точно работать будет.
Возможно значение веб переменной не сопоставляется просто "$params"...
За это сообщение автора Kod.Begemot поблагодарил:
anapogo (Чт фев 02, 2017 10:07 pm)
Рейтинг: 1.16%
anapogo
Сообщения: 36
Зарегистрирован: Сб дек 31, 2016 5:28 pm
Благодарил (а): 8 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Изменить значение веб-переменной от входных данных

Сообщение anapogo » Чт фев 02, 2017 10:14 pm

Kod.Begemot писал(а):Ну тогда просто привязываете к переменной GKotelOnWord (условно), создаете метод - к примеру GKotelOnWordChange, в переменной GKotelOnWord выбираете "запускать при изменении" - GKotelOnWordChange, а мой код (или ваш :) ) пишете этот метод. Так точно работать будет.
Возможно значение веб переменной не сопоставляется просто "$params"...
Т.е. завести промежуточную переменную GKotelOn.tmp? свойство tmp в GKotelOn ?
и работать через нее. понял. сейчас попробую...
anapogo
Сообщения: 36
Зарегистрирован: Сб дек 31, 2016 5:28 pm
Благодарил (а): 8 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Изменить значение веб-переменной от входных данных

Сообщение anapogo » Вс фев 05, 2017 11:13 pm

Три дня ковырялся, и нашел, как вытащить из веб-переменной ее входное значение
viewtopic.php?f=4&t=78&hilit=%D0%92%D0% ... t=30#p4750
Если задана связь веб-переменной со свойством объекта, то обновление последней происходит каждый раз, когда система забирает значение веб-переменной, даже если она не обновлялась. Раньше было обновление только при изменении значения, но переделано из-за того, что невозможно было отследить то ли успешно получилось новое значение, то ли возникла какая-то ошибка и значение перестало приходить вовсе -- теперь это можно узнать по дате обновления свойства. Но есть хитрость -- в настройках веб-переменных можно задать код или вызов сценария. Так вот, вызов кода/сценария происходит только если значение изменилось. Например, вместо связи со свойством объекта задать такой код прямо в веб-переменной:

setGlobal("Обьект.Свойство",$params['VALUE']);
anapogo
Сообщения: 36
Зарегистрирован: Сб дек 31, 2016 5:28 pm
Благодарил (а): 8 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Изменить значение веб-переменной от входных данных

Сообщение anapogo » Пн фев 06, 2017 8:24 pm

Вот такой код для измерения температуры DS18B20 с округлением:
$t=$params['VALUE'];
if (is_numeric($t) and $t <> 85) {
$t=round($t,1);
$tt=gg("Out.temp");
if ($tt <> $t) {sg("Out.temp",$t);}
}
Вот такой код для логического входа с инвертированием входного сигнала:
$t=$params['VALUE'];
if ($t == 'ON') {$t=0;} else {$t=1;}
$tt=gg('GKotelIn.ON');
if ($tt <> $t) {sg('GKotelIn.ON',$t);}
Ответить