問題タブ [volttron]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
volttron - volttron-cfg を使用して volttron central (VC) を構成する
volttron-cfg を使用しているときに、いくつかの質問を受けました。
volttron central に voltron central プラットフォーム エージェントを含めますか? [Y] VC プラットフォーム エージェントはバックエンド エージェントで、VC はフロントエンドですか?
ポート 22916 (vip ポート) とは何ですか? 「localhost:22916」から返されたコンテンツを読み取ることができません。
ありがとう。
volttron - VOLTTRON エージェントの命名
エージェントを VOLTTRON プラットフォームにインストールすると、すべてのエージェントに同じ名前「Agentagent-3.0」が割り当てられます。setup.py でその名前の一部を変更できます。しかし、エージェントに名前を付ける正しい方法がわかりません。エージェント名はどこに設定すればよいですか?
volttron - Volttron でさまざまなトピックをサブスクライブする方法
次のコードを使用してトピックをサブスクライブすると、同じコードを使用して別のトピックをサブスクライブできません。さまざまなトピックを購読するにはどうすればよいですか?
volttron - ある VM で実行されている bacnet_scan.py が、同じ NAT ネットワーク内の別の VM のデバイスを検出しない
同じホスト上で実行されている 2 つの仮想マシンがあり、それらは両方とも同じ NAT ネットワークにあります。ユーティリティ スクリプト volttron/scripts/scalability-testing/virtual-drivers/bacnet.py を使用して、1 つの VM (たとえば VM1) で偽の bacnet デバイスを開始しました。デバイスは正常に起動しました。同じホストと同じ NAT ネットワーク上の別の VM (VM2 など) から scan_bacnet.py を実行しましたが、VM1 の偽のデバイスが一覧表示されません。
BACpypes.ini ファイルの IP アドレスが、scan_bacnet.py スクリプトを実行しているホストの正しいアドレスであることを確認しました。また、BACpypes.ini のアドレスをサブネット マスク (10.0.2.15/24) を含めるように変更しましたが、うまくいきません。
以下は、VM2 のファイルにある私の BACpypes.ini の内容です。
これは、偽の bacnet デバイスを起動するために VM1 で実行したコマンドです。
ある VM から別の VM に ping を実行でき、ソース VM で tcpdump を実行すると、scan_bacnet.py が whois 要求を他の VM に送信していることがわかります。宛先 VM で tcpdump を実行すると、マシンが whois 要求を受信しているにもかかわらず、偽の bacnet デバイスが whois 要求を受信していないことがわかります。私は何を間違っていますか?
agent - 別のエージェントを介したエージェントの開始または停止
私は現在、定期的に Web からいくつかのデータを csv 形式でダウンロードする volttron エージェントを持っています。DataPublisher の例を使用して、その csv データを取得し、それを pubsub にプッシュしたいと思います。ただし、コードを見ると、DataPublisher は、エージェントが起動するとすぐに自動的に 1 回実行されるように設計されているようです。
私の質問は、元のエージェント (それ自体に何らかのタイマーまたはループがある) から datapublisher を起動する方法はありますか? その後も停止する必要があります。
これができない場合、代わりに datapublisher を変更してスケジュールに従って動作させるか、他のエージェントを変更して csvs から pubsub にデータを発行するようにします。
どんな援助でも大歓迎です。
mysql - MySQL 接続の問題
MySQL-Historian を使用する準備はできていますか? エージェントを試してみましたが、以前と同じようにエラー メッセージが表示されました。私は最初に「mysql.connector」の何が問題なのかを調べようとしています。
volttron - http リクエストに応答する VOLTTRON エージェントを取得する
エージェントが http 要求に応答するようにすべての要素をまとめるのに苦労しています。Craig Add a new page to Volttron Centralからのこの回答を見たことがありますが、すべてをまとめる方法がまだわかりません。この質問がチュートリアルとして、または少なくともドキュメント内の特定の場所を指す場所として役立つことを願っています。
そのために、私が考えることができる私の質問の最も簡単なステートメントを次に示します。
bootstrap.py を実行して、Ubuntu にデフォルト バージョンの VOLTTRON をインストールしたとします。私は開発ブランチにいます。これは、上記の質問への回答が指し示しているものです。それが正しくない場合、または他のブランチにもこの機能がある場合は、指定してください。
そして、次のエージェントコードがあるとします
class Hello_Internet(Agent):
def hello_internet(self):
return “Hello Internet”
「something/hello_internet」という形式の URL にリクエストを送信し、HelloInternet エージェントのメソッドを介して「Hello Internet」のレスポンスを取得できるようにするには、どうすればよいでしょうか? そして、URLの「何か」は何ですか? リクエスト タイプとその他の関連情報 (クエリ文字列、ポスト リクエスト本文) を取得するためのボーナス ポイント。
うまくいけば、私がすでに試したことを示すという精神で、以下が水をあまり濁らせないことを願っています. 理想的には、プロットを完全に失ったと言って、後で下を編集できるようにする.
プラットフォーム自体を起動するときに、フラグ –bind-web-address " http://127.0.0.1:5555 " を params に追加することから始めました。
次に、エージェントクラスを次のように更新しました
この時点でプラットフォームを起動すると、起動時に次のように記録されます。
volttron.platform.web INFO: Starting web server binding to 127.0.0.1:5555.
エージェントが起動すると、次のようになります。
volttron.platform.web INFO: Registering agent route expression: ^/hello_internet peer: None function: hello_internet
しかし、実際に 127.0.0.1:5555 を参照すると、プラットフォームはデバッガーで次のエラーを表示します。
“~/workspace/volttron/env/local/lib/python2.7/site-packages/gevent/server.py", line 102, in wrap_socket_and_handle
ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'error_log'
<Greenlet at 0x7f9ea46e7e10: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f9ea46cba90 fileno=58 address=127.0.0.1:5555>>(<socket at 0x7f9ea46cb9d0 fileno=61 sock=127.0.0.1, ('127.0.0.1', 40583))> failed with TypeError
上記の self.ssl_agrs の価値は次のようになります
dict: {'error_log': <open file '~/.volttron/log/web.error.log', mode 'wb' at 0x7f9ea5a2c5d0>,
'server_side': True}
~/.volttron/log/web.error.log ファイルは存在しますが、空です。
これは、hello_internet 関数が呼び出される前に発生します。
gevent を更新しようとしましたが、問題は解決しませんでした。–bind-web-address をhttps://127.0.0.1:5555に切り替えてみましたが、代わりにそこに移動し、さらに混乱を招くだけの他のいくつかのことを行ってみましたが、これまでのところ成功していません。
編集
早速の対応、ありがとうございました。以下のクレイグのピップリストと一致するようにライブラリを更新しました。場合によっては、1.1.1 ではなく gevent 1.1.2 などの新しいライブラリ バージョンに更新した可能性があります。また、Craig の提案に合わせて hello_internet 関数の署名を変更し、バインドされたアドレスを https から http に変更しました。
プラットフォームとエージェントを起動し、バインドされた IP を参照しようとすると、ブラウザーから「Internal Server Error」が表示され、プラットフォームから次のトレースバックが返されます。
volttron - BACnet ポイントのスクレイピング エラー (VOLTTRON)
BACnet Proxy および MasterDriver エージェントを実行すると、ERROR DURING SCRAPE (Class: object Code:unknownObject) が発生します。このエラーは、デバイス ID または構成ファイル (ポイント名を含む csv ファイル) が正しくないことを示していますか?