Как программно перезагрузить ардуино через каждый час

Всем привет, столкнулся с проблемой что из-за зависаний по не известным мне пока причинам перестаёт выполняться определённый код на ардуино. Кнопка ресет на микроконтроллере сразу приводит его в чувство. Я много времени потратил на поиск фикса, но низкий скил в программировании ардуино не позволил мне это сделать. Поэтому на данном этапе я решил перегружать каждый час арудину. Для всех кто ищет готовое простое решение:

unsigned long time;

void setup() {
Serial.begin(9600);
time = millis();
}

void loop() {
if(millis() - time > 3600000){
Serial.print("reboot");
asm volatile("jmp 0x00");
}
}

Есть множество других решений программной перезагрузки, но они более сложные. Конечно будут случаи когда этот способ вам не подойдёт, тогда вам необходимо гуглить про watchdog.

Голосовое управление телевизором Samsung, LG или любого другого

Устройство Xiaomi 360 IR (аналог Broadlink) даёт возможность управлять с мобильного приложения телевизором, кондиционером, вентилятором, словом любым устройством, которое управляется инфракрасными сигналами. Да, именно такие сигналы используются в вашем пульте от телевизора. Итак, для начала вам необходимо добавить Xiaomi 360 IR в стандартное Mi Home приложение, выбрать из обширной базы устройств свой телевизор и уже сейчас вы сможете управлять им используя виртуальный пульт на телефоне. В редких случаях телека не будет, но ничего страшного, используя режим обучения вы можете обучить своё устройство новым кнопкам используя оригинальный пульт. Устройство запомнить все коды кнопок и сохранит в телефоне. После этого вам необходимо вытащить из телефона коды этих кнопок. Сделать это можно двумя способами:

  • если у вас есть рут, то просто открыть файл из файловой системы
  • если нет рута, но через USB кабель сделать бекап всего приложения, в нём и будет файл с кодами.

Второй способ предпочтительнее т.к. с его помощью вы сразу сможете получить токен, который понадобится нам позже. Как сделать бекап и получить токен можно прочитать вот тут. Далее устанавливаем модуль Xiaomi miIO и вводим токен устройства. После этого плагин уже должен отобразить список доступных команд. Далее используем коды кнопок для написание ваших сценариев. Как это делать я подробно показал на этом видео.

Сообщения “Никого нет дома” и “Кто-то есть”

С текстом “Никого нет дома” и “Кто-то есть” у пользователей Мажордомо возникает часто вопрос, наподобие такого: “Почему Мажордомо пишет что “Никого нет дома”, но на самом деле я дома?”. Давайте разбираться. Для начала необходимо понять какое свойство у вас используется для отображения этого состояния. Для этого необходимо зайти в раздел “Меню управления”, далее выбрать “State”. В разделе “Данные” необходимо найти отвечающую за отображение нашего текста переменную. Это может быть либо %ThisComputer.somebodyHomeText% либо %ThisComputer.HomeStatus%. Оба эти свойства инициализируются похожими состояниями. Что заметил лично я? Например если добавить датчик движения через “Простые устройства”, привязать его к определённому помещению, например Гостиная, то при срабатывания датчика в свойство ThisComputer.somebodyHomeText будет дописано значение “Активность: 15:39 (Гостиная)”. Такое же поведение будет для датчика открытия, если он добавлен через простые устройства и в настройке “Изменение означает активность в помещении” выставлено значение “Да”. Подозреваю что такое же поведение будет для реле, но у меня нет ни одного. Если вы знаете другие способы инициализации этих свойств, то поделитесь знаниями в комментариях.