hlwlzblamp.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. package protocol
  2. import (
  3. "fmt"
  4. "lc/common/util"
  5. "strconv"
  6. "time"
  7. "github.com/google/uuid"
  8. )
  9. const (
  10. electricOverloadAlarm = 10001 //电流过载故障
  11. underVoltageAlarm = 10002 //欠压故障
  12. overVoltageAlarm = 10003 //过压故障
  13. leakageAlarm = 10004 //漏电故障
  14. slantAlarm = 10005 //终端倾斜故障(带倾斜传感器的控制器需定制)
  15. powerFactorAlarm = 10006 //功率因数故障
  16. )
  17. const (
  18. Apikey = "05b9cdff196d746709bc308bcf2c46af"
  19. //msgType
  20. MT_TURNON = "turnon"
  21. MT_TURNOFF = "turnoff"
  22. MT_DIMMER = "dimmer" //调光
  23. MT_STRATEGY = "strategy"
  24. MT_CLEARSTRATEGY = "clearStrategy"
  25. MT_REPORTFREQUENCY = "ReportFrequency" //上行
  26. MT_REPORT = "report"
  27. MT_SEARCHINFO = "searchInfo"
  28. MT_ONLINE = "online"
  29. MT_OFFLINE = "offline"
  30. MT_ALARM = "alarm"
  31. MT_ADD = "add" //控制器类型指定为add(增加单灯)/update(修改单灯)/delete(删除单灯)
  32. MT_UPDATE = "update"
  33. MT_DELETE = "delete"
  34. MT_CAMLightPARAM = "cameralightparam"
  35. // actionType为whole时,只关注masterSn;
  36. // actionType为multi时,只关注snGroup;
  37. //控制类型为whole(集控)/multi(多控,默认)
  38. AT_WHOLE = "whole"
  39. AT_MULTI = "multi"
  40. //lampStatus
  41. LS_ON = "on" //单灯状态上行
  42. LS_OFF = "off"
  43. )
  44. type HLWLZB_Pack struct {
  45. MsgType string `json:"msgType,omitempty"`
  46. ActionType string `json:"actionType,omitempty"`
  47. MasterSn string `json:"masterSn"`
  48. }
  49. func (o *HLWLZB_Pack) DeCode(message string) error {
  50. return json.UnmarshalFromString(message, o)
  51. }
  52. //---------------------------------告警状态BEGIN-----------------------
  53. // { "snGroup": [ { "serialNumber": "00037F101219", // 集控序列号
  54. // "alarmStatus": 0, // 告警状态(0解除/1触发)
  55. // "alarmCode": "10001", // 告警码
  56. // "alarmValue": "220" // 电压值 },
  57. // { "serialNumber": "00037F101220",
  58. // "alarmStatus": 1,
  59. // "alarmCode": "10002",
  60. // "alarmValue": "270" // 电压值 },
  61. // ],"msgType": "alarm",
  62. // "ts": "1530755999",
  63. // "masterSn": "00037F101219", // 涉及到集控则必填,多个集控的单灯按多条信息发送
  64. // "uuid": "1ab4f7b75a044869bccdd193d4914772" }
  65. // 内嵌结构snGroup
  66. type SNGROUP_AS struct {
  67. serialNumber string `json:"serialNumber"`
  68. alarmStatus string `json:"alarmStatus"`
  69. alarmValue string `json:"alarmValue"`
  70. alarmCode string `json:"alarmCode"`
  71. }
  72. type HLWLZB_AlermStatus_Up struct {
  73. SnGroup []SNGROUP_AS `json:"snGroup"`
  74. Ts string `json:"ts"`
  75. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  76. Uuid string `json:"uuid"`
  77. }
  78. func (o *HLWLZB_AlermStatus_Up) DeCode(message string) error {
  79. return json.UnmarshalFromString(message, o)
  80. }
  81. // ---------------------------------告警状态END-----------------------
  82. // ---------------------------------灯具状态定时上报BEGIN-----------------------
  83. // 和查询上报数据包一样
  84. // ---------------------------------灯具状态定时上报END-----------------------
  85. // ---------------------------------查询灯具状态(集控方式)BEGIN-----------------------
  86. // { "apikey": "9af4d8381781baccb0f915e554f8798d",
  87. // "msgType": "searchInfo",
  88. //
  89. // "actionType": "whole",
  90. //
  91. // "ts": "1530755999",
  92. // "masterSn": "00037F101219", // 涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  93. //
  94. // "uuid": "12323a0239bccdd193d49231231231" }
  95. //
  96. // 查询灯具状态 集控示例
  97. type HLWLZB_QueryLampStatus struct {
  98. Apikey string `json:"apikey"`
  99. MsgType string `json:"msgType"` //turnoff, dimmer
  100. ActionType string `json:"actionType"`
  101. Ts int64 `json:"ts"`
  102. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  103. Uuid string `json:"uuid"`
  104. }
  105. // 组包
  106. func (o *HLWLZB_QueryLampStatus) EnCode(id string) (string, error) {
  107. o.Apikey = Apikey
  108. o.MsgType = MT_SEARCHINFO
  109. o.ActionType = AT_WHOLE
  110. o.Ts = util.MlNow().Unix()
  111. o.MasterSn = id
  112. o.Uuid = uuid.New().String()
  113. return json.MarshalToString(o)
  114. }
  115. // { "actionType": "whole",
  116. //
  117. // "errorCode": "0", // 0表示命令接收成功
  118. //
  119. // "masterSn": "00037F101219",
  120. // "msgType": "searchInfo",
  121. //
  122. // "ts": "1634993991",
  123. //
  124. // "uuid": "12218701-506a-42219-a455-c11111b2" }
  125. // 查询灯具状态 ack 集控示例
  126. type HLWLZB_QueryLampStatus_Ack struct {
  127. ErrorCode int16 `json:"errorCode"`
  128. MsgType string `json:"msgType"`
  129. ActionType string `json:"actionType"`
  130. Ts int64 `json:"ts"`
  131. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  132. Uuid string `json:"uuid"`
  133. }
  134. func (o *HLWLZB_QueryLampStatus_Ack) DeCode(message string) error {
  135. return json.UnmarshalFromString(message, o)
  136. }
  137. // "snGroup": [ { "serialNumber": "00037F101219", // 集控序列号
  138. //
  139. // "lux": "100.0", // 调光值(单位:百分比)
  140. // "voltage": "237.0", // 电压(单位:伏)
  141. // "electricity": "0.45", // 电流(单位:安)
  142. // "power": "100", // 功率(单位:瓦)
  143. // "powerFactor": "0.94", // 功率因数
  144. // "energy": "100.0", // 总能耗(单位:千瓦时)
  145. // "lampStatus": "on" //灯具状态(on/off) },
  146. // { "serialNumber": "00037F101220", // 单控序列号
  147. // "lux": "100.0",
  148. // "voltage": "237.0",
  149. // "electricity": "0.45",
  150. // "power": "100",
  151. // "powerFactor": "0.94",
  152. // "energy": "100.0",
  153. // "lampStatus": "on" }...... ],
  154. //
  155. // 内嵌结构snGroup
  156. type SNGROUP_QLS struct {
  157. StateError
  158. SerialNumber string `json:"serialNumber"`
  159. Lux string `json:"lux"`
  160. Voltage string `json:"voltage"`
  161. Electricity string `json:"electricity"`
  162. Power string `json:"power"`
  163. PowerFactor string `json:"powerFactor"`
  164. Energy string `json:"energy"`
  165. LampStatus string `json:"lampStatus"`
  166. }
  167. // { "masterSn": "00037F101219",
  168. //
  169. // "msgType": "report",
  170. //
  171. // "snGroup": [ { "serialNumber": "00037F101219", // 集控序列号
  172. //
  173. // "lux": "100.0", // 调光值(单位:百分比)
  174. // "voltage": "237.0", // 电压(单位:伏)
  175. // "electricity": "0.45", // 电流(单位:安)
  176. // "power": "100", // 功率(单位:瓦)
  177. // "powerFactor": "0.94", // 功率因数
  178. // "energy": "100.0", // 总能耗(单位:千瓦时)
  179. // "lampStatus": "on" //灯具状态(on/off) },
  180. // { "serialNumber": "00037F101220", // 单控序列号
  181. // "voltage": "237.0",
  182. // "electricity": "0.45",
  183. // "power": "100",
  184. // "powerFactor": "0.94",
  185. // "energy": "100.0",
  186. // "lampStatus": "on" }...... ],
  187. // "ts": "1631953995",
  188. // "uuid": "112301-506a-4489-a455-c5123fccb3" }
  189. //
  190. // 查询灯具返回数据,包括能源信息 集控示例
  191. type HLWLZB_QueryLampStatus_Back struct {
  192. MsgType string `json:"msgType"`
  193. SnGroup []SNGROUP_QLS `json:"snGroup"`
  194. Ts string `json:"ts"`
  195. MasterSn string `json:"masterSn"`
  196. Uuid string `json:"uuid"`
  197. }
  198. func (o *HLWLZB_QueryLampStatus_Back) DeCode(message string) error {
  199. return json.UnmarshalFromString(message, o)
  200. }
  201. //---------------------------------查询灯具状态(集控方式)END-----------------------
  202. // ---------------------------------手动开/关灯 BEGIN-----------------------
  203. type SNGROUP struct {
  204. SerialNumber string `json:"serialNumber"`
  205. }
  206. // 手动开/关灯 多控
  207. type HLWLZB_Switch struct {
  208. Apikey string `json:"apikey"`
  209. SnGroup []SNGROUP `json:"snGroup"`
  210. MsgType string `json:"msgType"` //turnoff, dimmer
  211. ActionType string `json:"actionType"`
  212. Lux uint8 `json:"lux"` //调光值,仅在dimmer时有效
  213. Ts int64 `json:"ts"`
  214. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  215. Uuid string `json:"uuid"`
  216. }
  217. // 组包 1开,0关
  218. func (o *HLWLZB_Switch) EnCode(id, gid string, seq uint64, Switch, brightness uint8,
  219. recovery uint, lampIDs []uint32) (string, error) {
  220. o.Apikey = Apikey
  221. o.SnGroup = append(o.SnGroup, SNGROUP{SerialNumber: id})
  222. o.ActionType = AT_MULTI
  223. o.Lux = brightness
  224. o.Ts = util.MlNow().Unix()
  225. o.MasterSn = id
  226. o.Uuid = uuid.New().String()
  227. if Switch == 1 {
  228. if brightness > 0 {
  229. o.MsgType = MT_DIMMER
  230. } else {
  231. o.MsgType = MT_TURNON
  232. }
  233. } else if Switch == 0 {
  234. o.MsgType = MT_TURNOFF
  235. }
  236. return json.MarshalToString(o)
  237. }
  238. // { "apikey": "9af4d8381781baccb0f915e554f8798d",
  239. // "msgType": "turnon", // turnoff, dimmer
  240. // "actionType": "whole",
  241. // "lux": "80", // 调光值,仅在dimmer时有效
  242. // "ts": "1530755999",
  243. // "masterSn": "00037F101219", // 涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  244. // "uuid": "1ab4f7b75a044869bccdd193d4914773" }
  245. // 手动开/关灯 集控
  246. type HLWLZB_Whole_Switch struct {
  247. Apikey string `json:"apikey"`
  248. MsgType string `json:"msgType"` //turnoff, dimmer
  249. ActionType string `json:"actionType"`
  250. Lux uint8 `json:"lux"` //调光值,仅在dimmer时有效
  251. Ts int64 `json:"ts"`
  252. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  253. Uuid string `json:"uuid"`
  254. }
  255. // 组包 1开,0关
  256. func (o *HLWLZB_Whole_Switch) EnCode(id, gid string, seq uint64, Switch, brightness uint8,
  257. recovery uint, lampIDs []uint32) (string, error) {
  258. o.Apikey = Apikey
  259. o.ActionType = AT_WHOLE
  260. o.Lux = brightness
  261. o.Ts = util.MlNow().Unix()
  262. o.MasterSn = id
  263. o.Uuid = uuid.New().String()
  264. if Switch == 1 {
  265. if brightness > 0 {
  266. o.MsgType = MT_DIMMER
  267. } else {
  268. o.MsgType = MT_TURNON
  269. }
  270. } else if Switch == 0 {
  271. o.MsgType = MT_TURNOFF
  272. }
  273. return json.MarshalToString(o)
  274. }
  275. // { "msgType": "turnon",
  276. // "actionType": "whole",
  277. // "lux": "80" // 仅在dimmer时有效
  278. // "errorCode": "0", // 控制状态失败返回对应错误码信息
  279. // "ts": "1530755999",
  280. // "masterSn": "00037F101219", // 涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  281. // "uuid": "1ab4f7b75a044869bccdd193d4914774" }
  282. // 集控方式
  283. type HLWLZB_Switch_Whole_Ack struct {
  284. MsgType string `json:"msgType"` //turnoff, dimmer
  285. ActionType string `json:"actionType"`
  286. Lux uint8 `json:"lux"` //调光值,仅在dimmer时有效
  287. ErrorCode int16 `json:"errorCode"`
  288. Ts string `json:"ts"`
  289. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  290. Uuid string `json:"uuid"`
  291. }
  292. func (o *HLWLZB_Switch_Whole_Ack) DeCode(message string) error {
  293. return json.UnmarshalFromString(message, o)
  294. }
  295. // { "snGroup":
  296. //
  297. // [ {"serialNumber": "00037F101219"},
  298. // {"serialNumber": "00037F101220"},
  299. // {"serialNumber": "00037F101221"}, ...... ],(必填)
  300. // "msgType": "turnon", // turnoff, dimmer
  301. // "actionType": "multi",
  302. // "lux": "80", // 仅在dimmer时有效
  303. // "errorCode": "0", // 控制状态失败返回对应错误码信息
  304. // "ts": "1530755999",
  305. // "masterSn": "00037F101219", // 涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  306. // "uuid": "1ab4f7b75a044869bccdd193d4914776" }
  307. //
  308. // 多控方式
  309. type HLWLZB_Switch_Multi_Ack struct {
  310. SnGroup []SNGROUP `json:"snGroup"`
  311. MsgType string `json:"msgType"` //turnoff, dimmer
  312. ActionType string `json:"actionType"`
  313. Lux uint8 `json:"lux"` //调光值,仅在dimmer时有效
  314. ErrorCode uint16 `json:"errorCode"`
  315. Ts string `json:"ts"`
  316. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  317. Uuid string `json:"uuid"`
  318. }
  319. func (o *HLWLZB_Switch_Multi_Ack) DeCode(message string) error {
  320. return json.UnmarshalFromString(message, o)
  321. }
  322. //---------------------------------手动开/关灯 END-----------------------
  323. type Pack_HLWLZB_Switch struct {
  324. Data HLWLZB_Switch `json:"data"`
  325. }
  326. func (o *Pack_HLWLZB_Switch) DeCode(message string) error {
  327. return json.UnmarshalFromString(message, o)
  328. }
  329. // 开关灯时间
  330. type HLWLZB_OnOffTime struct {
  331. OnHour uint8 `json:"onhour"`
  332. OnMinite uint8 `json:"onminite"`
  333. OffHour uint8 `json:"offhour"`
  334. OffMinite uint8 `json:"offminite"`
  335. Brightness uint8 `json:"brightness"` //亮度0~100
  336. }
  337. func (o *HLWLZB_OnOffTime) SetData(onhour, onminite, offhour, offminite, brightness uint8) {
  338. o.OnHour = onhour
  339. o.OnMinite = onminite
  340. o.OffHour = offhour
  341. o.OffMinite = offminite
  342. o.Brightness = brightness
  343. }
  344. func (o *HLWLZB_OnOffTime) InTimeRange(t time.Time) bool {
  345. h := uint8(t.Hour())
  346. m := uint8(t.Minute())
  347. if o.OnHour > o.OffHour { //跨日情况,例如19:30~5:30,开灯时间大于关灯时间
  348. if h > o.OnHour || h < o.OffHour || (h == o.OnHour && m >= o.OnMinite) ||
  349. (h == o.OffHour && m <= o.OffMinite) {
  350. return true
  351. }
  352. } else if o.OnHour < o.OffHour { //开灯时间小于关灯时间
  353. if (h > o.OnHour && h < o.OffHour) ||
  354. (h == o.OnHour && m >= o.OnMinite) ||
  355. (h == o.OffHour && m <= o.OffMinite) {
  356. return true
  357. }
  358. } else { //开灯时间等于关灯时间
  359. if h == o.OnHour && m >= o.OnMinite && m <= o.OffMinite {
  360. return true
  361. }
  362. }
  363. return false
  364. }
  365. //---------------------------------开关灯时间策略 BEGIN-----------------------
  366. // {"apikey": "9af4d8381781baccb0f915e554f8798d",
  367. // "msgType": "strategy",
  368. // "actionType": "whole",
  369. // "strategy": [ {"timer": "05:00:00","lux": "50"}, // timer:调光时间,lux:调光值 {"timer": "06:00:00","lux": "0"}, ...... ],
  370. // "ts": "1530755999",
  371. // "masterSn": "00037F101219", //集控序列号
  372. // "uuid": "1ab4f7b75a044869bccdd193d4911889"}
  373. // 开关灯时间设备格式
  374. type STRATEGY struct {
  375. Timer string `json:"timer"`
  376. Lux uint8 `json:"lux"`
  377. }
  378. // 策略
  379. type Pack_HLSetOnOffTime struct {
  380. Apikey string `json:"apikey"`
  381. MsgType string `json:"msgType"` //strategy
  382. ActionType string `json:"actionType"`
  383. Strategy []STRATEGY `json:"strategy"`
  384. Ts int64 `json:"ts"`
  385. MasterSn string `json:"masterSn"` // 集控的必填
  386. Uuid string `json:"uuid"`
  387. }
  388. // 设置开关灯时间只支持集控,id为集控的id
  389. func (o *Pack_HLSetOnOffTime) EnCode(id, gid string, seq uint64, lampIDs []uint32, onofftime []HLWLZB_OnOffTime) (string, error) {
  390. o.Apikey = Apikey
  391. o.MsgType = "strategy"
  392. o.ActionType = "whole"
  393. o.Ts = util.MlNow().Unix()
  394. o.MasterSn = id
  395. o.Uuid = uuid.New().String()
  396. //[{\"onhour\":19,\"onminite\":7,\"offhour\":5,\"offminite\":37,\"brightness\":50}]","time":"2022-05-13T14:18:19+08:00"}
  397. for _, k := range onofftime {
  398. str := fmt.Sprintf("%s:%s:00", strconv.Itoa(int(k.OnHour)), strconv.Itoa(int(k.OnMinite)))
  399. // str := strconv.Itoa(int(k.OnHour)) + ":" + strconv.Itoa(int(k.OnMinite)) + ":00"
  400. o.Strategy = append(o.Strategy, STRATEGY{Timer: str, Lux: k.Brightness}) //开
  401. str = fmt.Sprintf("%s:%s:00", strconv.Itoa(int(k.OffHour)), strconv.Itoa(int(k.OffMinite)))
  402. // str = strconv.Itoa(int(k.OffHour)) + ":" + strconv.Itoa(int(k.OffMinite)) + ":00"
  403. o.Strategy = append(o.Strategy, STRATEGY{Timer: str, Lux: 0}) //关
  404. }
  405. return json.MarshalToString(o)
  406. }
  407. func (o *Pack_HLSetOnOffTime) DeCode(message string) error {
  408. return json.UnmarshalFromString(message, o)
  409. }
  410. // { "actionType": "whole",
  411. // "errorCode": "0", // 控制状态失败返回对应错误码信息
  412. // "masterSn": "00037F101219", // 集控序列号
  413. //
  414. // "msgType": "strategy",
  415. //
  416. // "strategy": [ { "lux": "100", "timer": "18:30:00" },{ "lux": "0", "timer": "05:00:00" } ],
  417. // "ts": "1631870013",
  418. // "uuid": "1ab4f7b75a044869bccdd193d4910921" }
  419. type Pack_HLSetOnOffTime_Ack struct {
  420. MsgType string `json:"msgType"` //strategy
  421. ActionType string `json:"actionType"`
  422. ErrorCode int16 `json:"errorCode"`
  423. Strategy []STRATEGY `json:"strategy"`
  424. Ts string `json:"ts"`
  425. MasterSn string `json:"masterSn"` // 集控的必填
  426. Uuid string `json:"uuid"`
  427. }
  428. func (o *Pack_HLSetOnOffTime_Ack) DeCode(message string) error {
  429. return json.UnmarshalFromString(message, o)
  430. }
  431. // { "apikey": "9af4d8381781baccb0f915e554f8798d",
  432. // "msgType": "clearStrategy",
  433. // "actionType": "whole",
  434. // "ts": "1530755999",
  435. // "masterSn": "00037F101219", //集控序列号
  436. //
  437. // "uuid": "1ab4f7b75a044869bccdd193d4914112" }
  438. //
  439. // 清空关闭策略
  440. type Pack_HLClearStrategy struct {
  441. Apikey string `json:"apikey"`
  442. MsgType string `json:"msgType"` //strategy
  443. ActionType string `json:"actionType"`
  444. Ts int64 `json:"ts"`
  445. MasterSn string `json:"masterSn"` // 集控的必填
  446. Uuid string `json:"uuid"`
  447. }
  448. // 清空关闭策略
  449. func (o *Pack_HLClearStrategy) EnCode(id string) (string, error) {
  450. o.Apikey = Apikey
  451. o.MsgType = MT_CLEARSTRATEGY
  452. o.ActionType = AT_WHOLE
  453. o.Ts = util.MlNow().Unix()
  454. o.MasterSn = id
  455. o.Uuid = uuid.New().String()
  456. return json.MarshalToString(o)
  457. }
  458. // { "msgType": "clearStrategy",
  459. // "actionType": "whole",
  460. //
  461. // "errorCode": "0", // 控制状态失败返回对应错误码信息
  462. //
  463. // "ts": "1530755999",
  464. //
  465. // "masterSn": "00037F101219", // 集控序列号
  466. // "uuid": "1ab4f7b75a044869bccdd193d4913211" }
  467. //
  468. // 关闭策略ack
  469. type Pack_HLClearStrategy_Ack struct {
  470. MsgType string `json:"msgType"` //strategy
  471. ActionType string `json:"actionType"`
  472. ErrorCode int16 `json:"errorCode"`
  473. Ts string `json:"ts"`
  474. MasterSn string `json:"masterSn"` // 集控的必填
  475. Uuid string `json:"uuid"`
  476. }
  477. func (o *Pack_HLClearStrategy_Ack) DeCode(message string) error {
  478. return json.UnmarshalFromString(message, o)
  479. }
  480. // ---------------------------------开关灯时间策略 END-----------------------
  481. // ---------------------------------离线上线begin-----------------------
  482. // 离线 {"masterSn":"301056","msgType":"offline",//and online
  483. //
  484. // "snGroup":[{"serialNumber":"301056"}],
  485. // "ts":"1653445142","uuid":"40a47d85-2ebb-41ab-a6d9-6aad4b934d02"}
  486. //
  487. // 离线上线只有集控器上报
  488. type HLWLZB_OnOfflineStatus_Up struct {
  489. MsgType string `json:"msgType"`
  490. SnGroup []SNGROUP `json:"snGroup"`
  491. Ts string `json:"ts"`
  492. MasterSn string `json:"masterSn"`
  493. Uuid string `json:"uuid"`
  494. }
  495. func (o *HLWLZB_OnOfflineStatus_Up) DeCode(message string) error {
  496. return json.UnmarshalFromString(message, o)
  497. }
  498. // ---------------------------------离线上线end-----------------------
  499. // ---------------------------------初始化下发频率begin-----------------------
  500. // { "apikey": "05b9cdff196d746709bc308bcf2c46af",
  501. // "msgType": "ReportFrequency",
  502. // "actionType": "whole",
  503. // "interval": "10",
  504. // "ts": "1530755999",
  505. // "masterSn": "301056",
  506. // "uuid": "1ab4f7b75a04486666d4911231" }
  507. type HLWLZB_Frequency_Down struct {
  508. Apikey string `json:"apikey"`
  509. MsgType string `json:"msgType"` //turnoff, dimmer
  510. Interval uint `json:"interval"`
  511. ActionType string `json:"actionType"`
  512. Ts int64 `json:"ts"`
  513. MasterSn string `json:"masterSn"` //涉及到集控的必填,分属多个不同集控的单灯按多条信息发送
  514. Uuid string `json:"uuid"`
  515. }
  516. // 组包
  517. func (o *HLWLZB_Frequency_Down) EnCode(id string, interval uint) (string, error) {
  518. o.Apikey = Apikey
  519. o.MsgType = MT_REPORTFREQUENCY
  520. o.ActionType = AT_WHOLE
  521. o.Ts = util.MlNow().Unix()
  522. o.MasterSn = id
  523. o.Uuid = uuid.New().String()
  524. o.Interval = interval
  525. return json.MarshalToString(o)
  526. }
  527. //---------------------------------初始化下发频率 end-----------------------