Это форк плагина https://github.com/etcipnja/MLH с целью перевода.
Этот плагин придет на помощь, когда нужно выполнить одно и то же действие для множества растений.
Возможности плагина:
- Применить фильтр для выбора нужных растений (например, выбрать все морковки (carrots) со статусом 'запланировано' (planned));
- Выполнить начальную функцию (например, взять насадку для посадки);
- Для каждого растения:
- Выполнить функцию перед движением к координате растения (например, схватить семечку);
- Переместиться к координате растения;
- Выполнить функцию, находясь на координате растения;
- Обновить мета-данные растения (например, сменить статус морковок на 'посажено' (planted));
- Выполнить заключительную функцию (например, вернуть на базу насадку для посадки);
- 'Фильтр растений по имени'
- Выбор группы растений по названиям (разделяем запятыми). Например: 'Carrot, Beets', не зависит от регистра, '*' означает 'Выбрать все'
- Можно инвертировать вывод, используя '!' как первый элемент. Например '!, Carrot, Beets' позволяет выбрать все, кроме моркови и свеклы
- 'Фильтр растений по мета-данным'
- Мета-данные - это информация о растении в формате (Ключ:Значение), привязанная к данному экземпляру растения. К сожалению, её пока невозможно увидеть где-нибудь в Дизайнере грядки.
- 'Начальная функция'
- Имя функции, которая будет исполнена в самом начале. К сожалению, на данный момент, поддерживаются только англоязычные имена. Если ничего не должно исполняться, впишите 'None';
- 'Функция перед движением к следующей точке'
- Функция, которую следует исполнить перед перемещением головы FarmBot-а к следующему растению (исполняется для каждого растения). Аналогично, если ничего не должно исполняться, впишите 'None';
- 'Функция после движения к следующей точке'
- Функция, которая будет исполнена на координате растения (исполняется для каждого растения);
- 'Заключительная функция'
- Заключительная функция (исполняется единоразово);
- 'Мета-данные для записи'
- У каждого растения будут обновлены мета-данные после успешного завершения функции, которая исполняется на координате растения. Более подробно про формат мета-данных написано ниже;
- 'Значение Z-координаты при движении'
- Z-координата при движении к очередному растению;
- 'Действие (test - тест, real - исполнить)'
- Впишите 'test' для запуска плагина в тестовом режиме. При этом робот никуда не двинется и мета-данные обновлены не будут. Плагин просто проверит корректность введенных параметров;
- Или впишите 'real' - для запуска плагина на исполнение;
Формат полей мета-данных строго определен. На языке Python это называется список пар кортежей (list of tupple pairs). Вот пример:
[ ( 'ключ1', 'значение1' ) , ( 'ключ2', 'значение2' ) ]
Вы можете использовать любые строки в качестве Ключа и Значения.
Пользуясь списками пар Ключ и Значение, можно фильтровать растения по нескольким критериям, либо обновлять сразу несколько полей мета-данных. Если вы не хотите использовать мета-данные, впишите "None" в соответствующую строку.
Есть несколько Ключей и Значений со специальным назначением:
- Ключ 'plant_stage' не имеет отношения к мета-данным, вместо этого он работает с видимым для пользователя атрибутом 'Статус'. У этого Ключа могут быть только 3 значения: 'запланировано', 'посажено', 'убрано' ('planned', 'planted' and 'harvested');
- Ключ 'planted_at' - тоже не является мета-данными. Он содержит дату посадки растения. Формат: ГГГГ-ММ-ДД (Пример: '2018-04-15')
- Запись Ключа 'del' приведет к удалению мета-данных для данного растения. Если Значение '*' - то все мета-данные будут удалены. Если нужно удалить конкретную пару, нужно ввести соответствующее название ключа.
- Значение 'today' заменяется текущую дату. Для фильтрации, можно написать '!today', что означает 'не сегодня'.
Посадить всю морковку со статусом 'запланировано' ('planned') и изменить ее статус на 'посажено' ('planted'):
- Фильтр растений по имени: Carrot
- Фильтр растений по мета-данным: [('plant_stage','planned')]
- Начальная функция: Pickup seeder (имя функции должно быть на английском)
- Функция перед движением к следующей точке: Pickup a seed
- Функция после движения к следующей точке: Plant a seed
- Заключительная функция: Return seeder
- Мета-данные для записи: [('plant_stage','planted')]
Имейте ввиду, что если вы прервете и перезапустите исполнение плагина, он продолжит сажать с того места, где остановился, потому что у посаженных растений статус сменится на 'посажено' ('planted').
Полить всю 'посаженную' ('planted') морковку, которая сегодня не поливалась:
- Фильтр растений по имени: Carrot
- Фильтр растений по мета-данным: [('plant_stage','planted'), ('last_watering','!today')]
- Начальная функция: Pickup watering nozzle
- Функция перед движением к следующей точке: None
- Функция после движения к следующей точке: Water light
- Заключительная функция: Return watering nozzle
- Мета-данные для записи: [('last_watering','today')]
Удалить все мета-данные всех растений ('Статус' остается не тронутым):
- Фильтр растений по имени: *
- Фильтр растений по мета-данным: None
- Начальная функция: None
- Функция перед движением к следующей точке: None
- Функция после движения к следующей точке: None
- Заключительная функция: None
- Мета-данные для записи: [('del','*')]
Удалить мета-данные о поливе растений, политых сегодня:
- Фильтр растений по имени: *
- Фильтр растений по мета-данным: [('last_watering','today')]
- Начальная функция: None
- Функция перед движением к следующей точке: None
- Функция после движения к следующей точке: None
- Заключительная функция: None
- Мета-данные для записи: [('del','last_watering')]
Изменить 'дату посадки' ('planted_at') для всех посаженных морковок:
- Фильтр растений по именисс: Carrots
- Фильтр растений по мета-данным: [('plant_stage','planted')
- Начальная функция: None
- Функция перед движением к следующей точке: None
- Функция после движения к следующей точке: None
- Заключительная функция: None
- Мета-данные для записи: [('planted_at','2018-04-01') #YYYY-MM-DD
Для регистрации плагина используйте этот манифест: https://raw.githubusercontent.com/DDDIM/MLH/master/MLH/manifest.json