<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/bubot/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 13 Apr 2015 22:26:48 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/bubot/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v22
+++ v23
@@ -318,8 +318,11 @@
 В завершении этой статьи, предлагаю Вашему вниманию видео практического применения фреймворка. На видео, с помощью фреймворка Bubot, настраиваем машинку управляемую через веб интерфейс, не написав при этом ни строчки кода.
 [[embed url=http://www.youtube.com/watch?v=mytozJijhVE]]

+Схема подключения Bubot Scout
 ![Bubot: scout - Схема подключения](http://wiki.razgovorov.ru/images/thumb/5/5b/Scout_scheme.png/500px-Scout_scheme.png)
-![Bubot: scout - Схема сервисов](http://wiki.razgovorov.ru/images/thumb/d/dd/Scout_buject.png/500px-Scout_buject.png)
+
+Схема модулей и процессов Bubot Scout
+![Bubot: scout - Схема процессов](http://wiki.razgovorov.ru/images/thumb/d/dd/Scout_buject.png/500px-Scout_buject.png)

 [[download_button]]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Mon, 13 Apr 2015 22:26:48 -0000</pubDate><guid>https://sourceforge.nete5d539b2b078b34bcc12c542da345e5fe675bbfd</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v21
+++ v22
@@ -315,7 +315,8 @@

 # Bubot scout

-Если поступательно развивать нашу машинку дальше, то следующий шаг это регулировка оборотов привода, замена рулевого мотора на серву, установка камеры, приводов на камеру, синтезатора речи, распознавание голосовых команд и т.д. Но это уже совсем другая история.
+В завершении этой статьи, предлагаю Вашему вниманию видео практического применения фреймворка. На видео, с помощью фреймворка Bubot, настраиваем машинку управляемую через веб интерфейс, не написав при этом ни строчки кода.
+[[embed url=http://www.youtube.com/watch?v=mytozJijhVE]]

 ![Bubot: scout - Схема подключения](http://wiki.razgovorov.ru/images/thumb/5/5b/Scout_scheme.png/500px-Scout_scheme.png)
 ![Bubot: scout - Схема сервисов](http://wiki.razgovorov.ru/images/thumb/d/dd/Scout_buject.png/500px-Scout_buject.png)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Mon, 13 Apr 2015 22:25:18 -0000</pubDate><guid>https://sourceforge.net1410bbbef7374ee2aa65ad551f0a9ecfed02bd2b</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v20
+++ v21
@@ -185,25 +185,25 @@
         &lt;title&gt;BuBot&lt;/title&gt;
         &amp;lt;script&amp;gt;
             function bubot_on_open() {
-                
+                // функция должна быть определена на каждой странице,
+                // вызывается после открытия WebSocketa для того чтобы запросить у сервера
+                // начальные данные, пример использования можно посмотреть в ui/studio или ui/scout
             }

             function get_bubot_actions() {
-                
+                // функция должна быть определена на каждой странице, вызывается при загрузке страницы,
+                // содержит объект из функций для обработки входящих сообщений. 
+                // Пример использования можно посмотреть в ui/studio или ui/scout
                 return {};
             }

             $(function () {
-                
+                // вешаем обработчики на нашу кнопку
                 $("#command_move_forward").button({}).mousedown(function () {

-                    
+                    // описание функции ниже по тексту статьи, 
+                    // при нажатии устанавливаем мощность мотора 100%
+                    // при отжатии устанавливаем мощность мотора в 0%
                     bubot_send_message('send_request', {'name': "set_move_motor_power",
                                                         'data': {'value': 100}});
                 }).mouseup(function () {
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Sat, 11 Apr 2015 21:39:01 -0000</pubDate><guid>https://sourceforge.net0f93250a397380953026a59d37b025332ccae638</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v19
+++ v20
@@ -1,9 +1,8 @@
 Bubot - очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации, предоставляющий функционал для распределенной работы.

 # Предыстория
-Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой цель начал изучать имеющиеся возможности - рассматривал все варианты систем, где бы робот состоял из параллельно работающих процессов обменивающихся между собой сообщениями. 
-Из наиболее популярных очень понравились [Microsoft Robotics Studio](https://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio) и [ROS](http://robocraft.ru/blog/robosoft/721.html). К сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, а разобраться в них с нуля так же весьма не тривиальная задача. Ну и самое главное  - писать на языке C очень не хотелось. Душа просила чего-нибудь попроще и полегче. 
-Учитывая, что нужно было и робота и умный дом, да ещё почти сразу появились перспективы другого применения, то было решено сделать небольшой фреймворк, в котором упор бы делался на простоту разработки.
+Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой целью начал изучать имеющиеся возможности. Для себя я разделил все решения на две группы: системы в которых код на контроллере выполняется в одном главном цикле (arduino, lego и т.п.) и системы состоящие из параллельно работающих процессов обменивающихся между собой сообщениями.
+Интуитивно выбрал вторую группу, так как хотелось найти максимально простое решение с дружественным пользовательским интерфейсом. Из наиболее популярных представителей этого «семейства» очень понравились [Microsoft Robotics Studio](https://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio) и [ROS](http://robocraft.ru/blog/robosoft/721.html). Но к сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, да и разобраться в них с нуля так же весьма не тривиальная задача. В итоге принял решение писать сам, но «кодить» на C очень не хотелось, Душа просила чего-нибудь попроще и полегче. В итоге выбрал Python. А учитывая, что по мимо робота и «умного дома» в голову начало лезть куча других идей, то решил сразу сделать небольшой фреймворк, в котором основной упор был бы сделан на простоту разработки.

 # Концепция
 Концептуально фреймворк представляет собой набор поддерживаемых пользователем модулей реализующих различные функции робототехники. При работе Bubot строит сеть из процессов, которые могут асинхронно получать и отправлять сообщения между собой. Так же Вы можете построить сеть из роботов, которые будут общаться между собой.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Thu, 09 Apr 2015 20:01:33 -0000</pubDate><guid>https://sourceforge.net522d732454c9849e9b5a78584f359454595462f5</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v18
+++ v19
@@ -320,3 +320,6 @@

 ![Bubot: scout - Схема подключения](http://wiki.razgovorov.ru/images/thumb/5/5b/Scout_scheme.png/500px-Scout_scheme.png)
 ![Bubot: scout - Схема сервисов](http://wiki.razgovorov.ru/images/thumb/d/dd/Scout_buject.png/500px-Scout_buject.png)
+
+
+[[download_button]]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Tue, 31 Mar 2015 22:35:23 -0000</pubDate><guid>https://sourceforge.net18a2b2bb87fd1a825652da63b50afc62623a6f27</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v17
+++ v18
@@ -1,55 +1,55 @@
 Bubot - очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации, предоставляющий функционал для распределенной работы.

-
 # Предыстория
-Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой цель начал изучать имеющиеся возможности - рассматривал все варианты систем где бы робот состоял из параллельно работающих процессов обменивающихся между собой сообщениями. 
-Из наиболее популярных подходили [Microsoft Robotics Studio](https://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio)  и [ROS](http://robocraft.ru/blog/robosoft/721.html), и все бы ничего, но на текущий момент привязать их к конкретному железу весьма не просто, разобраться в них с нуля так же не тривиальная задача, ну и самое главное писать на языке C очень не хотелось. Душа просила чего-нибудь по проще и по легче. 
-Учитывая, что нужно было и робота и умный дом, да ещё почти сразу появились перспективы другого применения, то было решено сделать небольшой фреймворк в котором упор делался на простоту разработки.
+Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой цель начал изучать имеющиеся возможности - рассматривал все варианты систем, где бы робот состоял из параллельно работающих процессов обменивающихся между собой сообщениями. 
+Из наиболее популярных очень понравились [Microsoft Robotics Studio](https://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio) и [ROS](http://robocraft.ru/blog/robosoft/721.html). К сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, а разобраться в них с нуля так же весьма не тривиальная задача. Ну и самое главное  - писать на языке C очень не хотелось. Душа просила чего-нибудь попроще и полегче. 
+Учитывая, что нужно было и робота и умный дом, да ещё почти сразу появились перспективы другого применения, то было решено сделать небольшой фреймворк, в котором упор бы делался на простоту разработки.

 # Концепция
 Концептуально фреймворк представляет собой набор поддерживаемых пользователем модулей реализующих различные функции робототехники. При работе Bubot строит сеть из процессов, которые могут асинхронно получать и отправлять сообщения между собой. Так же Вы можете построить сеть из роботов, которые будут общаться между собой.

 ![Bubot - Схема](http://wiki.razgovorov.ru/images/thumb/d/de/Bubot_scheme.png/700px-Bubot_scheme.png)

-Сеть процессов строится на базе стандартного Python модуля  multiprocessing. Система сообщений и разделяемая память реализованы при помощи [Redis](http://devacademy.ru/posts/vvedenie-v-redis-py/).
-
-Каждый Bubot имеет встроенный [веб-сервер Tornado](http://wiki.python.su/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8/Tornado-web?highlight=%28%28%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8%7CTornado-web%29%29), который позволяет контролировать состояние, управлять роботом, на ходу менять параметры (калибровать)робота, а также закладывается возможность обмена данными между роботами.
+Сеть процессов строится на базе стандартного Python модуля multiprocessing. Система обмена сообщениями и разделяемая память реализованы при помощи [Redis](http://devacademy.ru/posts/vvedenie-v-redis-py/).
+Каждый Bubot имеет встроенный веб-сервер [веб-сервер Tornado](http://wiki.python.su/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8/Tornado-web?highlight=%28%28%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8%7CTornado-web%29%29), который позволяет контролировать состояние, управлять роботом, на ходу менять параметры (калибровать) робота, а также закладывается возможность обмена данными между роботами.
 Bubot не является системой реального времени, хотя Bubot возможно интегрировать с кодом реального времени.

 # Hello Bubot
-Изучать что либо новое всегда проще на примере, и первое что приходит в голову это переделать радиоуправляемую игрушку на управление с помощью веб-интерфейса через wi-fi или 3G.
-
-Нам понадобится любая китайская радиоуправляемая машинка и любой мини компьютер с установленным python 3 (я использовал один из самых доступных  - raspberry pi b+).
-Изначально практически любая радиоуправляемая машинка - это два мотора и примитивный радио модуль. Нам от неё надо только моторы  и чтобы сама машинка была подходящего размера чтобы поместить на неё всю электронику.
+Изучать что-либо новое всегда проще на примере, и первое что приходит в голову, это переделать радиоуправляемую игрушку на управление с помощью веб-интерфейса через wi-fi или 3G.
+
+Для этого нам понадобится любая китайская радиоуправляемая машинка и любой мини компьютер на котором может работать python 3. В качестве подопытного кролика был приобретен один из самых доступных -  raspberry pi b+.
+
+Изначально практически любая радиоуправляемая машинка - это два мотора и примитивный радио модуль. Нам от неё надо только моторы и чтобы сама машинка была подходящего размера для размещения всей электроники.

 Для начала упростим задачу - наша машинка должна выполнять четыре действия: ехать вперед или назад, поворачивать влево или вправо. 

 Для решения поставленной задачи нам необходимо:

-* Подключить моторы к raspberry pi
-
-* Реализовать сервис который будет принимать и интерпретировать команды пользователя на конкретные физические устройства
+* Подключить моторы к raspberry 
+
+* Реализовать сервис, который будет принимать и интерпретировать команды пользователя на конкретные физические устройства

 * Реализовать веб интерфейс, который будет передавать команды пользователя: Установить мощность основного или поворотного двигателя -100% / 0% / 100%.

 # Подключаем моторы

-Мне кажется простейшим способом подключения моторов к raspberry pi будет использование готового контроллера, выбор которого основывается зависит только от предполагаемой мощности моторов. Я выбрал с запасом на базе L298N. Строка для поиска на aliexpress " L298N motor driver board", обойдется Вам примерно в $3 с доставкой. 
+Простейшим способом подключения моторов к raspberry pi будет использование готового контроллера, выбор которого зависит только от предполагаемой мощности моторов. Я выбрал с запасом на базе L298N. Строка для поиска на aliexpress "L298N motor driver board", обойдется Вам примерно в $3 с доставкой.  

 ![Простейший пример - Схема подключения](http://wiki.razgovorov.ru/images/thumb/e/ef/Scout_easy_scheme.png/500px-Scout_easy_scheme.png)

-Также Вам понадобится как минимум один понижающий преобразователь напряжения для питания raspberry от того, что будет на борту Вашей машинки. Я взял на базе LM2596. Строка для поиска на aliexpress "DC-DC LM2596", обойдется Вам примерно в $1 с доставкой. 
-
-
-При таком подключении, чтобы заставить машину выполнить одну из наших команд достаточно выставить высокий уровень на соответствующем GPIO.
+Также, для питания raspberry, Вам понадобится как минимум один понижающий преобразователь напряжения. Я взял на базе LM2596. Строка для поиска на aliexpress "DC-DC LM2596", обойдется Вам примерно в $1 с доставкой. 
+
+При таком подключении, для чтобы заставить машину выполнить одну из наших команд, достаточно выставить высокий уровень на соответствующем GPIO.
+

 # Реализуем модуль мотора
 В целях упрощения модели, пусть у нас команды поступают непосредственно на моторы.
-Поскольку у нас два одинаковых (с программной точки зрения) мотора, то нам потребуется один модуль. Модули в фреймворке находятся в каталоге buject. Каждый модуль состоит из двух файлов:
-
-* \[название модуля\].py - содержит логику модуля, все модули наследуются либо от базового класса Buject, либо от его потомков. От базового класса разработчик получает основной бесконечный цикл, методы для обработки и передачи событий
-
-* \[название модуля\].json - содержит описание модуля - список параметров модуля, их значения по умолчанию, список возможных статусов, описание сообщений генерируемых модулем, и список сообщений на которые модуль подписан.
+Поскольку у нас два одинаковых (с программной точки зрения) мотора, то нам потребуется один модуль. Все модули наследуются либо от базового класса Buject, либо от его потомков. От базового класса разработчик получает основной бесконечный цикл, методы для обработки и передачи событий. Модули в фреймворке находятся в каталоге buject. Каждый модуль состоит из двух файлов:
+
+
+* \[название модуля\].py - логика модуля
+
+* \[название модуля\].json - описание модуля. Содержит список параметров модуля, их значения по умолчанию, список возможных статусов, описание сообщений генерируемых модулем, и список сообщений на которые модуль подписан.

 Пример модуля для наших моторов \buject\MotorTest.py

@@ -93,9 +93,10 @@
             if self.param['debug'] &amp;gt; 1:  
                 self.log('Buject "{0}" {1}'.format(self.param['name'], self.status['action']))

-Комментарии думаю излишни. Приходит запрос, в параметрах которого указана мощность мотора, если она больше нуля говорим мотору ехать вперед, меньше - назад, ну а если пришел ноль, то стоим.
+Комментарии, думаю излишни. Приходит запрос, в параметрах которого указана мощность мотора, если она больше нуля говорим мотору ехать вперед, меньше - назад, равна нулю -  стоим.

 Бесконечный цикл в данном случае задействован не был. В случае его наличия достаточно определить метод main_loop().
+

 Пример описания модуля для наших моторов \buject\Motor.json

@@ -139,33 +140,37 @@

 Раздел param содержит список параметров необходимых для запуска и работы модуля. Первые три обязательные для каждого модуля, и наследуются от базового класса Buject. Последние являются специфичными только для этого модуля, их количество и название Вы придумываете сами в зависимости от потребностей. GPIO_mode задает режим адресации GPIO и в дальнейшем переопределяться не будет. В то время как для GPIO_forward и GPIO_backward нет смысла задавать значения по умолчанию, т.к. они зависят исключительно от того к каким выводам будет подключен конкретный мотор и мы их определим дальше в параметрах запуска этого модуля.

-Также описание модуля может содержать секцию status - где описаны все рассчитываемые параметры отражающие текущее состояние модуля. В данном случае специально для модуля Motor нет никаких добавленных статусов, однако, если Вы обратили внимание в коде самого модуля мы выставляем один из статусов 'action' который определен в описании базового модуля Buject.
-
-Фреймворк предоставляет возможность использовать пять типов сообщений:
-
-* incoming_request - входящие запросы, декларируется список запросов которые может обрабатывать модуль.
-
-* outgoing_request - исходящие запросы, в качестве параметров обязательно указать имя сервиса принимающего запросы и имя запроса.
-
-* incoming_event - входящие события, список подписки на события других модулей, обязательно указать имя сервиса и имя события.
-
-* outgoing_event - исходящие события, декларируется список событий на которые могут подписаться другие модули.
-
-* incoming_response - служебный тип, который декларируется на исходящем запросе, говорит о том, что сервис будет ожидать асинхронного ответа на запрос.
+Также описание модуля может содержать секцию status - где описаны все рассчитываемые параметры - отражающие текущее состояние модуля. В нашем модуле нет никаких добавленных статусов, однако, если Вы обратили внимание, в коде самого модуля мы изменяем статус 'action',  который определен в описании базового модуля Buject.
+
+Фреймворк предоставляет возможность использовать пять типов сообщений
+
+
+* incoming_request - список запросов, которые может обрабатывать модуль.
+
+* outgoing_request - список запросов генерируемых модулем. В качестве параметров обязательно указать имя сервиса принимающего запросы и имя запроса.
+
+* incoming_event - список подписки на события других модулей, обязательно указать имя сервиса и имя события.
+
+* outgoing_event - список событий, на которые могут подписаться другие модули.
+
+* incoming_response - служебный тип, который декларируется на исходящем запросе. Говорит о том, что сервис будет ожидать асинхронного ответа на запрос.

 # Реализуем веб интерфейс
-Для управления нашим роботом нам будет достаточно 4 кнопки, которые при нажатии будет давать команду, а при отжатии её отменять.
-
-Пользовательские Веб интерфейсы хранятся в каталоге ui. Каждая страница пользовательского интерфейса описывается в отдельном подкаталоге, и состоит как минимум из 2 файлов:
+
+Каждый робот может иметь неограниченное количество веб интерфейсов. В нашем случае, для управления роботом, нам достаточно одного – реализующего 4 кнопки, которые при нажатии будет давать команду, а при отжатии её отменять.
+
+Пользовательские интерфейсы хранятся в каталоге ui. Каждая страница пользовательского интерфейса описывается в отдельном подкаталоге, и состоит как минимум из 2 файлов:

 * \[Имя страницы\].html - разметка страницы.

-* \[Имя страницы\].json - каждая страница (сессия) для фреймворка является по сути отдельным сервисом, в данном файле содержится описание событий на которые данная страница подписана, а также сообщения которые она генерирует.
-
-* \[Имя страницы\].py - не обязателен, может содержать серверную логику по обработке команд пользовательского интерфейса, в нашем случае не пригодится.
-
-Давайте опять для улучшения восприятия ещё немного упростим. В приведенном ниже примере рассмотрим алгоритм одной кнопки вперед. Остальные можно сделать по аналогии.
-Итак создаем в каталоге ui подкаталог scout_easy и в нем два файла scout_easy.html и scout_easy.json следующего содержания (комментарии по тексту).
+* \[Имя страницы\].json - описание интерфейса. Каждая страница (сессия) для фреймворка является по сути отдельным сервисом, в данном файле содержится описание событий на которые данная страница подписана, а также сообщения которые она генерирует.
+
+* \[Имя страницы\].py - (не обязателен)  может содержать серверную логику по обработке команд данного пользовательского интерфейса, в нашем случае не пригодится.
+
+Давайте опять, для улучшения восприятия, ещё немного упростим. В приведенном ниже примере рассмотрим алгоритм одной кнопки вперед. Остальные можно сделать по аналогии.
+
+Итак, создаем в каталоге ui подкаталог scout_easy и в нем два файла scout_easy.html и scout_easy.json следующего содержания (комментарии по тексту).
+

 \ui\scout_easy\scout_easy.html

@@ -217,7 +222,7 @@

 Обратите внимание на div id=console, если он присутствует, то в него фреймворк будет выводить все консольные сообщения, в т.ч. происходящие на стороне сервера ошибки кода.

-bubot_socket.js - должен присутствовать на каждой странице ui, так как именно он отвечает за установку соединения и обмен сообщениями.
+bubot_socket.js - должен присутствовать на каждой странице ui, так как именно он отвечает за установку соединения с сервером и обмен сообщениями.

 Соединение с сервером происходит через web socket, метод bubot_send_message(\[название сообщения\], \[параметры сообщения\]) отвечает за передачу сообщений на сервер. На сервере при поступлении сообщения вызывается одноименный метод, которому передаются параметры сообщения. В нашем случае вызывается метод отправляющий запрос set_move_motor_power, имя сервиса получателя сообщения фреймворк берет из файла описания пользовательского интерфейса, названия этих сервисов определяется в заключительном разделе при описании робота.

@@ -255,10 +260,10 @@

 # Запускаем робота
-Итак мы подготовили все части робота, чтобы его запустить нужен ещё один файл, в котом мы опишем все его составные части.
-
-В каталоге config хранятся конфиги всех Ваших роботов. Создавать конфиги можно как вручную, так и про помощи конфигуратора - но об этом подробнее на видео о bubot: scout.
-Итак, для нашего первого робота конфиг будет выглядеть следующим образом:
+Итак, мы подготовили все части робота. Чтобы его запустить, нужен ещё один файл с описанием самого робота.
+
+В каталоге config хранятся описания всех Ваших роботов. Создавать описание можно как вручную, так и про помощи конфигуратора - но об этом подробнее на видео о bubot: scout.
+Итак, для нашего первого робота описание будет выглядеть следующим образом:

 \config\scout_easy.json

@@ -301,7 +306,7 @@
                         "value": 19
     }   }   }   }   }

-В конфиге мы описали, что надо запустить два экземпляра модуля MotorTest с разными параметрами: один для основного мотора move_motor, другой для рулевого мотора rotate_motor. Как вы видите способ адресации GPIO мы не указали, т.к. нас устраивает значение по умолчанию, а вот параметры GPIO_forward и GPIO_backward мы переопределили в соответствии со схемой подключения.
+Согласно данному описанию, Bubot при старте создаст два экземпляра модуля MotorTest с разными параметрами: один для основного мотора - move_motor, другой для рулевого мотора -rotate_motor и запустит из в качестве процессов. Как Вы видите, способ адресации GPIO мы не указали, т.к. нас устраивает значение по умолчанию, а вот параметры GPIO_forward и GPIO_backward мы переопределили в соответствии со схемой подключения моторов.

 Теперь у нас совсем все готово. Можно запускать.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Tue, 31 Mar 2015 21:43:28 -0000</pubDate><guid>https://sourceforge.net066c6b0b0378114e7c66dd845953814068ce1562</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v16
+++ v17
@@ -3,7 +3,7 @@

 # Предыстория
 Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой цель начал изучать имеющиеся возможности - рассматривал все варианты систем где бы робот состоял из параллельно работающих процессов обменивающихся между собой сообщениями. 
-Из наиболее популярных подходили [Microsoft Robotics Studio](https://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio)  и [ROS](http://robocraft.ru/blog/robosoft/721.html), и все бы ничего, но на текущий момент привязать их к конкретному железу весьма не просто, разобраться в них с нуля так же не тривиальная задача, ну и самое главное писать на языке C очень не хотелось. Душа просила чего-нибудь по проще и по легче – как например Python. 
+Из наиболее популярных подходили [Microsoft Robotics Studio](https://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio)  и [ROS](http://robocraft.ru/blog/robosoft/721.html), и все бы ничего, но на текущий момент привязать их к конкретному железу весьма не просто, разобраться в них с нуля так же не тривиальная задача, ну и самое главное писать на языке C очень не хотелось. Душа просила чего-нибудь по проще и по легче. 
 Учитывая, что нужно было и робота и умный дом, да ещё почти сразу появились перспективы другого применения, то было решено сделать небольшой фреймворк в котором упор делался на простоту разработки.

 # Концепция
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Tue, 31 Mar 2015 20:41:42 -0000</pubDate><guid>https://sourceforge.net9083dd5de0c6f5037cd8067b6fb79cd95599b4eb</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v15
+++ v16
@@ -1,4 +1,4 @@
-Bubot - фреймворк на Python 3 для программирования роботов и домашней автоматизации, предоставляющий функционал для распределенной работы. 
+Bubot - очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации, предоставляющий функционал для распределенной работы.

 # Предыстория
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Tue, 31 Mar 2015 20:36:54 -0000</pubDate><guid>https://sourceforge.net0c436f5d27d297c710539673fa7680d719fdb4e7</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v14
+++ v15
@@ -174,10 +174,10 @@
     &amp;lt;html&amp;gt;
     &amp;lt;head lang="en"&amp;gt;
         &amp;lt;meta charset="UTF-8"&amp;gt;
-        &amp;lt;link rel="stylesheet" href="/static/js/jquery-ui-1.11.2/jquery-ui.css"&amp;gt;
-        &amp;lt;script type="text/javascript" src="/static/js/jquery-2.1.3.min.js"&amp;gt;&amp;lt;/script&amp;gt;
-        &amp;lt;script type="text/javascript" src="/static/js/jquery-ui-1.11.2/jquery-ui.js"&amp;gt;&amp;lt;/script&amp;gt;
-        &amp;lt;script type="text/javascript" src="/ui/bubot_socket.js"&amp;gt;&amp;lt;/script&amp;gt;
+        &amp;lt;link rel="stylesheet" href="/static/jquery-ui-1.11.2/jquery-ui.css"&amp;gt;
+        &amp;lt;script type="text/javascript" src="/static/jquery-2.1.3.min.js"&amp;gt;&amp;lt;/script&amp;gt;
+        &amp;lt;script type="text/javascript" src="/static/jquery-ui-1.11.2/jquery-ui.js"&amp;gt;&amp;lt;/script&amp;gt;
+        &amp;lt;script type="text/javascript" src="/static/bubot_socket.js"&amp;gt;&amp;lt;/script&amp;gt;
         &lt;title&gt;BuBot&lt;/title&gt;
         &amp;lt;script&amp;gt;
             function bubot_on_open() {
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Tue, 31 Mar 2015 20:34:00 -0000</pubDate><guid>https://sourceforge.neta0d38b2ad0946b78b5d4aba02d46b72f94a54bc0</guid></item><item><title>Home modified by businka76</title><link>https://sourceforge.net/p/bubot/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v13
+++ v14
@@ -243,9 +243,9 @@
                     }
                 }
             },
-            "set_rotation_motor_power": {
+            "set_rotate_motor_power": {
                 "name": "set_power",
-                "buject": "rotation_motor",
+                "buject": "rotate_motor",
                 "description": "команда на установку мощности рулевого мотора",
                 "param": {
                     "value": {
@@ -286,13 +286,13 @@
                     }
                 }
             },
-            "rotation_motor": { # аналогично для рулевого мотора
+            "rotate_motor": { # аналогично для рулевого мотора
                 "param": {
                     "buject": {
                         "value": "MotorTest"
                     },
                     "name": {
-                        "value": "rotation_motor"
+                        "value": "rotate_motor"
                     },
                     "GPIO_forward": {
                         "value": 13
@@ -301,7 +301,7 @@
                         "value": 19
     }   }   }   }   }

-В конфиге мы описали, что надо запустить два экземпляра модуля MotorTest с разными параметрами: один для основного мотора move_motor, другой для рулевого мотора rotation_motor. Как вы видите способ адресации GPIO мы не указали, т.к. нас устраивает значение по умолчанию, а вот параметры GPIO_forward и GPIO_backward мы переопределили в соответствии со схемой подключения.
+В конфиге мы описали, что надо запустить два экземпляра модуля MotorTest с разными параметрами: один для основного мотора move_motor, другой для рулевого мотора rotate_motor. Как вы видите способ адресации GPIO мы не указали, т.к. нас устраивает значение по умолчанию, а вот параметры GPIO_forward и GPIO_backward мы переопределили в соответствии со схемой подключения.

 Теперь у нас совсем все готово. Можно запускать.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">businka76</dc:creator><pubDate>Tue, 31 Mar 2015 20:23:47 -0000</pubDate><guid>https://sourceforge.net381c4866c1e35a9f98429ceaed2d9f3555856848</guid></item></channel></rss>