Add support xiaomi chuangmi.camera.ipc019e

This commit is contained in:
Alex X
2026-01-20 20:51:40 +03:00
parent 2f9d138692
commit 8f68f80bff
+11 -7
View File
@@ -104,10 +104,11 @@ func (c *Client) ReadPacket() (hdr, payload []byte, err error) {
return return
} }
if c.key != nil { if c.key != nil {
switch hdr[0] { if c.model == ModelAqaraG2 && hdr[0] == tutk.CodecH265 {
case tutk.CodecH264, tutk.CodecH265:
payload, err = DecodeVideo(payload, c.key) payload, err = DecodeVideo(payload, c.key)
case tutk.CodecAACLATM: } else {
// ModelAqaraG2: audio AAC
// ModelIMILABA1: video HEVC, audio PCMA
payload, err = crypto.Decode(payload, c.key) payload, err = crypto.Decode(payload, c.key)
} }
} }
@@ -148,7 +149,7 @@ func (c *Client) StartMedia(video, audio string) error {
c.WriteCommandJSON(0x0704, `{}`), // don't know why c.WriteCommandJSON(0x0704, `{}`), // don't know why
) )
case ModelMijia: case ModelIMILABA1, ModelMijia:
// 0 - auto, 1 - low, 3 - hd // 0 - auto, 1 - low, 3 - hd
switch video { switch video {
case "", "hd": case "", "hd":
@@ -209,9 +210,10 @@ func (c *Client) StartMedia(video, audio string) error {
//if err := c.WriteCommand(0x100, data); err != nil { //if err := c.WriteCommand(0x100, data); err != nil {
// return err // return err
//} //}
return nil
} }
return nil return fmt.Errorf("xiaomi: unsupported model: %s", c.model)
} }
func (c *Client) StopMedia() error { func (c *Client) StopMedia() error {
@@ -250,15 +252,17 @@ func DecodeVideo(data, key []byte) ([]byte, error) {
const ( const (
ModelAqaraG2 = "lumi.camera.gwagl01" ModelAqaraG2 = "lumi.camera.gwagl01"
ModelIMILABA1 = "chuangmi.camera.ipc019e"
ModelLoockV1 = "loock.cateye.v01" ModelLoockV1 = "loock.cateye.v01"
ModelMijia = "chuangmi.camera.v2" // support miss format for new fw and legacy format for old fw
ModelXiaobai = "chuangmi.camera.xiaobai" ModelXiaobai = "chuangmi.camera.xiaobai"
ModelXiaofang = "isa.camera.isc5" ModelXiaofang = "isa.camera.isc5"
// ModelMijia support miss format for new fw and legacy format for old fw
ModelMijia = "chuangmi.camera.v2"
) )
func Supported(model string) bool { func Supported(model string) bool {
switch model { switch model {
case ModelAqaraG2, ModelLoockV1, ModelXiaobai, ModelXiaofang: case ModelAqaraG2, ModelIMILABA1, ModelLoockV1, ModelXiaobai, ModelXiaofang:
return true return true
} }
return false return false