Fibaro Smart Implant: instructions to configure binary inputs (Updated, SKIP first two posts, instructions on the 3rd)

yes … as a generic zwave device

I’m traveling, but look at the other messages - and be sure to specify the correct number of temp sensors.

I don’t have temperature sensors.
At the binary sensors I want to attach one door sensor, one on the gate for pedestrian traffic and one on the gates for car traffic to know when they are closed / open.
The outputs want to use them to control the opening of the gates for car traffic and the unlocking of the gate for pedestrian traffic.

Ok, so remove the part that is configuring them. As I said, I didn’t tested with external outputs, but inputs are working ok.

Hi
I included the device the outputs work but not the inputs, all the child device appear as the photo of TMC, then after launching the script I only have three device like the second photo of TMC and nothing works anymore. Device added in generic zwave device
Sorry for my bad language, i use Google translation

Please post your variables here. Multichcapabilities should be set appropriately. Look at main device only.

Hi therealdb
Here is the Multicapabilities result
1,7,1,94,108,34,152,159,
2,7,1,94,108,34,152,159,
3,33,1,94,108,34,152,159,
4,33,1,94,108,34,152,159,
5,16,1,94,108,34,152,159,
6,16,1,94,108,34,152,159,
7,33,1,94,108,34,152,159,

On Jeedom it’s ok inputs and outputs work

Here are the screenshots here that can help you, I don’t understand much


to dissociate the inputs from the outputs :
CommandClasse 117(0x75) instance 1 index 0 for OUT1
CommandClasse 117(0x75) instance 2 index 0 for OUT2

Hi all
I still have the same problem with fgbs222, could you find a solution on your side?

I used the script like this:

   -- hide all
    		elseif altid == "e3" or altid == "e4" or altid == "e5" or altid == "e6" or altid == "m15" or altid == "m1" or altid == "b10" then
    			****luup.attr_set("invisible", "", deviceNo)

And I got that in Vera:

and this in ALTUI
image

According to the manual, the inputs of the outputs can be separated.
image

But how do I set local protection to "2’’ ?

I’m sorry I can’t help more than that. I don’t have anything to try the outputs, since I really need it just to handle inputs and temperatures.

Hello
can you tell us how the commandclasses work and how to add them please?

Hi and thanks for sharing all your experiences.

I am trying to monitor a Bio fuel heather using Smart Implant.
The ideal would be to use In1 and In2 as 2 or 3-wire analog sensors (parameter 20 should be 5 or 4) and one DS18B20 temp sensor.

I have tried to adapt the code in post 3 to faciltate this (Parameter 20 set to 4 for both IN1 and IN2):

local masterID = 301
local desc = "SmartImplant"

-- master
luup.attr_set("device_file", "D_ComboDevice1.xml", masterID)
luup.attr_set("device_json", "D_ComboDevice1.json", masterID)
luup.attr_set("device_type", "urn:schemas-micasaverde-com:device:ComboDevice:1", masterID)
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "BasicSetCapabilities", "00=Ue1,FF=Te1,2=Ue2,1=Te2", masterID)
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "VariablesSet", "20-IN1 mode,1d,4,21-IN2 mode,1d,4,67-ext temp change external channel,2d,3,68-ext temp periodical report,2d,3600", masterID)
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "AssociationSet", "1,z.8", masterID) -- this will report temp from endpoint 8
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "MultiChSensType", "m3=15,m4=15,m7=1,m8=1", masterID) -- for child: if you 1 temp sensors, leave it as it is. otherwise, remove or add mx=1 according to your config
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "PollSettings", "0", masterID) -- polling can be disabled
luup.variable_set("urn:micasaverde-com:serviceId:HaDevice1", "ChildrenSameRoom", "0", masterID) -- if you want to freely move children in other rooms
luup.attr_set("name", (desc .. " Master"), masterID)
luup.devices[masterID].subcategory_num = 11
luup.devices[masterID].category_num = 0

-- children
for deviceNo, d in pairs(luup.devices) do
    local parent = d.device_num_parent or -1
    if parent == masterID then
		local altid = luup.attr_get("altid", deviceNo)
		-- fix binary sensors
		if altid == "e1" or altid == "e2" then
			luup.attr_set("device_file", "D_MotionSensor1.xml", deviceNo)
			luup.attr_set("device_json", "D_MotionSensorAsSirenNoArm1.json", deviceNo)
			luup.attr_set("device_type", "urn:schemas-micasaverde-com:device:MotionSensor:1", deviceNo)
			luup.attr_set("name", (desc .. " " .. (altid == "e1" and "IN1" or "IN2")), deviceNo)
			d.category_num = 4
			d.subcategory_num = 8
		-- fix for temp sensors
		elseif altid == "e7" or altid == "e8" or altid == "e9" or altid == "e10" or altid == "e11" then
			luup.attr_set("device_file", "D_TemperatureSensor1.xml", deviceNo)
			luup.attr_set("device_json", "D_TemperatureSensor1.json", deviceNo)
			luup.attr_set("device_type", "urn:schemas-micasaverde-com:device:TemperatureSensor:1", deviceNo)
			luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "SensorMlScale", 1, deviceNo)
			luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "SensorMlType", 1, deviceNo)

			local name = "T #" .. tostring(tonumber(string.sub(altid, 2)) - 7)

			luup.attr_set("name", (desc .. " " .. (altid == "e7" and "Int T" or name)), deviceNo)

			d.category_num = 17
			d.subcategory_num = 0

			luup.attr_set("invisible", "0", deviceNo)
		-- hide all
		elseif altid == "e3" or altid == "e4" or altid == "e5" or altid == "e6" or altid == "m15" or altid == "m1" or altid == "b10" then
			luup.attr_set("invisible", "1", deviceNo)
		end
    end
end

I get this result:


Where SmartImplant Int T seems to be the only thing “alive” which is not very helpful.

I cant make heads or tails out of this. ´
What I need is SmartImplant IN1 and IN2 to indicare On and Off or, as alternative, the current voltage on the terminals. Also I would like to have the _Temperature Sensor (now stuck at 30,10C to start update.

I would be very grateful if someone could give me a clue…

As I said, I have no way to test output at the moment. What are you trying to do, exactly?

Yes, I totally understand that you can’t test all different setups.

What I am trying to achieve is 3 input sensors from SmartImplant to be readable in VeraPlus.
Two sensors that can detect a digital signal 0 to +5V each.
One DS18B20 sensor.

My best guess is that the two digital sensors are probably best achieved by configuring IN1 or IN2 as a 3-wire 0-10V sensor mentioned in the Operating Manual:

I copied your code from post 3 and tried to adapt it to my setup, the parameter changes to reflect my setup with two 3-wire sensors and one DS18B20 sensors are made in the following rows and I am not sure I got it right:

luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "VariablesSet", "20-IN1 mode,1d,4,21-IN2 mode,1d,4,67-ext temp change external channel,2d,3,68-ext temp periodical report,2d,3600", masterID)
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "AssociationSet", "1,z.8", masterID) -- this will report temp from endpoint 8
luup.variable_set("urn:micasaverde-com:serviceId:ZWaveDevice1", "MultiChSensType", "m3=15,m4=15,m7=1,m8=1", masterID) -- for child: if you 1 temp sensors, leave it as it is. otherwise, remove or add mx=1 according to your config

Also, I am confused about how to deploy the code.
I have pasted this in Vera: Apps>Develop apps>Test Luup code (Lua) window and then hit “Go”.
In the other thread you write:

Just issue a luup.reload() and you’ll be done.

I cant find luup.reload(), am I doing something wrong here?

Best regards Jan-Ove

This should be good, and luup.reload is code too.

The problem is that part of my code is capturing multi level report and forwards this to the endpoints, but with analog sensors this trick will not work. I will need to see the logs in order to implement a solution, but I can’t think of a similar sensor to use in my case at the moment.

As alternatives, if 0-1 is enough, you can put something that convert the signal, or try with a fibaro rgbw controller. Search in the forum, I remember someone using it to track moisture levels.

Thanks!

0-1 is definitely enough for my application.

As you write I may add something that can power relays or similar, there is no specification on how much power can be drawn from the outputs of my bio-burner.
Do you deem a configuration similar to the one below to be compatible with your script, after adaption of the s parameters? If so, I will proceed testing and let you know the results.

All the best,

Yep, binary inputs/sensors are working OK. Here’s my test Smart Implant, now on my work bench, but soon to be attached to the wind/rain sensors (giving 0-1 only).

The same result can be achieved with a relay (Fibaro, Qubino, or similar), but smart implant is configured as sensors, so bonus point to a better visual representation. I have in fact a couple of sensors attached to normal Fibaro FGS 222 (working with 12V inputs running at a different voltage as the main source) and it’s working, but I had to configure triggers, virtual devices and so on, while a Smart Implant is natively doing so. But if you can’t manage to get a 0-1, you may explore different routes - and maybe try to accomplish the same via a custom wifi-based device, if you’re comfortable with this, updating the Vera on demand via HTTP.

I’ve been able to integrate Fibaro Smart Implant directly on Vera Plus, firmware 1.7.4970 (7.31), without any programming, as a Generic Z-Wave device to use the binary input. I placed it inside a Powermax Pro security central connected to the PGM output.

The system is working fine, but I’m experiencing a issue: the change of the state of the PGM output takes between 8 to 10 minutes to be reported to Vera Plus.

I already checked that the Powermax Pro changes instantaneously, the Smart Implant Output 1 changes instantaneously, but in Vera Plus system the change only occur about 8 minutes later.

I have parameter 20 to 3 (bistable button) and already checked the 152 and 156 advanced parameters and they are in “0” (no delay / auto off disable).

Any ideas?

that’s because it’s not reporting via associations, as the script here is doing, but by polling. You can try to be more aggressive here and change a polling every 60 seconds - but cause more Zwave chattiness - or try to change it and let it report by association.

1 Like

Can I active a report by association just by changing some custom parameter like 47 or 49? I’m a newbie where and I don’t quite understand and manage associations… But I know that I prefer not to add a new script for now because I can’t understand what the script is really doing and how it will work in future firmware…