Включите 2 светодиода в определенное время в C Mongoose OS - PullRequest
0 голосов
/ 28 июня 2018

Итак, у меня есть чип espressif, подключенный к 2 светодиодам, и на нем работает mongoose os

Я хотел бы получить время от интернета / компьютера и включить светодиод в определенное время.

например. в 10:00 светодиод включения / выключения 1 подключается к контакту 2, а в 16:00 светодиод включения / выключения 2 подключается к контакту 3 в C.

1 Ответ

0 голосов
/ 28 июня 2018

Шаг 1. Добавьте настройку Wi-Fi к mos.yml, чтобы он мог подключаться к беспроводной точке доступа:

config_schema:
  - ["wifi.sta.enable", true]
  - ["wifi.sta.ssid", "MyAP"]
  - ["wifi.sta.pass", "Passwd"]

Шаг 2: Добавьте их в mos.yml. Оставьте rpc-uart, если вы не собираетесь делать вызовы rpc через UART.

libs:
  - origin: https://github.com/mongoose-os-libs/sntp
  - origin: https://github.com/mongoose-os-libs/crontab
  - origin: https://github.com/mongoose-os-libs/rpc-service-cron
  - origin: https://github.com/mongoose-os-libs/rpc-service-config
  - origin: https://github.com/mongoose-os-libs/wifi
  - origin: https://github.com/mongoose-os-libs/rpc-uart

Шаг 3. Добавьте обработчики crontab для включения и выключения светодиода:

enum mgos_app_init_result mgos_app_init(void) {
  /* Set LED GPIOs as outputs */
  mgos_gpio_set_mode(YOUR_LED_GPIO, MGOS_GPIO_MODE_OUTPUT);

  /* Register crontab handler - LED OFF */
  mgos_crontab_register_handler(mg_mk_str("ledoff"), ledoff, NULL);

  /* Register crontab handler - LED ON */
  mgos_crontab_register_handler(mg_mk_str("ledon"), ledon, NULL);

  return MGOS_APP_INIT_SUCCESS;
}

Шаг 4: Добавить обратные вызовы:

void ledoff(struct mg_str action, struct mg_str payload, void *userdata) {
  mgos_gpio_write(YOUR_LED_GPIO, 0);
  (void) payload;
  (void) userdata;
  (void) action;
}

void ledon(struct mg_str action, struct mg_str payload, void *userdata) {
  mgos_gpio_write(YOUR_LED_GPIO, 1);
  (void) payload;
  (void) userdata;
  (void) action;
}

Шаг 5. Из веб-интерфейса или UART:

call Cron.Add '{"at":"0 0 10 00 * *", "action":"ledon"}'
call Cron.Add '{"at":"0 0 16 00 * *", "action":"ledoff"}'

См. https://github.com/mongoose-os-libs/cron как ссылку на синтаксис выражений cron для mgos.

...