ki
2021年6月14日 11時51分
お世話になっております。
木口と申します。
Armadillo-IoT G3でEnOceanのアドオンモジュールを追加して、
サンプルにあったCのプログラムを利用してEnoceanの受信プログラムを作成しております。
受信自体はできているのですが、同時に10のEnocean信号が送信された場合に
一つのEnOcean信号しか受信できず残りのEnocean信号はロストしてしまいます。
Armadillo-IoT G3でEnOceanおアドオンモジュールでは、同時に複数のEnocean信号を受信することはできないのでしょうか。
宜しくお願いいたします。
コメント
at_shinya.koga
アットマークテクノの古賀です。
木口さん(2021年6月14日 11時51分):
>Armadillo-IoT G3でEnOceanのアドオンモジュールを追加して、
>サンプルにあったCのプログラムを利用してEnoceanの受信プログラムを作成しております。
>受信自体はできているのですが、同時に10のEnocean信号が送信された場合に
>一つのEnOcean信号しか受信できず残りのEnocean信号はロストしてしまいます。
>Armadillo-IoT G3でEnOceanおアドオンモジュールでは、同時に複数のEnocean信号を受信することはできないのでしょうか。
確認ですが、「同時に10のEnocean信号が送信された場合」というのは、EnOcean デバイスが10個あり、それらが同時にテレグラムを送信した場合、ということでしょうか?もしそうである場合、「同時に10」ではなく、「同時に2」にした場合、どうなるでしょうか。
木口さん(2021年6月14日 15時33分):
>上記に補足ですが、プログラムは下記のURLのサンプル(serial_enocean_fixid.tar.gz)を利用しております
>https://armadillo.atmark-techno.com/blog/615/1509
このサンプルを、そのまま(ソースコードの改変なしで)利用していらっしゃる場合、while ループ中の read() の戻り値が 0 より大きい場合に、読み出したバイト列、つまり read() の戻り値に等しい長さのバイト列の内容をログに出すように変えて受信内容を確認してみる、というのは、いかがでしょうか?つまり、EnOcean のテレグラムの解析処理で、最初のもの以外を読み捨ててしまっていないか、念のため確認してみては、いかがでしょうか。
なお、EnOcean のプロトコルである ERP2 の衝突回避スキームである、サブテレグラムタイミングの仕様を見ると、同時にテレグラムを送信する EnOcean デバイスの台数が増えるほど、衝突の確率が高くなり、受信できずにロストする可能性が上がるように思われます:
https://techweb.rohm.co.jp/iot/knowledge/iot04/s-iot04/03-s-iot04/4504
以上、直接の回答ではなく、恐縮ですが、ひとまずのコメントです。
ki
2021年6月14日 15時33分
上記に補足ですが、プログラムは下記のURLのサンプル(serial_enocean_fixid.tar.gz)を利用しております
https://armadillo.atmark-techno.com/blog/615/1509