Использование Raspberry Pi для управления моим AC через ИК-порт

19

Когда я возвращаюсь откуда-то домой, я хочу иметь возможность включить мой кондиционер за несколько минут до того, как я приеду в мою квартиру, возможно, с помощью моего телефона, чтобы подключиться к Raspberry Pi на моем столе, который, в включите, управляйте кондиционером. Управление переменным током осуществляется с помощью инфракрасного пульта дистанционного управления. Я хочу, чтобы Raspberry Pi испустил нужный сигнал.

Что я должен купить для Raspberry Pi, чтобы позволить ему послать необходимый сигнал? Кроме того, мне понадобится что-то, что позволит мне сэмплировать сигнал, отправленный оригинальным пультом дистанционного управления, чтобы я мог сообщить Raspberry Pi, какой сигнал отправить. Как мне это сделать?

Обратите внимание, что единственный язык программирования, который я знаю, это Python. Если что-то требует программирования на C или что-то, это не очень хорошее решение для меня.

Рам Рахум
источник

Ответы:

12

Как упомянуто выше, LIRC - это отличный программный пакет, позволяющий RaspberryPi отправлять и получать ИК-сигналы. По состоянию на декабрь 2012 года последняя версия Raspbian OS теперь включает драйвер LIRC от ar0n.

Я написал руководство по установке и настройке LIRC на вашем RaspberryPi (начиная с аппаратного обеспечения), поскольку мне пришлось самому решать эту проблему. После того, как вы установили LIRC и работаете с RaspberryPi, вы можете использовать некоторые из входящих в него приложений для отправки и получения ИК-команд из Python / Ruby / вашего языка по вашему выбору.

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

Алекс Бэйн
источник
2
Сегодня я написал новое сообщение в блоге, описывающее схему (и части, которые я купил) для создания ИК-трансивера RaspberryPi. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Алекс Бейн
5

Есть кто-то, кто уже написал драйвер ядра LIRC для Raspberry Pi, его можно найти здесь: драйвер LIRC Raspberry Pi . Также на этой странице можно найти необходимое оборудование и схемы подключения.

Я сам не экспериментировал с LIRC, но есть много приложений, которые используют LIRC, я думаю, теперь они все работают на Raspberry Pi.

Если вы хотите / нуждаетесь, я могу немного углубиться в эту тему и предложить дополнительную информацию.

Для части Python есть модуль Python для взаимодействия с LIRC, называемый pyLirc, и более новая поддерживаемая версия, называемая pyLirc2.

Икку
источник
Спасибо за ответ, но эта страница потеряла меня из-за "Перекомпилировать ядро" :) Разве нет чего-то более plug-n-play?
Рам Рахум
1
Пока, пока этот драйвер не попадет в дистрибутив, я боюсь, что это единственный вариант для LIRC. Но есть модуль GPIO для python. Будучи программистом на Python, вы можете создать свой собственный код Python, который будет выполнять именно то, что вы хотите, используя только оборудование, показанное на связанной странице. Вам необходимо прочитать, какую последовательность IR посылает пульт дистанционного управления, и воспроизвести ее. Это должно быть возможно с помощью этого модуля Python GPIO.
Икку
1
мой комментарий «... я боюсь, что LIRC - единственный вариант для работы ...» действителен только в контексте GPIO. Устройства с последовательным интерфейсом / USB и т. Д. Должны работать без проблем.
икку
3

Я обнаружил, что LIRC - это относительно простой способ отправки ИК-сообщений, но очень хотел иметь возможность управлять LIRC из Java. Мне нравится программирование на Java, и я не нашел простого руководства по Python, чтобы убедить меня работать с ним вместо Java. После нескольких часов попыток отправить ИК-коды из pi с использованием java я обнаружил, что следующее решение относительно простое: создайте скрипт bash, содержащий irsendсообщение, и скажите java, чтобы он запускался.

Пример:

toggleLight.sh

#!/bin/bash
irsend SEND_ONCE HyundaiFan lightOnOff

RunBash.java

public class RunBash {
    public static final void main (String args[]) {
        String cmd = "../toggleLight.sh";
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(new String[] {"/bin/bash", "-c", cmd});
            int exitValue = process.waitFor();
            System.out.println("exit value: " + exitValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Вы предполагаете получить exit value: 0. Если ваше значение выхода равно 127, это означает, что сценарий bash не был найден Java.

Еще несколько заметок:

  • Я пробовал jlirc и lircj - java-оболочки для LIRC, но не смог их правильно настроить -> не работает.
  • Единственным недостатком этого решения является то, что вы не можете прослушивать ИК-сообщения. Если у кого-то есть идеи относительно использования подобного метода для прослушивания ИК-сообщений, я хотел бы знать.

Полезные ресурсы:

  • Следуйте инструкциям Алекса Бэйна по настройке LIRC для пи. Они действительно хороши! Более подробную информацию можно найти irsend здесь . Это делает список ваших пультов намного понятнее.
  • Здесь вы можете найти больше информации для запуска скриптов bash из Java.

Надеюсь, это поможет, Том

Nagasaki45
источник
2

Я всегда находил LIRC более неприятным проектом, чем кажется необходимым, во многом как lm-сенсоры.

Так что я бы посмотрел на это, возможно, немного более окольным образом: если бы вы могли получить микроконтроллер (или даже реальный пульт) для отправки правильной последовательности импульсов при срабатывании, возможно, вы могли бы использовать вывод gpio (или сообщение uart) на RPi, чтобы «нажать кнопку», более или менее, и инициировать отправку.

Это относительно подключи и играй, если вы найдете правильное решение для передатчика.

Пусть RPi беспокоится о том, чтобы быть сервером, а аппаратный (встроенный) модуль беспокоится о действии IR. Может быть, вы можете использовать аналогичный трюк для мониторинга состояния процесса.

XTL
источник