2

私は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

4

0 に答える 0