Índice:

Smart Home by Raspberry Pi: 5 etapas (com imagens)
Smart Home by Raspberry Pi: 5 etapas (com imagens)

Vídeo: Smart Home by Raspberry Pi: 5 etapas (com imagens)

Vídeo: Smart Home by Raspberry Pi: 5 etapas (com imagens)
Vídeo: Raspberry pi 5 inch HDMI Screen Installation | #Shorts 2024, Junho
Anonim
Smart Home por Raspberry Pi
Smart Home por Raspberry Pi

Já existem vários produtos que tornam o seu apartamento mais inteligente, mas a maioria deles são soluções proprietárias. Mas por que você precisa de uma conexão com a Internet para ligar a luz do seu smartphone? Essa foi uma das razões para eu construir minha própria solução de casa inteligente.

Eu programei um aplicativo de servidor que roda em um Raspberry Pi. Este é um projeto de código aberto baseado em java que permite a você configurar seu apartamento e conectar vários clientes e 'unidades controláveis'. Eu mostro uma solução que lida com interruptores de fonte de alimentação rc, reproduz música e vídeo no Raspberry Pi, mostra o status no espelho inteligente e pode ser controlada por um aplicativo Android e dois aplicativos seixo. A fonte está hospedada no github

Etapa 1: Coisas que você precisa

Coisas que você precisa
Coisas que você precisa

Para configurar a casa inteligente, você precisa dos seguintes 'ingredientes'

  • Raspberry Pi, pelo menos, modelo 2 B
  • Remetente de 433 MHz, algo assim
  • 3 cabos jumper conectando o Raspberry Pi e o remetente
  • Algumas tomadas de controle de rádio a 433 MHz
  • Smartphone Android para executar o aplicativo cliente

Além disso, você pode estender a casa inteligente com mais clientes opcionais e unidades como esta

  • Pebble smartwatch
  • Smart Mirror, veja este projeto
  • Faixa de LED controlada de 433 MHz, consulte este

Etapa 2: preparar Raspberry Pi para 433 MHz

Prepare Raspberry Pi para 433 MHz
Prepare Raspberry Pi para 433 MHz
Prepare Raspberry Pi para 433 MHz
Prepare Raspberry Pi para 433 MHz

Nas etapas a seguir, você precisa acessar a linha de comando do Raspberry Pi. Para obter o acesso, você pode ler este https://www.instructables.com/id/Remote-SSH-access …

Conecte o emissor de 433 MHz com o Raspberry Pi como mostrado na imagem acima

  • GND (remetente) 6 GND (raspi)
  • VCC (remetente) 2 + 5V (raspi)
  • DADOS (remetente) 11 GPIO 17 (raspi)

Conecte também uma antena de 17 cm ao pino ANT (remetente). Isso aumenta o sinal significativo.

Uma vez que precisamos de algumas bibliotecas de outros repositórios git, temos que instalar o git

sudo apt-get install git-core -y

Para configurar o Raspberry Pi para comunicação de 433 MHz, precisamos da biblioteca wiring Pi para melhor manuseio dos GPIOs.

git clone git: //git.drogon.net/wiringPi

cd wiringPi./build

Então, precisamos de uma biblioteca que implemente protocolos de fonte de alimentação tipicamente rc.

git clone git: //github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi make cp send / usr / bin /

O executável 'send' permite enviar códigos para trocar a maioria das fontes de alimentação disponíveis.

Na minha configuração de casa inteligente, eu também tenho uma faixa de LED rc descrita por este instrutível: https://www.instructables.com/id/RC-controlled-LED… Para definir as cores para esta faixa de LED, você precisa de outro executável de envio que permite para enviar qualquer valor inteiro (que codifica a cor).

Portanto, compile sendInt.cpp no repositório rcswitch-pi e mova-o para / usr / bin / sendInt.

sudo g ++ sendInt.cpp -o / usr / bin / sendInt /home/pi/rcswitch-pi/RCSwitch.o -I / home / pi / rcswitch-pi -lwiringPi

Agora você deve ser capaz de enviar comandos rc com os dois executáveis / usr / bin / send e / usr / bin / sendInt

Etapa 3: configurar o servidor doméstico inteligente

Em primeiro lugar, você precisa instalar vários pacotes. O aplicativo Smart Home é baseado em java e funciona bem com openjdk-11. Não tenho certeza sobre outros ambientes de execução java. O mplayer é um reprodutor de música de linha de comando minimalista. O omxplayer usa os gráficos Raspberry Pi para codificação de vídeo, portanto, deve ser usado para vídeos. O programa formiga é necessário para construir o aplicativo java.

sudo apt-get install mplayer omxplayer openjdk-11-jdk ant -y

Configure os diretórios para o arquivo jar e para os logs.

sudo mkdir / opt / neo

sudo chown pi: pi / opt / neo mkdir / home / pi / Logs

Configure o script de inicialização para iniciar o aplicativo automaticamente na inicialização. Portanto, copie o script de smart-home anexado para o diretório /etc/init.d/ Eu também criei um script em / usr / bin / que canaliza comandos para o script anexado, então eu apenas insiro smart-home no console para executar comandos.

sudo cp smart-home /etc/init.d/smart-home

sudo chmod + x /etc/init.d/smart-home sudo sh -c "echo '#! / bin / bash'> / usr / bin / smart-home" sudo sh -c "echo '/ etc / init. d / smart-home / $ 1 '>> / usr / bin / smart-home "sudo chmod + x / usr / bin / smart-home sudo update-rc.d padrões de casa inteligente

Agora é hora de verificar o repositório e construir o aplicativo. Se você não quiser compilá-lo sozinho, basta baixar o smarthome.jar anexado e movê-lo para / opt / neo /

git clone [email protected]: dabastynator / SmartHome.git

ant -f SmartHome / de.neo.smarthome.build / build.ant build_remote cp SmartHome / de.neo.smarthome.build / build / jar / * / opt / neo /

Tente iniciar a casa inteligente e verifique o arquivo de log. Para obter acesso aos GPIOs, o aplicativo deve ser iniciado por sudo.

sudo smart-home start

cat Logs / smarthome.log

Você deve ver a mensagem de erro O arquivo de configuração não existe, que nos indica a próxima etapa. O repositório contém um leia-me que explica o arquivo de configuração. Você pode ver isso muito bem renderizado no github:

Copie este xml para /home/pi/controlcenter.xml, em seguida, defina o local para o seu servidor de mídia e altere o conteúdo conforme necessário. Depois de terminar a configuração e reiniciar o smart-home (sudo smart-home restart), você deve ver o seguinte conteúdo no smarthome.log

24.05-08: 26 INFORMAÇÕES REMOTAS por de.neo.smarthome.cronjob. CronJob@15aeb7ab: Programar cron job

24.05-08: 26 INFORMAÇÕES REMOTAS por [trigger.light]: Aguarde 79391760 ms para a execução 24.05-08: 26 INFORMAÇÕES RMI por Adicionar manipulador web (5061 / ledstrip) 24.05-08: 26 INFORMAÇÕES RMI por Adicionar manipulador web (5061 / ação) 24.05-08: 26 INFORMAÇÕES RMI por Adicionar web-handler (5061 / mediaserver) 24.05-08: 26 INFORMAÇÕES RMI por Adicionar manipulador web (5061 / switch) 24.05-08: 26 INFORMAÇÕES RMI por Adicionar manipulador web (5061 / controlcenter) 24.05-08: 26 RMI INFORMATION by Start webserver with 5 handler (localhost: 5061) 24.05-08: 26 REMOTE INFORMATION by Controlcenter: Add 1. control unit: MyUnit (xyz)…

O servidor web agora está rodando:-)

Etapa 4: clientes de configuração

Clientes de configuração
Clientes de configuração
Clientes de configuração
Clientes de configuração
Clientes de configuração
Clientes de configuração

Cliente smartphone Android

O repositório git para o aplicativo smart-home também contém o código-fonte para o cliente Android, para que você possa compilá-lo sozinho. Mas anexei o APK para esta etapa, o que torna mais fácil. Na primeira vez que você inicia o aplicativo, ele pede um servidor, como na primeira imagem acima. Insira o url do servidor e o token de segurança.

Deve ser isso. Agora você tem acesso ao servidor e controla seu apartamento, reproduzindo músicas e assistindo vídeos remotamente no seu Raspberry Pi. Observe que você pode adicionar widgets à sua tela inicial, o que torna os interruptores e o controle de música mais acessíveis.

Cliente Smartwatch Pebble

A fonte para os dois clientes pebble está hospedada no github. Um aplicativo mostra o arquivo de música que está tocando: https://github.com/dabastynator/PebbleRemoteMusic… Isso também permite pausar / reproduzir e aumentar / diminuir o volume.

O segundo aplicativo aciona três ações: https://github.com/dabastynator/PebbleControl Os nomes dos acionadores são: mobile.come_home mobile.leaving e mobile.go_to_bed. Se você definir regras de evento para este gatilho em seu xml de configuração, você as ativa por seu relógio.

É tudo de código aberto, mas você não precisa compilá-lo sozinho, também anexei os aplicativos do pebble. Baixe os PBW's com seu smartphone, seu telefone deve instalá-los no seu relógio. Os aplicativos de seixo precisam de configurações para se comunicar com o servidor. Anexei uma captura de tela da aparência das minhas configurações.

Cliente Smartwatch Garmin

Há também um cliente disponível para Garmin Smartwatches. O aplicativo está disponível na loja de aplicativos garmin connect e pode ser instalado aqui:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

Cliente Smart Mirror

Já criei um instrutivo que explica como criar o Smart Mirror, veja este https://www.instructables.com/id/Smart-Mirror-by-R…. O código-fonte também está hospedado no github: https:// github.com/dabastynator/SmartMirror. O software do Smart Mirror lê a configuração do arquivo smart_config.js que não faz parte do repositório git. O conteúdo do arquivo de configuração deve ser semelhante a esta lista:

var mOpenWeatherKey = 'sua chave aberta';

var mSecurity = 'seu-token de segurança';

Você também precisa ajustar as duas primeiras linhas do arquivo smart_mirror.js para especificar o endereço IP do servidor Smart Home e o local para obter o clima certo.

Mais clientes

O aplicativo do servidor é um servidor da web simples. Isso permite que você acione ações de qualquer cliente que desejar por meio de chamadas da web simples. No vídeo de demonstração, mostro o tasker do aplicativo Android em combinação com o AutoVoice. Isso me permite acionar eventos com comandos de voz simples. Por exemplo, "ok google, hora de dormir" pode acionar mobile.go_to_bed. Mas você também pode fazer chamadas pela web, por exemplo, do IFTTT. Que tal uma faixa de LED amarela piscando para notificação por e-mail?

Você pode solicitar ao servidor possíveis chamadas da web, como os links a seguir (substitua ip, porta e token por sua configuração)

localhost: 5061 / controlcenter / api? token = secu…

localhost: 5061 / action / api? token = security-to…

localhost: 5061 / mediaserver / api? token = securi…

localhost: 5061 / switch / api? token = security-to…

localhost: 5061 / ledstrip / api? token = security-…

Etapa 5: Conclusão

Existem ainda alguns recursos a serem implementados: Como o servidor fornece apenas uma API web simples, os clientes fazem muitas pesquisas. Para reduzir a pesquisa, quero uma integração MQTT para melhor notificação. Além disso, as fontes de alimentação wi-fi devem ter um desempenho mais confiável do que as fontes de alimentação rc, pois o rc é apenas uma comunicação unilateral.

É muito divertido desenvolver para este projeto. E é muito legal controlar o apartamento por vários dispositivos, mesmo que a conexão com a internet seja interrompida.

Recomendado: