Inhoudsopgave:

Smart Home van Raspberry Pi: 5 stappen (met afbeeldingen)
Smart Home van Raspberry Pi: 5 stappen (met afbeeldingen)

Video: Smart Home van Raspberry Pi: 5 stappen (met afbeeldingen)

Video: Smart Home van Raspberry Pi: 5 stappen (met afbeeldingen)
Video: Smarthome met Loxone - Zelf Een Huis Bouwen 2024, Juli-
Anonim
Smart Home van Raspberry Pi
Smart Home van Raspberry Pi

Er zijn al verschillende producten die uw flat slimmer maken, maar de meeste zijn eigen oplossingen. Maar waarom heb je een internetverbinding nodig om een lamp te schakelen met je smartphone? Dat was voor mij een reden om mijn eigen Smart Home-oplossing te bouwen.

Ik heb een serverapplicatie geprogrammeerd die op een Raspberry Pi draait. Dit is een op Java gebaseerd open source-project waarmee u uw flat kunt configureren en meerdere clients en 'controleerbare units' kunt aansluiten. Ik laat een oplossing zien die rc-voedingsschakelaars afhandelt, muziek en video afspeelt op de Raspberry Pi, de status toont op slimme spiegel en kan worden bestuurd door een Android-app en twee Pebble-apps. De bron wordt gehost op github

Stap 1: Dingen die je nodig hebt

Dingen die je nodig hebt
Dingen die je nodig hebt

Om het Smart Home in te stellen heb je de volgende 'ingrediënten' nodig

  • Raspberry Pi minimaal model 2 B
  • 433 MHz zender, zoiets als dit
  • 3 startkabels die de Raspberry Pi en de afzender verbinden
  • Sommige radiocontactdozen op 433 MHz
  • Android-smartphone om de client-app uit te voeren

Bovendien kun je het Smart Home uitbreiden met meer optionele clients en units zoals deze

  • Pebble-smartwatch
  • Smart Mirror, zie dit project
  • 433 MHz gestuurde ledstrip, zie deze

Stap 2: Bereid Raspberry Pi voor op 433 MHz

Bereid Raspberry Pi voor op 433 MHz
Bereid Raspberry Pi voor op 433 MHz
Bereid Raspberry Pi voor op 433 MHz
Bereid Raspberry Pi voor op 433 MHz

In de volgende stappen heb je toegang nodig tot de commandoregel op de Raspberry Pi. Om de toegang te krijgen, kunt u deze instructable lezen

Verbind de 433 MHz-zender met de Raspberry Pi zoals weergegeven in de afbeelding hierboven

  • GND (zender) 6 GND (raspi)
  • VCC (zender) 2 +5V (raspi)
  • GEGEVENS (afzender) 11 GPIO 17 (raspi)

Sluit ook een antenne van 17 cm aan op de ANT (zender) pin. Dat verhoogt het signaal aanzienlijk.

Omdat we een aantal bibliotheken van andere git-repositories nodig hebben, moeten we git. installeren

sudo apt-get install git-core -y

Om de Raspberry Pi in te stellen voor 433 MHz-communicatie hebben we de bedrading Pi-bibliotheek nodig voor een betere verwerking van de GPIO's.

git kloon git://git.drogon.net/wiringPi

cd bedradingPi./build

Dan hebben we een bibliotheek nodig die typische rc-voedingsprotocollen implementeert.

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

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

Met het uitvoerbare bestand 'verzenden' kunt u codes verzenden om de meeste beschikbare voedingen te schakelen.

In mijn Smart Home-opstelling heb ik ook een rc-ledstrip die wordt beschreven door deze instructable: https://www.instructables.com/id/RC-controlled-LED… Om kleuren voor deze ledstrip in te stellen, hebt u een ander uitvoerbaar bestand nodig waarmee u om een geheel getal te verzenden (dat codeert voor de kleur).

Compileer daarom de sendInt.cpp in de rcswitch-pi repo en verplaats deze naar /usr/bin/sendInt.

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

Nu zou je nu in staat moeten zijn om rc-commando's te sturen met de twee uitvoerbare bestanden /usr/bin/send en /usr/bin/sendInt

Stap 3: Smart Home Server instellen

Allereerst moet u verschillende pakketten installeren. De Smart Home-applicatie is op Java gebaseerd en werkt prima met openjdk-11. Ik ben niet zeker van andere Java runtime-omgevingen. De mplayer is een minimalistische opdrachtregelmuziekspeler. De omxplayer gebruikt de Raspberry Pi-graphics voor videocodering, dus dit zou voor video's moeten worden gebruikt. Het programma mier is nodig om de java-applicatie te bouwen.

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

Stel mappen in voor het jar-bestand en voor logboeken.

sudo mkdir /opt/neo

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

Configureer het startscript om de toepassing automatisch te starten bij het opstarten. Kopieer daarom het bijgevoegde smart-home-script naar de map /etc/init.d/ Ik heb ook een script gemaakt in /usr/bin/ dat commando's naar het bijgevoegde script stuurt, dus ik voer gewoon smart-home in op de console om commando's uit te voeren.

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 smart-home standaardinstellingen

Nu is het tijd om de repository uit te checken en de applicatie te bouwen. Als je het niet zelf wilt compileren, kun je gewoon de bijgevoegde smarthome.jar downloaden en verplaatsen naar /opt/neo/

git kloon [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/

Probeer de smart-home te starten en controleer het logbestand. Om toegang te krijgen tot de GPIO's, moet de applicatie worden gestart door sudo.

sudo smart home start

cat Logs/smarthome.log

U zou het foutbericht moeten zien Configuratiebestand bestaat niet dat ons naar de volgende stap verwijst. De repository bevat een leesmij waarin het configuratiebestand wordt uitgelegd. Je kunt dit mooi weergegeven zien op github:

Kopieer deze xml naar /home/pi/controlcenter.xml, stel vervolgens de locatie voor uw mediaserver in en wijzig de inhoud naar behoefte. Nadat u de configuratie hebt voltooid en de smart-home opnieuw hebt opgestart (sudo smart-home restart), zou u de volgende inhoud in smarthome.log moeten zien

24.05-08:26 INFORMATIE OP AFSTAND door de.neo.smarthome.cronjob. CronJob@15aeb7ab: Cron-taak plannen

24.05-08:26 REMOTE INFORMATION by [trigger.light]: Wacht 79391760 ms voor uitvoering 24.05-08:26 RMI INFORMATION by Add web-handler (5061/ledstrip) 24.05-08:26 RMI INFORMATION by Add web-handler (5061 /action) 24.05-08:26 RMI-INFORMATIE door Web-handler toevoegen (506/mediaserver) 24.05-08:26 RMI-INFORMATIE door Web-handler toevoegen (506/switch) 24.05-08:26 RMI-INFORMATIE door Web-handler toevoegen (5061/controlcenter) 24.05-08:26 RMI-INFORMATIE door Start webserver met 5 handlers (localhost:5061) 24.05-08:26 AFSTANDSINFORMATIE door Controlcenter: 1. controle-eenheid toevoegen: MyUnit (xyz) …

De webserver draait nu:-)

Stap 4: Clients instellen

Clients instellen
Clients instellen
Clients instellen
Clients instellen
Clients instellen
Clients instellen

Android-client voor smartphones

De git-repository voor de smart-home-applicatie bevat ook de bron voor de Android-client, zodat u deze zelf kunt compileren. Maar ik heb de APK voor deze stap bijgevoegd, dat maakt het gemakkelijker. De eerste keer dat u de app start, wordt u om een server gevraagd, zoals in de eerste afbeelding hierboven. Voer de url van de server en het beveiligingstoken in.

Dat zou het moeten zijn. Je hebt nu toegang tot de server en bedien je flat, speelt muziek af en bekijkt video's op afstand op je Raspberry Pi. Merk op dat je widgets aan je startscherm kunt toevoegen, waardoor schakelaars en muziekbediening toegankelijker worden.

Smartwatch Pebble-client

De bron voor de twee pebble-clients wordt gehost op github. Eén app toont het huidige muziekbestand dat wordt afgespeeld: https://github.com/dabastynator/PebbleRemoteMusic… Hiermee kun je ook pauzeren/afspelen en het volume omhoog/omlaag zetten.

De tweede app activeert drie acties: https://github.com/dabastynator/PebbleControl De triggernamen zijn: mobile.come_home mobile.leaving en mobile.go_to_bed. Als u gebeurtenisregels voor deze trigger definieert in uw configuratie-xml, activeert u deze door uw horloge.

Het is allemaal open source, maar je hoeft het niet zelf te compileren, ik heb ook de pebble apps bijgevoegd. Download de PBW's met je smartphone, je telefoon zou ze op je horloge moeten installeren. De pebble-apps hebben configuraties nodig om met de server te praten. Ik heb een screenshot bijgevoegd hoe mijn instellingen eruit zien.

Smartwatch Garmin-client

Er is ook een client beschikbaar voor Garmin Smartwatches. De app is beschikbaar in de garmin connect app-store en kan hier worden geïnstalleerd:

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

Smart Mirror-client

Ik heb al een instructable gemaakt waarin wordt uitgelegd hoe je de Smart Mirror kunt maken, zie deze https://www.instructables.com/id/Smart-Mirror-by-R…. De broncode wordt ook gehost op github: https:// github.com/dabastynator/SmartMirror. De software van de Smart Mirror leest de configuratie uit het bestand smart_config.js dat geen deel uitmaakt van de git-repository. De inhoud van het configuratiebestand zou er als volgt uit moeten zien:

var mOpenWeatherKey = 'uw-open-weer-sleutel';

var mSecurity = 'uw-beveiligingstoken';

Je moet ook de eerste twee regels van het bestand smart_mirror.js aanpassen om het IP-adres van de Smart Home-server en de locatie op te geven om het juiste weer te krijgen.

Meer klanten

De servertoepassing is een eenvoudige webserver. Dit stelt u in staat om acties van elke gewenste client te activeren door middel van eenvoudige web-calls. In de demo-video laat ik de android app tasker zien in combinatie met AutoVoice. Hierdoor kan ik gebeurtenissen activeren met eenvoudige spraakopdrachten. Bijvoorbeeld 'ok google, tijd om te slapen' kan mobile.go_to_bed activeren. Maar je kunt ook web-calls doen vanuit bijvoorbeeld IFTTT. Wat dacht je van een geel knipperende LED-strip voor e-mailmelding?

U kunt de server vragen om mogelijke web-calls zoals volgende links (vervang ip, poort en token door uw configuratie)

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-…

Stap 5: Conclusie

Er zijn nog enkele functies die moeten worden geïmplementeerd: Aangezien de server slechts een eenvoudige web-api biedt, doen clients veel polling. Om de polling te verminderen, wil ik een MQTT-integratie voor een betere melding. Ook wifi-voedingen zouden betrouwbaarder moeten presteren dan rc-voedingen, aangezien rc slechts eenrichtingscommunicatie is.

Het is erg leuk om voor dit project te ontwikkelen. En het is best gaaf om de flat met meerdere apparaten te bedienen, ook als de internetverbinding wegvalt.

Aanbevolen: