Skip to content

Commit

Permalink
支持M1
Browse files Browse the repository at this point in the history
  • Loading branch information
神奇海螺 committed Oct 15, 2019
1 parent 330ac62 commit 39886f4
Show file tree
Hide file tree
Showing 95 changed files with 2,829 additions and 1,193 deletions.
4 changes: 2 additions & 2 deletions Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PODS:
- Alamofire (4.8.2)
- AMapFoundation-NO-IDFA (1.5.7)
- AMapLocation-NO-IDFA (2.6.2):
- AMapLocation-NO-IDFA (2.6.3):
- AMapFoundation-NO-IDFA (~> 1.4)
- Bitter (3.1.1)
- Charts (3.3.0):
Expand Down Expand Up @@ -62,7 +62,7 @@ SPEC REPOS:
SPEC CHECKSUMS:
Alamofire: ae5c501addb7afdbb13687d7f2f722c78734c2d3
AMapFoundation-NO-IDFA: 9088085827c831811bb0fd3afd96b99963a7cf71
AMapLocation-NO-IDFA: d7792c8c516f415e186f1bc25946f1a58ca6a583
AMapLocation-NO-IDFA: f22a480573aa18c521946f13d49521f042a7dca6
Bitter: 9a6aa16f2c4e4303720c441108581b27c400ec27
Charts: e0dd4cd8f257bccf98407b58183ddca8e8d5b578
CocoaAsyncSocket: eafaa68a7e0ec99ead0a7b35015e0bf25d2c8987
Expand Down
368 changes: 329 additions & 39 deletions TC1-NG.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

211 changes: 116 additions & 95 deletions TC1-NG/APIServiceManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class APIServiceManager: NSObject {
self.mqttClient?.transport = transport
self.mqttClient?.userName = device.username
self.mqttClient?.password = device.password
// self.mqttClient?.clientId = device.type_name + device.mac
// self.mqttClient?.clientId = device.type_name + device.mac
self.mqttClient?.delegate = self
MQTTLog.setLogLevel(.error)
self.mqttClient?.connect(connectHandler: { (error) in
Expand Down Expand Up @@ -159,6 +159,8 @@ extension APIServiceManager{
topic = "device/zdc1/" + self.deviceModel.mac + "/state"
case .A1:
topic = "device/za1/" + self.deviceModel.mac + "/state"
case .M1:
topic = "device/zm1/" + self.deviceModel.mac + "/state"
}
self.mqttClient?.subscribe(toTopic: topic, at: MQTTQosLevel.init(rawValue: UInt8(qos))!, subscribeHandler: { (error, tops) in
self.delegate?.DeviceServiceSubscribe(topics:[topic])
Expand All @@ -174,6 +176,8 @@ extension APIServiceManager{
topic = "device/zdc1/" + self.deviceModel.mac + "/state"
case .A1:
topic = "device/za1/" + self.deviceModel.mac + "/state"
case .M1:
topic = "device/zm1/" + self.deviceModel.mac + "/state"
}
self.mqttClient?.unsubscribeTopic(topic, unsubscribeHandler: { (error) in
self.delegate?.DeviceServiceUnSubscribe(topic: topic)
Expand All @@ -188,112 +192,129 @@ extension APIServiceManager{
print("publishMessage With UDP -> \(jsonString)")
}else{
if self.isConnect{
//新版本通讯协议 device/name/mac/set
var topic = String()
switch self.deviceModel.type {
case .TC1:
topic = "device/ztc1/set"
//这个版本号有点尴尬,,,v开头..取第一位数作为大版本号
if let version = self.deviceModel.version.replacingOccurrences(of: "v", with: "").components(separatedBy: ".").first, let iVersion = Int(version){
if iVersion >= 1{
print("新版协议")
topic = "device/ztc1/" + self.deviceModel.mac + "set"
}else{
print("旧版本协议")
topic = "device/ztc1/set"
}
}else{
topic = "device/ztc1/" + self.deviceModel.mac + "set"
}
case .DC1:
topic = "device/zdc1/set"
case .A1:
topic = "device/za1/" + self.deviceModel.mac + "/set"
case .M1:
topic = "device/zm1/" + self.deviceModel.mac + "/set"
}
self.mqttClient?.publishData(jsonString.data(using: .utf8)!, onTopic: topic, retain: true, qos: MQTTQosLevel.init(rawValue: UInt8(qos))!,publishHandler:{ (error) in
self.delegate?.DeviceServicePublish(messageId: 0)
})
print("publishMessage With MQTT -> \(jsonString)")
}
self.mqttClient?.publishData(jsonString.data(using: .utf8)!, onTopic: topic, retain: true, qos: MQTTQosLevel.init(rawValue: UInt8(qos))!,publishHandler:{ (error) in
self.delegate?.DeviceServicePublish(messageId: 0)
})
print("publishMessage With MQTT -> \(jsonString)")
}

}
}
func activateDevice(lock:String){
let cmd = ["mac":self.deviceModel.mac,"lock":lock]
self.publishMessage(cmd,qos: 1)
}
func switchTC1Device(state:Bool,index:Int){
var cmd = [String:Any]()
if state{
cmd = ["mac":self.deviceModel.mac,"plug_\(index)":["on":1]] as [String : Any]
}else{
cmd = ["mac":self.deviceModel.mac,"plug_\(index)":["on":0]] as [String : Any]
}
self.publishMessage(cmd,qos: 1)
}
func queryTask(index:Int){
let cmd = ["mac":self.deviceModel.mac,
"plug_\(index)":[
"name":nil,
"setting":[
"task_0":nil,
"task_1":nil,
"task_2":nil,
"task_3":nil,
"task_4":nil
]
]
] as [String : Any]
self.publishMessage(cmd,qos: 1)
}
func taskDevice(task:TCTask,index:Int,taskIndex:Int){
let cmd = ["mac":self.deviceModel.mac,
"plug_\(index)":[
"setting":[
"task_\(taskIndex)":[
"hour":task.hour,
"minute":task.minute,
"repeat":task.repeat,
"action":task.action,
"on":task.on
]
}

func activateDevice(lock:String){
let cmd = ["mac":self.deviceModel.mac,"lock":lock]
self.publishMessage(cmd,qos: 1)
}

func switchTC1Device(state:Bool,index:Int){
var cmd = [String:Any]()
if state{
cmd = ["mac":self.deviceModel.mac,"plug_\(index)":["on":1]] as [String : Any]
}else{
cmd = ["mac":self.deviceModel.mac,"plug_\(index)":["on":0]] as [String : Any]
}
self.publishMessage(cmd,qos: 1)
}

func queryTask(index:Int){
let cmd = ["mac":self.deviceModel.mac,
"plug_\(index)":[
"name":nil,
"setting":[
"task_0":nil,
"task_1":nil,
"task_2":nil,
"task_3":nil,
"task_4":nil
]
]
] as [String : Any]
self.publishMessage(cmd,qos: 1)
}

func taskDevice(task:TCTask,index:Int,taskIndex:Int){
let cmd = ["mac":self.deviceModel.mac,
"plug_\(index)":[
"setting":[
"task_\(taskIndex)":[
"hour":task.hour,
"minute":task.minute,
"repeat":task.repeat,
"action":task.action,
"on":task.on
]
]
] as [String : Any]
self.publishMessage(cmd,qos: 1)
}

func isDeviceActivate(){
let cmd2 = ["mac":self.deviceModel.mac,"lock":nil]
self.publishMessage(cmd2 as [String : Any],qos: 2)
}

func sendDeviceReportCmd(){
let cmd = ["cmd":"device report"]
self.publishMessage(cmd,qos: 2)
}

func getDeviceFullState(){
var cmd = [String:Any?]()
switch self.deviceModel.type {
case .TC1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"power":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil],
"plug_0":["setting":["name":nil]],
"plug_1":["setting":["name":nil]],
"plug_2":["setting":["name":nil]],
"plug_3":["setting":["name":nil]],
"plug_4":["setting":["name":nil]],
"plug_5":["setting":["name":nil]]
]
case .DC1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"power":nil,"voltage":nil,"current":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil],
"plug_0":["setting":["name":nil]],
"plug_1":["setting":["name":nil]],
"plug_2":["setting":["name":nil]],
"plug_3":["setting":["name":nil]]
]
case .A1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"on":nil,"speed":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil]
]
}
self.publishMessage(cmd as [String : Any],qos: 1)
self.sendDeviceReportCmd()
}
]
]
] as [String : Any]
self.publishMessage(cmd,qos: 1)
}

func isDeviceActivate(){
let cmd2 = ["mac":self.deviceModel.mac,"lock":nil]
self.publishMessage(cmd2 as [String : Any],qos: 2)
}

func sendDeviceReportCmd(){
let cmd = ["cmd":"device report"]
self.publishMessage(cmd,qos: 2)
}

func getDeviceFullState(){
var cmd = [String:Any?]()
switch self.deviceModel.type {
case .TC1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"power":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil],
"plug_0":["setting":["name":nil]],
"plug_1":["setting":["name":nil]],
"plug_2":["setting":["name":nil]],
"plug_3":["setting":["name":nil]],
"plug_4":["setting":["name":nil]],
"plug_5":["setting":["name":nil]]
]
case .DC1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"power":nil,"voltage":nil,"current":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil],
"plug_0":["setting":["name":nil]],
"plug_1":["setting":["name":nil]],
"plug_2":["setting":["name":nil]],
"plug_3":["setting":["name":nil]]
]
case .A1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"on":nil,"speed":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil]
]
case .M1:
cmd = ["name":nil,"mac":self.deviceModel.mac,"version":nil,"PM25":nil,"formaldehyde":nil,"temperature":nil,"humidity":nil,"brightness":nil,
"setting":["mqtt_uri":nil,"mqtt_port":nil,"mqtt_user":nil,"mqtt_password":nil]
]
}
self.publishMessage(cmd as [String : Any],qos: 1)
self.sendDeviceReportCmd()
}
}

extension APIServiceManager:MQTTSessionDelegate{
Expand Down
6 changes: 5 additions & 1 deletion TC1-NG/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@

import UIKit
import IQKeyboardManagerSwift
import AMapLocationKit
#if os(iOS)
import AMapFoundationKit
#endif

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate{
Expand All @@ -17,7 +19,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate{

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.enable = true
#if os(iOS)
AMapServices.shared().apiKey = "014e4cfa999171b4dce43fed1d7c8026"
#endif
return true
}

Expand Down
Loading

0 comments on commit 39886f4

Please sign in to comment.