• Как управлять яндекс-лампочкой в обход апи яндекса?

    @justslipknot Автор вопроса
    Как выяснилось, яндекс лампочки - это ребрендированная Tuya лампочка. У Tuya есть локальный протокол и модуль для Home Assistant. Но я решил вопрос немного иначе:
    1. Устанавливаем приложение Smart Life или Tuya Home (оба совместимы с яндекс лампами)
    2. Сбрасываем настройки лампочек и добавляем их в приложении Smart Life / Tuya Home
    3. Регистрируем приложение на платформе Tuya. Инструкция есть в этом репозитории.
      Пояснение
      Этот шаг нам нужно проделать, чтобы получить Local Key, который требуется для шифрования и расшифровки запросов (Local Key, как я понял, обновляется после сброса настроек). Инструкция, как быстро добавить устройства в приложение платформы Tuya так же представлено в репозитории

    4. Выбираем библиотеку для работы с Tuya local api. Я выбрал вот эту библиотеку для C#. На GitHub странице этой библиотеки есть инструкция по работе с Tuya local api.
    5. Реализуем нужный нам функционал


    Небольшой топорный пример из моего тестового проекта:
    Поиск устройств Tuya в сети

    // Эти данные можно получить на странице вашего приложения на платформе Tuya.
    var accessId = "<access id>";
    var apiSecret = "<api secret>";
    
    // Сканируем сеть на наличие доступных устройств Tuya. 
    // Хранение найденных устройств реализуется как душе угодно
    
    var scanner = new TuyaScanner();
    scanner.OnNewDeviceInfoReceived += (sender, info) =>
    {
       // логика сохранения найденных устройств 
    };


    Получение Local Key


    Самый важный этап.
    Пример взят из репозитория библиотеки
    var api = new TuyaApi(region: TuyaApi.Region.CentralEurope, accessId: ACCESS_ID, apiSecret: API_SECRET);
    var devices = await api.GetAllDevicesInfoAsync(anyDeviceId: DEVICE_ID);
    foreach(var device in devices)
    {
        Console.WriteLine($"Device: {device.Name}, device ID: {device.Id}, local key: {device.LocalKey}");
    }


    Отправка команд устройству

    var device = new TuyaDevice("<IP адрес>", "<local key>", "<device id>");
    
    // Пример команды включения лампочки
    // Метод FillJson автоматически подставляет нужные параметры, поэтому сразу пишем запрос.
    // Про методы DPS можно почитать в официальной документации Tuya
    var onCommand = device.FillJson("{\"dps\":{\"20\":true}}");
    
    var request = device.EncodeRequest(TuyaCommand.CONTROL, onCommand );
    
    // Посылаем сигнал. Если устройство не ответит, то падает исключение 
    var encodedResponse = await device.SendAsync(request);
    var response = device.DecodeResponse(encodedResponse);



    Далее остаётся разобраться с кодами команд и можете контролировать лампы как вам угодно.
    Ответ написан
    3 комментария
  • Как повернуть асинхронный двигатель на определённый угол?

    @lonelymyp
    Хочу вылезти из минуса по карме.
    А точно ли речь про асинхронный? Он не способен находиться в одном положении, даже подавая определённое напряжение на обмотки, вал не встанет в нужное положение.
    Можно попробовать датчик положения и управлять током в обмотках но боюсь что в статике это не будет работать, максимум для регулировки скорости использовать.
    Может речь про бесколлекторный мотор?
    Ответ написан
    1 комментарий
  • Как повернуть асинхронный двигатель на определённый угол?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    никак )))
    как бы ты не какл
    Константин Зайцев дал ответ=он прав на 100%
    Ответ написан
    Комментировать
  • Как повернуть асинхронный двигатель на определённый угол?

    Асинхронные двигатели не предназначены для поворота на определенный угол, скорость вращения их ротора может не соответствовать скорости вращения магнитного поля статора. Поэтому способ только один - считывание положения вала с помощью датчика и управление двигателем по этому датчику. В этом логика управления асинхронным двигателем не отличается от коллекторного, применяемого в модельных сервоприводах.
    Ответ написан
    Комментировать
  • Как подключить Шаговый двигатель к этому драйверу?

    @lonelymyp
    Хочу вылезти из минуса по карме.
    Обычно шаговики подключаются 4 проводами, то есть пара проводов это одна обмотка.
    У шаговиков с 6 контактами, 2 просто не используются, в 99% случаев они нафиг не нужны.
    Есть ещё понятие начала и конца обмотки, но в реальной жизни проще подключить наугад и если не заработает поменять местами.

    У твоего драйвера 1 и 2 это одна обмотка, а 2 и 3 это вторая обмотка.
    Берешь тестер и проверяешь какие 2 провода от мотора между собой прозваниваются, это будет первая обмотка, можешь сразу узелком связать эти два провода чтоб не забыть потом.
    Эти 2 провода подсоединяешь на клеммы 1 и 2, оставшиеся два провода вешаешь на клеммы 3 и 4.

    Включаешь программу вращения мотора и смотришь что получилось.
    Если мотор вращается - угадал верно.
    если мотор дрыгается в разные стороны, но не крутится - всё выключаешь и меняешь местами 1 и 2 провод, не помогло - опять всё выключаешь и меняешь местами теперь уже 3 и 4.
    Если вообще ну никак не получается - прекращаешь издевательства и зовёшь кого-то на помощь.
    Ответ написан
    Комментировать
  • Определение потока воды в трубе?

    NeiroNx
    @NeiroNx
    Программист
    "Вентилятор" - на ось магнит и 2 датчика холла - все это внутрь трубы. Можно один если направление потока не имеет значения. Калибровать наполнением 10 литров. Делается за 30 минут из говна и палок подручных материалов.
    Ответ написан
    Комментировать