Управление расписанием задач

Я делаю кормушку для домашних животных с помощью приложения React-Native - сервера Node.js - Arduino (ESP32), но я не могу понять, как заставить его работать, чтобы он бросал еду в определенное время.

Я искал библиотеки nodeJS, такие как node-schedule или cron, но я не могу понять это или они не соответствуют моим потребностям.

На данный момент я могу заставить его бросать еду, когда я нажимаю кнопку в своем приложении, но это сделало бы его слишком простым (мне нужны как ручные, так и автоматизированные задачи). Я намерен запланировать часы кормления вашего питомца, например, в 9:00, в 15:00 и в 21:00 через приложение, с какими-то сигналами тревоги, а также иметь возможность проверять их по запросу и редактировать. удалить параметры.

Любые идеи о том, как я могу это сделать, пожалуйста?

Возможно, вы могли бы запустить задание cron.

Colin Ricardo 01.04.2019 20:09

Запустите задание node-cron с определенным временем

Noaman Ilyas 01.04.2019 20:15

Я знаю, что могу выполнять задания cron и создавать определенные события (я использую socket.io и mqtt для связи между приложением-сервером-arduino). Проблема в том, что я не знаю, как редактировать или удалять определенные crons.

Nira 02.04.2019 11:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
633
1

Ответы 1

Вам не обязательно запускать команду «бросить еду» из приложения узла. Я написал прошивку для устройства, которое подключается к Wi-Fi, обновляет свою внутреннюю дату/время с NTP-сервера, а затем просыпается в указанное время с каждыми данными для подключения к серверу и получения обновлений настроек. Наше устройство работает от батареи, поэтому оно не просто постоянно подключено к серверу, и я использовал ESP-IDF, но код был достаточно простым. Я провел небольшое исследование, и вы можете проделать тот же процесс с ESP32, используя Arduino Core.

Основная идея

Ты мог бы:

  • Установите время, когда вы хотите, чтобы подача происходила в приложении, которое затем отправляет это время на устройство через BLE или приложение вашего узла и сохраняет их во Flash.
  • Рассчитать количество миллисекунд до следующего кормления
  • Установите таймер FreeRTOS на прерывание через указанное количество миллисекунд, чтобы вызвать событие подачи.

Затем после кормления происходит событие:

  • Проверьте Flash для следующего события кормления
  • Вычислить количество миллисекунд
  • Установите таймер FreeRTOS для прерывания и запуска события кормления.
  • Повторить

Ресурсы:

Установка местного времени на Arduino с помощью NTP

Использование прерываний таймера FreeRTOS на Arduino

Другие вопросы по теме