Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def parse(description) {
- def map = [:]
- def events = []
- def cmds = []
- if(description == "updated") return
- def descMap = parseDescriptionAsMap(description)
- def body = new String(descMap["body"].decodeBase64())
- def slurper = new JsonSlurper()
- def result = slurper.parseText(body)
- log.debug result
- if (result.containsKey("stat_str")) {
- if (result.stat_str=="Disarmed" || result.stat_str=="Disarm") {
- sendEvent(name: "disarm", value: "active", displayed: false, isStateChange: true)
- sendEvent(name: "armaway", value: "inactive", displayed: false, isStateChange: true)
- sendEvent(name: "armhome", value: "inactive", displayed: false, isStateChange: true)
- sendEvent(name: "alarm", value: "disarmed", isStateChange: true)
- log.debug "Disarmed Status found"}
- else if (result.stat_str=="Armed Away" || result.stat_str=="Arm Away") {
- sendEvent(name: "disarm", value: "inactive", displayed: false, isStateChange: true)
- sendEvent(name: "armaway", value: "active", displayed: false, isStateChange: true)
- sendEvent(name: "armhome", value: "inactive", displayed: false, isStateChange: true)
- sendEvent(name: "alarm", value: "away", isStateChange: true)
- log.debug "Armed Away Status found"}
- else if (result.stat_str=="Armed Home" || result.stat_str=="Arm Home") {
- sendEvent(name: "disarm", value: "inactive", displayed: false, isStateChange: true)
- sendEvent(name: "armaway", value: "inactive", displayed: false, isStateChange: true)
- sendEvent(name: "armhome", value: "active", displayed: false, isStateChange: true)
- sendEvent(name: "alarm", value: "home", isStateChange: true)
- log.debug "Armed Home Status found"}
- }
- if (result.containsKey("stat_update_from")) {
- def dateTime = new Date()
- def sensorStateChangedDate = dateTime.format("yyyy-MM-dd HH:mm", location.timeZone)
- def status_string = result.stat_str + " by " + result.stat_update_from + " at " + sensorStateChangedDate
- sendEvent(name: "events", value: "${status_string}", isStateChange: true)
- }
- if (result.containsKey("zone_status")) {
- def zonestr = "visonic"+result.zone_id
- switch (result.zone_status) {
- case "Violated (Motion)":
- log.debug "Got motion - " + zonestr
- delayBetween([
- sendEvent(name: ${zonestr}, value: "active", displayed: true, isStateChange: true),
- sendEvent(name: ${zonestr}, value: "inactive", displayed: true, isStateChange: true)
- ], 5000)
- break
- case "Open":
- log.debug "Got Open - " + zonestr
- sendEvent(name: ${zonestr}, value: "open", displayed: true, isStateChange: true)
- break
- case "Closed":
- log.debug "Got Closed - " + zonestr
- sendEvent(name: ${zonestr}, value: "closed", displayed: true, isStateChange: true)
- break
- }
- }
- if (result.containsKey("enroled_zones")) {
- for (zone in result.enroled_zones) {
- log.debug "zone " + ${it} + " data: " + zone.zoneName + " = " + zone.sensorType
- //def zonestr = "visonic"+result.zone_id
- //sendEvent(name: ${zonestr}, value: ${zone.zoneName}, displayed: false, isStateChange: true)
- //for (item in zone) {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement