Calculadora matemática. Una gran herramienta.

Camino de la app: Configuración/ Añadir o eliminar un periférico/ La Store Eedomus/ Calculadora matemática.

Esta app, me parece muy interesante, por lo que voy a publicar este tema, recopilando algunos comentarios anteriores, por si puede interesar a alguien:

Mi primera prueba con la calculadora matemática.- Tenía un serio problema, con un sensor que se disparaba cada dos, tres o cuatro segundos. (Creo que sería por que debido a la grán resolución del sensor, los valores cambiaban con demasiada frecuencia).
Por mucho que ajustase el polling a 10 minutos (en parámetros experto) , al revisar el histórico, notaba que el refresco de señal, se seguía produciendo cada pocos segundos. Es un sensor de luminancia zigbee , para controlar el cierre de las persianas, en función de la luz ambiente.
Solución: Después de mucho trastear, por fin he conseguido eliminar decimales, mediante la siguiente expresión en la variable [VAR1] round(device(Código API) /1000) y de esa manera, reducir la resolución y la altísima variación de valores.

Morgoth, hizo algunas pruebas muy interesantes, para ver qué funciones además de las cuatro reglas básicas (±*y/), podía efectuar la calculadora, y nos aportó estos datos:

me he puesto a trastear con la calculadora yo también, y lo cierto es que tiene mejor pinta de lo que parecía inicialmente. De momento la lista de funciones que he visto que soporta (echándole un ojo rápido y poco experto al código) es:

‘device’, ‘abs’, ‘acos’, ‘asin’, ‘atan’, ‘cos’, ‘deg2rad’, ‘exp’, ‘floor’, ‘log’, ‘pow’, ‘rad2deg’, ‘rand’, ‘round’, ‘sin’, ‘sqrt’.

Además se puede operar con “pi” y con “e”.

La sintaxis en todas ellas es función(argumento). La mas obvia es device(código API) que devuelve el valor actual de ese dispositivo. Y a partir de ahí de puede complicar, como por ejemplo:

sqrt(device(código API) → devuelve la raiz cuadrada del valor actual del dispositivo
sqrt(device(código API)(device(código API2)) → el resultado anterior multiplicado por el valor del dispositivo 2
floor(sqrt(device(código API)
(device(código API2))) → el resultado anterior redondeado por defecto al entero más cercano
floor(sqrt(device(código API)*(device(código API2)))*pi → el resultado anterior multiplicado por pi.

No he probado las funciones trigonométricas, y no consigo que me devuelva ningún resultado la función “pow” ni “rand()”.

Mi última prueba hasta el momento:
Como no puedo encontrar un sensor de sol compatible con eedomus, (Ya tengo un sensor de luminancia, pero no es lo mismo),estoy probando una función compleja, para subir y bajar las persianas de forma automática, en base a la temperatura en la calle, la temperatura en casa, la nubosidad, luminancia, humedad, viento, etc.
En particular, he podido observar, que la función EXP de la calculadora, es genial.
La función EXP(device(XXXXXXX)-20), hace que cuanto más lejos esté la temperatura de la temperatura ideal (En este ejemplo 20ºC), mayor es el valor multiplicador y es más fácil controlar el cierre de persianas.

Una nueva experiencia : Potencias y raices

He estado buscando la posibilidad de hacer potencias decimales, haciendo variaciones sobre la función matemática POW, que ya anteriormente, nos dijo Morgoth, que no conseguía que funcionase. Pues bién. Por casualidad, he intentado acordándome de aquel antiguo lenguaje “Basic” (diseñado en 1964), y he probado la sintaxis (código API)^0.16 y EUREKA ¡Funciona!. Con exponentes decimales o fraccionarios.
Recuerdo la sintaxis con algunos ejemplos sencillos:
Cinco al cuadrado: 5^2= 25
Seis a la cuarta : 6^4 =1296
Raiz cuadrada de nueve: 9^(1/2) = 9^0.5 =3
Raiz quinta de 16807: 16807^(1/5) =16807^0.2 = 7

Nota: Para que funcione la potencia de un número fraccionario, es necesario cerrar el exponente con paréntesis. Si el exponente es decimal, no es necesario el paréntesis. En el caso del último ejemplo:
16807^1/5 = 3361.4 no sería válido, pues sería el resultado de 16807 elevado a 1 y dividido por cinco
16807^(1/5) = 7 sería válido
16807^0.2 = 7 sería válido
device(código API)^(1/3) sería la raiz cúbica del valor del dispositivo
Espero que puedan servir a alguien estas experiencias.