Forum Navigation
You need to log in to create posts and topics.

Envio datos a una central especifica

Buenas tardes.

Estoy depurando mi proyecto domotico y quiero enviar los datos de sensores de una central a otra.

Creo un Packet con los datos correspondientes, en Destination, desactivo Send to all y ya me permite seleccionar el nº de Station, pincho en aceptar y en teoria deveria de guardarse pero si vuelvo a abrir el packet sale marcada la opcion [Sen to all]

Se puede seleccionar una central en concreto?

Como deveria hacerlo.

Muchas gracias.

 

Uploaded files:
  • Central-1.png
  • Todas-centrales.png

De esta parte tenemos que hacer un pequeño debate.

Tengo dos ideas para direccionar los paquetes, cada una con su ventajas y sus inconvenientes, una en una idea un  poco "rara" que para mi es mejor..

La otra es el modo tradicional.. pero creo que es mas pesada y menos agil.

Tendríamos que encontrar la forma de poder debatir algunos temas entre los que estamos tirando del proyecto... algo mas rapido que un foro para poder tomar algunas decisiones de forma mas agil.

Una vez que lo tengamos se tarda una hora mas o menos en tenerlo incluido.

 

 

Estado = Overload.

De momento sigo dejando el envio a todas las centrales.

Cuando se tenga tiempo para hacer el debate lo comentas y opinamos.

Muchas gracias Roberto.

Muy buenas, os comento un poco lo efectuado hasta ahora y pregunto unas dudas.

Tengo creada la central casa donde se encuentran los circuitos de persianas, estado de puertas y parte de alumbrado.

Circuito 10 luz escalera, 11 Lamparilla escalera, 14 Lamparilla entrada. (Estos tres circuitos se controlan via wifi con el server).

Cuando recibo datos por el bus RS485 me envia paquete con el nº de circuito y su valor al server para ser activado por las otras centrales.

if (strncmp(frame, "ES-CIR", 6)==0){
int circuito = (frame[6] - 48) * 10 + (frame[7] - 48);
int valor = (frame[11] - 48) * 100 + (frame[12] - 48) * 10 + (frame[13] - 48);
circuits[circuito].Value = valor;
// Envia estado del circuito al servidor

if (Comunicacion[circuito]==2){
RemotePackets[1].Data[4]=circuito + 1;//User Byte circuito
RemotePackets[1].Data[5]=valor + 1;  //User Byte valor
RemotePackets[1].Send=true;
}

}

Central Luz Escalera con un solo circuito para el alumbrado de escalera (N_actuador = 10)

Central Lamparilla Escalera con un solo circuito para el alumbrado de escalera (N_actuador = 11)

Central Lamparilla Entrada con un solo circuito para el alumbrado de escalera (N_actuador = 14)

Este codigo es el mismo para las tres centrales.

void OutControl(){

// Envio estado de circuitos al bus por si modificamos desde la central
int i;
if (circuits[0].Out1_Value){i=1;}else{i=0;}
if (i!=circuits[0].OldValue){
if (circuits[0].Out1_Value){circuits[0].OldValue=i;}else{circuits[0].OldValue=i;}
RemotePackets[0].Data[5] = N_actuador + 1;
RemotePackets[0].Data[6] = circuits[0].Value + 1;
RemotePackets[0].Send=true;
}

void InternalPacketIn(

// Recibe ordenes del server
if ((Data1=='A')&&(Data2=='C')&&(Data3=='I')&&(Data4=='R')){
if (N_actuador==Data5 - 1){ circuits[0].Value = Data6 - 1; return;}
}

Si los circuitos se activan por medio de RS485 el funcionamiento es correcto.

Si los circuitos son modificados desde la app o server el funcionamiento en muchas ocasiones es correcto, en otras actua el circuito correctamente pero se queda pensando la app con el circulito y en el monitor del server se aprecia como repite el envio de los paquetes varias veces

Se que el configurador esta bien actualizado, pero seria compatible a 100% con el configurador antiguo, estoy usando este para las centrales independientes (Sonoffbasic)

Seguramente me direis que esto es un disparate, pero de esta manera todas las centrales recibirian los datos y solo actuaria la que corresponda sin tener que estar creando diferentes paquetes para la misma funcion.

Muchas gracias

Uploaded files:
  • Controlado-por-RS485.png

El problema estoy casi seguro q es como gestionas las comunicaciones... Se está enviando el paquete de usuario a la vez q el de la web y todo choca...creo q es cuestión de q órdenes y des prioridad segun te interese.

Lo q no entiendo es lo q comentas sobre el configurador viejo...q es lo q quieres hacer?

 

Estado = Overload.

Gracias Roberto.

Sobre lo del configurador.

Las tres centrales sonofbasic los tengo programados con el configurador viejo, simplemente porque las entradas en estos aparatos se ejecutan a nivel alto y no queria modificar el nivel de entrada en el common_funtions del nuevo configurador.

Por eso la pregunta, en el configurador nuevo, has mejorado el rendimiento y la comunicación y el viejo no ha sufrido ninguna actualización.

Volviendo al tema principal del post.

No se que opinaras sobre hacer el intercambio de datos entre centrales por medio de MQTT y Node-REd, un ejemplo sobre lo comentado anterior

Como topic en central casa pondria: Casa/Luz/Escalera

En central escalera podria poner:  Escalera/luz

Esos dos topic quedarian suscritos y por medio de node-red los asociaria

Sobre las comunicaciones.

Esto todavia lo tengo en la mesa de pruebas, como dije si lo controlo con los pulsadores  y monitorizo con ExControl Server se ve todo perfecto.

Si utilizo la app o web sin tocar nada la funcion es correcta pero es cuando en un porcentaje medio de veces se queda pensando y en el monitor se observa que como se repite el envio.

Antes de leer lo q comentas... Para mejorar el rendimiento de las comunicaciones cambia el envío de paquetes de usuario de la función outcontrol a otra como userloop o 100msg... Eso ordena Bastante el tráfico de red.

 

Outcontrol es para gestionar salidas y valores de circuito pero las comunicaciones no le van bien ya que también se ejecuta justo antes de enviar una respuesta al estado de los circuitos...de esta forma se envía el estado controlado por el usuario, nooo se si m estoy explicando.

 

Estado = Overload.

Lo de conjuntar las comunicaciones por node red... Se puede hacer... A mi en particular no m gusta pero es posible ...

Para el caso q comentas yo solo mandaría un paquete justo cuando se toca el conmutador o pulsador por ejemplo... Eso cuando son... Diez paquete al día? Igual hasta menos.

Ahora... Eso es cuestión de gustos... Cada uno puede comunicar si sistema como quiera

 

Estado = Overload.

Gracias Roberto.

Realmente el funcionamiento es como dices y funciona perfectamente.

M alegro!!!

Estado = Overload.