Skip to content

2.2 Módulo VirtualSensorNet

Felipe Santos edited this page Mar 26, 2015 · 1 revision

#VirtualSensorNet

##Descrição O módulo do VirtualSensorNet elimina o acoplamento entre os dados coletados e suas fontes geradoras, coletor o ou processamento computacional, pelo uso de abstração de dados chamada sensor virtual. O sensor virtual representa uma unidade sensorial de software, com dados padronizados em formato fixo, sem estes sofrerem influência da sua fonte geradora. Tal abordagem provê baixo acoplamento entre as aplicações desenvolvidas e um hardware de sensor(ou um processamento computacional), gerando uma série de benefícios para o ciclo de vida da aplicação.

##Funcionalidades A principal função do VirtualSensorNet gerenciar os sensores virtuais. A seguir, uma lista com todos as funções do módulo.

  1. Gerenciar os sensores virtuais;
  2. Monitorar o estado de funcionamento dos sensores do SensorNet;
  3. Provê funcionalidades ao exterior;
  4. Emitir alertas sobre alterações em qualquer sensor virtual, seja no estado de funcionamento, seja em uma nova medida.

O VirtualSensorNet deve suportar as seguintes operações.

  1. Criação e edição de metadados dos sensores virtuais;
  2. Atualização fonte geradora para alguns tipos de sensores virtuais;
  3. Composição de diversos sensores virtuais para um único sensor virtual;
  4. Existência de sensores virtuais com dados oriundos de processamento computacional.

###Sensor Virtual O sensor virtual é uma abstração de dados que para representar uma unidade sensora. Esta unidade recebe um fluxo de entrada de medidas de fontes geradoras, sejam essas medidas oriundas de dispositivos sensores físicos ou resultados de computações. O propósito da existência desta abstração é prover para os desenvolvedores um conjunto de dados padronizados para o desenvolvimento de aplicações e serviços, ao mesmo tempo sendo capaz de interagir com mais diversos tipos de hardware de sensores disponíveis no mercado ou diversas abordagens sensorial em software. Sem a preocupação com detalhes específicos inerentes as diferentes fontes (hardware ou software) utilizados para o monitoramento, o desenvolvedor obtêm maior facilidade em criar suas aplicações. A seguir um exemplo da abordagem do sensor virtual. virtual-sensor

Esta abordagem ainda conta com troca de fontes geradoras de forma fácil, sem a perda de medidas e sem a necessidade do desenvolvedor modificar sua aplicação, pois todos os dados estão vinculados a um sensor de software, o sensor virtual.

###Consumo de dados do coletor e do SensorNet O VirtualSensorNet trabalha com os sensores virtuais, porém, para configurá-lo corretamente, é necessário informações prévias sobre os valores de cada sensor da rede de sensores mapeado pelo SensorNet. De posse dessas informações, um novo sensor virtual pode ser criado e posto em funcionamento.

Para armazenar o histórico de modificações de valores de um campo de um sensor da rede de sensores, é necessário a inscrição omcp://collector.ex/ para receber os dados publicados pelos coletores para interior do framework.

##Comunicação

###Servidor RPC Do mesmo modo que o SensorNet, o VirtualSensorNet atua como um servidor OMCP, disponibilizado dados de todos os sensores virtuais para uma aplicação externa. Os dados variam de uma representação do atual estado de um sensor virtual, até o histórico de um valor qualquer. Todos estes recursos são endereçáveis por uma URL, como mostrado a seguir:

  1. omcp://virtualsensornet.osiris/vsensors/;
  2. omcp://virtualsensornet.osiris/vsensors/{virtualSensorId}/;
  3. omcp://virtualsensornet.osiris/vsensors/{virtualSensorId}/history/;
  4. omcp://virtualsensornet.osiris/vsensors/{virtualSensorId}/values/{valueName1}/;
  5. omcp://virtualsensornet.osiris/vsensors/{virtualSensorId}/values/{valueName1}/history/.

###Formato de dados para chamadas RPC O OSIRIS define como os dados de representação do sensor virtual devem ser estruturados para a transferência. Aqui também há a necessidade de informar o estado de operação atual de um sensor virtual.

####VirtualSensor vsensor:{

}

####Histórico de todos os campos do VirtualSensor Esta lista de valores representa os valores das medidas de todos os campos, de um sensor virtual, em uma janela de tempo definido pela requisição. A seguir, um exemplo da lista.

[
	{
		valueName1:35,
		valueName2:30,1,
		valueName3:-10,
		date:1235431
	}
]

####Histórico de um único campo do VirtualSensor Esta lista de valores representa a variação de medidas para um único campo de um sensor virtual. Os campos contém a informação do valor e o identificador temporal do ocorrido. A janela de tempo, com início e fim deve ser definida na requisição. A seguir, um exemplo da estrutura.

[
	{
		value:125,
		date:1235431
	},
	{
		value:1225,
		date:123543121
	}
]

###Publicação de mensagens de eventos Da mesma maneira do SensorNet, VirtualSensorNet realiza a notificação todas as alterações nos sensores virtuais pela publicação de mensagens de notificação em omcp://exchange-aqui. Com isso, todos os módulos que necessitarem motirar todos ou um sensor virtual, pode se inscrever no exchange para receber as mensagens das notificações.

Todas os sensores virtuais também informam o estado de funcionamento dos sensores, como definido no SensorNet, na Tabela de estados de funcionamento.

####Tabela Notificações do VirtualSensorNet A tabela a seguir descreve todos os eventos publicados pelo VirtualSensorNet para o mundo exterior.

Ação Descrição
Atualização sensor virtual
Mal função sensor virtual
Desativação sensor virtual
Reativação sensor virtual

Todas as notificações devem conter a URL para o recurso notificado.

##Implementação A implementação do VirtualSensorNet conta com três tipos de sensores virtuais para atender todos os requisitos necessários ao desenvolvimento do módulo. Os tipos implementados são: Link, Composite e Blending. virtual-sensor-implementation

###Link O Link é o sensor virtual destinado criar uma abstração vinculada a um sensor da rede de sensores. O Link armazena o identificador do sensor, com id do mesmo, id da rede e id do coletor, e o nome dos valores que o sensor contém, para recriá-los como valores de um sensor virtual. Toda a informação do sensor para a configuração do Link é repassada do módulo do SensorNet.

Para preencher o Link com os valores capturados pelos sensores da rede de monitoramento, o módulo do VirtualSensorNet também se inscreve para obter dados oriundos dos coletores, omcp://collector.ex/. Quando uma nova medida é obtida, uma comparação entre os identificadores do sensor, rede e coletor ocorre. Se os dados de identificação forem iguais aos dados contidos no Link, os dados das medições são armazenados para o Link e um evento de nova medida é lançado.

###Composite O sensor virtual Composite é destinado a agregar diferentes sensores virtuais como um único sensor virtual. Para realizar tal tarefa, o Composite seleciona um conjunto de sensores virtuais e um conjunto de valores para cada sensor virtual. No fim, um único sensor virtual existe, agregando todos os valores de todos os campos como se fosse de si próprio.

###Blending O Blending é o sensor virtual responsável por aplicar processamentos diversos para um conjunto de sensores virtuais. Para realizar este processo, é necessário um conjunto de sensores virtuais e uma função de processamento. Após todos os itens definidos, o Blending envia o conjunto de sensores virtuais para a função de processamento e recebe o resultado como um novo valor do sensor virtual.

####Funções de processamento Igualmente as funções das mais diversas linguagens de programação, funções de processamento no OSIRIS devem operar baseando-se em argumentos passados e enviando o retorno do processamento para o chamador da função. Afim de não quebrar a modularidade do framework, as funções são módulos independentes, contendo um endereçamento do recurso, como por exemplo omcp://myfunction.app/. A principal vantagem de criar funções como recursos é reutilização em qualquer aplicação distinta construída com o framework sem grandes problemas de acoplamento. A inspiração para esta decisão de arquitetura foi o estilo arquitetural SOA, onde as funcionalidades desenvolvidas para as aplicações são disponibilizadas como serviços na rede. A seguir, uma exemplo ilustrado da abordagem. funções

Clone this wiki locally