Nur zum "Smart Home": Wie man eine "intelligente" Hintergrundbeleuchtung macht

Als ich nach Hause kam, war es immer unangenehm: Man öffnete die Tür und dann war es dunkel, dann kam die Idee auf, die Hintergrundbeleuchtung im Korridor zu machen, aber nicht einfach, aber was konnte vom Telefon aus eingeschaltet werden, bevor man nach Hause kam. Gut gesagt - es bedeutet, dass Sie anfangen müssen.
Ein paar Gedanken des Autors vor dem Lesen dieses Artikels.
(Bevor ich den Artikel weiter lese, sollte ich hier natürlich einen Kommentar einfügen, dass dieser Text zunächst als kleines Tutorial zur Arbeit mit gpio mit Java betrachtet werden sollte, das in einem solchen Beispiel gezeigt wird, aber keine Anweisung, die jeden Benutzer überzeugt über die Notwendigkeit, diesen Weg zu gehen)


Da eine zukünftige Erweiterung dieses Systems geplant ist (oder nicht), wurde beschlossen, einen Einplatinencomputer als Basis zu verwenden. Mit einer leichten Bewegung der Maus auf Ali, dem billigsten <

orange pi zero 256mb .



Verbindung


Dann ist der mechanische Teil nichts kompliziertes. Wie bei der Arduino-Karte, nur in Übereinstimmung mit den Ausgängen auf orangefarbenem Pi.



Wir nehmen die übliche Staffel für "hausgemacht". Einerseits verbinden wir den Strom- und Steuerstift, andererseits schneiden wir das Stromkabel unserer Lampe ab und stecken es in das Relais (in meinem Fall war es ein Diodenband).



Schema:



Das ist alles, du bist ein Genie.

Etwas Code


Mit dem technischen Teil ist dies erledigt. Wir wenden uns der Software zu, hier ist auch alles einfach:

  1. Wir installieren Armbian oder ein anderes Linux auf der SD-Karte, aber ich habe dieses gewählt. Ich empfehle, das Bild mit einem Radierer aufzunehmen.
  2. Als nächstes installieren Sie Java über apt-get in 3 Befehlen:

    #sudo add-apt-repository ppa:webupd8team/java #sudo apt-get update #sudo apt-get install oracle-java8-installer 
  3. Fügen Sie mit Hilfe der Gita das WiringPi- Set für unser Board hinzu (es enthält verschiedene Bibliotheken für die Arbeit mit GPIO und alle Arten von Tools für dasselbe).
    Auch nicht schwer:

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

    Überprüfen Sie:

     #gpio -v #gpio readall 

In diesem Teil, wenn das Board fertig ist, gehen Sie zum Computer und zur Lieblingsidee.

Wir werden den Server im Frühjahr bereitstellen. Gehen Sie also entweder zu ihrer Website oder erstellen Sie ein Frühlingsprojekt mit Hagel.



Um mit gpio arbeiten zu können, müssen Sie die pi4j- Bibliothek installieren. Dazu müssen Sie das Repository und die Abhängigkeit hinzufügen.

Und dann sollte das endgültige Skript ungefähr so ​​aussehen:

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' //   } 


Kommen wir zur GPIO-Steuerungsklasse:

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(); } } } } 


Der vorgestellte Code ist recht einfach und impliziert keine gute Kontrolle über die Platinenstifte, öffnet jedoch die Tür dazu.

Nun, die letzte Phase ist die Erstellung des Controllers im Frühjahr

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(); } } 


Nun ein paar neue Gesten in Form der Erstellung einer JAR-Datei mit Gradle. Übertragen Sie danach per SFTP auf die Karte (in vielen IDs können Sie die Bereitstellung direkt konfigurieren) und führen Sie das JAR auf dem Gerät aus. Wechseln Sie als Nächstes im Browser zu dem geschätzten 192.168.0. ***: 8080 / light
und genießen Sie es in der Hoffnung, dass dies dazu beiträgt, unsere Finger nachts zu halten oder das Licht einzuschalten, bis wir nach Hause kommen.

Im nächsten Teil (falls ich jemals dazu komme) zeige ich Ihnen auf jeden Fall verschiedene Arten der Interaktion mit unserem „intelligenten“ Zuhause.

Hier ist die Quelle
und dann mit dem Kamm arbeiten (gpio)

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


All Articles