我有一个带有 jQuery 的独立 HTML 页面。jQuery 用于对 Python 后端进行 AJAX 调用。我需要将它与 Volttron Central 集成。我查看了文档,但没有部分讨论这个问题。我认为在文档中包含此类信息会很好。
我目前的方法是将后端 Python 转换为 Volttron 代理,但我不知道如何将前端 HTML 页面与 VC 集成。
任何建议从哪里开始?谢谢。
我有一个带有 jQuery 的独立 HTML 页面。jQuery 用于对 Python 后端进行 AJAX 调用。我需要将它与 Volttron Central 集成。我查看了文档,但没有部分讨论这个问题。我认为在文档中包含此类信息会很好。
我目前的方法是将后端 Python 转换为 Volttron 代理,但我不知道如何将前端 HTML 页面与 VC 集成。
任何建议从哪里开始?谢谢。
当您有一个要注册自己的端点的代理时,您应该在 onstart 信号期间执行此操作。以下内容是从 volttron 中心代理中提取的。它展示了如何注册一个动态的端点(使用 volttron rpc 作为端点)以及静态的(简单地提供 html)。我已删除此示例中不必要的位。
为清楚起见,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)
由于您在启动时添加了路由,因此您还应该在代理停止时将其删除。onstop 参考代码
@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