'temp' - это же свойство объекта, которое мне нужно округлить.fandaymon писал(а): ↑Пт сен 21, 2018 9:27 pmyden писал(а): ↑Пт сен 21, 2018 8:44 pmЭто от примера осталось. мне целое и нужно.Chainik писал(а): ↑Пт сен 21, 2018 8:39 pmВообще то округление до одно знака должно выполняться кодом:Код: Выделить всё
// Выполняем округление с точностью до одного знака $value = round($value, 1);
Но не суть, все равно 0 пишет.
Если этот метод вызывается при изменении, то там в параметрах
$params['PROPERTY']
$params['NEW_VALUE']
$params['OLD_VALUE']
$params['SOURCE']
никакого $params['temp'] нету, поэтому и получаем 0...
Округление температуры из Modbus по TCP
Модератор: immortal
-
- Сообщения: 141
- Зарегистрирован: Пн авг 22, 2016 10:03 am
- Благодарил (а): 28 раз
- Поблагодарили: 5 раз
Re: Помогите! Округление температуры из Modbus по TCP
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Помогите! Округление температуры из Modbus по TCP
Это не так работает. Загляни в икс-рей на вкладку Методы. Там сразу увидишь какие-параметры передаются в метод при его вызове и как они называются. Выше уже дали подсказку. Скорее всего тебе нужен параметр $params['NEW_VALUE'].
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 141
- Зарегистрирован: Пн авг 22, 2016 10:03 am
- Благодарил (а): 28 раз
- Поблагодарили: 5 раз
Re: Помогите! Округление температуры из Modbus по TCP
Благодарю, заработало.
- juricks
- Сообщения: 4
- Зарегистрирован: Вс мар 10, 2019 7:46 pm
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
Re: Округление температуры из Modbus по TCP
Добра всем!
Проблема почти как у ТС.
Хочу сделать округление температуры до десятых забираемая с esp по mqtt,
Создал метод, пользуясь этим кодом, поменяв параметр на тот который передает esp по xray "NEW_VALUE"
В общем показания на выходе после метода не фига не обновляются (замораживаются)
Подскажите пожалуйста что не так делаю?
Проблема почти как у ТС.
Хочу сделать округление температуры до десятых забираемая с esp по mqtt,
Создал метод, пользуясь этим кодом, поменяв параметр на тот который передает esp по xray "NEW_VALUE"
Код: Выделить всё
// Получаем данные от сенсора
$value = $params['NEW_VALUE']/100;
// Фильтруем данные
if ($value > 60 || $value < -60) return;
// Выполняем округление с точностью до одного знака
$value = round($value, 1);
// Сохраняем обработанное значение в свойство объекта
$this->setProperty('value', $value);
Подскажите пожалуйста что не так делаю?
- Вложения
-
- Безымянный2.png (21.56 КБ) 4361 просмотр
-
- Безымянный1.png (18.47 КБ) 4361 просмотр
- Рейтинг: 1.16%
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Округление температуры из Modbus по TCP
А за каким на 100 делить?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- juricks
- Сообщения: 4
- Зарегистрирован: Вс мар 10, 2019 7:46 pm
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
Re: Округление температуры из Modbus по TCP
https://kb.mjdm.ru/filtraciya-i-okrugle ... majordomo/
Взял с инструкции, проверил на температуре от датчика aqara, все получилось, вот и решил данный код прикрутить к esp
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Округление температуры из Modbus по TCP
Всегда полезно немного подумать. У тебя в модуле МКТТ данные приходят уже в нужном формате, и нет никакой необходимости их делить на 100 В отличие от сырых данных в модуле Xiaomi Home, и котором и идет речь в мануале.juricks писал(а): ↑Пн мар 11, 2019 3:02 pmhttps://kb.mjdm.ru/filtraciya-i-okrugle ... majordomo/
Взял с инструкции, проверил на температуре от датчика aqara, все получилось, вот и решил данный код прикрутить к esp
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- juricks
- Сообщения: 4
- Зарегистрирован: Вс мар 10, 2019 7:46 pm
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
Re: Округление температуры из Modbus по TCP
Убрал в коде делить на 100, данные по прежнему не обновляются.
P.S. Разобрался сам. Всем спасибо.
P.S. Разобрался сам. Всем спасибо.
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Округление температуры из Modbus по TCP
Вот за такие фразочки минусы жалко нельзя ставить! Чел напряг других своим вопросом, решил его как-то для себя и досвидос. Выхлопа на форуме ноль, другим информации - ноль. Потом пишут - форум плохой.juricks писал(а):...
P.S. Разобрался сам. Всем спасибо.
Отправлено с моего Redmi 4X через Tapatalk
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
- juricks
- Сообщения: 4
- Зарегистрирован: Вс мар 10, 2019 7:46 pm
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
Re: Округление температуры из Modbus по TCP
Решение проблемы оказалось куда проще, чем я мог предположить, про это уже писал sergejey и yden Спасибо им! Ни разу не писал подобную инструкцию по этому сильно не пинайте.
Инструкция по округлению передаваемых параметров с esp, по протоколу MQTT в данном случае описываю температурные параметры, соответственно с остальными параметрами проделываем аналогичную процедуру, только в своем классе.
1. Нужно зайти в настройку класса STempSensor и создать новый метод "tempChanged". В коде ничего не прописываем! 2. Затем там же создаем новое свойство "tempRounded" и в графе "Запускать метод при изменении " выбираем "tempChanged" 3. Затем заходим в метод свойства объекта, у меня "Sensor_temp06" и нажимаем настроить "tempChanged" 4. Прописываем код.
5. Идем в плагин MQTT, ищем наш датчик и в графе "Свойство" выбираем вместо "value" наше прописанное свойство "tempRounded"
6. Радуемся округленным значениям.
Инструкция по округлению передаваемых параметров с esp, по протоколу MQTT в данном случае описываю температурные параметры, соответственно с остальными параметрами проделываем аналогичную процедуру, только в своем классе.
1. Нужно зайти в настройку класса STempSensor и создать новый метод "tempChanged". В коде ничего не прописываем! 2. Затем там же создаем новое свойство "tempRounded" и в графе "Запускать метод при изменении " выбираем "tempChanged" 3. Затем заходим в метод свойства объекта, у меня "Sensor_temp06" и нажимаем настроить "tempChanged" 4. Прописываем код.
Код: Выделить всё
// Получаем данные от сенсора
$value = $params['NEW_VALUE'];
// Выполняем округление с точностью до одного знака
$value = round($value, 1);
// Сохраняем обработанное значение в свойство объекта
$this->setProperty('tempRounded', $value);
- Рейтинг: 2.33%