Преобразование значений

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

Модератор: immortal

Ответить
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Преобразование значений

Сообщение blackangel » Вт янв 31, 2017 1:53 pm

Друзья помогите разобраться в преобразовании значений.

Суть: есть показание давления (объект: pressure_mmhg, значение 768,74), мне это значение нужно передать по модбас в свою панель. Поскольку в модбас есть ряд ограничений, а именно с запятой не передать, только целые числа, отрицательное значение тоже не передать, ну и размер значения 65036. Я пробовал так: создал сценарий и добавил код: setGlobal('ow_fact.pressure_mmhg2',round(getGlobal('ow_fact.pressure_mmhg')*100)); получил значение 76874.... но оно больше 65036... вот сижу думаю как быть.... (на стороне панели я могу делать любые математические действия, вопрос в том как для начала передать значение по модбас... а уж потом преобразовывать в нормальный вид)

P.S. аналогично делал температуру, но там попроще оказалось....

может как то разделить 768,74 на 2 значения? т.е. чтобы было 2 обьекта, в одном 764 а в другом 74) подскажите как это сделать, какой код использовать????
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Преобразование значений

Сообщение slgeo » Вт янв 31, 2017 2:18 pm

А если отнять 65036, получить и прибавить 65036 :)
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
DimSun75
Сообщения: 318
Зарегистрирован: Вс янв 01, 2017 8:32 pm
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 44 раза

Re: Преобразование значений

Сообщение DimSun75 » Вт янв 31, 2017 4:25 pm

Давление врят ли будет, ну уж точно меньше 500. Так что вычитайте в скрипте 500 и передавайте в панель, как и хотели. Ну а в панели прибавляйте 500.

Ну и как вариант: сотые доли в давлении тоже врят ли понадобятся. Не высоту же меряем. Можно их отбросить и передавать в панель только целую часть. А можно целую часть и дробную передавать в два разных регистра.
DimSun75
Сообщения: 318
Зарегистрирован: Вс янв 01, 2017 8:32 pm
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 44 раза

Re: Преобразование значений

Сообщение DimSun75 » Вт янв 31, 2017 7:31 pm

DimSun75 писал(а):
Ну и как вариант: сотые доли в давлении тоже врят ли понадобятся. Не высоту же меряем. Можно их отбросить и передавать в панель только целую часть. А можно целую часть и дробную передавать в два разных регистра.
про целую и дробную части:

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

$a= floor(getGlobal('ow_fact.pressure_mmhg'));            // Целая часть
$b = (getGlobal('ow_fact.pressure_mmhg') - $a) * 100;  // Дробная часть
 
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: Преобразование значений

Сообщение blackangel » Вт мар 06, 2018 6:06 pm

всем привет! и снова вопрос)))

есть объект и класс "ow_city.data_update" в нем значение: 06.03.2018 16:30:00 MSK 2018
как скриптом разделить и отдельно в класс получить значение ДД (06), мм (03), гггг (2018), чч (16), мм (30). т.е. по факту должно получится 5 новых класов. только вот не соображу как скриптом разделить все это дело....

пробовал так, но что то не то:

sg('ow_city.data_update2', date('dd.mm.gggg H:i:s', gg('ow_city.data_update')));
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: Преобразование значений

Сообщение blackangel » Чт мар 08, 2018 12:58 am

Апну, может заметит кто... ибо мозг поломал уже.
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Преобразование значений

Сообщение olehs » Чт мар 08, 2018 1:21 am

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

$dt = date_parse(gg('ow_city.data_update'));
echo $dt['year'];
За это сообщение автора olehs поблагодарил:
blackangel (Чт мар 08, 2018 1:47 am)
Рейтинг: 1.16%
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: Преобразование значений

Сообщение blackangel » Чт мар 08, 2018 1:47 am

olehs писал(а):

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

$dt = date_parse(gg('ow_city.data_update'));
echo $dt['year']; 
Попробовал, что то я видимо не так понял... не выходит.

Если скопировать именно как вы написали, то выводит год на экран, но классы новые не появляются.

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

 sg('ow_city.data_update2', date_parse(gg('ow_city.data_update'))); 

Отправлено с моего iPhone используя Tapatalk
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Преобразование значений

Сообщение olehs » Чт мар 08, 2018 1:56 am

я так понимаю Вам нужно не классы, а свойства

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

$dt = date_parse(gg('ow_city.data_update'));
sg('ow_city.data_update_year', $dt['year']);
sg('ow_city.data_update_month', $dt['month']);
sg('ow_city.data_update_day', $dt['day']);
sg('ow_city.data_update_hour', $dt['hour']);
sg('ow_city.data_update_minute', $dt['minute']);
За это сообщение автора olehs поблагодарил:
blackangel (Чт мар 08, 2018 2:01 am)
Рейтинг: 1.16%
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: Преобразование значений

Сообщение blackangel » Чт мар 08, 2018 2:01 am

olehs писал(а):я так понимаю Вам нужно не классы, а свойства

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

$dt = date_parse(gg('ow_city.data_update'));
sg('ow_city.data_update_year', $dt['year']);
sg('ow_city.data_update_month', $dt['month']);
sg('ow_city.data_update_day', $dt['day']);
sg('ow_city.data_update_hour', $dt['hour']);
sg('ow_city.data_update_minute', $dt['minute']);
 
Спасибо за помощь))) все получилось!


Отправлено с моего iPhone используя Tapatalk
Ответить