Reactor 3.6 problem on openLuup

Hi @rigpapa,

Found an issue with version 3.6 on openLuup. openLuup does not seem to have the GetStatus call implemented.

I made this modification in L_Reactor.lua

local function cleanSensorState( tdev, taskid )
	D("cleanSensorState(%1,%2)", tdev, taskid)
	local content
-- GetStatus is not available on openLuup!!	if false and unsafeLua then -- ??? deprecate out if not needed for openLuup
	if isOpenLuup then -- ??? deprecate out if not needed for openLuup

This is the error I am getting with the original code:

2020-06-17 12:04:34.416   luup.call_action:: 0.urn:micasaverde-com:serviceId:HomeAutomationGateway1.GetStatus 
2020-06-17 12:04:34.416   luup_log:112: Reactor: GetStatus action failed for #195; rc=501, ra={  }
2020-06-17 12:04:34.417   luup_log:112: Reactor: "RS_SK_Computer" (#195) tick failed: "./dkjson.lua:397: bad argument #1 to 'strfind' (string expected, got nil)"
2020-06-17 12:04:34.417   luup_log:112: stack traceback:
	./L_Reactor.lua:5761: in function <./L_Reactor.lua:5757>
	[C]: in function 'strfind'
	./dkjson.lua:397: in function 'scanwhite'
	./dkjson.lua:553: in function <./dkjson.lua:551>
	(tail call): ?
	./L_Reactor.lua:4828: in function <./L_Reactor.lua:4809>
	(tail call): ?
	[C]: in function 'xpcall'
	./L_Reactor.lua:5755: in function <./L_Reactor.lua:5728>
	[C]: in function 'pcall'
	./openLuup/scheduler.lua:191: in function 'context_switch'
	./openLuup/scheduler.lua:656: in function 'luup_callbacks'
	./openLuup/scheduler.lua:679: in function 'start'
	openLuup/init.lua:303: in main chunk

Cheers Rene

I don’t even know what that is!

It’s not documented here…

http://wiki.micasaverde.com/index.php/Luup_UPnP_Variables_and_Actions#HomeAutomationGateway1

It’s declared in the service. It gives back the same information as the status/lu_status request, just state variables for all devices (if no DeviceNum) or a specified device.

    <action>
      <name>GetStatus</name>
      <argumentList>
        <argument>
          <name>Status</name>
          <direction>out</direction>
          <relatedStateVariable>UserData</relatedStateVariable>
        </argument>
        <argument>
          <name>DataFormat</name>
          <direction>in</direction>
          <relatedStateVariable>DataFormat</relatedStateVariable>
        </argument>
        <argument>
          <name>DeviceNum</name>
          <direction>in</direction>
          <relatedStateVariable>DeviceNum</relatedStateVariable>
          <optional/>
        </argument>
        <argument>
          <name>UDN</name>
          <direction>in</direction>
          <relatedStateVariable>UDN</relatedStateVariable>
          <optional/>
        </argument>
      </argumentList>
    </action>

In any case, this (the function where GetStatus is used) is a trivial non-critical function to the operation of Reactor. All it does is remove unused state variables from the ReactorSensor (for example, an exported expression that is no longer defined). It success or failure has no effect on operation.

1 Like