Показаны сообщения с ярлыком smart home. Показать все сообщения
Показаны сообщения с ярлыком smart home. Показать все сообщения

воскресенье, 29 ноября 2020 г.

Самый простой способ получить токены устройств из Mi Home

Для подключения устройств от Xiaomi, например, в Home Assistant нужны токены. Есть много вариантов как их получить, но как правило приходится лазить по разным менюшкам для каждого девайса. Особенно проблемно бывает выцепить токен для пылесоса (Xiaomi Vacuum разных генераций).

Но, можно просто получить все ip, mac-адреса и токены одним списком.

Сам Mi Home должен быть от EDA Studio, в оригинальном, естественно, ничего не выйдет.

Открываем, заходим в Профиль - Настройки от EDA Studio - Настройка устройств. 

Все. Все устройства с нужными данными тут.




*извиняюсь за качество скриншотов, неожидано на блоггер напали шакалы...


четверг, 15 ноября 2012 г.

Работа с Arduino из PHP

Иногда требуется получить доступ к arduino (и COM-поту вообще) из PHP-скриптов (например из web-морды Умного Дома, как же без нее =) ).

Т.к. велосипеды для таких поездок уже изобретены, остается подключить и допилить под свои нужды.

Сам класс для работы с COM-портом стягиваем отсюда php_serial.class.php, попутно говоря спасибо Rémy Sanchez.

Пример использования можно найти здесь, но для ардуины придется немного перепилить.
У меня заработало примерно вот так:

################################################################
<?php
include "php_serial.php";

// Let's start the class
$serial = new phpSerial;

// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc) 

// у меня на роутере определяется так. у себя можно посмотреть
// командой dmesg после подключения ардуины. в виндус проще$serial->deviceSet("/dev/ttyUSB0");

$serial->confBaudRate(9600); //Baud rate: 9600
$serial->confParity("none"); //Parity (this is the "N" in "8-N-1")
$serial->confStopBits(1); //Stop bits (this is the "1" in "8-N-1")

// Для начала работы с железкой нужно вызвать deviceOpen();
$serial->deviceOpen();

// пример записи в порт
$serial->sendMessage('1');

// пример чтения из порта
$read = $serial->readPort();
echo $read;


// Если нужно изменить что-то в конфигурации, нужно вызвать:
$serial->deviceClose();  

// etc...
?>

################################################################

Остается красиво впилить это дело в свой движок =)

Напоследок цитата автора о совместимости с разными OS:

==> /!\ WARNING /!\ : 
it's working with linux for r/w, but with windows i've only been able to make write working. 
If you're a windows user, try to access the serial port through network with serproxy instead. 
The class have been reported to work fine with Mac OS X, but i've not tested it, so I've left the OS test in the sourcecode, but feel free to add macos in it.

среда, 24 октября 2012 г.

Подключаем IR-sensor к Arduino

IR-sensor очень интересная штука. Можно понаделывать разных выключателей, переключателей или датчиков для робота...
Инструкция по подключению на примере IR Infrared Sensor Switch Module (найти можно например на dx.com, SKU 121517) вот такого:
Датчики под неопределенным названием KeyesIR, на обратной стороне такое же неопределенное HOYA =)

Подключить не сложно, контакты на нем подписаны.

  • "GND" соответственно к GND Arduino
  • "+" к 5V Arduino
  • "OUT" ко 2 (для примера) пину.
Пример скетча для arduino:
// постоянные:
const int  sensorPin = 2;    // пин, куда подключен OUT датчика
const int ledPin = 13;       // пин со светодиодом
// переменные:
unsigned long currentTime;
unsigned long loopTime;
void setup() {
  pinMode(sensorPin, INPUT);   // инициализируем пин датчика
  pinMode(ledPin, OUTPUT);     // инициализируем пин светодиода
  currentTime = millis();
  loopTime = currentTime;
}

void loop() {
  currentTime = millis();   if(currentTime >= (loopTime+1000)) {   // задержка перед повторным
    if(digitalRead(sensorPin) == LOW){         // срабатыванием 1сек
      digitalWrite(ledPin, !digitalRead(ledPin));     // инвертируем значение пина
      loopTime = currentTime;                              // светодиода
    }
  }  

}
Задержка нужна в случае если нужно сделать выключатель лампы, как в моем примере, чтобы если над ним махнули рукой, он не срабатывал на все пальцы по очереди, а только на взмах =))

Для задержки вместо delay() используется millis() так как в моем случае у ардуины еще много других функций, помимо этой, и с millis() он может беспрепятственно и без задержки их выполнять.

Пара фото с бредборда, отладка =)


среда, 5 сентября 2012 г.

Самый простой способ подключить датчик температуры типа DS18x20 к Arduino

Итак, нужно подключить несколько датчиков температуры по одной шине к arduino. Самый простой способ - использовать библиотеку Dallas Temperature Control Library. Поддерживаются датчики:

  • DS18B20 
  • DS1822 
  • DS18S20* 
  • DS1820
Скачиваем, извлекаем в папку libraries нашей Arduino IDE. Предполагается, что библиотека OneWire уже там =) (кстати вот тут рабочая версия для Arduino IDE 1.0 и выше).

Скетч-пример работы с библиотекой: