Inhoudsopgave:
- Stap 1: Dingen die je nodig hebt
- Stap 2: Bereid Raspberry Pi voor op 433 MHz
- Stap 3: Smart Home Server instellen
- Stap 4: Clients instellen
- Stap 5: Conclusie
Video: Smart Home van Raspberry Pi: 5 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
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
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
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
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:
Smart Home maken met behulp van Arduino-besturingsrelaismodule - Ideeën voor domotica: 15 stappen (met afbeeldingen)
Smart Home maken met behulp van Arduino-besturingsrelaismodule | Ideeën voor domotica: in dit domotica-project zullen we een smart home-relaismodule ontwerpen die 5 huishoudelijke apparaten kan bedienen. Deze relaismodule kan worden bediend vanaf mobiel of smartphone, IR-afstandsbediening of tv-afstandsbediening, handmatige schakelaar. Dit slimme relais kan ook de r
Smart Home met Arduino: 11 stappen (met afbeeldingen)
Smart Home met Arduino: Hallo. Ik zal je laten zien hoe je je eigen slimme huis kunt bouwen. Het toont de temperatuur zowel binnen als buiten, of het raam open of gesloten is, toont wanneer het regent en alarmeert wanneer de PIR-sensor beweging detecteert. Ik heb de applicatie op Android gemaakt om
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Autonome regeling van het toerental van de motor met behulp van een feedbacksysteem van een op IR gebaseerde toerenteller - Ajarnpa
Autonome regeling van het toerental van de motor met behulp van feedbacksysteem van een op IR gebaseerde toerenteller: er is altijd behoefte aan automatisering van een proces, of het nu een eenvoudig/monsterlijk proces is. methoden om ons kleine stukje land water te geven / te irrigeren. Het probleem van geen huidige toevoerleiding