Страница 1 из 1

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

Добавлено: Чт фев 02, 2017 7:20 pm
anapogo
Подскажите пожалуйста
На вход веб-переменной по get-запросу приходят значения "ON" и "OFF"
К ней привязано свойство обьекта
Как в свойстве обьекта получить из OFF -> 0, а из ON -> 1 ?
ON\OFF получаю, а нужно 1\0

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

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

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

 
if ($params == 'ON') {$params  = 1; }
if ($params  == 'OFF') {$params = 0; }
setGlobal("Вашапеременная",$params);
 

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

Добавлено: Чт фев 02, 2017 9:26 pm
anapogo
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
если отключена привязка к обьекту - значения не меняются

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

Добавлено: Чт фев 02, 2017 9:57 pm
Kod.Begemot
Ну тогда просто привязываете к переменной GKotelOnWord (условно), создаете метод - к примеру GKotelOnWordChange, в переменной GKotelOnWord выбираете "запускать при изменении" - GKotelOnWordChange, а мой код (или ваш :) ) пишете этот метод. Так точно работать будет.
Возможно значение веб переменной не сопоставляется просто "$params"...

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

Добавлено: Чт фев 02, 2017 10:14 pm
anapogo
Kod.Begemot писал(а):Ну тогда просто привязываете к переменной GKotelOnWord (условно), создаете метод - к примеру GKotelOnWordChange, в переменной GKotelOnWord выбираете "запускать при изменении" - GKotelOnWordChange, а мой код (или ваш :) ) пишете этот метод. Так точно работать будет.
Возможно значение веб переменной не сопоставляется просто "$params"...
Т.е. завести промежуточную переменную GKotelOn.tmp? свойство tmp в GKotelOn ?
и работать через нее. понял. сейчас попробую...

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

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

setGlobal("Обьект.Свойство",$params['VALUE']);

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

Добавлено: Пн фев 06, 2017 8:24 pm
anapogo
Вот такой код для измерения температуры 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);}