歡迎
這理是IRDB,開放的紅外線資料庫。
IRDB第一次正式上線於2015年6月8日,目前為Beta版。
IRDB的主要功能為提供一個讓使用者能公開分享紅外線訊號的儲存庫。
目前的遙控器大多是一個廠牌/型號對應到一個產牌/型號。同樣的功能沒辦法跨品牌進行操作。 這樣子的階段,我們把它定義成第一階段(Phase I)。
萬用遙控器的出現,使得我們得以把客廳多數的遙控器合而為一, 它的原理是將遙控器的紅外線碼儲存在萬用遙控器的晶片當中。 然而對於較少見的設備,從國外平行輸入(水貨)的設備,這類型的解決方案就顯得有點無力了。 這樣子的階段,我們把它定義成第二階段(Phase II)
接著出現了APP型態的遙控器,這類型的遙控器通常具有學習能力, 因此無論是多罕見的設備都可以進行學習。 一旦搭配了Wifi紅外線發射器之後,更是可以達成在家中數公里外遙控設備的使用情境。 這樣子的階段,我們把它定義成第三階段(Phase III)。 然而APP本身碼庫的大小以及學習的複雜度,成了第三階段的阻礙。
IRDB主要針對這個問題提供了一個公有的碼庫,並且採用與維基百科相同的CC BY-SA 3.0的授權方式, 期許APP或者是硬體應用開發者能夠活用IRDB來完成改變世界的應用!


目前我們正打算進行開源的紅外線控制器的群眾募資,如果有興趣參與這個計畫的話請填寫問卷給我們一些意見:
https://www.surveycake.com/s/m87Xq
使用方式 (給工程師的)
紅外線的編碼格式參照IRKit的格式進行編碼, 然而On到Off以及Off到On的部分是以 1 Mhz,也就是 1 us 的週期表示。 在使用上請特別注意。
若以
{"format":"raw","freq":38,"data":[1200, 400, 1200, 400, 400, 1200, 1200, 400, 1200, 400, 400, 1200, 1200, 400, 400, 1200, 400, 1200, 400, 1200, 400, 1200, 400, 7625]}
為例,代表的意義如下列所示:
format 目前只有"raw"
freq 紅外線信號的載波頻率,以kHz表示
data 紅外線信號的載波On/Off切換的週期。這邊以1MHz進行計數。
Key Description
瀏覽紅外線碼
瀏覽紅外線碼除了使用左方廠牌列表進行以外,您也可以透過 CURL 下載 JSON 格式的廠牌列表、型號列表以及紅外線列表。 用最簡單的方法來表示的話,那就是在每個 URL 的請求附上
Accept: application/json
的標頭即可。
取得廠牌列表 以下是取得廠牌列表的範例
POST /device HTTP/1.1
Host: irdb.tih.tw
Cache-Control: no-cache
Accept: application/json

{"success":true,"data":{"brandList":[{"name":"waldens","display":"\u5feb\u53ef\u63db","created_at":"-0001-11-30 00:00:00","updated_at":"-0001-11-30 00:00:00"}]}}
            

在data當中,brandList 代表的是我們要的品牌列表
name 是這個品牌的 id,需要透過它來查詢下一階段的型號列表
display 是顯示用的名字,這個名字請用來顯示即可,他可能在未來發生變動
created_at 以及 updated_at 請先不要理會他
如果是使用curl 的話可以透過
curl 'https://irdb.tih.tw/device' -H 'Accept: application/json'
            
獲得同等的效果
取得型號列表 再來是是取得型號列表的範例
POST /device/NEW_WIDE_TECH HTTP/1.1
Host: irdb.tih.tw
Cache-Control: no-cache
Accept: application/json

{"success":true,"data":{"brand":{"name":"NEW_WIDE_TECH","display":"\u5a01\u6280","created_at":"0000-00-00 00:00:00","updated_at":"0000-00-00 00:00:00"},"devices":[{"id":30,"brand":"NEW_WIDE_TECH","model":"dehumidifier","display":"\u9664\u6fd5\u6a5f","type":0,"deleted_at":null,"created_at":"0000-00-00 00:00:00","updated_at":"0000-00-00 00:00:00"}],"keywords":[{"name":"NEW_WIDE_TECH","key":"\u5a01\u6280"}]}}
            

在data當中,brand 代表的是我們要的品牌資訊,主要是他的顯示名稱
devices 則是這個品牌下現有的設備列表
id 是這個設備的 id,在從紅外線碼回查所屬設備時會用到,平時可以忽略他
brand 是這個品牌對應的設備名稱
model 是這個設備的型號,如果要取得某型號支援的紅外線碼列表要使用這個值
display 是顯示用的名字,這個名字請用來顯示即可,他可能在未來發生變動
type 目前沒有被使用,請暫時忽略他,未來有可能表示這個設備的類別,也有可能都不會被用上。
created_at 以及 updated_at 請先不要理會他
deleted_at 如果不是 null 的話代表這個型號已經被 Soft Delete 了
keywords 代表這個型號可能還被稱作什麼名字,Key是名字的部分
如果是使用curl 的話可以透過
curl 'https://irdb.tih.tw/device/NEW_WIDE_TECH' -H 'Accept: application/json'
            
獲得同等的效果
取得功能碼列表 再來是是取得型號下功能碼也就是紅外線碼列表的範例
POST /device/NEW_WIDE_TECH/dehumidifier HTTP/1.1
Host: irdb.tih.tw
Cache-Control: no-cache
Accept: application/json

{"success":true,"data":{"codeList":[{"id":700,"device_id":"30","function_code":"power","code":"{\"format\":\"raw\",\"freq\":37.735,\"data\":[8475,4325,500,550,525,550,550,525,525,525,550,525,550,1600,550,525,550,525,525,1625,550,1600,525,1625,525,1625,525,1575,550,525,550,1600,550,1600,525,550,550,1600,525,550,525,550,550,525,525,525,550,525,550,550,500,1600,550,525,525,1625,550,1600,525,1625,525,1625,525,1575,550,1625,525,38150,8500,2150,525,91900,8500,2125,550,91875]}","author":"anonymous","rank":3.2,"deleted_at":null,"created_at":"0000-00-00 00:00:00","updated_at":"0000-00-00 00:00:00"}]}}
            

在data當中,codeList 代表的是我們要的紅外線碼列表
id 是這個紅外線碼的id, 接下來要讓設備可以快速下載這個紅外線碼建議透過這個id
device_id 是這個紅外線碼所屬的設備型號id
function_code 是這個紅外線碼上傳者給他的功能名字
code 是紅外線碼本身,採用 IRKit 上的格式
author 是上傳時的署名,目前還不支援。
rank 是其他人測試後這個紅外線碼可用性的評分,目前還不支援。
deleted_at 如果不是 null 的話代表這個紅外線碼已經被 Soft Delete 了
如果是使用curl 的話可以透過
curl 'https://irdb.tih.tw/device/NEW_WIDE_TECH/dehumidifier' -H 'Accept: application/json'
            
獲得同等的效果
單純下載紅外線碼 這組API並不需要在 Header 的部分 範例:
POST /api/getCodeById/700 HTTP/1.1
Host: irdb.tih.tw
Cache-Control: no-cache

{"format":"raw","freq":37.735,"data":[8475,4325,500,550,525,550,550,525,525,525,550,525,550,1600,550,525,550,525,525,1625,550,1600,525,1625,525,1625,525,1575,550,525,550,1600,550,1600,525,550,550,1600,525,550,525,550,550,525,525,525,550,525,550,550,500,1600,550,525,525,1625,550,1600,525,1625,525,1625,525,1575,550,1625,525,38150,8500,2150,525,91900,8500,2125,550,91875]}
這個API和用型號取得列表的差異在於少解一層JSON
如果是使用curl 的話可以透過
curl 'https://irdb.tih.tw/api/getCodeById/700'
            
獲得同等的效果
上傳紅外線碼
由於搜尋功能目前尚未完成,請從廠牌列表點選設備。
假如找不到對應的設備時,請點擊左方的新增設備。
此時會看到「廠牌名稱」、「廠牌代號」、「型號名稱」以及「型號代號」四個欄位。
廠牌名稱指的是這個廠牌的官方名稱,這部分請以以下順位進行填寫。
  1. 台灣公司官方網站的字樣,例如「SONY」而非「索尼」、「SAMSUNG」而非「三星」
  2. 產品本身Logo字樣
  3. 公司登記名稱
廠牌代號是指這個產牌在URL上面的代號,原則上這是唯一的。
這部分請以廠牌名稱轉小寫填寫
型號名稱請填寫該產品的型號
型號代號請填寫該產品名稱小寫
原則上通一廠牌內型號代號不重覆。
完成了對應的設備之後即可到對應的設備頁面上傳紅外線碼。 紅外線碼API上傳
POST /api/addCode
資料部分是以純JSON傳送,欄位說明如下:
  1. device_id: 設備編號,請由 getDevice API取得
  2. function_code: 功能代碼,自訂,用以辨識該紅外線代碼之功能。
  3. code: 紅外線碼
範例:
POST /api/addCode HTTP/1.1
Host: irdb.tih.tw
Cache-Control: no-cache

{"device_id":"1","function_code":"test","code":"{\"format\":\"raw\",\"freq\":38,\"data\":[1200, 400, 1200, 400, 400, 1200, 1200, 400, 1200, 400, 400, 1200, 1200, 400, 400, 1200, 400, 1200, 400, 1200, 400, 1200, 400, 7625]}"}
            
新增廠牌
POST /api/addDevice
資料部分是以純JSON傳送,欄位說明如下:
  1. brandDisplay: 設備顯示名稱
  2. brandName: 廠牌編號
  3. modelDisplay: 型號顯示名稱
  4. modelName: 型號編號
範例:
POST /api/addDevice HTTP/1.1
Host: www.tih.tw
Cache-Control: no-cache

{"brandDisplay":"Pansonic","brandName":"pansonic","modelDisplay":"N2QAYB000845","modelName":"n2qayb000845"}

Q & A IRDB目前由TIH進行維護,如過對這個專案有興趣,歡迎到 IRDB FB 群組和我們進行討論
如果有任何問題或指教,歡迎寄信到 service_at_tih.tw 反映。