Coder Social home page Coder Social logo

final's People

Contributors

hedy44 avatar

Watchers

 avatar  avatar  avatar

final's Issues

Registo de end device na TTN ao criar novo sensor na aplicação

Ao criar um novo sensor na aplicação web, este também deve ser registado automaticamente na TTN. Atualmente:

  1. User preenche formulário com dados do novo sensor
  2. Dados são validados (?)
  3. Sensor.create() para inserir a entrada na base de dados (nova linha na tabela sensors)

Após o passo 3 (ou antes, ou até em paralelo), deve haver o registo desse mesmo sensor na TTN dentro da aplicação TTN que tiver sido criada para o efeito. Para isso, é necessário ler a documentação da API da TTN e fazer a chamada à API adequada usando a biblioteca axios (ou semelhante).

Links úteis:

Carregar leituras da TTN para a aplicação web via MQTT

Os sensores comunicam dados para a TTN, que os disponibiliza via MQTT. Assim, terá que existir um serviço extra (pode ser um script simples) que ligará por MQTT à TTN e ao receber uma nova mensagem, caso seja a leitura de um sensor, chamará um endpoint da API para reportar a nova leitura.

Passos possíveis:

  • Criar script para subscrever a app TTN via MQTT (bónus se usar .env vars ou outro tipo de configuração não explícita no código)
  • Criar um endpoint na BD da web app para comunicar uma nova leitura de temperatura e humidade do sensor X
  • Adaptar o script para que ao receber uma mensagem esta seja passada para a web app (via API acima)
  • Testar isto simulando um packet na TTN web console

Integrar a lógica de recepção e reconstrução de imagens (de sensores) vindas da TTN

Após concluir o #5 e perceber a lógica de recepção de temperaturas/humidades, implementar a reconstrução de imagens não deve ser muito diferente. O processo foi implementado por outros alunos, que já têm um projeto à parte que, segundo sei, vai recebendo a imagem pedaço a pedaço e reconstrói a mesma no fim.

Assim, a lógica seria:

  • Ter o tal serviço a funcionar, à semelhança do script de dados em #5
  • Criar alguns endpoints na web app / API para suportar a recepção de imagem, nomeadamente
    • 1) Endpoint para sinalizar o início de recepção de imagem (ou seja, resulta num CREATE de uma entrada na web app para uma nova imagem (modelo?) - que tem entre outras coisas um estado, id, o ficheiro quando estiver pronto, os pacotes totais e os pacotes recebidos. O POST para este endpoint leva a uma nova imagem do sensor X, com estado "em recepção" e define o total de pacotes.
    • 2) Endpoint para atualizar o estado de recepção da imagem. POST para aqui levará apenas a atualizar o nº de pacotes já recebidos imagino eu
    • 3) Endpoint para sinalizar o fim de recepção + imagem reconstruida. POST para aqui adiciona o ficheiro ao Modelo Image, define o estado como "recebida" e os pacotes como X e Y. Pode até registar mais info (tempo de recepção, perdas, etc,
    • 4) Endpoint para sinalizar a falha na recepção de uma imagem ("estado = falhou")
  • Adaptar o script dos alunos anteriores (Marcela e Gabriel) para que a cada nova mensagem recebida a informação seja passada para a API (Axios)

Integração com a TTN via API

A aplicação web apresenta dados (temp. humidade, imagem) que são fornecidos por sensores ambientais espalhados por locais. Estes dados são recolhidos por sensores com LoRaWAN que utilizam a TTN para enviar os mesmos. Ou seja, a TTN serve de intermediário entre sensor e web app (sensor -> TTN <-> web app).

Logo há aqui alguns pontos importantes a ter em conta:

  1. É necessário ter uma "aplicação" criada na TTN
  2. É necessário adicionar à TTN cada dispositivo novo (sensor) que se pretenda utilizar, indicando o DEV EUID do mesmo (os TTN end devices)
  3. Cada sensor terá que ter no seu código a lógica de recolha de dados e envio dos mesmos para a TTN, incluindo os valores de APP ID e APP KEY configurados (e reportará o seu DEV EUID)
  4. A TTN terá que o payload formatting configurado, ou seja a transformação feita nos dados que chegam dos sensores, para que os mesmos sejam disponibilizados em JSON via MQTT (ou outra integração)
  5. A web app interage com o network server da TTN para obter dos dados que chegam à "TTN app", a cada notificação vinda da TTN os dados são passados para a DB.

A versão atual da aplicação web consiste ainda num sistema de informação simples com alguns modelos (local, sensor, user, sensor_reading, outros?) e CRUD dos mesmos, vistas ligadas e questões de autorização/autenticação de users. Para que se torne um projeto útil falta a integração automática com a TTN, que consistirá em 4 tarefas possíveis (cada uma com seu issue separado):

  • Ao criar um novo sensor, este deve ser registado na TTN como end device via API - #1
  • Ao editar um sensor, caso seja necessário, a informação registada na TTN deve ser também alterada (alterações do dev euid permitidas? - #3
  • Ao apagar um sensor, este deve ser automaticamente removido da app na TTN - #4
  • Os dados ambientais vindos dos sensores que chegam à TTN devem ser passados para a web app (sensor readings, esquecer para já eventuais mensagens de erro/warning) - #5
  • Os dados sobre imagens que chegam da TTN devem também ser comunicados para a web app #6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.