w3c / wot-jp-cg

W3C Web of Things Japanese Community Group
https://wot-jp-cg.netlify.app/
Other
9 stars 10 forks source link

myCobot 280(Python APIのWoT化)サンプル追加の提案 #35

Closed hidessy closed 2 years ago

hidessy commented 2 years ago

先日、既存のAPIのあるデバイスをWoT化する例として、Hue White Lightのサンプルを追加させていただきました。 次に、Python APIをWoT 化する例として、myCobot 280を用いたサンプルを追加したいと考えています。

Python APIをWoT 化するためのツールやライブラリに関してですが、WebThings Librariesのwebthing-pythonや、WoTランタイム実装としてWoTPyが使えるのではないかと考えています。 一方で、WebThings(旧Mozilla WebThings)ですが、W3C仕様と異なる箇所もございます。 そこで、サンプルとしては、WoT仕様に従ったWoTPyを使用してサンプルの説明を進めていくとともに、webthing-pythonについては言及にとどめておくか、軽い説明を書いていきたいと思います。

Python APIのWoT化するためのライブラリやツール、説明の進め方など何かございましたらコメントをいただけますと幸いです。 問題なければ今後、サンプルの作成やPull Requestとしての提案を進めていきたいと思います。 よろしくお願いいたします。

k-toumura commented 2 years ago

提案ありがとうございます。

Python APIはこれでしょうか。MDIモードでの操作をpropertyとして抽象化、JOGモードでの操作をactionとして抽象化するとちょうどproperty, actionの説明にちょうどいいのかもしれません。

また、PlugfestなどでもWoTPyを使っている例をあまり見かけないので、このサンプルで使い方がわかると個人的にもうれしいです。

Thingだけでなく、Consumerのサンプルも作って何らかの意味のある動きができるとさらに面白いと思いますが、ちょっと大変でしょうか?

dynamis commented 2 years ago

Thingだけでなく、Consumerのサンプルも作って何らかの意味のある動きができるとさらに面白い

ですね。Consumer含めて定義していけないかとか、WoTなのだから個別機材の操作をWoT化するのに閉じず、複数プラットフォーム間の連携を図ることを含めて自然とWoTの役割や範囲が分かるようにサンプル作り、デモなどまでして行ければベストだが果たしてどんな使い方や連携が面白いか悩ましいねと言いつつまずはここからと作ってるのが現状なので、どんな Consumer 面白いかなどのゴイケンゴヨウボウモ募集中です!

PlugfestなどでもWoTPyを使っている例をあまり見かけない

サンプルとして貴重なら英語圏にも発信していきたいですねぇ。

因みに plugfest では WoTPy 使わないと言いますが逆に何を使われるのでしょう?plugfest のこれもサンプルとして紹介すると良いとか良くある実装パターンとかがあるならそれも何らかの形でま整理したり言及したりしたいところです。

(少しissueから脱線してますが全体の流れとその中での位置づけ含めて検討しつつの提案なので)

k-toumura commented 2 years ago

因みに plugfest では WoTPy 使わないと言いますが逆に何を使われるのでしょう?

標準化メンバが多数かかわっているnode-wotベースのものが多いようにみえます。WoT Scripting-APIの事実上のリファレンス実装といってよいかと。

dynamis commented 2 years ago

やはり基本 node-wot ですかぁ。node-wot ばかりだと Web だからって JS (やhttp)メインで他がおざなり感が出てしまいそうな気がするので python とか他のライブラリや実例もあるよって見せていきたい、そういう意味でこの例は良い位置付けになれるはず!

chachamimm commented 2 years ago

node-wotはWoT WG/IGのScripting APIのTFで検討されていた関係もあるし、できるかぎり検討中の機能も実装されているのでPlugFestでは使いやすくなってます。一方、WoTPyは使ってないというか、使う人がいないという感じですね。

ただ、node-wot、WoTPyについてどこかにチュートリアルを書いておくべきかなと思います。ただ、真面目に追いかけると、更新があるので、少し面倒かもしれません。

dynamis commented 2 years ago

できるかぎり検討中の機能も実装されているのでPlugFestでは使いやすくなってます

そうですよね、仕様自体がまだまだ変わる・追加される中で追従して実装しているのは node-wot だけという状態ですものね。実際実用化されていくときに node だけでは

node-wot、WoTPyについてどこかにチュートリアルを書いておくべきかなと思います。

(どういう仕様があるのかという話と共に) どういうライブラリがあるかという簡単な紹介はしないとなと考えているのですが、ライブラリの使い方について何処まで踏み込むものを (公式の説明の他に) 用意するのかは迷いがある状況です。取りあえず少しずつコンテンツの追加をしていく中でまたツッコミご意見お願いします。

hidessy commented 2 years ago

遅くなりましたが、先ほど #40 にてロボットアーム myCobot 280の提案をさせていただきました。 Python API を用いて、Property でサーボモータの角度の取得(get_angles())、Action でサーボモータの操作(send_angles(degrees, speed), release_all_servos())を行なっています。

Consumerのサンプルについてですが、今後、複数の機器を連携したデモの実装を進めていく際に、合わせて考えていきたいと思います。

よろしくお願いいたします。

dynamis commented 2 years ago

デプロイプレビュー で読んでみて、概ね良いと思うのですが細かなところでコメントです:

k-toumura commented 2 years ago

PRありがとうございます。PRとissueのどちらにコメントしようか迷いましたが、こちらで議論が進んでいるのでこちらにコメントします。

dynamis commented 2 years ago

comment by 芦村さん:

API そのままの例だけではなく「右で掴んで左に持って行って話す」といった実用的な使い方に合わせたサンプルコードも欲しい。

これについては一旦マージした後でも、デモを作った後に実コードサンプルを追加すれば良いかと思いました。

dynamis commented 2 years ago

使用例のところに実際にcurlコマンドで動かしているところの動画があるとイメージが掴みやすいとおもいます。もし撮影できそうであれば是非お願いします。

動画は撮っていたと思いますし、全部じゃないにしても 1-2 つは何処かに動画を入れてイメージ伝わる感じにしましょう。これは現状の curl コマンド一つだけのものでもいいし、後日いくつかのコマンドを連続して叩いたデモっぽいものにを追加するのもアリだと思います > @hidessy

サンプルコードもw3c/wot-jp-cg内においた方が良いでしょうか? 皆様のご意見をお聞かせください。

wotify に掲載されていた Hue のサンプルなど単独別リポジトリにあるものを参照しているのと、取りあえずどこかに置かなければならないので担当エンジニアの個人リポジトリにおいてリンクさせていますが、本リポジトリ内に置くべきであればそのようにもできます (ただ、随時ガンガンコードを入れていくのに PR 立ててマージというのは少し面倒なので落ち着いてから移行させる方が楽にはなります)。

k-toumura commented 2 years ago

myCobot 280(Python APIのWoT化)サンプル追加に関しては、#40 , #43 で完了していますので、一旦このissueはcloseさせていただきます。