Featured image of post NatureRemoでYamazen扇風機ON/OFF分けて送信

NatureRemoでYamazen扇風機ON/OFF分けて送信

前回の記事のSony Braviaに続き、夏の必需品、扇風機も制御したいと思い立ちました。世の中ってトグルボタンのリモコンばかりですね。。こんなにトグルボタンを意識したのは人生で初めてです。問題はYamazenの情報が全くないことです。Sonyには情報があったので幸せでした。先人がいるって本当素晴らしい事です。ちなみに結論から先に書きますと、ON/OFFをわける機能コードは見つけられませんでした。

リモコンデータを取得して変更して送り直すよー

扇風機のON/OFFデータを取得

これはBraviaと一緒ですので、方法は省略して取得したデータは以下です。

1
{"format":"us","freq":37,"data":[8958,4545,526,596,524,1732,524,1732,526,599,523,596,526,599,525,598,527,608,525,1733,524,1733,524,603,522,596,527,601,521,1733,525,602,522,1742,529,1729,526,1736,524,1734,524,1734,525,1732,526,598,524,598,531,605,522,598,527,599,526,601,521,597,525,599,526,1732,526,1738,522,1738,526,42149,8960,2294,537,65535,0,30745,8957,2301,524]}


これをまたこちらのサイト(赤外線学習リモコンの信号定義データの合成/家製協フォーマット編)の以下を元に解析してみます。

リーダー部

ON(8T)→OFF(4T) Tは0.35〜0.5msと規定されている。典型的には中央値0.425msを使用する。

データ部

3バイト以上・任意バイト数の送信データ。各バイトはLSB first。 データ「0」は ON(1T)→OFF(1T) データ「1」は ON(1T)→OFF(3T) なお、データの内容は

1〜2バイト目がカスタムコード (ベンダー/機器の識別) 3バイト目以降がデータコード (コマンド等) コードの具体的な値は後述。

トレーラー部

ON(1T)→OFF(nn) nnは8ms以上と規定されている。Panasonic製デジタルチューナー付属のリモコンの場合は約75ms。

データを解析していきます

以下を使って0と1に変換していきます。

1
1.1T=0.5ms*2.5MHz
2.データ「0」は ON(1T)→OFF(1T)
 データ「1」は ON(1T)→OFF(3T)
3.2→16進数変換 

電源1.計算2.計算3.計算
895818
45459
5261
59610
5241
173231
5241
173231
5261
599106
5231
59610
5261
59910
5251
59810
5271
608100
5251
173331
5241
173331
5241
60310
5221
596103
5271
60110
5211
173331
5251
60210
5221
174231A
5291
172931
5261
173631
5241
173431
5241
173431F
5251
173231
5261
59810
5241
59810
5311
605101
5221
59810
5271
59910
5261
60110
5211
597100
5251
59910
5261
173231
5261
173831
5221
173831E
5261
42149840

電源ON/OFF以外のデータもみてみると、0x1Fの部分が機能コードのようです。他のボタンも調べたところ以下のように取れました。

1
0x1F:電源ON/OFF
0x1E:リズム
0x1D:風量
0x1C:タイマー


機能コードを探す

ソニーよりデータは短くて解析はとても楽だったのですが、問題は電源ON、電源OFFそれぞれの機能コードの情報が無い事です。探すとすれば0x00~0xFFの中のどこかにあるのか。もしくは無いのか。1つずつ256パターン探さないといけません。えぇ・・・256回かぁ。とても手動でやれる回数ではないので、プログラムにて探す事にしました。1回しか使わないんですけど。(超勿体ないぜ・・・涙)

node.jsを使って3秒ごとにNatureRemoに機能コードを書き換えて送信するプログラムです。1回しか使わないプログラムなので(しつこいネ)、汎用性は無視してますが、こんな感じで探して扇風機の反応をみます(笑)

\[code lang="js"\]

‘use strict’ const cron = require(‘cron’).CronJob;

const http = require(‘http’); const HOST = ‘192.168.0.3’; const PATH = ‘/messages’; const lirc0 = ‘530,530,’; const lirc1 = ‘530,1720,’;

var valnum = 0;

class InfraredInfo { static createJob() { return new InfraredInfo(); }

constructor() { const timeSignal = new cron({ cronTime: ‘*/3 * * * * *’, start: false, timeZone: ‘Asia/Tokyo’, onTick: () => { this.execInfraredInfo(); } });

timeSignal.start(); }

execInfraredInfo() {

valnum = valnum + 1;

if( valnum >= 28 && valnum <= 31){ return; } if( valnum >= 257 ){ console.log(’end end end’); return; }

var valStr = valnum.toString(2); var valStr2 = (“00000000”+valStr).slice(-8); console.log(valStr2); var chgArr = valStr2.split(""); var rvsArr = chgArr.reverse();

console.log(rvsArr);

var lircStr =""; for(var i=0; i<rvsArr.length; i++){ if( rvsArr

\[i\]

== ‘0’ ){ lircStr = lircStr + lirc0; }else{ lircStr = lircStr + lirc1; } } console.log(valnum); var lircData = ‘

\[' + '8958,4545,' + '526,596,524,1732,524,1732,526,599,' + '523,596,526,599,525,598,527,608,' + '525,1733,524,1733,524,603,522,596,' + '527,601,521,1733,525,602,522,1742,' + lircStr + '522,598,527,599,526,601,521,597,' + '525,599,526,1732,526,1738,522,1738,' + '526,42149,8960,' + '2294,537,65535,0,30745,8957,2301,524\]

’; var postDataStr = ‘{“format”:“us”,“freq”:37,“data”:’ + lircData + ‘}’; let options = { host: HOST, path: PATH, method: ‘POST’, headers: { ‘Content-Type’: ‘application/json’, ‘Content-Length’: postDataStr.length, ‘X-Requested-With’: ‘curl’ } }; let req = http.request(options, (res) => { console.log(‘STATUS: ’ + res.statusCode); console.log(‘HEADERS: ’ + JSON.stringify(res.headers)); res.setEncoding(‘utf8’); res.on(‘data’, (chunk) => { console.log(‘BODY: ’ + chunk); }); }); req.on(’error’, (e) => { console.log(‘problem with request: ’ + e.message); }); req.write(postDataStr); req.end();

} }

module.exports = InfraredInfo;

\[/code\]

という事で、待つこと数分、、全く扇風機は反応せず、残念ながら見つける事が出来ませんでした。

えー!!(ブーイング)

仕方ないじゃないか。。 でも機能コードを探すためだけに1回しか使わないプログラム(しつこい×2)を作ったんですよ。悲しすぎる。

さてどうしましょうか

さきほどAmazonにて赤外線リモコンコンセントをポチりましたよ。 これで解決するでしょう。あーあー。こういう事もありますよね。 誰か機能コード知っていたら教えて下さい。。

Licensed under CC BY-NC-SA 4.0
Hugo で構築されています。
テーマ StackJimmy によって設計されています。