Fibaro FGRM 222 - Roller Shutter

@duncan I’d like to second this request. It would be great to get the HDSS added for monitoring electric dryers and the like.

I got this on a different thread:

I’ve believe support has started to push out new firmware on an as-needed basis. You could try emailing them support@smartthings.com

I received the firmware update about an hour ago. I now was able to add the Aeon Heavy Duty Smart Switch. It shows up as an Aeon Smart Energy Switch but is not controllable and does not report usage. I’m guessing the device type will need to be tweaked.

Yeah. It needs all message sent as secured: I had to do the same thing for the recessed door sensor. Basically I added the following method:

private secure(physicalgraph.zwave.Command cmd) {
response(zwave.securityV1.securityMessageEncapsulation().encapsulate(cmd).format())
}

and replaced result << response(NON TEXT BLAH)
with result << secure(NON TEXT BLAH)

I also changed the fingerprint to make it auto-detect.

Thanks for the info… not sure my skills are up to doing it. At least not my first attempt.

So I would like to say thanks @duncan for getting the latest firmware. It certainly resolved my issue with getting the Fibaro FGRM 222 joined. I now have a basic Device Type which allows control to raise blinds, drop blinds, and set to a percentage opened. Unfortunately I haven’t found a command to “stop” movement where it is. So I for now will write a “Stop” based on getting current position when button pressed and then “Set” to that value, which depending on the lag may slightly reverse direction for a fraction. I’m also working on an option to open/close lamella’s.

I’m also trying to explore all of the other Command Classes it offers, to see what else is available, just from a knowledge perspective.

Unfortunately, when I try to read the Parameters 1 and 2, which are the “local button protection” and “Z-wave protection”. I get no response from these Configuration requests.

Anyways, progress is being made.

This is untested, but may work. Please try and give me feedback.

Thank You, I probably wouldn’t of had time for a while to start playing with this. My initial testing it’s working.

I will start a new thread and post your device type and info if you want me to.

1 Like

Can you send me the fingerprint from the device list so I can set it up to auto detect.

Please continue all discussion about the heavy duty switch in this thread:

hi all,

I’m new to ST and am really interested in having a smart roller shutter. Do you guys know if the fibaro roller shutter works in Canada in terms of frequency and voltage?

Also, how do you guys connect this controller to your actual roller shutter? Does it need any special roller shutter? How do your solution work?

For those that has this working, do you know if the ST app comes with schedules for things like “if weather is nice, open the blinds”?

Thanks a lot in advance!!

Cheers

Firstly there is a Fibaro distributor in Canada (http://www.mediadomotic.com/shop/3-fibaro) so i guess they are compatible.

As for connecting them, you install a small module behind the physical switches you use already. You wire the module between the switches and the motor.

As for Apps, ST currently doesnt have specifics for roller blinds yet. So i have the framework for a manual app, plus one that is tied into a wakeup app to schedule natural daylight alarm.

Hope some of this info helps.

Thanks Jimp! I’ll be ordering mine shortly.

Hi, I just bought a Fibaro Roller FGRM222 and I don´t manage to find it with my ST. I need 7 more but I don’t want to buy them before I manage to make it work.

Any help its welcome. Thaks

Hi there Francisco,

I had to create my own device, I never completed it 100%, then moved apartment so haven’t had it reinstalled yet. In absolute basics, it was able to open and close the blinds completely, and I was tweaking the “adjust” settings.

Let me see if I can find it.

Please note this is a work in progress, no guarantee and no liability accepted :smile:
There is a big chunk of debug rubbish in here, where I was trying to fire different events and to retrieve different data back, I think this was me trying to identify specific position to allow for adjusting.

Please let me know if you need any help or have any suggestions / improvements.

    /**
 *	fingerprint inClusters: "0x72,0x86,0x70,0x85,0x25,0x73,0x32,0x31,0x7a,0x25,0x91,0x75,0xef,0x32,0x31,0x91,0x2b,0x26,0x25"
 *
 * 0x72 V1 0x72 Manufacturer Specific
 * 0x86 V1 0x86 Version
 * 0x70 XX 0x70 Configuration
 * 0x85 V2 0x85 Association
 * 0x25 V1 0x25 Switch Binary
 * 0x73 V1 COMMAND_CLASS_POWERLEVEL 
 * 0x32 V2 0x32 Meter
 * 0x31 V2 0x31 Sensor Multilevel
 * 0x7a V1 COMMAND_CLASS_FIRMWARE_UPDATE_MD 
 * 0x25 V1 0x25 Switch Binary
 * 0x91 V1 COMMAND_CLASS_MANUFACTURER_PROPRIETARY 
 * 0x75 V2 COMMAND_CLASS_PROTECTION_V2 
 * 0xef XX COMMAND_CLASS_MARK 
 * 0x32 V2 0x32 Meter
 * 0x31 V2 0x31 Sensor Multilevel
 * 0x91 V1 COMMAND_CLASS_MANUFACTURER_PROPRIETARY 
 * 0x2b V1 COMMAND_CLASS_SCENE_ACTIVATION 
 * 0x26 V3 0x26 Switch Multilevel
 * 0x25 V1 0x25 Switch Binary
 * 0x20 V1 UNKNOWN
 *
 * References :
 *	https://graph.api.smartthings.com/ide/doc/zwave-utils.html
 *  http://www.pepper1.net/zwavedb/device/492
 * 
 *
 */
metadata {
	definition (name: "Fibaro Rollers Blinds", namespace: "Arcaneshark", author: "Jim Pursey") {
		capability "Actuator"
        capability "Switch Level"
        capability "Switch"
		capability "Door Control"
		capability "Contact Sensor"
		capability "Refresh"
		capability "Sensor"
		capability "Configuration"
		capability "Polling"

        
        
        
      fingerprint inClusters: "0x72,0x86,0x70,0x85,0x25,0x73,0x32,0x31,0x7A,0x25,0x91,0x75,0xEF,0x32,0x31,0x91,0x2B,0x26,0x25"
	
      command "open"
      command "stop"
      command "close"
      command "setposition"
    

    
    }
}

tiles {
		standardTile("open", "device.switch", inactiveLabel: false, decoration: "flat") {
			state "default", label:'open', action:"open", icon:"st.doors.garage.garage-open"
		}
		standardTile("stop", "device.switch", inactiveLabel: false, decoration: "flat") {
			state "default", label:'stop', action:"stop", icon:"st.doors.garage.garage-opening"
		}
		standardTile("close", "device.switch", inactiveLabel: false, decoration: "flat") {
			state "default", label:'close', action:"close", icon:"st.doors.garage.garage-closed"
		}
   		controlTile("levelSliderControl", "device.level", "slider", height: 1, width: 2, inactiveLabel: false) {
			state "level", action:"setposition"
		}
        
		standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat") {
			state "default", label:'', action:"refresh.refresh", icon:"st.secondary.refresh"
		}


		details(["open", "stop", "close", "levelSliderControl", "refresh"])
	}

def parse(String description) {
	log.debug "Parsing '${description}'"

	def result = null
	def cmd = zwave.parse(description, [0x20: 1, 0x25: 1, 0x31: 2, 0x32: 2, 0x85: 2, 0x75: 2, 0x26: 3])
    log.debug "Parsed ${cmd}"

	if (cmd ) {
		result = createEvent(zwaveEvent(cmd))
		return result
	} else {
        log.debug "Non-parsed event: ${description}"
    }
}

def zwaveEvent(physicalgraph.zwave.commands.switchmultilevelv3.SwitchMultilevelSet cmd) {
	log.debug "Report SwitchMultilevelSet:${cmd}"

}

def init()
{
log.debug "oo"
}


def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryGet cmd) {
	log.debug "Report SwitchBinaryGet:${cmd}"

}

def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryReport cmd) {
	log.debug "Report SwitchBinaryReport:${cmd}"
	
}

def zwaveEvent(physicalgraph.zwave.commands.switchmultilevelv3.SwitchMultilevelReport cmd) {
	log.debug "Report SwitchMultilevelReport:${cmd}"

}

def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinarySet cmd) {
	log.debug "Report SwitchBinarySet:${cmd}"

}


def zwaveEvent(physicalgraph.zwave.commands.configurationv1.ConfigurationReport cmd) {
    def value = "when off"
    if (cmd.configurationValue[0] == 1) {value = "when on"}
    if (cmd.configurationValue[0] == 2) {value = "never"}
    [name: "indicatorStatus", value: value, display: false]
}
 
def zwaveEvent(physicalgraph.zwave.commands.versionv1.VersionCommandClassReport cmd) {
def rcc = ""
rcc = Integer.toHexString(cmd.requestedCommandClass.toInteger()).toString() 

if (cmd.commandClassVersion > 0) {log.debug "0x${rcc}_V${cmd.commandClassVersion}"}
}


def refresh()
{
log.debug "refresh"
zwave.switchBinaryV1.switchBinaryGet().format()

}
def drefresh()
{
delayBetween([
new physicalgraph.device.HubAction("7202"),
new physicalgraph.device.HubAction("8602"),
new physicalgraph.device.HubAction("7002"),
new physicalgraph.device.HubAction("8502"),
new physicalgraph.device.HubAction("2502"),
new physicalgraph.device.HubAction("7302"),
new physicalgraph.device.HubAction("3202"),
new physicalgraph.device.HubAction("3102"),
new physicalgraph.device.HubAction("7A02"),
new physicalgraph.device.HubAction("9102"),
new physicalgraph.device.HubAction("7502"),
new physicalgraph.device.HubAction("EF02"),
new physicalgraph.device.HubAction("3202"),
new physicalgraph.device.HubAction("2B02"),
new physicalgraph.device.HubAction("2602"),
new physicalgraph.device.HubAction("2002"),

new physicalgraph.device.HubAction("7203"),
new physicalgraph.device.HubAction("8603"),
new physicalgraph.device.HubAction("7003"),
new physicalgraph.device.HubAction("8503"),
new physicalgraph.device.HubAction("2503"),
new physicalgraph.device.HubAction("7303"),
new physicalgraph.device.HubAction("3203"),
new physicalgraph.device.HubAction("3103"),
new physicalgraph.device.HubAction("7A03"),
new physicalgraph.device.HubAction("9103"),
new physicalgraph.device.HubAction("7503"),
new physicalgraph.device.HubAction("EF03"),
new physicalgraph.device.HubAction("3203"),
new physicalgraph.device.HubAction("2B03"),
new physicalgraph.device.HubAction("2603"),
new physicalgraph.device.HubAction("2003")

],500)
}

def arefresh() {
    delayBetween([
//zwave.switchMultilevelV3.switchMultilevelSupportedGet().format(),
//zwave.switchBinaryV1.switchBinaryReport().format(),
//zwave.switchBinaryV1.switchBinaryGet().format(),
//zwave.switchMultilevelV3.switchMultilevelReport().format()

//zwave.configurationV1.configurationGet(parameterNumber:1).format(),
//
//zwave.configurationV1.configurationSet(parameterNumber: 3, configurationValue: [1], size:1).format(),
//zwave.configurationV1.configurationGet(parameterNumber:3).format(),
//new physicalgraph.device.HubAction("91010F2601029900"),
    
    
    zwave.manufacturerProprietaryV1.manufacturerProprietarySet().format(),
    zwave.configurationV1.configurationGet(parameterNumber: 42).format(),
    zwave.configurationV1.configurationSet(parameterNumber: 3, configurationValue: [2], size:1).format(),
    zwave.configurationV1.configurationGet(parameterNumber: 42).format(),
zwave.switchMultilevelV3.switchMultilevelSupportedGet().format(),
	zwave.switchBinaryV1.switchBinaryGet().format(),

	zwave.switchBinaryV1.switchBinaryGet().format()
],500)

}


def setLevel(value) {
log.debug "setting"
	log.trace "setLevel($value)"
    delayBetween([
		zwave.basicV1.basicSet(value: value).format(),
		zwave.switchBinaryV1.switchBinaryGet().format()
	],500)
}
    
def poll() {
log.debug "polling"
		zwave.switchBinaryV1.switchBinaryGet().format()
}

def open() {
	delayBetween([
		zwave.basicV1.basicSet(value: 0xFF).format(),
		zwave.switchBinaryV1.switchBinaryGet().format()
	],500)
}

def setposition(value) {
	log.trace "setLevel($value)"
    delayBetween([
		zwave.basicV1.basicSet(value: value).format(),
		zwave.switchBinaryV1.switchBinaryGet().format()
	],500)
}


def stop() {
	delayBetween([
		zwave.switchBinaryV1.switchBinarySet(switchValue: 0xFF).format()
	],500)
}

def close() {
	delayBetween([
		zwave.basicV1.basicSet(value: 0x00).format(),
		zwave.switchBinaryV1.switchBinaryGet().format()
	],500)
}


def zwaveEvent(physicalgraph.zwave.Command cmd) {
	// Handles all Z-Wave commands we aren't interested in
	[:]
}


def eggs() {
//for (int i = 37; i < 40; i++) {
	delayBetween([
zwave.switchBinaryV1.switchBinaryGet().format(),
    zwave.configurationV1.configurationGet(parameterNumber: 10).format(),
    zwave.configurationV1.configurationSet(parameterNumber: 10, configurationValue: [1], size:1).format(),
    zwave.configurationV1.configurationGet(parameterNumber: 10).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 37).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 38).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 39).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 40).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 41).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 42).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 43).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 44).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 45).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 46).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 47).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 48).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 49).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 50).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 51).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 52).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 53).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 54).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 55).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 56).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 57).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 58).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 59).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 60).format(),

zwave.versionV1.versionCommandClassGet(requestedCommandClass: 61).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 62).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 63).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 64).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 65).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 66).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 67).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 68).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 69).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 70).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 71).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 72).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 73).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 74).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 75).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 76).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 77).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 78).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 79).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 80).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 81).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 82).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 83).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 84).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 85).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 86).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 87).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 88).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 89).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 90).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 91).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 92).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 93).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 94).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 95).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 96).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 97).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 98).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 99).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 100).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 101).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 102).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 103).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 104).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 105).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 106).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 107).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 108).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 109).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 110).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 111).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 112).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 113).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 114).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 115).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 116).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 117).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 118).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 119).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 120).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 121).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 122).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 123).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 124).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 125).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 126).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 127).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 128).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 129).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 130).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 131).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 132).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 133).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 134).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 135).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 136).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 137).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 138).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 139).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 140).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 141).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 142).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 143).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 144).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 145).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 146).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 147).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 148).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 149).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 150).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 151).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 152).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 153).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 154).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 155).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 156).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 157).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 158).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 159).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 160).format(),

zwave.versionV1.versionCommandClassGet(requestedCommandClass: 161).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 162).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 163).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 164).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 165).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 166).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 167).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 168).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 169).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 170).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 171).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 172).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 173).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 174).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 175).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 176).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 177).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 178).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 179).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 180).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 181).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 182).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 183).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 184).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 185).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 186).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 187).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 188).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 189).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 190).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 191).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 192).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 193).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 194).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 195).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 196).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 197).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 198).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 199).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 200).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 201).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 202).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 203).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 204).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 205).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 206).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 207).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 208).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 209).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 210).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 211).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 212).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 213).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 214).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 215).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 216).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 217).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 218).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 219).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 220).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 221).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 222).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 223).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 224).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 225).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 226).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 227).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 228).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 229).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 230).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 231).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 232).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 233).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 234).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 235).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 236).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 237).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 238).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 239).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 240).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 241).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 242).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 243).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 244).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 245).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 246).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 247).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 248).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 249).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 250).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 251).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 252).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 253).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 254).format(),
zwave.versionV1.versionCommandClassGet(requestedCommandClass: 255).format()
],500)
//}

    //zwave.configurationV1.configurationGet(parameterNumber: 14).format(),
    //zwave.configurationV1.configurationSet(parameterNumber: 14, configurationValue: [1], size:1).format(),
    //zwave.configurationV1.configurationGet(parameterNumber: 14).format()
//],1000)



}
1 Like

Hi,

I just came across this link http://www.smarthomedb.com/product/fibaro-roller-shutter-2/compatibilities/p939 where they clearly mention the support of the Fibaro Fgrm-222-roller-shutter with Samsung Smartthing Hub and
the old hub too. Anyone tried this and worked for him?

Thanks

1 Like

@Arcaneshark, I just bought the Fibaro FGRM 222 EU version (although the datasheet says it supports all frequencies) and I am not able to discover it from my ST Hub version2. I installed the device package and still no luck.
I just power the device using the N and L, without any S and O, is that an issue?

Thanks in Advance

The EU version will only work with an EU hub.

1 Like