Documente Academic
Documente Profesional
Documente Cultură
INTEGRACIÓN DE PLATAFORMAS
LIBRES Y COMERCIALES EN EL
ÁMBITO DEL HOGAR DIGITAL
Curso 2017-2018
CTIF Madrid Capital
IES PACÍFICO (Madrid)
Miembros:
DIEGO CASAS ROBLES
JESÚS JAVIER RAYA LUNA
JAVIER LÓPEZ LÓPEZ
RAMON RODRIGUEZ LUQUE
JOSÉ MARÍA ROSA HERRANZ
JOSÉ ERNESTO VELA ESCOLANO
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Índice:
Introducción..........................................................................................................................................3
Trabajos previos....................................................................................................................................3
Materiales.............................................................................................................................................4
Desarrollo realizado..............................................................................................................................7
Nodo pasarela..................................................................................................................................8
Nodo independiente.........................................................................................................................9
Aplicación de control remoto por móvil........................................................................................11
Conclusiones.......................................................................................................................................11
Propuestas futuras...............................................................................................................................11
Código fuente de las prácticas............................................................................................................13
Nodo pasarela................................................................................................................................13
Nodo independiente Nº1................................................................................................................15
Nodo independiente Nº2................................................................................................................18
Nodo independiente Nº3................................................................................................................20
Nodo independiente Nº4................................................................................................................23
Introducción a Souliss........................................................................................................................26
Descripción breve sobre Souliss....................................................................................................26
Arquitectura de red e interfaces de usuario...................................................................................26
Lógicas e interfaces...................................................................................................................26
Hardware de Souliss......................................................................................................................27
Comenzando con Souliss...............................................................................................................27
Comenzando con Souliss....................................................................................................................27
Lista de inicio para comenzar:.......................................................................................................27
Paso 1: verifica si tu nodo es compatible.......................................................................................27
Paso 2: obtenga el último IDE de Arduino compatible.................................................................28
Paso 3: verificar el ejemplo de parpadeo: “BLINK”.....................................................................28
Paso 4: obtenga el último código de marco de Souliss..................................................................28
Paso 5: obtenga la última aplicación de Android Souliss..............................................................29
Paso 6: Configura las funciones de Souliss...................................................................................29
Paso 7: compila y carga Souliss, y luego diviértete.......................................................................29
Configuración del Framework............................................................................................................29
Una configuración de ejemplo.......................................................................................................29
Lista de archivos de configuración disponibles.............................................................................30
Lista de archivos de configuración de la placa disponibles...........................................................31
Definiciones para el modo de configuración: “Speakeasy”...............................................................33
2/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Introducción
El presente grupo de trabajo se ha desarrollado con la intención de explorar la viabilidad de utilizar
plataformas de software y hardware libre en el ámbito del hogar digital.
Para ello se ha empezado por el estudio y puesta en práctica de
plataformas libres como arduino.
El software utilizado se denomina: “Framework Souliss”
(http://souliss.net/ )
Consiste en una serie de librerías de software que permiten el
desarrollo de programas para la pasarela y los nodos de la
instalación domótica. Se trata por tanto de un desarrollo libre
para la construcción del hardware asociado a una instalación
domótica.
El proyecto que lo sustenta ha desarrollado así mismo una
aplicación para teléfono móvil que permite tener el telecontrol
de todos los elementos de la instalación domótica.
Illustration 1: Logo del proyecto
Souliss
Trabajos previos
En una primera fase se ha realizado un estudio de la documentación existente del proyecto. El
principal inconveniente es que la mayoría de la documentación (toda la oficial) se encuentra en
inglés.
También existe un blog en castellano muy útil para documentarse de nuevos desarrollos:
http://souliss-es.blogspot.com.es/
Esto anterior, unido a la diversidad del profesorado, ha ralentizado mucho la puesta en marcha de
las experiencias prácticas.
Hay que indicar que era la primera toma de contacto para todos los miembros del grupo en mayor o
menor medida.
Se instaló el software asociado a las placas de arduino. Es importante indicar que no se debe instalar
la última versión del software sino la que se indique en el sitio web de la wiki de souliss
(https://github.com/souliss/souliss/wiki)
Se realizaron algunos test de los ejemplos típicos y se validó el uso de todas las herramientas.
Souliss
(http://docplayer.es/45285950-Introduccion-a-souliss.html)
3/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Introducción
Souliss se construye sobre tres capas que construye una completa red de nodos con lógicas
distribuidas y funcionalidad, todos los nodos pueden intercambiar datos de peer-to-peer y no hay
necesidad de un nodo central que coordine las lógicas y las comunicaciones.
Gracias a su estructura escalable, la funcionalidad de Souliss se puede mover sobre diferentes nodos
o se fusiona en una sola, la mejor solución puede ser orientada para el tamaño y los requisitos de
red. Memoria compartida, esto es, cada nodo Souliss tiene un área de memoria compartida.
Es un array dividido en tres partes: typicals, inputs y outputs. Cada parte contiene N Bytes y cada
Byte es un slot. El area de memoria compartida tiene la siguiente estructura:
La idea básica es que
cada funcionalidad
básica
(lights,heating/cooling,
garage doors, ...) está
asociada a un slot. Toda
la información está
contenida en un slot
relevante, por lo que la
información es
accessible por el
número de nodo y el
número de slot.
Capas Souliss
Una instalación flexible
es fácil gracias a la
implementación
construir en capas.
Desde el punto de vista
del usuario, estas capas
no se utilizan
directamente, porque
están incrustados en la
API de Souliss.
Illustration 2: Area de memoria para almacenar la estructura de los
elementos de souliss llamados typical
4/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Vnet
La comunicación se establece a través de vnet, es construir una red plana virtual, llevar a cabo los
complementos y el enrutamiento a través de diferentes medios de comunicación (por cable e
inalámbrica) a un nivel inferior, sin requerir ningún tipo de configuración especial de su propia red.
“Vnet” incluye controladores para muchos transceptores y potencialmente corre sobre todos los
controladores de los medios de comunicación que tiene un mecanismo de detección de colisiones.
Macaco
Es un protocolo basado en eventos,binario y pequeño. Permite la comunicación punto a punto entre
los nodos. Se lleva a cabo también en la aplicación de Android que da una conexión directa, el
mecanismo basado en eventos ahorrar batería y ofrecer una rápida interacción. Lógica y pasarelas
Actividades de manejo (luces, ventanas, puertas,...) se construyen como típicas, un conjunto de
lógicas pre-configurados que también tiene una interfaz disponible en la aplicación Android. Todos
los nodos pueden proporcionar una lista de los típicos utilizados en ella. Leer la página
DataStructure para saber más. Hardware Souliss Hay varias plataformas disponibles que se pueden
ejecutar Souliss, todos están basados en microcontroladores AVR y tiene diferentes transceptor de
extensión de E/S.
Materiales
Para el desarrollo del proyecto se han utilizado materiales del aula taller del centro. En concreto se
han utilizado los siguientes:
• Placas Arduino Mega.
• Placas Arduino Ethernet.
• Placas Ethernet Shield.
• Módulos de comunicaciones RS485 basados en el MAX485.
• Componentes varios para entradas y salidas.
• Cables dupont para el montaje rápido.
• Resistencias.
• Leds.
• Pulsadores.
• Cable UTP para el bus.
• Adaptadores varios para conectores.
5/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
6/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Illustration 4: Diagrama de conesiones de la placa arduino mega utilizada para los nodos
independientes.
Desarrollo realizado
Se realizado una red domótica basada en cuatro nodos, uno de los cuales corresponde con la
pasarela a internet.
La red física se ha basado en par trenzado con el estándar RS485 como especificación.
La pasarela se conecta también a la red Ethernet para dar acceso a la red local y por ella a internet,
previa la apertura de los puertos correspondientes en el router de la vivienda.
Illustration 6: Diagrama del escenario planteado para las pruebas donde solo se muestra uno de
los nodos por cable y otro inhalámbrico, cuando realmente se montaron cuatro nodos.
El planteamiento mostrado en la figura se hace usando un arduino mega con ethernet shield para la
pasarela, cuando realmente se montó sobre una placa arduino ethernet.
Las comunicaciones entre los nodos se realizan utilizando el estándar RS485. Se usa el chip
MAX485 para adaptar las señales del puerto serie del microcontrolador (5V/0V) a los niveles del
bus RS485 (señales diferenciales).
8/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Nodo pasarela
El primer montaje que se realizó es el del nodo pasarela. Su interés radica en que permite la
conexión de la domótica con el exterior a través de internet.
Illustration 8: Nodo pasarela basado en Arduino Ethernet con un typical de control de punto de luz
9/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Nodo independiente
Conexiones:
Arduino Mega RX (pin 0) ↔ MAX485 - RO
Arduino Mega TX (pin 1) ↔ MAX485 – DI
10/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Illustration 10: Nodo independiente comunicado por RS485 con dos typicals de control de punto de
luz
11/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Illustration 11: Nodo independiente con punto de luz (Typical) controlado desde la APP
12/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Illustration 13: Varios móviles con la aplicación Souliss controlando el mismo nodo.
Conclusiones
Las pruebas han sido bastante satisfactorias, aunque no libres de numerosos bugs que han
ralentizado aún más los logros a alcanzar.
Los resultados se pueden valorar como adecuados para indicar que el proyecto está maduro, pero
que requiere el desarrollo de materiales para su uso. Esta tarea debe realizarse tras la
experimentación y ha escapado de las posibilidades de este grupo de trabajo.
Propuestas futuras
Existe un gran potencial en el uso de este software/hardware debido a su compatibilidad mediante
un binding con el software de código abierto “OpenHAB”.
OpenHAB es utilizado en el centro en el módulo de Sistemas integrados y hogar digital como
pasarela domótica montada sobre un hardware abierto bien conocido hoy en día: Raspberry PI.
13/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Es deseable desarrollar módulos integrables con dicha pasarela para las prácticas en dicho módulo.
En la actualidad se integra sobre una instalación comercial KNX y permitiría ser contrastada dicha
red con una abierta como souliss.
La redacción clara de documentación para las prácticas sería muy deseable dado la escasa o
inexistente documentación.
14/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Nodo pasarela
Placa basada en arduino ethernet con conexión a MAX485 (RS485)
/**************************************************************************
Souliss - RGB LED Strip
Control and RGB LED or a Strip using the PWM, fade in/out and flash
effects are available as the Android interface.
As option you can run the same code on the following, just changing the
relevant configuration file at begin of the sketch
- Arduino with ENC28J60 Ethernet Shield
- Arduino with W5200 Ethernet Shield
- Arduino with W5500 Ethernet Shield
***************************************************************************/
/*************/
// Use the following if you are using an RS485 transceiver with
// transmission enable pin, otherwise delete this section.
//
#define USARTDRIVER_INSKETCH
#define USART_TXENABLE 1
#define USART_TXENPIN 2
#define USARTDRIVER Serial
/*************/
15/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
void setup()
{
Initialize();
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
16/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
SLOW_10s() {
/**************************************************************************
Souliss - RGB LED Strip
Control and RGB LED or a Strip using the PWM, fade in/out and flash
effects are available as the Android interface.
***************************************************************************/
17/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
/*************/
// Use the following if you are using an RS485 transceiver with
// transmission enable pin, otherwise delete this section.
//
#define USARTDRIVER_INSKETCH
#define USART_TXENABLE 1
#define USART_TXENPIN 2
#define USARTDRIVER Serial
/*************/
void setup()
{
Initialize();
18/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
SLOW_10s() {
19/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
/**************************************************************************
Souliss - RGB LED Strip
Control and RGB LED or a Strip using the PWM, fade in/out and flash
effects are available as the Android interface.
***************************************************************************/
/*************/
// Use the following if you are using an RS485 transceiver with
// transmission enable pin, otherwise delete this section.
//
#define USARTDRIVER_INSKETCH
#define USART_TXENABLE 1
#define USART_TXENPIN 2
#define USARTDRIVER Serial
/*************/
20/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
void setup()
{
Initialize();
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
21/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
SLOW_10s() {
/**************************************************************************
Souliss - RGB LED Strip
Control and RGB LED or a Strip using the PWM, fade in/out and flash
effects are available as the Android interface.
***************************************************************************/
22/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
/*************/
// Use the following if you are using an RS485 transceiver with
// transmission enable pin, otherwise delete this section.
//
#define USARTDRIVER_INSKETCH
#define USART_TXENABLE 1
#define USART_TXENPIN 2
#define USARTDRIVER Serial
/*************/
void setup()
{
Initialize();
23/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
SLOW_10s() {
24/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
/**************************************************************************
Souliss - RGB LED Strip
Control and RGB LED or a Strip using the PWM, fade in/out and flash
effects are available as the Android interface.
***************************************************************************/
/*************/
// Use the following if you are using an RS485 transceiver with
// transmission enable pin, otherwise delete this section.
//
#define USARTDRIVER_INSKETCH
#define USART_TXENABLE 1
#define USART_TXENPIN 2
#define USARTDRIVER Serial
/*************/
25/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
void setup()
{
Initialize();
void loop()
{
// Here we start to play
EXECUTEFAST() {
UPDATEFAST();
26/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
SLOW_10s() {
27/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Introducción a Souliss
Framework de redes de control distribuido basado en Arduino para Smart Homes y IoT
Souliss es un proyecto de código abierto que recopila código fuente y personas con intereses
comunes en el campo del SmartHome e Internet of Things. Está diseñado para ser ligero y
escalable, se ejecuta en múltiples nodos y por disitintos medios de comunicación. Puede usar
Souliss para construir un sistema domótico completo basado en Ethernet y RS485 , crear sus
propios dispositivos inteligentes inalámbricos ZigBee, Z-Wave o simplemente abrir la puerta de
su garaje desde su teléfono inteligente Android.
La wiki contiene toda la información necesaria para configurar una red de Souliss, incluye detalles
sobre arquitecturas e implementaciones compatibles.
Lógicas e interfaces
Cada nodo ejecuta un conjunto de lógica definida por el usuario (denominada: “Typical”), estos
ofrecen una forma común de interactuar con la interfaz de usuario , reduciendo el esfuerzo de
configuración y aumentando la estandarización entre nodos.
Los datos no se almacenan de manera predeterminada en la puerta de enlace que actúa como
elemento de paso a su través; si es necesario, puede configurar las interfaces , una colección de
protocolos para la transferencia de datos diseñada para integrar Souliss con otros dispositivos.
28/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Hardware de Souliss
Hay varias plataformas disponibles que pueden ejecutar Souliss, todas están basadas en
microcontroladores AVR y tienen diferentes transceptores de extensión de E/S.
29/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Hay dos opciones principales: obtener una placa que contenga todo el hardware requerido (como las
placas ProDINO de KMP Electronics) o ensamblar un nodo con una o varias interfaces de
comunicación y E/S según sus necesidades.
30/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
31/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
32/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
33/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
34/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#include "Typicals.h"
35/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
36/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
/***************************************/
37/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Timer_T12(slot)
Souliss_T12_Timer(memory_map, slot)
38/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
39/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Timer_T21(slot)
Souliss_T21_Timer(memory_map, slot)
40/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Set_Antitheft_Peer(slot)
Souliss_SetT42(memory_map, slot)
#define Logic_Antitheft_Peer(slot, main_antitheft_address)
Souliss_Logic_T42(memory_map, slot, &data_changed,
main_antitheft_address)
#define Set_T42(slot)
Souliss_SetT42(memory_map, slot)
#define Logic_T42(slot, main_antitheft_address)
Souliss_Logic_T42(memory_map, slot, &data_changed,
main_antitheft_address)
41/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Set_Light(slot)
Souliss_SetT54(memory_map, slot)
#define Logic_Light(slot)
Souliss_Logic_T54(memory_map, slot,
mOutputAsFloat(slot)*0.015, &data_changed)
#define Set_T54(slot) Souliss_SetT54(memory_map,
slot)
#define Logic_T54(slot) 42Souliss_Logic_T54(memory_map, slot,
mOutputAsFloat(slot)*0.015, &data_changed)
#define Set_Power(slot)
Souliss_SetT57(memory_map, slot)
#define Logic_Power(slot)
Souliss_Logic_T57(memory_map, slot,
mOutputAsFloat(slot)*0.015, &data_changed)
#define Set_T57(slot) Souliss_SetT57(memory_map,
slot)
#define Logic_T57(slot)
Souliss_Logic_T57(memory_map, slot,
mOutputAsFloat(slot)*0.015, &data_changed)
42/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Set_Temperature_Setpoint(slot)
Souliss_SetT62(memory_map, slot)
#define Logic_Temperature_Setpoint(slot)
Souliss_Logic_T62(memory_map, slot, &data_changed)
#define Set_T62(slot)
Souliss_SetT62(memory_map, slot)
#define Logic_T62(slot)
Souliss_Logic_T62(memory_map, slot, &data_changed)
#define Set_Humidity_Setpoint(slot)
Souliss_SetT63(memory_map, slot)
#define Logic_Humidity_Setpoint(slot)
Souliss_Logic_T63(memory_map, slot, &data_changed)
#define Set_T63(slot)
Souliss_SetT63(memory_map, slot)
#define Logic_T63(slot)
Souliss_Logic_T63(memory_map, slot, &data_changed)
#define Set_Light_Setpoint(slot)
Souliss_SetT64(memory_map, slot)
#define Logic_Light_Setpoint(slot)
Souliss_Logic_T64(memory_map, slot, &data_changed)
#define Set_T64(slot)
Souliss_SetT64(memory_map, slot)
#define Logic_T64(slot)
Souliss_Logic_T64(memory_map, slot, &data_changed)
43/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Set_Voltage_Setpoint(slot)
Souliss_SetT65(memory_map, slot)
#define Logic_Voltage_Setpoint(slot)
Souliss_Logic_T65(memory_map, slot, &data_changed)
#define Set_T65(slot)
Souliss_SetT65(memory_map, slot)
#define Logic_T65(slot)
Souliss_Logic_T65(memory_map, slot, &data_changed)
#define Set_Current_Setpoint(slot)
Souliss_SetT66(memory_map, slot)
#define Logic_Current_Setpoint(slot)
Souliss_Logic_T66(memory_map, slot, &data_changed)
#define Set_T66(slot)
Souliss_SetT66(memory_map, slot)
#define Logic_T66(slot)
Souliss_Logic_T66(memory_map, slot, &data_changed)
#define Set_Power_Setpoint(slot)
Souliss_SetT67(memory_map, slot)
#define Logic_Power_Setpoint(slot)
Souliss_Logic_T67(memory_map, slot, &data_changed)
#define Set_T67(slot)
Souliss_SetT67(memory_map, slot)
#define Logic_T67(slot)
Souliss_Logic_T67(memory_map, slot, &data_changed)
#define Set_Pressure_Setpoint(slot)
Souliss_SetT68(memory_map, slot)
#define Logic_Pressure_Setpoint(slot)
Souliss_Logic_T68(memory_map, slot, &data_changed)
#define Set_T68(slot)
Souliss_SetT68(memory_map, slot)
#define Logic_T68(slot)
Souliss_Logic_T68(memory_map, slot, &data_changed)
44/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define SetAddress
Souliss_SetAddress
#define SetAddressingServer()
Souliss_SetAddressingServer(memory_map)
#define SetDynamicAddressing()
Souliss_SetDynamicAddressing()
#define SetIPAddress
Souliss_SetIPAddress
#define GetIPAddress
Souliss_GetIPAddress
#define SetAccessPoint
Souliss_SetAccessPoint
#define ReadIPConfiguration
Souliss_ReadIPConfiguration
#define IsRuntimeGateway
MaCaco_IsRuntimeGateway
#define JoinNetwork()
Souliss_JoinNetwork()
#define JoinAndReset()
Souliss_JoinAndReset()
#define SetUserInterface
UserMode_ManualRecord
#define SetAsGateway(address)
Souliss_SetLocalAddress(memory_map, address)
#define RemoveAsGateway()
Souliss_ResetLocalAddress(memory_map)
#define GetAsGateway()
Souliss_GetLocalAddress(memory_map)
#define SetAsPeerNode(address, index)
Souliss_SetRemoteAddress(memory_map, address, index)
#define SetAsBatteryNode(address, index)
Souliss_SetRemoteAddress(memory_map, address, index); \
Souliss_BatteryChannels(memory_map, address)
#define HardcodedChannel
Souliss_HardcodedCommunicationChannel
#define GetTypicals()
Souliss_GetTypicals(memory_map)
#define CommunicationChannels()
Souliss_CommunicationChannels(memory_map)
#define ProcessCommunication()
Souliss_CommunicationData(memory_map, &data_changed)
45/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define DigIn(pin,value,slot)
Souliss_DigIn(pin, value, memory_map, slot)
#define LowDigIn(pin,value,slot)
Souliss_LowDigIn(pin, value, memory_map, slot)
#define DigIn2State(pin,value_state_on,value_state_off,slot)
Souliss_DigIn2State(pin, value_state_on, value_state_off,
memory_map, slot)
#define LowDigIn2State(pin,value_state_on,value_state_off,slot)
Souliss_LowDigIn2State(pin, value_state_on, value_state_off,
memory_map, slot)
#define DigInHold(pin, value_state1,value_state2,slot)
Souliss_DigInHold(pin, value_state1, value_state2, memory_map,
slot)
#define LowDigInHold(pin, value_state1,value_state2,slot)
Souliss_LowDigInHold(pin, value_state1, value_state2,
memory_map, slot)
#define DigKeepHold(pin, value_state1,value_state2,slot)
Souliss_DigKeepHold(pin, value_state1, value_state2,
memory_map, slot)
#define LowDigKeepHold(pin, value_state1,value_state2,slot)
Souliss_LowDigKeepHold(pin, value_state1, value_state2,
memory_map, slot)
#define DigOut(pin,value,slot)
Souliss_DigOut(pin, value, memory_map, slot)
#define PulseDigOut(pin,value,slot)
Souliss_PulseDigOut(pin, value, memory_map, slot)
#define nDigOut(pin,value,slot)
Souliss_nDigOut(pin, value, memory_map, slot)
#define LowDigOut(pin,value,slot)
Souliss_LowDigOut(pin, value, memory_map, slot)
#define PulseLowDigOut(pin,value,slot)
Souliss_PulseLowDigOut(pin, value, memory_map, slot)
#define nLowDigOut(pin,value,slot)
Souliss_nLowDigOut(pin, value, memory_map, slot)
#define DigOutToggle(pin,value,slot)
Souliss_DigOutToggle(pin, value, memory_map, slot)
#define ImportAnalog(slot,analogvalue)
Souliss_ImportAnalog(memory_map, slot, analogvalue)
#define AnalogIn(pin, slot, conv, bias)
Souliss_AnalogIn(pin, memory_map, slot, conv, bias)
#define isTrigged(slot)
Souliss_isTrigged(memory_map, slot)
#define RemoteInput
Souliss_RemoteInput
46/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define RemoteInputs
Souliss_RemoteInputs
#define Send
Souliss_RemoteInput
#define SendData
Souliss_RemoteInputs
#define ResetInput(slot)
Souliss_ResetInput(memory_map, slot)
#define PullData(addr, slot, remote_slot, remote_numbof)
Souliss_PullData(addr, slot, remote_slot, remote_numbof)
#define RoutingTable
vNet_SetRoutingTable
#define DonotRouteTable
vNet_SetDoNotRoutingTable
#define Init_XMLServer()
XMLSERVERInit(memory_map)
#define Run_XMLServer()
XMLSERVERInterface(memory_map)
#define Init_Modbus()
ModbusInit(memory_map)
#define Run_Modbus()
Modbus(memory_map)
#define Init_HTTPServer()
{}
#define Run_HTTPServer()
HTTPServer(memory_map)
#define RemoteDigIn
Souliss_RemoteDigIn
#define RemoteLowDigIn
Souliss_RemoteLowDigIn
#define RemoteDigIn2State
Souliss_RemoteDigIn2State
#define RemoteAnalogIn2Buttons
Souliss_RemoteAnalogIn2Buttons
#define RemoteLowDigIn2State
Souliss_RemoteLowDigIn2State
#define RemoteDigInHold
Souliss_RemoteDigInHold
#define RemoteLowDigInHold
Souliss_RemoteLowDigInHold
#define Persistence_IsData(id)
Souliss_Persistence_IsData(memory_map, id)
47/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
#define Persistence_ClearData(id)
Souliss_Persistence_ClearData(memory_map, id)
#define LastIn_IsData(id)
Souliss_LastIn_IsData(memory_map, id)
#define LastIn_ClearData(id)
Souliss_LastIn_ClearData(memory_map, id)
#define LastIn_GetData(id, slot)
Souliss_LastIn_GetData(memory_map, id, slot)
#define LastIn_GetAnalog(id, slot)
Souliss_LastIn_GetAnalog(memory_map, id, slot)
/*****************************************/
ProcessCommunication(); \
FAST_1110ms() \
CommunicationChannels(); \
FAST_2110ms() \
GetTypicals()
ProcessCommunication(); \
ProcessCommunication();
#define START_PeerJoin()
FAST_71110ms() \
{
\
if(!MaCaco_IsSubscribed()) \
48/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
{
\
JoinNetwork(); \
}
\
}
#define JoinInProgress() (!
MaCaco_IsSubscribed())
#define SLOW_PeerJoin()
SLOW_510s() { \
JoinNetwork(); \
}
#define GetAddress()
Souliss_DynamicAddressing_FirstBoot (memory_map);
\
for(uint8_t n=0;n<VNET_MEDIA_NUMBER;n++) {
\
if(Souliss_CommunicationData(memory_map, &data_changed))
\
break;
\
delay(10); }
\
}
\
while(!MaCaco_IsSubscribed()) {
\
49/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Souliss_JoinAndReset();
\
if(Souliss_CommunicationData(memory_map, &data_changed))
\
break;
\
delay(10); }
\
}}
ProcessCommunication(); \
delay(100);}
ProcessCommunication(); \
delay(200);}
/*****************************************/
/*****************************************/
/*!
Macros
*/
/*****************************************/
#define AUX MaCaco_AUXIN_s
#define IN MaCaco_IN_s
#define TYP MaCaco_TYP_s
#define OUT MaCaco_OUT_s
#define mAuxiliary(slot) memory_map[AUX+slot]
50/51
INTEGRACIÓN DE PLATAFORMAS LIBRES Y
COMERCIALES EN EL ÁMBITO DEL HOGAR DIGITAL
Curso: 2017/2018
Souliss_SinglePrecisionFloating(memory_map+MaCaco_P_OUT_s+slot+
(node*MaCaco_SLOT))
#endif
51/51