Skip to content
/ MLH Public
forked from etcipnja/MLH

[FARMWARE] Mother's little helper

License

Notifications You must be signed in to change notification settings

DDDIM/MLH

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Это форк плагина 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

About

[FARMWARE] Mother's little helper

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%