Inhoudsopgave:
- Stap 1: Initiële installatie
- Stap 2: Stel Ngrok in
- Stap 3: Python-script voor lichtschakelaarbediening
- Stap 4: Python-script voor ventilatorregeling
- Stap 5: Het LIRC-pakket installeren en configureren
- Stap 6: Python-script voor tv-bediening
- Stap 7: Log in op AWS-account
- Stap 8: TV Alexa Skill Setup
- Stap 9: Verlichting Alexa Skill Setup
- Stap 10: Fan Alexa Skill Setup
- Stap 11: Bouw de Ciruit
- Stap 12: Alexa-opdrachten
Video: Bedien de woonkamer met Alexa en Raspberry Pi: 12 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Bedien de tv, verlichting en ventilator in je woonkamer met Alexa (Amazon Echo of Dot) en Raspberry Pi GPIO.
Stap 1: Initiële installatie
Ik gebruikte een Raspberry Pi 2 en een Raspbian Jessie-afbeelding gedownload van
Nadat u bent ingelogd, voert u de volgende opdrachten in om de vereiste pakketten en python-bibliotheken te installeren:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc
Stap 2: Stel Ngrok in
Ga naar https://ngrok.com/download en ontvang de nieuwste Linux ARM-release als een zip en pak deze uit in de homedirectory:
unzip /home/pi/ngrok-stable-linux-arm.zip
Open een nieuwe terminal en voer het volgende commando in:
sudo./ngrok http 4000
Open een andere nieuwe terminal en voer de volgende opdracht in:
sudo./ngrok http 4500
Open de derde nieuwe terminal en voer de volgende opdracht in:
sudo./ngrok http 5000
Stap 3: Python-script voor lichtschakelaarbediening
Open een nieuwe terminalsessie en maak een nieuw python-bestand met de naam light_control.py:
nano light_control.py
Kopieer/plak de volgende code in het nieuwe bestand:
from flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" flask_ask").setLevel(logging. DEBUG) @ask.intent('LightControlIntent', mapping={'status': 'status'}) def light_control(status): try: pinNum = 27 behalve Exception as e: return statement('Pinnummer niet geldig.') GPIO.setup(pinNum, GPIO. OUT) als status in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) als status in ['off', ' low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Turning {} the Living Room Lights'.format(status)) if _name_ == '_main_': port = 4000 app.run(host=' 0.0.0.0', poort=poort)
Sla het bestand op en sluit het.
Start de kolfserver met:
sudo python light_control.py
Laat zowel ngrok als light_control.py actief
Stap 4: Python-script voor ventilatorregeling
Open een nieuwe terminalsessie en maak een nieuw python-bestand met de naam fan_control.py:
nano fan_control.py
Kopieer/plak de volgende code in het nieuwe bestand:
uit kolf import Flask
from flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger("flask_ask").setLevel(logging. DEBUG) @ask.intent('FanControlIntent', mapping={'status': 'status'}) def fan_control(status): try: pinNum = 22 behalve Exception as e: return statement('Pin number niet geldig.') GPIO.setup(pinNum, GPIO. OUT) als status in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) als status in ['off', 'low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Turning {} the Living Room Lights'.format(status)) if _name_ == '_main_': port = 4500 app.run(host='0.0.0.0 ', poort=poort)
Sla het bestand op en sluit het.
Start de kolfserver met:
sudo python fan_control.py
Laat zowel ngrok, light_control.py en fan_control.py actief
Stap 5: Het LIRC-pakket installeren en configureren
Om de tv te kunnen bedienen, moet je een pin op de Raspberry Pi configureren om infraroodsignalen (IR) voor je specifieke tv te genereren. Open terminal en voer de volgende opdracht in om een LIRC-pakket te installeren dat de infraroodsignalen van veel afstandsbedieningen emuleert.
sudo apt-get install lirc
Vervolgens moet u de kernelmodule lirc_rpi inschakelen en configureren. Open hiervoor modules in de Nano-editor
sudo nano /etc/modules
Voeg de onderstaande regels toe aan het bestand (zorg ervoor dat de gpio_out_pin parameter wijst naar de pin die de IR LED bestuurt):
lirc_devlirc_rpi gpio_out_pin=17
Open vervolgens het hardware.conf-bestand in Nano zoals eerder met sudo:
sudo nano /etc/lirc/hardware.conf
Voeg de volgende configuratie toe aan het bestand:
LIRCD_ARGS="--uinput"LOAD_MODULES=true
DRIVER="standaard"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""
Start nu de Raspberry Pi opnieuw op:
sudo reboot
Stap 6: Python-script voor tv-bediening
Open een nieuwe terminalsessie en maak een nieuw python-bestand met de naam ir_control.py:
nano ir_control.py
Ga naar
Zoek een afstandsbediening die compatibel is met uw tv. In mijn geval heb ik een Sanyo TV die werkt met het sanyo-tv01 configuratiebestand. Zodra u een bestand hebt gevonden dat uw tv ondersteunt, opent u het en bekijkt u de opdrachtopties.
Kopieer/plak de volgende code in het nieuwe bestand en vervang sanyo-tv01 door de bestandsnaam die bij uw tv past. Zorg er ook voor dat de tv-opdrachten worden ondersteund door het configuratiebestand van uw tv; Mogelijk moet u de opdrachten KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN en KEY_MUTE aanpassen om correct te werken met het configuratiebestand van uw tv:
from flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" flask_ask").setLevel(logging. DEBUG) @ask.intent('GPIOControlIntent', mapping={'status': 'status'}) #'pin': 'pin'}) def tv_function(status): als status in ['turn on']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Turning on the TV') elif status in ['turn off']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Tv uitschakelen') elif status in ['change input']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return statement('Invoer wijzigen op de tv') elif-status in ['volume verhogen']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") return statement('Increasing Volume on the TV') elif status in ['volume verlagen']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN_) os.system("ONCEsend sanyo-tv01 KEY_VOLUMEDOWN") ") return statement('Decreasing Volume on the TV') elif status in ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('De TV dempen') elif status in ['unmute' ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Unmuting the TV') else: return statement('Externe functie niet gevonden.') if _name_ == '_main_': port = 5000 app.run(host='0.0.0.0', poort=poort)
Sla het bestand op en sluit het.
Start de kolfserver met:
sudo python ir_control.py
Laat alle drie de ngrok-terminalvensters, light_control.py, fan_control.py en ir_control.py draaien
Stap 7: Log in op AWS-account
Maak eerst of log in op uw AWS-ontwikkelaarsaccount en open uw lijst met Alexa-vaardigheden.
Stap 8: TV Alexa Skill Setup
Selecteer "Een nieuwe vaardigheid toevoegen".
Stel de vaardigheidsnaam in op 'Trigger TV' en de aanroepnaam op het woord of de woorden die u wilt gebruiken om de vaardigheid te activeren.
Klik op 'volgende' om door te gaan.
Kopieer/plak het volgende in het vak 'Intent Schema':
{ "intenties": [{
"slots": [{ "name": "status", "type": "TV_Function" }, { "name": "amount", "type": "AMAZON. NUMBER" }], "intent": "GPIOControlIntent " }] }
Klik vervolgens op 'Slottype toevoegen'
Typ TV_Function in het veld 'Type invoeren'.
Typ de volgende waarden in het veld 'Waarden invoeren':
aanzetten
uitzetten invoer wijzigen volume verhogen volume verlagen mute dempen opheffen
Kopieer/plak vervolgens het volgende in het vak 'Voorbeelduitingen':
GPIOControlIntent {status}
GPIOControlIntent {status} met {amount}
Klik op 'volgende' om door te gaan.
Selecteer 'HTTPS' als het type service-eindpunt en selecteer een regio. Voer de ngrok-URL uit stap 2 in en klik op 'Volgende'. De URL zou zoiets moeten zijn als:
ed6ea04d.ngrok.io
Klik op 'Volgende' om verder te gaan en druk op 'Opslaan'.
Stap 9: Verlichting Alexa Skill Setup
Sluit de open vaardigheid en selecteer "Een nieuwe vaardigheid toevoegen".
Stel de vaardigheidsnaam in op 'Lights Control' en de Invocation Name op de woorden die je wilt gebruiken om de vaardigheid te activeren.
Klik op 'volgende' om door te gaan. Kopieer/plak het volgende in het vak 'Intent Schema':
{
"intents": [{ "slots": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }
Klik vervolgens op 'Slottype toevoegen'.
Typ "LIGHTS_CONTROL" in het veld 'Type invoeren'.
Typ de volgende waarden in het veld 'Waarden invoeren':
Aan
uit
Kopieer/plak vervolgens het volgende in het vak 'Voorbeelduitingen':
LightsControlIntent beurt {status}
Klik op 'volgende' om door te gaan. Selecteer 'HTTPS' als het type service-eindpunt en selecteer een regio. Voer de ngrok-URL uit stap 2 in en klik op 'Volgende'. De URL zou zoiets moeten zijn als:
ed6ea04d.ngrok.io
Klik op 'Volgende' om verder te gaan en druk op 'Opslaan'.
Stap 10: Fan Alexa Skill Setup
Sluit de open vaardigheid en selecteer "Een nieuwe vaardigheid toevoegen".
Stel de Skill Name in op 'Fan Control' en de Invocation Name op de woorden die je wilt gebruiken om de skill te activeren.
Klik op 'volgende' om door te gaan.
Kopieer/plak het volgende in het vak 'Intent Schema':
{
"intents": [{ "slots": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }
Klik vervolgens op 'Slottype toevoegen'.
Typ "FAN_CONTROL" in het veld 'Type invoeren'.
Typ de volgende waarden in het veld 'Waarden invoeren':
Aan
uit
Kopieer/plak vervolgens het volgende in het vak 'Voorbeelduitingen':
FANControlIntent beurt {status}
Klik op 'volgende' om door te gaan. Selecteer 'HTTPS' als het type service-eindpunt en selecteer een regio. Voer de ngrok-URL uit stap 2 in en klik op 'Volgende'. De URL zou zoiets moeten zijn als:
ed6ea04d.ngrok.io
Klik op 'Volgende' om verder te gaan en druk op 'Opslaan'.
Stap 11: Bouw de Ciruit
Sluit de schakeling aan zoals aangegeven in het schema. Ik heb een JBtek 8-kanaals DC 5V-relaismodule gebruikt om verbinding te maken met de AC 120v-lijn en aarde van mijn huis.
Stap 12: Alexa-opdrachten
Nu kunnen de volgende commando's tegen Alexa worden uitgesproken om je woonkamer te bedienen.
Aanbevolen:
Bedien LED's met Alexa of IFTTT (SINRIC PRO TUTORIAL): 6 stappen
LED's bedienen met Alexa of IFTTT (SINRIC PRO TUTORIAL): Dus je zou graag die persoon willen zijn die pronkt tijdens een alledaags diner door te zeggen: "Alexa doet het licht aan?" Dit project is voor jou! Aan het einde van deze instructables kun je een RGB-strip bedienen met een Alexa-apparaat en IFTTT om
Woonkamer voor film met Shelly - Ajarnpa
Woonkamer voor film met Shelly: samenvatting van de projectleiding Hoe u een zeer eenvoudige automatisering kunt maken met behulp van Google Home-routines om mijn woonkamer comfortabel te maken om een film te kijken
Woonkamer VR Ready Gaming met Linux: 4 stappen
Woonkamer VR Ready Gaming met Linux: Inleiding Ik wilde een gaming rig maken voor VR en social gaming in mijn woonkamer. Ik ben een fan van Linux en de open source-gemeenschap, dus de vraag was "kan Linux VR doen?", Linux is een zeer capabel gaming-besturingssysteem - niet in de laatste plaats dankzij Win
IoTyper - Bedien uw pc via Alexa (IoT): 5 stappen (met afbeeldingen)
IoTyper - Bedien je pc via Alexa (IoT): Heb je er nooit aan gedacht om je pc te besturen met IoT? Onze wereld wordt met de dag slimmer en vandaag maken we van onze pc een nog slimmere pc dan hij al is. Laten we beginnen! IoTyper is gebaseerd op twee basis MicroControllers: De ATMega 32U4 die
LED SCHIJNWERPERS IN MIJN WOONKAMER!!!: 6 stappen
LED-VERLICHTING IN MIJN WOONKAMER!!!: 18 LED-lamp voor "extra" helderheid