# Boolean

bool()
//todo
boolean(anything)
converts a value to it's boolean value
contains(string, substring)
returns true if a string contains a substring
endsWith(string, substring)
returns true if a string ends with a substring
eq(value1, value2)
returns true if two values are equal
ge(value1, value2)
returns true if value1 >= value2
gt(value1, value2)
returns true if value1 > value2
isBetween(value, startValue, endValue)
returns true if value >= startValue and value <= endValue
isEmpty(value)
returns true if the value is empty
le(value1, value2)
returns true if value1 <= value2
lt(value1, value2)
returns true if value1 < value2
not(value)
returns the negative boolean value
startsWith(string, substring)
returns true if a string starts with a substring

# Date

date(value)
returns the value as a date type

# Datetime

returns the value as a time type
returns the value as a time type
returns the value as a time type
returns the value as a time type
returns the value as a time type

# Decimal

avg(values)
calculates the average of a series of numeric values
ceil()
//todo
ceiling(decimal or string)
converts a decimal value to it's closest higher integer value
celsius(temperature)
converts temperature from Fahrenheit to Celsius
decimal(integer or string)
converts an integer value to it's decimal value
dewPoint(temperature, relativeHumidity[, scale])
returns the calculated dew point temperature
fahrenheit([Sensor;temperature])
converts temperature from Celsius to Fahrenheit
float()
//todo
floor(decimal or string)
converts a decimal value to it's closest lower integer value
max(values)
calculates the maximum of a series of numeric values
median(values)
returns the value in the middle of a sorted array
min(values)
calculates the minimum of a series of numeric values
number()
//todo
power(integer or decimal or string, power)
converts a decimal value to it's power decimal value
round(decimal or string, [precision])
converts a decimal value to it's rounded value
sqr(integer or decimal or string)
converts a decimal value to it's square decimal value
sqrt(integer or decimal or string)
converts a decimal value to it's square root decimal value
stdev(values)
calculates the standard deviation of a series of numeric values
sum(values)
calculates the sum of a series of numeric values
variance(values)
calculates the standard deviation of a series of numeric values

# Dynamic

if(condition, valueIfTrue, valueIfFalse)
evaluates a boolean and returns value1 if true, or value2 otherwise
least(values)
returns the value that is least found a series of numeric values
most(values)
returns the value that is most found a series of numeric values
previousValue([device;attribute])
returns the previous value of the attribute

# Integers

age([device;attribute])
returns the number of milliseconds an attribute had the current value
count(values)
calculates the number of true/non-zero/non-empty items in a series of numeric values
int()
//todo
integer(decimal or string)
converts a decimal value to it's integer value
returns the number of devices whose attribute had the current value for less than the specified number of milliseconds
older([device;attribute],[...], [device;attribute], threshold)
returns the number of devices whose attribute had the current value for more than the specified number of milliseconds
previousAge([device;attribute])
returns the number of milliseconds an attribute had the previous value

# String

concat(string1, string2)
returns two strings appended together
Example: `concat("hello ", "world")` or `concat("hello", " ", "world")` outputs `hello world`
format()
//todo
formatDuration(value[, friendly = false[, granularity = 's'[, showAdverbs = false]]])
Usage:
value is a number of milliseconds
friendly = true/false (false >>> 0d 00:00:00.000, true >>> so many days, so many hours, etc)
granularity = one of ms, s, m, h, d (smallest part displayed)
showAdverbs = true/false, true adds the in .... or .... ago to friendly times
returns a nicely formatted string of time
eg: formatDuration(12029) - 00:00:12 | formatDuration(12029, true) - 12 seconds | formatDuration(12029, true, "m") - 0 minutes | formatDuration(12029, true, "ms", true) - in 12 seconds and 29 milliseconds
left(string, count)
returns a substring of a value
Example1: `left("hello world", 3)` outputs `hel`
Example2: `left("hello world", 7)` outputs `hello w`
lower(string)
returns a lower case value of a string
mid(string, start, count)
returns a substring of a value
replace(string, search, replace[, [..], search, replace])
replaces a search text inside of a value
right(string, count)
returns a substring of a value
sprintf(format, arguments)
formats a series of values into a string
string(anything)
converts a value to it's string value
substring(string, start, count)
returns a substring of a value
text()
//todo
title(string)
returns a title case value of a string
upper(string)
returns an upper case value of a string

# Time

time(value)
returns the value as a time type