Help with ST_Anything scripts anyone, please?


(Richard White) #1

Hi, I try running the following script to create the multiplexer for ST_Anything and it keeps giving me this error. I’m new at programming using groovy but I’m hoping this is a simple resolution that one of you can tell me. I’ve gone over all my Ucase and Lcase letters and they all match up with the other ST_Anything scripts. Anyways, here’s my multiplexer script log:

groovy> /**
groovy> * ST_Anything_Doors Device Type - ST_Anything_Doors.device.groovy
groovy> *
groovy> * Copyright 2015 Daniel Ogorchock
groovy> *
groovy> * Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except
groovy> * in compliance with the License. You may obtain a copy of the License at:
groovy> *
groovy> * http://www.apache.org/licenses/LICENSE-2.0
groovy> *
groovy> * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
groovy> * on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
groovy> * for the specific language governing permissions and limitations under the License.
groovy> *
groovy> * Change History:
groovy> *
groovy> * Date Who What
groovy> * ---- — ----
groovy> * 2015-01-10 Dan Ogorchock Original Creation
groovy> *
groovy> *
groovy> */
groovy> metadata {
groovy> definition (name: “ST_Anything_Doors”, namespace: “ogiewon”, author: “Daniel Ogorchock”) {
groovy> capability “Configuration"
groovy> capability “Contact Sensor"
groovy> capability “Motion Sensor"
groovy> capability “Temperature Measurement"
groovy> capability “Relative Humidity Measurement"
groovy> capability “Sensor"
groovy> capability “Polling"
groovy> attribute “frontDoor”, “string"
groovy> attribute “slidingRearDoor”, “string"
groovy> attribute “garageOutsideDoor”, “string"
groovy> attribute “garageInsideDoor”, “string"
groovy> attribute “mstrbedWindow1”, “string"
groovy> attribute “mstrbedWindow2”, “string"
groovy> attribute “mstrbathWindow”, “string"
groovy> attribute “diningrmWindow”, “string"
groovy> attribute “bkfstnookWindow”, “string"
groovy>
groovy>
groovy> // command “pushLeft"
groovy> // command “pushRight"
groovy> }
groovy> simulator {
groovy> status “on”: “catchall: 0104 0000 01 01 0040 00 0A21 00 00 0000 0A 00 0A6F6E"
groovy> status “off”: “catchall: 0104 0000 01 01 0040 00 0A21 00 00 0000 0A 00 0A6F6666"
groovy> // reply messages
groovy> reply “raw 0x0 { 00 00 0a 0a 6f 6e }”: “catchall: 0104 0000 01 01 0040 00 0A21 00 00 0000 0A 00 0A6F6E"
groovy> reply “raw 0x0 { 00 00 0a 0a 6f 66 66 }”: “catchall: 0104 0000 01 01 0040 00 0A21 00 00 0000 0A 00 0A6F6666"
groovy> }
groovy>
groovy> // Preferences
groovy> preferences {
groovy> input “temphumidSampleRate”, “number”, title: “Temperature/Humidity Sensor Sampling Interval (seconds)”, description: “Sampling Interval (seconds)”, defaultValue: 30, required: true, displayDuringSetup: true
groovy> }
groovy> // tile definitions
groovy> tiles {
groovy> standardTile(“frontDoor”, “device.frontDoor”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:”#79b821”)
groovy> }
groovy> standardTile(“slidingRearDoor”, “device.slidingRearDoor”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:”#79b821”)
groovy> }
groovy> // standardTile(“garageOutsideDoor”, “device.garageOutsideDoor”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> // state “closed”, label: ‘Closed’, action: “pushRight”, icon: “st.doors.garage.garage-closed”, backgroundColor: “#79b821”, nextState: “closed"
groovy> // state “open”, label: ‘Open’, action: “pushRight”, icon: “st.doors.garage.garage-open”, backgroundColor: “#ffa81e”, nextState: “open"
groovy> // state “opening”, label: ‘Opening’, action: “pushRight”, icon: “st.doors.garage.garage-opening”, backgroundColor: “89C2E8”, nextState: “opening"
groovy> // state “closing”, label: ‘Closing’, action: “pushRight”, icon: “st.doors.garage.garage-closing”, backgroundColor: “89C2E8”, nextState: “closing"
groovy> // }
groovy> standardTile(“garageOutsideDoor”, “device.garageOutsideDoor”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:”#79b821”)
groovy> }
groovy> standardTile(“garageInsideDoor”, “device.garageInsideDoor”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:”#79b821”)
groovy> }
groovy> standardTile(“mstrbedWindow1”, “device.mstrbedWindow1”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:”#79b821”)
groovy> }
groovy> standardTile(“mstrbedWindow2”, “device.mstrbedWindow2”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:”#79b821”)
groovy> }
groovy> standardTile(“mstrbathWindow”, “device.mstrbathWindow”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:”#ffa81e”)
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:"#79b821")
groovy> }
groovy> standardTile(“DiningrmWindow”, “device.diningrmWindow”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:"#ffa81e")
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:"#79b821")
groovy> }
groovy> standardTile(“bkfstnookWindow”, “device.bkfstnookWindow”, width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
groovy> state(“open”, label:’${name}’, icon:“st.contact.contact.open”, backgroundColor:"#ffa81e")
groovy> state(“closed”, label:’${name}’, icon:“st.contact.contact.closed”, backgroundColor:"#79b821")
groovy> }
groovy> valueTile(“temperature”, “device.temperature”, width: 1, height: 1) {
groovy> state(“temperature”, label:’${currentValue}°’,
groovy> backgroundColors:[
groovy> [value: 31, color: “#153591”],
groovy> [value: 44, color: “#1e9cbb”],
groovy> [value: 59, color: “#90d2a7”],
groovy> [value: 74, color: “#44b621”],
groovy> [value: 84, color: “#f1d801”],
groovy> [value: 95, color: “#d04e00”],
groovy> [value: 96, color: “#bc2323”]
groovy> ]
groovy> )
groovy> }
groovy> valueTile(“humidity”, “device.humidity”, inactiveLabel: false) {
groovy> state “humidity”, label:’${currentValue}% humidity’, unit:"“
groovy> }
groovy> standardTile(“motion”, “device.motion”, width: 1, height: 1) {
groovy> state(“active”, label:‘motion’, icon:“st.motion.motion.active”, backgroundColor:”#53a7c0")
groovy> state(“inactive”, label:‘no motion’, icon:“st.motion.motion.inactive”, backgroundColor:"#ffffff")
groovy> }
groovy> standardTile(“configure”, “device.configure”, inactiveLabel: false, decoration: “flat”) {
groovy> state “configure”, label:’’, action:“configuration.configure”, icon:"st.secondary.configure"
groovy> }
groovy>
groovy> main ([“temperature”,“humidity”,“motion”])
groovy> details([“temperature”,“humidity”,“motion”,“frontDoor”,“slidingRearDoor”,“garageOutsideDoor”,“garageInsideDoor”,“mstrbedWindow1”,“mstrbedWindow2”,“mstrbathWindow”,“diningrmWindow”,“bkfstnookWindow”,“configure”])
groovy> }
groovy> }
groovy> //Map parse(String description) {
groovy> def parse(String description) {
groovy> def msg = zigbee.parse(description)?.text
groovy> log.debug "Parse got ‘${msg}’“
groovy> def parts = msg.split(” ")
groovy> def name = parts.length>0?parts[0].trim():null
groovy> def value = parts.length>1?parts[1].trim():null
groovy> name = value != “ping” ? name : null
groovy> def result = createEvent(name: name, value: value)
groovy> log.debug result
groovy> return result
groovy> }
groovy> //def pushLeft() {
groovy> // log.debug "Executing ‘pushLeft’ = ‘leftDoor on’"
groovy> // zigbee.smartShield(text: “leftDoor on”).format()
groovy> //}
groovy> //def pushRight() {
groovy> // log.debug "Executing ‘pushRight’ = ‘rightDoor on’"
groovy> // zigbee.smartShield(text: “rightDoor on”).format()
groovy> //}
groovy> def poll() {
groovy> //temporarily implement poll() to issue a configure() command to send the polling interval settings to the arduino
groovy> configure()
groovy> }
groovy> def configure() {
groovy> log.debug "Executing ‘configure’"
groovy> log.debug "temphumid " + temphumidSampleRate
groovy> // [
groovy> // zigbee.smartShield(text: "temphumid " + temphumidSampleRate).format()
groovy> // ]
groovy> }

Exception thrown

groovy.lang.MissingMethodException: No signature of method: ST_Anything_Doors_Windows.metadata() is applicable for argument types: (ST_Anything_Doors_Windows$_run_closure1) values: [ST_Anything_Doors_Windows$_run_closure1@1fe8bcd]
Possible solutions: metaClass(groovy.lang.Closure)

at ST_Anything_Doors_Windows.run(ST_Anything_Doors_Windows.groovy:24)

#2

You will get the best help and the quickest answers if you ask in the ST anything thread. :sunglasses:


(Dan) #3

Not sure how you’re trying to do this… I have released a new version of software this past week for LAN connected devices that eliminates the need for the Mutliplexer SmartApp ( BTW, it is not a script that you run interactively.)

If you’re using an old ThingShield, I plan to release that code tonight.

The new version is much, much simpler to use, especially on the SmartThings side.

Check out the newest code and instructions at


(Richard White) #4

Oh, thank you very much!!! I redid it using your directions and I was able to get it all working. Thanks again, ogiewon!