私はopenhab 2.1をセットアップしており、httpバインディングを使用して、hueバインディングでは(まだ)利用できない追加データをhueブリッジから取得しています。私は主に、モーション センサーに組み込まれている光センサーと温度センサーに関心がありますが、ボタンの押下にも反応できるようにしたいと考えています (これはインタラクティブであるため、可能な限り遅延が少なくなります)。
そこで、http バインディングを使用してブリッジをポーリングすることにしました。
私は持っている:
hue.url=http://192.168.61.21/api/[KEY]/sensors/
hue.updateInterval=500
JS または JSONPATH 変換を使用して値を抽出しています。
私が抱えている問題はこれです:
私は簡単に行うことができます:
Number hue_dimmer_buttons_study_1 "Study Dimmer (last button)" { http="<[hue:500:JSONPATH($.16.state.buttonevent)]" }
Number hue_dimmer_scene_study_1 "Study Dimmer (current scene)" { http="<[hue:500:JSONPATH($.17.state.status)]" }
リスト全体から値を取得します。ただし、このような変換を実行して JSON から生の値を取得するか、追加の変換 (「true」を「ON」にマッピングし、1995 を 19.95 にマッピングするなど) しか実行できません。両方を実行することはできません。
また、とにかくすべてのセンサー状態を取得する場合は、同じ文字列からすべての値を取得することもできます。このため、私の唯一のオプションは、各センサーに対して (たとえば) getHueTemperature.js を 1 つ記述することです。
getHueTemperature14.js:
(function(i) {
return JSON.parse(input).14.state.temperature / 100;
})(input)
そして、次のようにします。
[...] { http="<[hue:500:JS(getHueTemperature14.js)]" }
次のように、抽出元の要素を渡して、すべてのセンサーに 1 つの変換を使用することはできません。
getHueTemperature.js:
(function(i) {
return JSON.parse(input)[element].state.temperature / 100;
})(input, element)
その後:
[...] { http="<[hue:500:JS(getHueTemperature.js,14)]" }
...または私はできますか?どんな助けでも大歓迎です。
ありがとう
.rm