-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
Protocolo de comunicação Sink vs endDevices
A rede de sensores é composta por um Sink (Raspberry PI), um endDevice[1] Master (nodeMcu - ESP8266) conectado diretamente ao Sink pela porta serial (USB Serial) e um número N qualquer de endDevices[N] (nodeMcu - ESP8266) com sensores diversos que se comunicam via Mesh/TCP com o node Master e configuráveis pelo Sink e com comando por voz através do Echo Dot. O protocolo de comunicação entre Sink e a Alexa Skill é abordado na issue #x.
Diagrama do fluxo de comunicação
Notação de comunicação JSON:
- restart : boolean (reinicia o node) - new
- id_node : uint32_t (id do node na primeira mensagem enviada pela serial, ex: 4208790561);
- nodeList : uint32_t array[ N ] (lista de id's dos nodes da rede enviada pela serial);
- device : uint32_t (id do device remetente, ex: 4208790561);
- node_master : uint32_t (id do device master, ex: 4208793911);
- nodeDestiny : uint32_t (id do device de destino, ex: 4208793911) *;
- nodeTime : unsigned long (tempo de funcionamento do device, ex: 1652900897);
- timestamp : unsigned long (horário de envio da mensagem ou para ajuste, ex: 1652900897);
- latitude : float (-12.19742203);
- longitude : float (-38.96674728);
- t_send : int (período de envio das mensagens em segundos);
- send : boolean (true/false indicando se a mensagem deve ser enviada para a rede Mesh pelo nodeMaster);
- unsetSensors : boolean (true/false reseta os dados dos sensores e o set de pinagens geral);
- pinDef : boolean array[18] (array true/false para definição da pinagem);
- pinData : float array[18] (array com os dados dos sensores do device remetente. Issue DOC: Identificação dos pinos nodeMcu (array pinDef) #5);
- dht11PinDef : int (índice do array pinDef equivalente ao pino do device da mensagem. Issue DOC: Identificação dos pinos nodeMcu (array pinDef) #5);
- temperature : float (retorna dados dos sensores BMP180, BMP280 ou DHT11);
- pressure : float (retorna dados dos sensores BMP180 ou BMP280);
- humidity : float (retorna dados dos sensores BMP180, BMP280 ou DHT11);
- dht11_error : String;
- flame : boolean (dados do sensor de chamas);
- uv : float (dados do sensor ultravioleta, issue Sensor UV enviando para pinData e para JSON "uv" através do uvMeasure #7);
- type : uint8_t (tipo de mensagem a ser repassada: broadcast=3, nodes list=2, to node master=1, instant msg=4, default 3);
- uvMeasure : int (tipo de medida a ser retornada pelo sensor: 1=envia os dados pela key "uv"; 0=envia pelo pinData[i=0], default 0, issue Sensor UV enviando para pinData e para JSON "uv" através do uvMeasure #7);
- dht11PinDef : int (define o pino ao qual o sensor está plugado, int é o índice do elemento no array pinDef DOC: Identificação dos pinos nodeMcu (array pinDef) #5, default 3);
- dht11Measure : int (tipo de medida a ser retornada pelo sensor em pinData[i=3]: 1=temperatura, 2=umidade, 4=temperatura+umidade default 4);
- bmp280PinDef : int (define o pino ao qual o sensor está plugado, int é o índice do elemento no array pinDef DOC: Identificação dos pinos nodeMcu (array pinDef) #5, default 6);
- bmp280Measure : int (tipo de medida a ser retornada pelo sensor em pinData[i=6]: 1=temperatura, 2=pressão, 3=altitude, 4=temperatura+pressão, default 0);
- bmp280_error : String;
- bmp180PinDef: int, default 6 (define o pino ao qual o sensor está plugado, int é o índice do elemento no array pinDef DOC: Identificação dos pinos nodeMcu (array pinDef) #5);
- bmp180Measure : int (tipo de medida a ser retornada pelo sensor em pinData[i=6]: 1=temperatura, 2=pressão, 3=altitude, 4=temperatura+pressão, 5=altitude ao nível do mar, default 4);
- bmp180_error : String;
- flamePinDef : int, default 15 (define o pino ao qual o sensor está plugado, int é o índice do elemento no array pinDef DOC: Identificação dos pinos nodeMcu (array pinDef) #5);
- nodeMaster > Sink (USB Serial - mensagem inicial):
{"id_node": nodeOrigin[this], "nodeList" : array[nodes_id[Mesh]]}
- Sink > nodeMaster (USB Serial - resposta da mensagem inicial que será repassada para a rede Mesh por Broadcast):
{"device": sink[this], "node_master" : id_node[define master], "send" : true, "type" : 3}
- Sink > endDevice N para ajustar tempo e definir pino dos sensores (DHT11):
{"device": sink[this], "nodeDestiny" : id_node[N], "send" : true, "type" : 2, "t_send" : 30, "pinDef" [0,0,0,true,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
- A mensagem é enviada do Sink pela USB Serial para o nodeMaster reenviar por singleMessage() ao nodeDestiny.
- A resposta do nodeDestiny > nodeMaster (Mesh) > Sink (USB Serial):
{"device": id_node[this], "node_master" : id_node[master], "nodeDestiny" : id_node[master], "type" : 2, "pinData" [0,0,0,float temperature,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation