2016-07-19 1 views
0

У меня есть отдельная HTML-страница с jQuery. JQuery используется для вызова AJAX на бэкэнд Python. Мне нужно интегрировать его с Volttron Central. Я просмотрел документацию, но об этом не говорится. Я думаю, было бы неплохо иметь такую ​​информацию в документе.Добавить новую страницу в Volttron Central

Мой текущий подход заключается в том, чтобы преобразовать бэкэнд-Python в качестве агента Volttron, но я не знаю, как интегрировать HTML-страницу с интерфейсом VC.

Любое предложение с чего начать? Благодарю.

ответ

1

Когда у вас есть агент, который собирается зарегистрировать свою конечную точку, вы должны сделать это во время сигнала onstart. Из центрального вещества вольтрона было извлечено следующее. Он показывает, как регистрировать конечную точку, которая является динамической (использует volttron rpc в качестве конечной точки), а также статическую (где html просто используется). Я удалил ненужные биты для этого примера.

onstart volttron central code

Для ясности MASTER_WEB и VOLTTRON_CENTRAL уникальные идентификаторы для этих конкретных агентов, работающих на экземпляре volttron.

@Core.receiver('onstart') 
def _starting(self, sender, **kwargs): 
    """ Starting of the platform 
    :param sender: 
    :param kwargs: 
    :return: 
    """ 

    ... 

    # Registers dynamic route. 
    self.vip.rpc.call(MASTER_WEB, 'register_agent_route', 
         r'^/jsonrpc.*', 
         self.core.identity, 
         'jsonrpc').get(timeout=30) 

    # Registers static route. 
    self.vip.rpc.call(MASTER_WEB, 'register_path_route', VOLTTRON_CENTRAL, 
         r'^/.*', self._webroot).get(timeout=30) 

С тех пор, как вы добавили маршрут onstart, вы также должны удалить его, когда агент остановлен. onstop referenced code

@Core.receiver("onstop") 
def stopping(self, sender, **kwargs): 
    ''' 
    Release subscription to the message bus because we are no longer able 
    to respond to messages now. 
    ''' 
    try: 
     # unsubscribes to all topics that we are subscribed to. 
     self.vip.pubsub.unsubscribe(peer='pubsub', prefix=None, callback=None) 
    except KeyError: 
     # means that the agent didn't start up properly so the pubsub 
     # subscriptions never got finished. 
     pass 
+0

Thanks Craig. Я попробую и вернусь к этому позже. – HNGO

+0

Если есть 10 различных приложений, имеющих 10 различных пользовательских интерфейсов, поддерживает ли этот подход слишком много бэкэнд-агентов, маршрутов, внешних ресурсов? – HNGO

+0

Эта регистрация маршрутов - это стандартный способ делать вещи. Это не ново. Внешние ресурсы должны и должны быть на стороне клиента. – Craig