Aplicativo que recebe dados de um sensor de luz pelo firebase, esse sensor está conectado a um arduino, sendo lido pelo Firmata e Jhonny-five e enviando dados para o Firebase.
(caso você não tenha é só ir em arduino.cc, baixar e instalar)
O Firmata faz a leitura do que estiver conectado ao arduino, sem precisar escrever 1 linha em C#.
Disponível em https://nodejs.org/
npm install johnny-five (jhonifive é uma api que você pode utilizar pra ligar varios sensores no arduino ou placa que estiver usando, ele tem um suporte bem amplo. Com ele, você não precisa se preocupar em escrever um código extenso pra fazer a leitura de um sensor, ele se comunica com o firmata que deixou rodando no arduino e faz tudo sozinho.)
http://johnny-five.io/api/light/
o código pra leitura desse sensor que estou usando é esse:
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var light = new five.Light("A0");
light.on("change", function() {
console.log(this.level);
});
});
https://console.firebase.google.com/
Após criado, vai em adicionar app e seleciona a opção WEB
Vai abrir uma janela com um script, vai ser algo parecido com isso.. copie ele.
var config = {
apiKey: "AIzaSyAFns36dXaJbFrRBYK_XsoU649M0loIPXo",
authDomain: "cloudhomeautomation-cfde9.firebaseapp.com",
databaseURL: "https://cloudhomeautomation-cfde9.firebaseio.com",
storageBucket: "cloudhomeautomation-cfde9.appspot.com",
messagingSenderId: "498048127162"
};
firebase.initializeApp(config);
• colar o código copiado no firebase pra esse arquivo
• colar o código copiado do johnny-five no mesmo arquivo
o script vai ficar parecido com o arquivo que está nesse projeto, dentro da pasta arduino, script.js
https://github.com/fabriciobedin/ArduinoSensorWithFirebase/blob/master/arduino/script.js
Eu apenas coloquei um "if" para apenas enviar os valores para o firebase quando forem alterados, ou seja, se não tiver variação de luz, ele mantém o mesmo valor e não fica enviando numeros iguais.
exemplo: cd C:/Users/Fabricio/Desktop/Scripts
Executar os seguintes comandos:
• npm install -g firebase-tools
(pra instalar o plugin do firebase)
• firebase login
(entre com os dados da sua conta google que você criou o projeto do firebase)
(vai pedir pra confirmar umas coisas, pode ir colocando y e enter)
• npm install firebase --save
• firebase init
• node script.js
após executar isso, ele vai se conectar ao arduino e começar a passar os dados do sensor para o Firebase
9º - Abrir o https://console.firebase.google.com/ e entrar no projeto criado
Clicar na guia Database (menu do lado esquerdo), e ver se apareceu uma chave com uma tag sensor com os dados dentro Caso não tenha aparecido, as regras do Firebase devem estar bloqueando, vai na guia regras (na parte de cima, no lado de dados) e altere os valores conforme abaixo, isso vai fazer o Firebase liiberar qualquer comunicação, sem autenticação.
{
"rules": {
".read": true,
".write": true
}
}
Tenha cuidado pra deixar o mesmo nome do pacote, no meu caso eu deixei esse:
casca.upf.com.homeautomation
E substituir o arquivo google-services.json que está na raiz do projeto pelo arquivo que o Firebase gerou. (Porque se deixar o arquivo que está atualmente, ele vai tentar se comunicar com o meu projeto do Firebase e não com o seu).
12º - Pronto, pode executar o aplicativo que conforme a leitura do sensor vai aparecer a lampada acesa ou apagada
Caso a imagem da lampada não mude, apenas olhe o valor que o sensor está informando e mude no "if" da classe MainActivity. Porque conforme o sensor utilizado ele dá uma pequena variação nos valores, aí você olha no firebase qual o valor que ele fica quando apaga ou acende a luz e coloca nesse if.