помогите с кодом сильно не пинайте

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Ответить
sergei64
Сообщения: 62
Зарегистрирован: Вт апр 02, 2019 9:01 pm
Благодарил (а): 27 раз
Поблагодарили: 4 раза

помогите с кодом сильно не пинайте

Сообщение sergei64 » Пн апр 22, 2019 9:51 pm

есть объект у объекта есть свойство "my_sensor", данные получает по MQTT , а так же есть "sensor.status"
как написать код чтоб если значение "my_sensor" больше 500 то "sensor.status" буде равен "1"
а если меньше 500 то "0" :D :D
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: помогите с кодом сильно не пинайте

Сообщение tarasfrompir » Пн апр 22, 2019 9:55 pm

sergei64 писал(а):
Пн апр 22, 2019 9:51 pm
есть объект у объекта есть свойство "my_sensor", данные получает по MQTT , а так же есть "sensor.status"
как написать код чтоб если значение "my_sensor" больше 500 то "sensor.status" буде равен "1"
а если меньше 500 то "0" :D :D
создай метод который будет запускатся при изменении свойства my_sensor
и внем что то типа
if ($this->getProperty('my_sensor')>500) {
$this->setProperty('status', 1);
} else {
$this->setProperty('status', 0);
]
За это сообщение автора tarasfrompir поблагодарили (всего 2):
sergei64 (Ср апр 24, 2019 6:08 am) • Bones (Вт май 14, 2019 9:19 pm)
Рейтинг: 2.33%
Спасибо нам ПОМОЖЕТ..!
sergei64
Сообщения: 62
Зарегистрирован: Вт апр 02, 2019 9:01 pm
Благодарил (а): 27 раз
Поблагодарили: 4 раза

Re: помогите с кодом сильно не пинайте

Сообщение sergei64 » Пн апр 22, 2019 9:59 pm

tarasfrompir писал(а):
Пн апр 22, 2019 9:55 pm
sergei64 писал(а):
Пн апр 22, 2019 9:51 pm
есть объект у объекта есть свойство "my_sensor", данные получает по MQTT , а так же есть "sensor.status"
как написать код чтоб если значение "my_sensor" больше 500 то "sensor.status" буде равен "1"
а если меньше 500 то "0" :D :D
создай метод который будет запускатся при изменении свойства my_sensor
и внем что то типа
if ($this->getProperty('my_sensor')>500) {
$this->setProperty('status', 1);
} else {
$this->setProperty('status', 0);
]
Спасибо огромное
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: помогите с кодом сильно не пинайте

Сообщение tarasfrompir » Пн апр 22, 2019 10:01 pm

sergei64 писал(а):
Пн апр 22, 2019 9:59 pm
Спасибо огромное
Спасибо это когда нажимаеш пальчик вверх... над сообщением...
За это сообщение автора tarasfrompir поблагодарил:
directman66 (Вт апр 23, 2019 4:13 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
sergei64
Сообщения: 62
Зарегистрирован: Вт апр 02, 2019 9:01 pm
Благодарил (а): 27 раз
Поблагодарили: 4 раза

Re: помогите с кодом сильно не пинайте

Сообщение sergei64 » Ср апр 24, 2019 6:08 am

tarasfrompir писал(а):
Пн апр 22, 2019 10:01 pm
sergei64 писал(а):
Пн апр 22, 2019 9:59 pm
Спасибо огромное
Спасибо это когда нажимаеш пальчик вверх... над сообщением...
ок
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: помогите с кодом сильно не пинайте

Сообщение Chainik » Ср июл 10, 2019 10:54 pm

Не думал, что именно тут меня будет подстерегать "засада".
Вопрос, скорее, по PHP, нежели по MDM, но все же. Где же еще спросить, как не на любимом форуме...

Собственно, вот такая вот "элементарщина". Надо сохранить переменную $Text в файл с перезаписью, но без разбиения на строки.

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

$MaxVal = "26.26";
$Text = "MaxVal =".$MaxVal;
На страницу с echo выводит как и положено слитно (MaxVal = 26.26). А в файл переменная $Text, хоть с fwrite, хоть с file_put_contents сохраняется с разбиением на 2 строки:
MaxVal =
26.26

Как побороть "аномалию"?
Система WinXP, версия PHP 5.4.34. MDM не включал, уж извините...
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: помогите с кодом сильно не пинайте

Сообщение tarasfrompir » Ср июл 10, 2019 11:46 pm

Chainik писал(а):
Ср июл 10, 2019 10:54 pm
Не думал, что именно тут меня будет подстерегать "засада".
Вопрос, скорее, по PHP, нежели по MDM, но все же. Где же еще спросить, как не на любимом форуме...

Собственно, вот такая вот "элементарщина". Надо сохранить переменную $Text в файл с перезаписью, но без разбиения на строки.

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

$MaxVal = "26.26";
$Text = "MaxVal =".$MaxVal;
На страницу с echo выводит как и положено слитно (MaxVal = 26.26). А в файл переменная $Text, хоть с fwrite, хоть с file_put_contents сохраняется с разбиением на 2 строки:
MaxVal =
26.26

Как побороть "аномалию"?
Система WinXP, версия PHP 5.4.34. MDM не включал, уж извините...
интересная странность. и в чем проблема - лично я не знаю. но для прикола убери все непечатаемые сымволы...
http://qaru.site/questions/16405/php-ho ... n-a-string
За это сообщение автора tarasfrompir поблагодарил:
Chainik (Чт июл 11, 2019 7:44 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: помогите с кодом сильно не пинайте

Сообщение xor » Чт июл 11, 2019 12:59 am

Chainik писал(а):
Ср июл 10, 2019 10:54 pm
Не думал, что именно тут меня будет подстерегать "засада".
Вопрос, скорее, по PHP, нежели по MDM, но все же. Где же еще спросить, как не на любимом форуме...

Собственно, вот такая вот "элементарщина". Надо сохранить переменную $Text в файл с перезаписью, но без разбиения на строки.

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

$MaxVal = "26.26";
$Text = "MaxVal =".$MaxVal;
На страницу с echo выводит как и положено слитно (MaxVal = 26.26). А в файл переменная $Text, хоть с fwrite, хоть с file_put_contents сохраняется с разбиением на 2 строки:
MaxVal =
26.26

Как побороть "аномалию"?
Система WinXP, версия PHP 5.4.34. MDM не включал, уж извините...
вот есть у меня скрипт - пишет в файл с временем, типа лога

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

//script InFile
//runScript("InFile",array("subject"=>$subj, "body"=>$body, "filename"=>$filename ));

$date = gg("ThisComputer.DateNow");
$timeNow = gg("ThisComputer.timeNow");

$subject = $params['subject'];
$body = $params['body'];
$filename = $params['filename'];

$fp = fopen($filename , "a"); // Открываем файл
$test = fwrite($fp, $date." ".$timeNow." ");
$test = fwrite($fp, $subject." "); 
$test = fwrite($fp, $body."\r\n");
fclose($fp); //Закрытие файла
скормим ему ваш пример

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

$MaxVal = "26.26";
$text = "MaxVal =".$MaxVal;
$filename = "C:/_majordomo/htdocs/cms/texts/memory1.txt";
runScript("InFile",array("subject"=>"Текст:", "body"=>$text, "filename"=>$filename ));
смотрим, что получилось:

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

11.07.2019 00:52 Текст: MaxVal =26.26
всё ок
За это сообщение автора xor поблагодарил:
Chainik (Чт июл 11, 2019 7:44 pm)
Рейтинг: 1.16%
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: помогите с кодом сильно не пинайте

Сообщение Chainik » Чт июл 11, 2019 7:47 pm

tarasfrompir писал(а):
Ср июл 10, 2019 11:46 pm

интересная странность. и в чем проблема - лично я не знаю. но для прикола убери все непечатаемые сымволы...
http://qaru.site/questions/16405/php-ho ... n-a-string
tarasfrompir, ваша версия, по поводу наличия непечатаемых символов оказалась верной.
"Обработка напильником"

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

$string = preg_replace('/[\x00-\x1F\x7F]/u', '', $string);
решила проблему.
Спасибо!
Ответить