func GetSceneValueAsShort(sceneID uint8, homeID uint32, valueID uint64) (int16, error) {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	var cshort C.int16_t
	ok := bool(C.manager_sceneGetValueAsShort(cmanager, C.uint8_t(sceneID), cvalueid, &cshort))
	if ok == false {
		return int16(cshort), fmt.Errorf("short value was not obtained")
	}
	return int16(cshort), nil
}
GetSceneValueAsShort returns a scene's value as a 16-bit signed integer and
returns an error if the value was not obtained.
package goopenzwave
import "C"
import (
	"fmt"
	"unsafe"
)
func GetNumScenes() uint8 {
	return uint8(C.manager_getNumScenes(cmanager))
}
func RemoveAllScenes(homeID uint32) {
	C.manager_removeAllScenes(cmanager, C.uint32_t(homeID))
}
func CreateScene() uint8 {
	return uint8(C.manager_createScene(cmanager))
}
func RemoveScene(sceneID uint8) bool {
	return bool(C.manager_removeScene(cmanager, C.uint8_t(sceneID)))
}
func AddSceneValueBool(sceneID uint8, homeID uint32, valueID uint64, value bool) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	return bool(C.manager_addSceneValueBool(cmanager, C.uint8_t(sceneID), cvalueid, C.bool(value)))
}
func AddSceneValueUint8(sceneID uint8, homeID uint32, valueID uint64, value uint8) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	return bool(C.manager_addSceneValueUint8(cmanager, C.uint8_t(sceneID), cvalueid, C.uint8_t(value)))
}
func AddSceneValueFloat(sceneID uint8, homeID uint32, valueID uint64, value float32) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	return bool(C.manager_addSceneValueFloat(cmanager, C.uint8_t(sceneID), cvalueid, C.float(value)))
}
func AddSceneValueInt32(sceneID uint8, homeID uint32, valueID uint64, value int32) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	return bool(C.manager_addSceneValueInt32(cmanager, C.uint8_t(sceneID), cvalueid, C.int32_t(value)))
}
func AddSceneValueInt16(sceneID uint8, homeID uint32, valueID uint64, value int16) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	return bool(C.manager_addSceneValueInt16(cmanager, C.uint8_t(sceneID), cvalueid, C.int16_t(value)))
}
func AddSceneValueString(sceneID uint8, homeID uint32, valueID uint64, value string) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	cstring := C.CString(value)
	result := bool(C.manager_addSceneValueString(cmanager, C.uint8_t(sceneID), cvalueid, cstring))
	C.free(unsafe.Pointer(cstring))
	return result
}
func AddSceneValueListSelectionString(sceneID uint8, homeID uint32, valueID uint64, value string) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	cstring := C.CString(value)
	result := bool(C.manager_addSceneValueListSelectionString(cmanager, C.uint8_t(sceneID), cvalueid, cstring))
	C.free(unsafe.Pointer(cstring))
	return result
}
func AddSceneValueListSelectionInt32(sceneID uint8, homeID uint32, valueID uint64, value int32) bool {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	return bool(C.manager_addSceneValueListSelectionInt32(cmanager, C.uint8_t(sceneID), cvalueid, C.int32_t(value)))
}
func GetSceneValueAsBool(sceneID uint8, homeID uint32, valueID uint64) (bool, error) {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	var cbool C.bool
	ok := bool(C.manager_sceneGetValueAsBool(cmanager, C.uint8_t(sceneID), cvalueid, &cbool))
	if ok == false {
		return bool(cbool), fmt.Errorf("bool value was not obtained")
	}
	return bool(cbool), nil
}
func GetSceneValueAsByte(sceneID uint8, homeID uint32, valueID uint64) (byte, error) {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	var cbyte C.uint8_t
	ok := bool(C.manager_sceneGetValueAsByte(cmanager, C.uint8_t(sceneID), cvalueid, &cbyte))
	if ok == false {
		return byte(cbyte), fmt.Errorf("byte value was not obtained")
	}
	return byte(cbyte), nil
}
func GetSceneValueAsFloat(sceneID uint8, homeID uint32, valueID uint64) (float32, error) {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	var cfloat C.float
	ok := bool(C.manager_sceneGetValueAsFloat(cmanager, C.uint8_t(sceneID), cvalueid, &cfloat))
	if ok == false {
		return float32(cfloat), fmt.Errorf("float value was not obtained")
	}
	return float32(cfloat), nil
}
func GetSceneValueAsInt(sceneID uint8, homeID uint32, valueID uint64) (int32, error) {
	cvalueid := C.valueid_create(C.uint32_t(homeID), C.uint64_t(valueID))
	defer C.valueid_free(cvalueid)
	var cint C.int32_t
	ok := bool(C.manager_sceneGetValueAsInt(cmanager, C.uint8_t(sceneID), cvalueid, &cint))
	if ok == false {
		return int32(cint), fmt.Errorf("int value was not obtained")
	}
	return int32(cint), nil
}