Примеры выражений
Выражения, используемые в определениях Фильтра событий и Тревог, должны получать результат типа Boolean. Это позволяет SberMobile Server определить, может ли событие пройти через фильтр или должна ли тревога быть активирована по какому-либо событию.
Выражение | Результат вычисления | Тип результата |
| true | Boolean |
| 5 | Integer |
| "Red Line" | String |
| true, если ссылка speed разрешается в целое число более 5. | Boolean |
| true, если ссылка name разрешается в строку “admin”. | Boolean |
| true, если ссылка failed[3] разрешается в "false" (Boolean) | Boolean |
| true, если ссылка env/context разрешается в Строку, совпадающую с регулярным выражением "^abc.*", т.е. начинается с "abc". | Boolean |
| true,если обе ссылки разрешаются в значения, похожие друг на друга (т.е. два числа или две строки) и эти значения равны. | Boolean |
| true или false, в зависимости от значений разрешенных ссылок, которые должны быть числовыми. | Boolean |
| "mile" | String |
| Значение ссылки pressure, если оно больше 100 или равно 100. | Number |
Расчет расстояния между точками
Предположим, мы владеем компанией, сдающей в аренду автомобили, и не хотим, чтобы наши автомобили уезжали далеко от стоянки. В целях управления, каждая машина оборудована небольшим контроллером, который читает положение машины с GPS приемника и отправляет его на сервер SberMobile по сотовой связи при помощи GPRS. В нашей системе, мы имеем координаты двух точек: автомобиля и стоянки. Мы можем рассчитать расстояние между ними при помощи выражения или создать выражение, которое активирует тревогу, когда расстояние превысило заданный предел.
Если наши координаты выражены в радианах, мы можем применить следующую формулу для поднятия тревоги, если расстояние между транспортным средством и стоянкой превысило 500 километров:
acos(sin({car_latitude}) * sin({base_latitude}) + cos({car_latitude}) * cos({base_latitude}) * cos({car_longitude} - {base_longitude})) * 6371 > 500
6371
радиус Земли в километрах
500
разрешенное максимальное расстояние между автомобилем и стоянкой в километрах
Если координаты выражения в градусах (что более вероятно в случаях данных GPS приемника), мы просто конвертируем градусы в радианы, например:
{car_latitude} / 180 * 2 * 3.1415926