И правда. Может где то в шапке закрепить.AlexL писал(а): ↑Чт июн 14, 2018 6:08 amПеренаправление какое то включить бы. Половина ссылок на форуме не работает.PAV писал(а): ↑Пт июн 27, 2014 12:28 pmДоговорились кидать на форум, а в вики я ссылку даю.
http://smartliving.ru/Main/Library
[Код] Примеры синтаксиса кода
-
- Сообщения: 10
- Зарегистрирован: Сб июн 09, 2018 9:33 pm
- Откуда: Архангельск
- Благодарил (а): 5 раз
- Поблагодарили: 0
Re: Примеры синтаксиса кода
-
- Сообщения: 407
- Зарегистрирован: Вт окт 24, 2017 2:01 pm
- Откуда: Ижевск
- Благодарил (а): 45 раз
- Поблагодарили: 69 раз
Re: Примеры синтаксиса кода
Здравствуйте, подскажите пожалуйста для особо одаренных, как на ПХП получить свойства объекта?
есть у меня котёл твердотопливный, который по MQTT шлёт несколько параметров
хочу создать сценарий чтоб алиса рассказывала мне эти параметры, но не понимаю как получить свойства и чтоб она их произнесла
ткните пожалуйста носом
есть у меня котёл твердотопливный, который по MQTT шлёт несколько параметров
хочу создать сценарий чтоб алиса рассказывала мне эти параметры, но не понимаю как получить свойства и чтоб она их произнесла
ткните пожалуйста носом
PI2 + MQTT + 5 ESP8266 + Atmega16
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Примеры синтаксиса кода
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 407
- Зарегистрирован: Вт окт 24, 2017 2:01 pm
- Откуда: Ижевск
- Благодарил (а): 45 раз
- Поблагодарили: 69 раз
Re: Примеры синтаксиса кода
получилось как то так, свойства берет по условиям отрабатывает, а как сделать, чтоб говорила по человечи, а то говорит " температура воды тридцати двух градусов, температура масла тридцати одного градуса"
пробовал Say("Включён твердотопливный котел, температура воды " .gg .$Water_actual." градуса", 2);
говорить начинает правильно, но "ГЫ ГЫ" тоже говорит
пробовал Say("Включён твердотопливный котел, температура воды " .gg .$Water_actual." градуса", 2);
говорить начинает правильно, но "ГЫ ГЫ" тоже говорит
Код: Выделить всё
$obj=getObject($Котел);
$Status=getGlobal('Котел.Status');
if($Status == 1)
{
$Water_actual=getGlobal('Котел.Water_actual');
$Oil_actual=getGlobal('Котел.Oil_actual');
$Pressure=getGlobal('Котел.Pressure');
Say("Включён твердотопливный котел, температура воды " .$Water_actual." градуса, температура масла " .$Oil_actual. " градуса, давление в рессивере " .$Pressure. " атмосферы" , 2 );
}
else
{
Say("Твердотопливный котёл выключен",2);
}
PI2 + MQTT + 5 ESP8266 + Atmega16
-
- Сообщения: 2087
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 458 раз
Re: Примеры синтаксиса кода
- Рейтинг: 2.33%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
-
- Сообщения: 407
- Зарегистрирован: Вт окт 24, 2017 2:01 pm
- Откуда: Ижевск
- Благодарил (а): 45 раз
- Поблагодарили: 69 раз
Re: Примеры синтаксиса кода
Пробую вот так, вроде более менее, воду говорит нормально тридцать градусов, а на масле говорит тридцати градусов
ну или тридцать один градус, температура масла тридцати одного градуса
ну или тридцать один градус, температура масла тридцати одного градуса
Код: Выделить всё
function myMorph($string, $ch1, $ch2, $ch3)
{
$ff=Array('0','1','2','3','4','5','6','7','8','9');
if(substr($string,-2, 1)==1 AND strlen($string)>1) $ry=array("0 $ch3","1 $ch3","2 $ch3","3 $ch3" ,"4 $ch3","5 $ch3","6 $ch3","7 $ch3","8 $ch3","9 $ch3");
else $ry=array("0 $ch3","1 $ch1","2 $ch2","3 $ch2","4 $ch2","5 $ch3","6 $ch3","7 $ch3","8 $ch3","9 $ch3");
$string1=substr($string,0,-1).str_replace($ff, $ry, substr($string,-1,1));
return $string1;
}
Say("температура ". "воды ". myMorph($Water_actual, "градус", "градуса", "градусов"). ", температура ". "масла ". myMorph($Oil_actual, "градус", "градуса", "градусов"),2);
PI2 + MQTT + 5 ESP8266 + Atmega16
-
- Сообщения: 2087
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 458 раз
Re: Примеры синтаксиса кода
тридцати градусов
а на входе в текст ту спич 30 градусов
это проблема речевого движка, и где как по разному с решением, можно и до придумать
а на входе в текст ту спич 30 градусов
это проблема речевого движка, и где как по разному с решением, можно и до придумать
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
- xor
- Сообщения: 2041
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Примеры синтаксиса кода
вариант морфа покороче
Код: Выделить всё
/**
* Склоняем словоформу
* @ author runcore
* morph(1000,'градус','градуса','градусов');
*/
function morph($n, $f1, $f2, $f5) {
$n = abs(intval($n)) % 100;
if ($n>10 && $n<20) return $f5;
$n = $n % 10;
if ($n>1 && $n<5) return $f2;
if ($n==1) return $f1;
return $f5;
}
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 1555
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Примеры синтаксиса кода
Самое смешное, что давно уже есть встроенная функция для склонения чисел - GetNumberWord().
GetNumberWord($x,array('день','дня','дней'))
GetNumberWord($x,array('градус','градуса','градусов'))
GetNumberWord($x,array('день','дня','дней'))
GetNumberWord($x,array('градус','градуса','градусов'))
- xor
- Сообщения: 2041
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Примеры синтаксиса кода
Обманем движок
Вот функция, переделанная из перевода суммы в рублях в строку (использует morph) -- для целых
Код: Выделить всё
/**
* Возвращает текст числа с параметром
* @uses morph(...)
* $sex - 0 male 1 female
* use mynum2str(30,'градус','градуса','градусов',0)
*/
function mynum2str($num,$f1, $f2, $f5,$sex) {
$nul='ноль';
$ten=array(
array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),
array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять'),
);
$a20=array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать' ,'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
$tens=array(2=>'двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят' ,'восемьдесят','девяносто');
$hundred=array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот','восемьсот','девятьсот');
$unit=array( // Units
array('' ,'' ,'',$sex),
array($f1,$f2,$f5,$sex),
array('тысяча' ,'тысячи' ,'тысяч' ,1),
array('миллион' ,'миллиона','миллионов' ,0),
array('миллиард','милиарда','миллиардов',0),
);
////////////////////////////////
if($num<0){
$minus='минус ';
}else{
$minus = '';
}
$num = abs($num);
////////////////////////////////
list($rub,$kop) = explode('.',sprintf("%015.2f", floatval($num)));
$out = array();
if (intval($rub)>0) {
foreach(str_split($rub,3) as $uk=>$v) { // by 3 symbols
if (!intval($v)) continue;
$uk = sizeof($unit)-$uk-1; // unit key
$gender = $unit[$uk][3];
list($i1,$i2,$i3) = array_map('intval',str_split($v,1));
// mega-logic
$out[] = $hundred[$i1]; # 1xx-9xx
if ($i2>1) $out[]= $tens[$i2].' '.$ten[$gender][$i3]; # 20-99
else $out[]= $i2>0 ? $a20[$i3] : $ten[$gender][$i3]; # 10-19 | 1-9
// units without rub & kop
if ($uk>1) $out[]= morph($v,$unit[$uk][0],$unit[$uk][1],$unit[$uk][2]);
} //foreach
}
else $out[] = $nul;
$out[] = morph(intval($rub), $unit[1][0],$unit[1][1],$unit[1][2]); // rub
//$out[] = $kop.' '.morph($kop,$unit[0][0],$unit[0][1],$unit[0][2]); // kop
return $minus.trim(preg_replace('/ {2,}/', ' ', join(' ',$out))); ///////////////////////////////
}
////////////////////
обновил для работы с отрицательными числами
Последний раз редактировалось xor Вс авг 26, 2018 1:40 am, всего редактировалось 2 раза.
win10 connect https://connect.smartliving.ru/profile/303