Advertisement
cjcharles

Parse code

Apr 1st, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 3.43 KB | None | 0 0
  1. def parse(description) {
  2.     def map = [:]
  3.     def events = []
  4.     def cmds = []
  5.    
  6.     if(description == "updated") return
  7.     def descMap = parseDescriptionAsMap(description)
  8.  
  9.     def body = new String(descMap["body"].decodeBase64())
  10.  
  11.     def slurper = new JsonSlurper()
  12.     def result = slurper.parseText(body)
  13.    
  14.     log.debug result
  15.    
  16.     if (result.containsKey("stat_str")) {
  17.         if (result.stat_str=="Disarmed" || result.stat_str=="Disarm") {
  18.             sendEvent(name: "disarm", value: "active", displayed: false, isStateChange: true)
  19.             sendEvent(name: "armaway", value: "inactive", displayed: false, isStateChange: true)
  20.             sendEvent(name: "armhome", value: "inactive", displayed: false, isStateChange: true)
  21.             sendEvent(name: "alarm", value: "disarmed", isStateChange: true)
  22.             log.debug "Disarmed Status found"}
  23.         else if (result.stat_str=="Armed Away" || result.stat_str=="Arm Away") {
  24.             sendEvent(name: "disarm", value: "inactive", displayed: false, isStateChange: true)
  25.             sendEvent(name: "armaway", value: "active", displayed: false, isStateChange: true)
  26.             sendEvent(name: "armhome", value: "inactive", displayed: false, isStateChange: true)
  27.             sendEvent(name: "alarm", value: "away", isStateChange: true)
  28.             log.debug "Armed Away Status found"}
  29.         else if (result.stat_str=="Armed Home" || result.stat_str=="Arm Home") {
  30.             sendEvent(name: "disarm", value: "inactive", displayed: false, isStateChange: true)
  31.             sendEvent(name: "armaway", value: "inactive", displayed: false, isStateChange: true)
  32.             sendEvent(name: "armhome", value: "active", displayed: false, isStateChange: true)
  33.             sendEvent(name: "alarm", value: "home", isStateChange: true)
  34.             log.debug "Armed Home Status found"}
  35.     }
  36.    
  37.     if (result.containsKey("stat_update_from")) {
  38.         def dateTime = new Date()
  39.         def sensorStateChangedDate = dateTime.format("yyyy-MM-dd HH:mm", location.timeZone)
  40.         def status_string = result.stat_str + " by " + result.stat_update_from + " at " + sensorStateChangedDate
  41.         sendEvent(name: "events", value: "${status_string}", isStateChange: true)
  42.     }
  43.    
  44.     if (result.containsKey("zone_status")) {
  45.         def zonestr = "visonic"+result.zone_id
  46.         switch (result.zone_status) {
  47.             case "Violated (Motion)":
  48.                 log.debug "Got motion - " + zonestr
  49.                 delayBetween([
  50.                 sendEvent(name: ${zonestr}, value: "active", displayed: true, isStateChange: true),
  51.                 sendEvent(name: ${zonestr}, value: "inactive", displayed: true, isStateChange: true)
  52.                 ], 5000)
  53.                 break
  54.             case "Open":
  55.                 log.debug "Got Open - " + zonestr
  56.                 sendEvent(name: ${zonestr}, value: "open", displayed: true, isStateChange: true)
  57.                 break
  58.             case "Closed":
  59.                 log.debug "Got Closed - " + zonestr
  60.                 sendEvent(name: ${zonestr}, value: "closed", displayed: true, isStateChange: true)
  61.                 break
  62.         }
  63.     }
  64.    
  65.     if (result.containsKey("enroled_zones")) {
  66.         for (zone in result.enroled_zones) {
  67.             log.debug "zone " + ${it} + " data: " + zone.zoneName + " = " + zone.sensorType
  68.             //def zonestr = "visonic"+result.zone_id
  69.             //sendEvent(name: ${zonestr}, value: ${zone.zoneName}, displayed: false, isStateChange: true)
  70.             //for (item in zone) {
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement