Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Привет!
В этом проекте мы реализуем управление светодиодом на основе Google Assistant с помощью Raspberry Pi 4 с использованием HTTP в Python. Вы можете заменить светодиод на лампочку (очевидно, не буквально, вам понадобится релейный модуль между ними) или любой другой бытовой прибор, чтобы этот проект можно было в дальнейшем реализовать для целей домашней автоматизации.
Запасы
Что вам понадобится для этого проекта:
1. Raspberry Pi
2. Светодиод
3. Провода-перемычки-2 (штекер на гнездо)
4. Макетная плата
5. Приложение IFTTT (https://play.google.com/store/apps/details?id=com.ifttt.ifttt&hl=en_IN)
6. Аккаунт Thingspeak (https://thingspeak.com/)
Некоторые предпосылки:
1. Основы работы с сетью -
2. Python для доступа к веб-данным
Шаг 1. Создание канала Thingspeak
Если вы новичок в Thingspeak и никогда не использовали его раньше, выполните следующие действия:
Перейдите на
Вам нужно будет зарегистрироваться, прежде чем вы начнете использовать Thingspeak
После регистрации перейдите в раздел Каналы
В разделе "Каналы" выберите "Новый канал" (см. Изображение для справки).
В Новом канале вы увидите разные информационные окна. Вам просто нужно заполнить поле Имя. Вы можете назвать свой канал как хотите. Я прикрепил изображение, в котором назвал свой канал Raspberry Pi 4. Остальные коробки оставьте как есть.
Поздравляю! Вы успешно создали канал для своего IoT-проекта. (см. прикрепленное изображение, где вы можете увидеть, что мой канал под названием Raspberry Pi 4 успешно создан)
Шаг 2. Использование приложения IFTTT
Мы должны использовать это приложение для запуска запроса GET для публикации данных на созданном вами канале Thingspeak с помощью Google Assistant. Думайте об этом приложении как об интерфейсе между Google Assistant и вашим каналом Thingspeak.
Затем мы создаем запросы GET в приложении IFTTT.
Загрузите приложение IFTTT со страницы
Создать аккаунт
Перейти к созданию собственных апплетов с нуля
Нажмите, если эта опция
Выберите службу триггера как Google Assistant
В нем выберите Произнесите простую фразу.
Под этой опцией появятся некоторые информационные окна. Для этого обратитесь к изображениям и внесите соответствующие данные! (для этого есть два изображения: 1. Для включения светодиода 2. Для выключения светодиода)
Мы завершили часть If This, которая представляет собой Google Assistant. Теперь мы выбираем вариант "Затем", то есть Webhooks.
Под ним выберите Сделать веб-запрос.
Обратитесь к изображению для получения информации, которую необходимо заполнить в полях. Обратитесь к этому URL-адресу https://api.thingspeak.com/update?api_key=INSERT YOUR WRITE API KEY & field1 = 1
В приведенном выше URL-адресе вы заметите, что я упомянул ВСТАВЬТЕ ВАШ КЛЮЧ API ЗАПИСИ. Это ключ API, который является идентификатором канала, который вы создали на Thingspeak (см. Изображение). Запись ключа API поможет вам записать определенные данные в ваш канал, и аналогично ключ API чтения поможет вам получить данные из канала.
За исключением вашего ключа API записи, остальная информация в полях остается неизменной.
Итак, вы создали триггер, когда, когда вы говорите своему помощнику Google: «Включите светодиод», он отправит «1» на ваш канал Thingspeak.
Теперь аналогичным образом вам нужно создать новый апплет в приложении IFTTT для выключения светодиода. Я прикрепил изображения, если вы не уверены в этом. В остальном процедура выключения светодиода такая же, как и описанная выше, за исключением некоторых незначительных изменений.
Шаг 3. Наконец, приступаем к программированию
Я объясню основную цель кода Python. Мы должны получить данные из канала Thingspeak, которые будут иметь значение «1» или «0» в зависимости от того, что вы говорите своему помощнику Google. В зависимости от этого мы должны включать или выключать светодиод. Если загруженное значение на канале Thingspeak равно «1», то мы включаем светодиод, а если он «0», мы его выключаем.
В коде вам понадобятся две вещи: 1. Ваш ключ API чтения 2. Ваш идентификатор канала (см. Изображения).
Вот код (при условии, что вы знаете предварительные требования HTTP и Python):
импортировать urllib
запросы на импорт
импортировать json
время импорта
импортировать RPi. GPIO как GPIO
GPIO.setmode (GPIO. BOARD)
GPIO.setup (7, GPIO. OUT)
пытаться:
в то время как (1):
URL = 'https://api.thingspeak.com/channels/INSER YOUR CHANNEL ID / fields / 1.json? Api_key =' KEY = 'INSERT YOUR READ API KEY'
ЗАГОЛОВОК = '& результаты = 2'
NEW_URL = URL + KEY + HEADER
#print (NEW_URL)
get_data = requests.get (NEW_URL).json ()
#print (get_data)
feild_1 = get_data ['каналы']
#print ("Поле:", feild_1)
t =
для x в feild_1:
t.append (x ['поле1'])
печать (t [1])
если int (t [1]) == 1:
GPIO.output (7, 1)
elif int (t [1]) == 0:
GPIO.output (7, 0)
кроме KeyboardInterrupt:
GPIO.cleanup ()