2017/02/04

Domótica de baixo custo com o Pimatic

Um dos maiores problemas para quem se aventura nas casas inteligentes é o preço dos módulos de controlo, mas há uma forma de contornar isso, adicionando inteligência aos módulos de baixo custo que normalmente funcionam apenas com controlo remoto via RF. O Abílio Costa explica-nos como fazê-lo:



Actualmente não há falta de escolha para sistemas de domótica, havendo alguns bem conhecidos como o Philips Hue ou o SmartThings da Samsung. No entanto, para além do preço geralmente pouco simpático, muitos limitam-se a um tipo de função (as Philips Hue apenas se dedicam à iluminação), e poucos são aqueles que permitem interligação entre diferentes marcas.

Hoje trazemos-vos um projeto que permite construir um sistema de domótica de forma simples, barata, e que também pode ser interligado com outros sistemas existentes (ZWave, ZigBee, etc). A ideia é possibilitar controlar tomadas, que por sua vez podem estar ligadas a candeeiros, máquina do café, etc., a partir do telemóvel ou computador, ou de forma automatizada.




O centro deste sistema é um Raspberry Pi com o Pimatic, um software de domótica open source simples mas bastante configurável, que permite o controlo e monitorização dos vossos dispositivos. Uma das grandes vantagens deste software é o facto de funcionar na rede local, não ficando dependente da cloud e sem correr o risco de ser encerrado de um dia para o outro. O Pimatic permite a criação de regras "Quando (…) e Se (…), Então (…)", para que seja possível automatizar um grande leque de situações. Por exemplo, podemos ter uma regra "Quando a porta abre e se já passa das 18h00, então ligar a luz do hall".

Uma das formas mais baratas de implementar este tipo de sistema é utilizar as comuns tomadas com controlo remoto, que geralmente funcionam por rádio frequência de 433MHz. Por cá encontram-se facilmente em qualquer grande superfície de bricolage ou electrodomésticos, havendo conjuntos com três tomadas e um comando, por cerca de 10€ na Maxmat (foi o mais barato que encontramos por cá). Para controlar estas tomadas vamos utilizar um Raspberry Pi, e um emissor RF, que pode ser comprado no ebay por 1€.

O primeiro passo será instalar o Pimatic. Para tal devem seguir as instruções descritas na página oficial do projeto. Depois de terem o Pimatic instalado e a correr, podem aceder ao mesmo colocando o endereço de IP do Raspberry Pi no browser de outro computador da rede. Caso estejam a utilizar o Raspberry Pi com interface gráfica, poderão utilizar o IP 127.0.0.1 directamente no browser do Raspberry Pi.

Após fazerem login na interface do Pimatic, deverão aceder aos plugins e instalar o plugin Homeduino. Este é o plugin que ficará responsável por comunicar com o emissor RF. Existem duas formas de ligar o emissor ao Raspberry Pi, sendo a mais simples (e que aqui vamos abordar) fazer uma ligação directa entre os dois. Para os mais aventureiros, podem utilizar um Arduino que tornará o sistema mais robusto e possibilita ainda ligar um receptor RF. Podem consultar todos os detalhes na página do plugin.

Depois de instalado, deverão aceder às configurações do Plugin (através da página de plugins instalados), e alterar as seguintes opções:
  • driver: gpio
  • transmitterPin: 4

Por fim devem guardar as alterações e desligar o Raspberry Pi. Com o Raspberry Pi desligado, deverão ligar os pins Vcc, Data e Gnd do transmissor ao Raspberry Pi da seguinte forma:



Após voltarem a ligar o Raspberry Pi, e de volta novamente à interface do Pimatic, devem ir à página de Devices, e clicar em "Discover Devices", no canto superior direito. A partir desse momento, o Pimatic ficará à escuta de novos dispositivos, e é nesta altura que devem pressionar os botões no comando das tomadas. Ao pressionar cada botão, será mostrado no Pimatic uma lista de possíveis dispositivos e devem escolher aquele que corresponde à vossa tomada. Infelizmente não é possível identificar automaticamente e eficazmente um único dispositivo, pelo que deverão consultar a lista de protocolos/dispositivos suportados, de modo a identificarem o vosso correctamente: https://github.com/pimatic/rfcontroljs/blob/master/protocols.md

Por fim, voltam à página principal do Pimatic e adicionam o novo dispositivo à página, através do icon da roda dentada, no canto superior direito. Após isto, e se tudo correr como esperado, deverão conseguir ligar e desligar a tomada através do Pimatic! A partir daqui poderão adicionar mais dispositivos e criar regras para os automatizar! Podem ainda adicionar suporte para receber sinais RF, de modo a poderem utilizar os controlos remotos para executar funções directamente no Pimatic!

Dado que a parte mais interessante deste tipo de sistemas é automatização, seguem algumas ideias para possíveis regras:
  • Quando o botão do comando X for pressionado, desligar a luz do hall e ligar a luz do quarto.
  • Quando a TV for ligada entre as 22:00 e as 24:00, e se a luz do teto estiver ligada, desligar a luz do tecto e ligar a luz ambiente.
  • Quando sair de casa, e se a luz da sala estiver ligada, enviar uma notificação para o Pushbullet.

Para além das tomadas, fica aqui uma lista de outros dispositivos que podem ser utilizados com este método:

Por: Abílio Costa

20 comentários:

  1. Uso e recomendo :) tb fiz um plugin: https://goo.gl/ZVnQDv

    ResponderEliminar
  2. Muito bom!
    Há algum tempo que ando para me iniciar nesta área e o Pimatic parece ser um bom ponto de partida, pois tem tantos plugins que irá permitir uma grande evolução.

    Para quem já testou, por RF 433mhz, mesmo adicionando uma antena, dará cobertura para uma moradia inteira? Tenho o receio que depois alguns modulos (daqueles que ficam por de trás das tomadas) não funcionem por falta de cobertura...
    Andava a pensar no X10, pois com o Powerline esse problema já não se punha, mas só o preço do gateway de X10 já dá para vários modulos!

    ResponderEliminar
    Respostas
    1. Este comentário foi removido pelo autor.

      Eliminar
    2. Em relação à antena, o recomendado é um fio de cobre (não muito grosso) de 17.3cm.

      O alcance vai depender muito do transmissor, da moradia (tipo de paredes, interferências, etc) e do sitio do transmissor. Uma possível solução é ter mais do que um Raspberry Pi na casa. Um deles seria o principal, e o outro secundário teria apenas os switches para os dispositivos na zona dele. Usando a API HTTP do Pimatic comunicavam entre eles. No principal em vez de teres os switches a mandar os comandos RF, terias dummy switches a invocar a API do secundário.

      Com um transmissor bom (aquele de 1€ não será o melhor), o alcance não é nada mau (cobre um apartamento de 100m²). Podes ter mais dificuldade se tiveres módulos no tecto.

      Eliminar
    3. Subscrevo a opção de usar mais de um Raspberry pi, para dispositivos mais afastados. Neste momento estou só a controlar dispositivos na sala pelo módulo de 433mhz

      Eliminar
  3. Tenho de experimentar o pimatic, obrigado pela dica! Há um ano que tenho o domoticz instalado aqui em casa em testes e tem sido uma plataforma interessante, mas nada como explorar outras plataformas também!

    ResponderEliminar
  4. Proponho que vejam o projeto "DOMOTICZ", utilizo desde 2014 e aconselho vivamente. ja agora para que gosta de eletronica (esp8266) vejam o "espeasy".

    ResponderEliminar
    Respostas
    1. Em relação ao ESP, espreita a gama Sonoff da iTead: https://www.itead.cc/smart-home.html
      É barato, baseado no ESP8266 e consegues facilmente flashar o EspEasy.

      Eliminar
    2. Eu também perfiro soluções baseadas em Wifi, dado que nos permite a comunicação bilateral, o que não acontece com essas tomadas 433mhz, pois elas apenas recebem o sinal para realizar o trigger.
      Eu utilizo o software OpenHab2 (OpenSource), este tem disponível um leque muito grande de bindings para integrar quase todos os sistemas disponíveis.

      Eliminar
    3. Tambem tenho essa configuração em casa: RaspberryPi, Domoticz, Sonoff (EspEasy). Tenho ligados 2 sensores de Temperatura/Humidade, 2 Luzes, 2 Portões e contador de consumo de electricidade.

      Eliminar
  5. Estou a ver que há aqui uma boa comunidade!!!

    Aproveito para pedir a vossa opinião. Preciso de "construir" um controlador para a rega do jardim. A mesma tem de ser feita por 6 fazes sequenciais. Isto é, como a água não chega para os aspersores todos, só quando acaba a rega de X minutos numa zona, a desliga e passa para a próxima.

    Eu já tenho em desenvolvimento um sistema com uma placa de 8 relays, um arduino uno, ethernet shield, RTC, ... Já comprei tudo e já comando os relays manualmente via internet. Agora falta-me passar para a parte do RTC e comanda-los a um determinado horário...

    No entanto depois de ver estes diferentes projectos, fiquei na dúvida se devo concluir o desenvolvimento um usar (pelo menos parte do que tenho) e aplica-lo com uma destas plataformas, que dariam para ir ampliando as suas funcionalidades, ao contrário do meu sistema, que serviria só para aquilo.

    A minha questão é:
    Existe alguma destas plataformas que permita controlar que permita fazer algo do tipo:
    - às 04:00 liga relay 1
    - às 04:30 desliga relay 1 e liga relay 2
    - às 04:45 desliga relay 2 e liga relay 3
    - às 05:00 desliga relay 3 e liga relay 4
    - às 05:15 desliga relay 4 e liga relay 5

    e para não ter que deitar tudo fora, que permitisse criar módulos com base em Arduino, com comunicação por WIFI ou 433.92mhz.

    Excelente seria se podesse também receber dados de uma estação meteorológica por 433.92mhz, pois em tenho uma e no arduino também recebo os seus dados via RF, para não ligar a rega quando está a chover.

    Que me aconselham para me iniciar? Pimatic, openHab, Domotics, ...?

    ResponderEliminar
    Respostas
    1. Em termos de controlador aconselho-te o Openhab, tens um sistema de regras que podes utilizar para fazeres o que precisas. Em termos de hardware, podes utilizar o arduino com o Mysensors, ou então o NodeMcu/ESP8266 com o EspEasy utilizando MQTT. Para a estação meteorologica, podes tentar ver se existe o binding necessário para a mesma no openhab, ou então podes sempre utilizar os dados do tempo disponiveis online para a tua localização.

      Eliminar
    2. Boas Rui, neste momento tambem me encontro a construir um controlador de rega. estou a utilizar um esp12f com espeasy instalado no qual tem NTP que vai buscar a rede, mas passa so por ser um terminal sendo o controlador domoticz o que gere o tempo de rega. muito importante é definir regras para não existir falhas a quando alguma falha de energia aconteça e não permitir que a valvula fique sempre ligada, pelo que aconselho a definir nesse caso as portas gpio off no arranque.
      este projeto vai constar com sensor de luminosidade e temp ds18b20. é controlado remotamente pelo domoticz e manualmente.
      Podem ver as imagens aqui
      http://imgur.com/a/y7sXc
      http://www.domoticz.com/forum/viewtopic.php?f=23&t=13102&p=115213&hilit=irrigation#p115213

      Eliminar
    3. Obrigado pelas dicas... Gostei da opção o EspEasy, acaba por ficar mais em conta e em casos de falha de cobertura, bastaria adicionar um Repetidor WIFI, certo?

      IR: a minha placa de reles activa-os com em LOW (http://www.volumerate.com/product/8-channel-relay-module-board-w-optocoupler-isolation-blue-works-with-official-arduino-boards-844224064), definir as portas GPIO para OFF iria activas todos os relés. No arduino só tinha em problema com o arranque, em que os relés eram momentaneamente activados.

      O que tens por baixo da placa de relés? 2 Shift Registers?

      Estás a pensar tornar o teu projecto "open source" e divulgar o código e o hardware usado?
      Se sim, diz-me algo (peixeiro@gmail.com). Sendo um projecto igual, pouparia umas boas horas de cabeçadas no código!

      Eliminar
    4. Se consultaste o espeasy viste que o software é puramente opensource que podes acrescentar ou modificar o codigo à tua maneira. basicamente utilizei as ferranmentas que o codigo permite. tenho 2 MCP23017 por baixo dos relé para poder ter 16 reles, sinceramente ainda não testei com o segundo MCP23017, mas como tinha que fazer a placa aproveitei logo para o colocar.
      posso deixar aqui as regras(rules) que estou a utilizar no espeasy:

      On System#Boot do // todos os rele off no boot
      timerSet 8,0
      timerSet 7,0
      timerSet 3,0
      timerSet 4,0
      timerSet 5,0
      timerSet 6,0
      timerSet 2,0
      timerSet 1,0
      endon
      on rele10 do //http:///control?cmd=event,rele10 permite o domoticz controlar o esp
      MCPGPIO,1,0
      timerSet 1,1800 // este timer serve de segurança ao fim de 1800s se nao obter o comando off
      endon // do controlador o esp desliga-o
      on Rules#Timer=1 do
      MCPGPIO,1,1
      endon
      on rele10#S=1 do
      timerSet 1,0
      endon
      on rele20 do
      MCPGPIO,2,0
      timerSet 2,1800
      endon
      on Rules#Timer=2 do
      MCPGPIO,2,1
      endon
      on rele20#S=1 do
      timerSet 2,0
      endon
      on rele30 do
      MCPGPIO,3,0
      timerSet 3,1800
      endon
      on Rules#Timer=3 do
      MCPGPIO,3,1
      endon
      on rele30#S=1 do
      timerSet 3,0
      endon
      on rele40 do
      MCPGPIO,8,0
      timerSet 8,1800
      endon
      on Rules#Timer=8 do
      MCPGPIO,8,1
      endon
      on rele40#S=1 do
      timerSet 8,0
      endon
      on rele50 do
      MCPGPIO,7,0
      timerSet 7,1800
      endon
      on Rules#Timer=7 do
      MCPGPIO,7,1
      endon
      on rele50#S=1 do
      timerSet 7,0
      endon
      on rele60 do
      MCPGPIO,6,0
      timerSet 6,1800
      endon
      on Rules#Timer=6 do
      MCPGPIO,6,1
      endon
      on rele60#S=1 do
      timerSet 6,0
      endon
      on rele70 do
      MCPGPIO,5,0
      timerSet 5,1800
      endon
      on Rules#Timer=5 do
      MCPGPIO,5,1
      endon
      on rele70#S=1 do
      timerSet 5,0
      endon
      on rele80 do
      MCPGPIO,4,0
      timerSet 4,1800
      endon
      on Rules#Timer=4 do
      MCPGPIO,4,1
      endon
      on rele80#S=1 do
      timerSet 4,0
      endon
      On botao1#S=1 do // a partir daqui é para os botoes manuais.
      if [rele10#S]=1
      event rele10
      else
      timerSet 1,0
      endif
      endon
      On botao2#S=1 do
      if [rele20#S]=1
      event rele20
      else
      timerSet 2,0
      endif
      endon
      On botao3#S=1 do
      if [rele30#S]=1
      event rele30
      else
      timerSet 3,0
      endif
      endon
      On botao4#S=1 do
      if [rele40#S]=1
      event rele40
      else
      timerSet 8,0
      endif
      endon
      On botao5#S=1 do
      if [rele50#S]=1
      event rele50
      else
      timerSet 7,0
      endif
      endon
      On botao6#S=1 do
      if [rele60#S]=1
      event rele60
      else
      timerSet 6,0
      endif
      endon
      On botao7#S=1 do
      if [rele70#S]=1
      event rele70
      else
      timerSet 5,0
      endif
      endon
      On botao8#S=1 do
      if [rele80#S]=1
      event rele80
      else
      timerSet 4,0
      endif
      endon

      Atenção para não ocupar mais espaço tens que tirar os comments que coloquei.

      Eliminar
  6. Viva...

    Apesar de nunca me ter estreado nestas andanças, é algo que me interessa.

    Alguém sabe se existem tomadas de parede encastradas que possam ser controladas por sistemas de domótica.
    Acho que seria mais interessante, ter a "magia" toda escondida :)

    Cumprimentos

    ResponderEliminar
  7. Tenho 2 ou três destes: http://www.leroymerlin.pt/Site/Produtos/Eletricidade/Sistemas-domotica/16843722.aspx Uso para desligar as luzes do teto quando uso o kodi e para ligar a luz atraz da TV (se o sol já se pôs :P )

    ResponderEliminar
  8. Boas.

    Antes de mais, muitos parabéns pelo artigo, deu-me aqui mais umas ideias. Ainda assim, estava a olhar para o esquema acima de ligação do transmissor ao GPIO do RPi e à numeração seguida pelo homeduino (wiringPi) e parece-me que ou o número do pin na config devia ser 1 em vez de 4, ou a ligação devia ser feita ao oitavo pin a contar de cima e não ao sexto. Podem por favor confirmar? Obrigado desde já.

    ResponderEliminar
  9. Este comentário foi removido pelo autor.

    ResponderEliminar
  10. Chegou o meu transmissor do ebay
    Para ligar isto, assumindo que não sei o que estou a fazer, qual o processo para ligar no rasp?

    ResponderEliminar