parent
fa5cd5e337
commit
748c188d12
@ -0,0 +1,107 @@
|
|||||||
|
package mijia_go_sdk
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"mijia-go-sdk/model"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MiJia struct {
|
||||||
|
Certificate Authorize
|
||||||
|
HomeData Home
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewMiJia(Certificate Authorize) MiJia {
|
||||||
|
return MiJia{
|
||||||
|
Certificate: Certificate,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取设备列表
|
||||||
|
func (mi *MiJia) Devices() {
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"getVirtualModel": false,
|
||||||
|
"getHuamiDevices": 0,
|
||||||
|
}
|
||||||
|
PostData("/home/device_list", data, mi.Certificate)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取房间列表
|
||||||
|
func (mi *MiJia) Rooms() {
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"fg": false,
|
||||||
|
"fetch_share": true,
|
||||||
|
"fetch_share_dev": true,
|
||||||
|
"limit": 300,
|
||||||
|
"app_ver": 7,
|
||||||
|
}
|
||||||
|
jsonData := PostData("/v2/homeroom/gethome", data, mi.Certificate)
|
||||||
|
json.Unmarshal(jsonData, &mi.HomeData)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取场景列表
|
||||||
|
func (mi *MiJia) Scenes(roomIdx int) {
|
||||||
|
HomeId := mi.HomeData.Result.Homelist[roomIdx].Id
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"home_id": HomeId,
|
||||||
|
}
|
||||||
|
PostData("/appgateway/miot/appsceneservice/AppSceneService/GetSceneList", data, mi.Certificate)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据房间获取耗材列表
|
||||||
|
func (mi *MiJia) Consumables(roomIdx int) {
|
||||||
|
HomeId := mi.HomeData.Result.Homelist[roomIdx].Id
|
||||||
|
Homei, err := strconv.Atoi(HomeId)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"home_id": Homei,
|
||||||
|
"owner_id": mi.Certificate.UserId,
|
||||||
|
}
|
||||||
|
PostData("/v2/home/standard_consumable_items", data, mi.Certificate)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 执行场景
|
||||||
|
func (mi *MiJia) RunScene(SceneId string) {
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"scene_id": SceneId,
|
||||||
|
"trigger_key": "user.click",
|
||||||
|
}
|
||||||
|
PostData("/appgateway/miot/appsceneservice/AppSceneService/RunScene", data, mi.Certificate)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MiJia) GetDeviceVar(devs []map[string]interface{}) ([]model.DeviceVarResult, error) {
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"params": devs,
|
||||||
|
}
|
||||||
|
res := PostData("/miotspec/prop/get", data, mi.Certificate)
|
||||||
|
var Var model.DeviceVar
|
||||||
|
err := json.Unmarshal(res, &Var)
|
||||||
|
if err != nil {
|
||||||
|
return []model.DeviceVarResult{}, err
|
||||||
|
}
|
||||||
|
return Var.Result, nil
|
||||||
|
}
|
||||||
|
func (mi *MiJia) SetDeviceVar(devs []map[string]interface{}) {
|
||||||
|
data := map[string]interface{}{
|
||||||
|
"params": devs,
|
||||||
|
}
|
||||||
|
PostData("/miotspec/prop/set", data, mi.Certificate)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MiJia) RunAction(data map[string]interface{}) {
|
||||||
|
//uri = "/miotspec/action"
|
||||||
|
//params = dict(params={"did": self.device_id, "siid": sid, "piid": pid, "aiid": aid, "in": values})
|
||||||
|
//result = self.http_request(uri, params)
|
||||||
|
//request_code = result.get("code")
|
||||||
|
//if not request_code:
|
||||||
|
//data = result.get("result")
|
||||||
|
//code = result.get("code")
|
||||||
|
//if not code:
|
||||||
|
//return dict(code=0, msg="success", data=data)
|
||||||
|
//else:
|
||||||
|
//return dict(code=code, msg="error", data=dict())
|
||||||
|
//return dict(code=request_code, msg="request error", data=dict())
|
||||||
|
|
||||||
|
}
|
@ -1,46 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"mijia-go-sdk/api"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
user := "15542100924"
|
|
||||||
pwd := "1XAII@wsk"
|
|
||||||
result, _ := api.Login(user, pwd)
|
|
||||||
marshal, err := json.Marshal(result)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Mi := api.NewMiJia(result)
|
|
||||||
//Mi.Rooms()
|
|
||||||
//Mi.Devices()
|
|
||||||
//Mi.Scenes(0)
|
|
||||||
//Mi.RunScene("1784216758920822784")
|
|
||||||
|
|
||||||
var data []map[string]interface{}
|
|
||||||
|
|
||||||
data = append(data, map[string]interface{}{
|
|
||||||
"did": "538261193",
|
|
||||||
"siid": 2,
|
|
||||||
"piid": 1,
|
|
||||||
})
|
|
||||||
data = append(data, map[string]interface{}{
|
|
||||||
"did": "538261193",
|
|
||||||
"siid": 2,
|
|
||||||
"piid": 2,
|
|
||||||
})
|
|
||||||
data = append(data, map[string]interface{}{
|
|
||||||
"did": "538261193",
|
|
||||||
"siid": 2,
|
|
||||||
"piid": 3,
|
|
||||||
})
|
|
||||||
|
|
||||||
Mi.GetDeviceVar(data)
|
|
||||||
//Mi.Consumables(0)
|
|
||||||
//Mi.Scenes(0)
|
|
||||||
println(marshal)
|
|
||||||
fmt.Println(result)
|
|
||||||
}
|
|
@ -0,0 +1,59 @@
|
|||||||
|
package mijia_go_sdk
|
||||||
|
|
||||||
|
// 小米认证授权信息
|
||||||
|
type Authorize struct {
|
||||||
|
CUserId string `json:"cUserId"`
|
||||||
|
Code int `json:"code"`
|
||||||
|
DeviceId string `json:"deviceId"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
SecurityToken string `json:"securityToken"`
|
||||||
|
ServiceToken string `json:"serviceToken"`
|
||||||
|
Sid string `json:"sid"`
|
||||||
|
UserId int64 `json:"userId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HomeList struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Bssid string `json:"bssid"`
|
||||||
|
Dids []string `json:"dids"`
|
||||||
|
TempDids interface{} `json:"temp_dids"`
|
||||||
|
Icon string `json:"icon"`
|
||||||
|
Shareflag int `json:"shareflag"`
|
||||||
|
PermitLevel int `json:"permit_level"`
|
||||||
|
Status int `json:"status"`
|
||||||
|
Background string `json:"background"`
|
||||||
|
SmartRoomBackground string `json:"smart_room_background"`
|
||||||
|
Longitude float64 `json:"longitude"`
|
||||||
|
Latitude float64 `json:"latitude"`
|
||||||
|
CityId int `json:"city_id"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
CreateTime int `json:"create_time"`
|
||||||
|
Roomlist []RoomList
|
||||||
|
Uid int64 `json:"uid"`
|
||||||
|
AppearHomeList interface{} `json:"appear_home_list"`
|
||||||
|
PopupFlag int `json:"popup_flag"`
|
||||||
|
PopupTimeStamp int `json:"popup_time_stamp"`
|
||||||
|
CarDid string `json:"car_did"`
|
||||||
|
}
|
||||||
|
type RoomList struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Bssid string `json:"bssid"`
|
||||||
|
Parentid string `json:"parentid"`
|
||||||
|
Dids []string `json:"dids"`
|
||||||
|
Icon string `json:"icon"`
|
||||||
|
Background string `json:"background"`
|
||||||
|
Shareflag int `json:"shareflag"`
|
||||||
|
CreateTime int `json:"create_time"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Home struct {
|
||||||
|
Code int `json:"code"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
Result struct {
|
||||||
|
Homelist []HomeList `json:"homelist"`
|
||||||
|
HasMore bool `json:"has_more"`
|
||||||
|
MaxId string `json:"max_id"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
type T struct {
|
||||||
|
Code int `json:"code"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
Result struct {
|
||||||
|
List []struct {
|
||||||
|
Did string `json:"did"`
|
||||||
|
Token string `json:"token"`
|
||||||
|
Longitude string `json:"longitude"`
|
||||||
|
Latitude string `json:"latitude"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Pid string `json:"pid"`
|
||||||
|
Localip string `json:"localip"`
|
||||||
|
Mac string `json:"mac"`
|
||||||
|
Ssid string `json:"ssid"`
|
||||||
|
Bssid string `json:"bssid"`
|
||||||
|
ParentId string `json:"parent_id"`
|
||||||
|
ParentModel string `json:"parent_model"`
|
||||||
|
ShowMode int `json:"show_mode"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
AdminFlag int `json:"adminFlag"`
|
||||||
|
ShareFlag int `json:"shareFlag"`
|
||||||
|
PermitLevel int `json:"permitLevel"`
|
||||||
|
IsOnline bool `json:"isOnline"`
|
||||||
|
Desc string `json:"desc"`
|
||||||
|
Extra struct {
|
||||||
|
IsSetPincode int `json:"isSetPincode"`
|
||||||
|
PincodeType int `json:"pincodeType"`
|
||||||
|
FwVersion string `json:"fw_version,omitempty"`
|
||||||
|
NeedVerifyCode int `json:"needVerifyCode,omitempty"`
|
||||||
|
IsPasswordEncrypt int `json:"isPasswordEncrypt,omitempty"`
|
||||||
|
McuVersion string `json:"mcu_version,omitempty"`
|
||||||
|
Platform string `json:"platform,omitempty"`
|
||||||
|
} `json:"extra"`
|
||||||
|
Uid int64 `json:"uid"`
|
||||||
|
PdId int `json:"pd_id"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
P2PId string `json:"p2p_id"`
|
||||||
|
Rssi int `json:"rssi"`
|
||||||
|
FamilyId int `json:"family_id"`
|
||||||
|
ResetFlag int `json:"reset_flag"`
|
||||||
|
Prop struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
} `json:"prop,omitempty"`
|
||||||
|
Owner struct {
|
||||||
|
Userid int `json:"userid"`
|
||||||
|
Nickname string `json:"nickname"`
|
||||||
|
Icon interface{} `json:"icon"`
|
||||||
|
} `json:"owner,omitempty"`
|
||||||
|
} `json:"list"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
type DeviceVar struct {
|
||||||
|
Code int `json:"code"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
Result []DeviceVarResult `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeviceVarResult struct {
|
||||||
|
Did string `json:"did"`
|
||||||
|
Iid string `json:"iid"`
|
||||||
|
Siid int `json:"siid"`
|
||||||
|
Piid int `json:"piid"`
|
||||||
|
Value interface{} `json:"value"`
|
||||||
|
Code int `json:"code"`
|
||||||
|
UpdateTime int `json:"updateTime"`
|
||||||
|
ExeTime int `json:"exe_time"`
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"mijia-go-sdk"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_login(t *testing.T) {
|
||||||
|
|
||||||
|
user := "15542100924"
|
||||||
|
pwd := "1XAII@wsk"
|
||||||
|
result, _ := mijia_go_sdk.Login(user, pwd)
|
||||||
|
_, err := json.Marshal(result)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Mi := mijia_go_sdk.NewMiJia(result)
|
||||||
|
//Mi.Rooms()
|
||||||
|
Mi.Devices()
|
||||||
|
//Mi.Scenes(0)
|
||||||
|
//Mi.RunScene("1784216758920822784")
|
||||||
|
|
||||||
|
var data []map[string]interface{}
|
||||||
|
|
||||||
|
data = append(data, map[string]interface{}{
|
||||||
|
"did": "740885802",
|
||||||
|
"siid": 9,
|
||||||
|
"piid": 1,
|
||||||
|
})
|
||||||
|
data = append(data, map[string]interface{}{
|
||||||
|
"did": "740885802",
|
||||||
|
"siid": 9,
|
||||||
|
"piid": 2,
|
||||||
|
})
|
||||||
|
|
||||||
|
deviceVar, err := Mi.GetDeviceVar(data)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, v := range deviceVar {
|
||||||
|
fmt.Printf("%f", v.Value)
|
||||||
|
}
|
||||||
|
time.Sleep(10 * time.Second)
|
||||||
|
//Mi.Consumables(0)
|
||||||
|
//Mi.Scenes(0)
|
||||||
|
}
|
Loading…
Reference in New Issue