Apenas sobre a "casa inteligente": como criar uma luz de fundo "inteligente"

Chegando em casa, sempre foi inconveniente: você abre a porta e fica escuro; surgiu a ideia de acender as luzes do corredor, mas não é fácil, mas o que pode ser ligado pelo telefone antes de voltar para casa. Bem dito - significa que você tem que começar.
Algumas reflexões do autor antes de ler este artigo.
(Antes de ler o artigo, obviamente, devo incluir um comentário aqui que, antes de tudo, este texto deve ser considerado um pequeno tutorial sobre como trabalhar com gpio usando java, mostrado em um exemplo, mas não uma instrução para convencer cada usuário , sobre a necessidade de seguir esse caminho)


Como a expansão futura deste sistema está planejada (ou não), foi decidido usar um computador de placa única como base. Com um leve movimento do mouse em Ali, o mais barato <

laranja pi zero 256mb .



Ligação


Então a parte mecânica, não há nada complicado. Da mesma forma que na placa Arduino, somente de acordo com as saídas em pi laranja.



Tomamos o revezamento habitual para "caseiro". Por um lado, conectamos o pino de energia e controle, por outro lado, cortamos o cabo de energia da nossa lâmpada e o inserimos no relé (no meu caso, era uma fita de diodo).



Esquema:



Isso é tudo, você é um gênio.

Algum código


Com a parte técnica finalizada. Nos voltamos para o software, aqui tudo também é simples:

  1. Instalamos o armbian ou qualquer outro Linux no cartão SD, mas eu escolhi este. Eu recomendo gravar a imagem usando o etcher.
  2. Em seguida, através do apt-get, instale o java em 3 comandos:

    #sudo add-apt-repository ppa:webupd8team/java #sudo apt-get update #sudo apt-get install oracle-java8-installer 
  3. Com a ajuda do gita, adicione o conjunto de fiaçãoPi para a nossa placa (contém várias bibliotecas para trabalhar com o gpio e todos os tipos de ferramentas para o mesmo)
    Também não é difícil:

     #git clone https://github.com/vladikoms/WiringOP-Zero.git #cd WiringOP-Zero #chmod +x ./build #sudo ./build 

    Bem, verifique:

     #gpio -v #gpio readall 

Nesta parte, com a placa pronta, vá para o computador e o ide favorito.

Nós estaremos implantando o servidor na primavera, portanto, vá ao site deles ou crie um projeto de primavera com alegria.



Para trabalhar com o gpio, você precisa instalar a biblioteca pi4j , para isso, você precisa adicionar o repositório e a dependência.

E então o script final deve se parecer com isso:

build.gradle
 buildscript { ext { springBootVersion = '2.1.0.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.lary.sh' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 jar{ baseName = 'SH' version = '0.0.1-SNAPSHOT' } repositories { mavenCentral() maven{ url "https://oss.sonatype.org/content/groups/public" //  } } dependencies { implementation('org.springframework.boot:spring-boot-starter-data-rest') implementation('org.springframework.boot:spring-boot-starter-web') runtimeOnly('org.springframework.boot:spring-boot-devtools') testImplementation('org.springframework.boot:spring-boot-starter-test') compile 'com.pi4j:pi4j-core:1.2-SNAPSHOT' //   } 


Bem, vamos para a classe de controle gpio:

Gpio.java
 public class MyGpio{ private GpioController gpio ; private GpioPinDigitalOutput myLed; public Gpio() { try { //          ( ) PlatformManager.setPlatform(Platform.ORANGEPI);//  ,    OrangePI } catch (PlatformAlreadyAssignedException e) { e.printStackTrace(); } gpio= GpioFactory.getInstance(); myLed = gpio.provisionDigitalOutputPin(OrangePiPin.GPIO_08); //  8    //       } public void light(){ //     if(myLed.isHigh()) myLed.low(); //             else myLed.high();//        (8) } public void blink(){ //       for (int i =0;i<10;i++) { try { light(); Thread.sleep(500); } catch (Exception e){ e.printStackTrace(); } } } } 


O código apresentado é bastante simples e não implica um bom controle dos pinos da placa, mas abre a porta para isso.

Bem, o estágio final é a criação do controlador na primavera

Gpiocontroller.java
 @Controller public class GpioController { @RequestMapping("/blink") @ResponseBody public String blink(HttpServletResponse response, HttpServletRequest request ) { Gpio gpio =new Gpio(); gpio.blink(); return "blink"; } @RequestMapping("/light") @ResponseBody public void light(){ Gpio gpio =new Gpio(); gpio.light(); } } 


Agora, alguns gestos recentes na forma de criar um arquivo jar usando gradle. Depois disso, transfira via sftp para a placa (em muitos modos, você pode configurar a implantação diretamente) e execute o jar no dispositivo. Em seguida, vá para o estimado 192.168.0 no navegador. ***: 8080 / light
e aproveite enquanto espera que isso ajude a manter os dedos à noite ou acender a luz até chegarmos em casa.

Na próxima parte (se eu chegar a isso), definitivamente mostrarei diferentes maneiras de interagir com nossa casa "inteligente".

aqui está a fonte
e depois trabalhe com o pente (gpio)

Source: https://habr.com/ru/post/pt430928/


All Articles