Locally I can place the current class (self) in a variable and call an Object in this class.
This code is working (localy):
function QuickApp:onInit()
local sender = {value='Yes', class=self}
sender.class:localPrintValue(sender.value)
end
function QuickApp:localPrintValue(value)
if value == nil then value = 'No' end
self:debug('Can I print this : '..value)
end
[15.09.2020] [13:22:42] [DEBUG] [QUICKAPP105]: Can I print this : Yes
If I send this variable to another class using fibaro.call(id, 'action', variable) , the call disappears into the darkness.
Calling the Object in the other class(QuickApp) results in calling the nil value?
!!! This next code is (because of the class=self) not working:
fibaro.call(qaID,"updateMyProperty", {value=newValue, class=self})
function QuickApp:updateMyProperty (sender)
local value = 0
if type(sender) == 'table' then
-- Call comes from elsewhere..
value = sender.value
self:debug('Device updated from: '..tostring(sender.class.id)..'.'..tostring(sender.class.name)..' with value: '..tostring(value))
else
value = sender
self:debug('local call, with value: '..tostring(value))
end
end
This is a pity because I would like to indicate in the called class where the call was coming from.
Now I solve this by sending a table with : sender = {id=self.id, name=self.name, value=newValue}.
Do I do something wrong? or has Fibaro disabled the oop function for sending object classes?