@CatmanV2 This is from my hallway and the sensor is placed near a light source so the level goes up when lights are on. This is to handle cloudy days and the hallway is a bit dark and needs artificial light but when the sun finds its way in, the lights turn off.
Crille
Posts
-
Logic Assistance: Exterior Lights on when Illuminance Below Threshold -
Logic Assistance: Exterior Lights on when Illuminance Below ThresholdI have a local variable as trigger for cases like this. When
lightsOnistruethe rule sets.
lightsOn =do lux = getEntity( "mosquitto-mqtt>rorelse_hallen" ).attributes.light_sensor.value, lights = getEntity( "mosquitto-mqtt>hallen1" ).attributes.power_switch.state, case when lux <= 17 : bool(true) when lights and lux >= 18 and lux <= 25 : bool(true) else bool(false) end done -
MQTT templates for ZIgbee scene controller, or a better way?You may take a look at the Reactor docs for Handling Home Assistant Events or build/modify your own MQTT template where you need to map all published actions to standard actions e.g.
1_singletosingle. -
[Solved] Local expression in Rule does not evaluate as they used to doSuper, it now behaves as expected. Once again thank you!
-
[Solved] Local expression in Rule does not evaluate as they used to doNo change after restart, files uploaded.
-
[Solved] Local expression in Rule does not evaluate as they used to doEdit: Solved in 25323.
I experience some issues since local expressions changed behavior in some previous build.
I've set up a test rule to verify my suspicions.
Previously this worked, when Reactor uptime changed all local expressions were evaluated but now only timeNowis updated andtriggerNowdoes not change (even though it is dependent ontimeNow), so the Rule never sets.
I can work around the issue bygetEntity(...uptime)intriggerNow, then the expression is evaluated and changes totrueand the rule sets.Log from different test time:
[latest-25321]2025-11-18T14:16:44.026Z <Rule:INFO> TEST - time in expression as trigger (rule-mi4ldhta in Funktioner) started [latest-25321]2025-11-18T14:17:33.345Z <Rule:INFO> TEST - time in expression as trigger (rule-mi4ldhta in Funktioner) starting rule state evaluation; because entity-changed System#reactor_system>system [latest-25321]2025-11-18T14:17:33.345Z <Rule:INFO> Rule#rule-mi4ldhta local triggerNow is a dependency of another variable [latest-25321]2025-11-18T14:17:33.348Z <Rule:INFO> TEST - time in expression as trigger (rule-mi4ldhta in Funktioner) starting rule state evaluation; because entity-changed System#reactor_system>system [latest-25321]2025-11-18T14:17:33.348Z <Rule:INFO> Rule#rule-mi4ldhta local triggerNow is a dependency of another variable [latest-25321]2025-11-18T14:17:33.350Z <Rule:INFO> TEST - time in expression as trigger (rule-mi4ldhta in Funktioner) starting rule state evaluation; because entity-changed System#reactor_system>system [latest-25321]2025-11-18T14:17:33.350Z <Rule:INFO> Rule#rule-mi4ldhta local triggerNow is a dependency of another variable [latest-25321]2025-11-18T14:17:33.354Z <Rule:INFO> TEST - time in expression as trigger (rule-mi4ldhta in Funktioner) starting rule state evaluation; because entity-changed System#reactor_system>system [latest-25321]2025-11-18T14:17:33.355Z <Rule:INFO> Rule#rule-mi4ldhta local triggerNow is a dependency of another variable [latest-25321]2025-11-18T14:17:38.345Z <Rule:INFO> TEST - time in expression as trigger (rule-mi4ldhta in Funktioner) starting rule state evaluation; because timer-trigger Timer#rule-mi4ldhta [latest-25321]2025-11-18T14:17:38.345Z <Rule:INFO> Rule#rule-mi4ldhta local triggerNow is a dependency of another variableIs this the expected behavior?
Bare metal, latest-25321
-
Home Assistant 2025.11.2 and latest-25315Yes, solved. Thank you! Next time I will remember to do a manual backup of HASS before upgrading

-
Home Assistant 2025.11.2 and latest-25315Heads up!
It might be just my system or it might be a good idea to wait for HASSController to bless 2025.11.2 before you update HASS.
@toggledbits can you confirm?[latest-25315]2025-11-17T14:05:05.818Z <HassController:NOTICE> HassController#hass connecting to ws://192.168.1.180:8123/api/websocket [latest-25315]2025-11-17T14:05:05.820Z <HassController:NOTICE> HassController#hass connected, starting protocol [latest-25315]2025-11-17T14:05:05.821Z <HassController:INFO> HassController#hass successful authentication with ws://192.168.1.180:8123; fetching initial data... [latest-25315]2025-11-17T14:05:05.822Z <HassController:INFO> HassController#hass HA reports version "2025.11.2" location Hem timezone Europe/Stockholm state RUNNING safe_mode false [latest-25315]2025-11-17T14:05:05.822Z <HassController:ERR> HassController#hass error while attempting config dump: [TypeError] Cannot read properties of undefined (reading 'tag') [-] [latest-25315]2025-11-17T14:05:05.823Z <HassController:ERR> HassController#hass failed to complete startup: [TypeError] Cannot read properties of undefined (reading 'tag') [-] [latest-25315]2025-11-17T14:05:05.823Z <HassController:CRIT> TypeError: Cannot read properties of undefined (reading 'tag') [-] TypeError: Cannot read properties of undefined (reading 'tag') at /home/homebridge/reactor/server/lib/AlertManager.js:141:144 at Array.findIndex (<anonymous>) at AlertManager.addAlert (/home/homebridge/reactor/server/lib/AlertManager.js:141:114) at /home/homebridge/reactor/server/lib/HassController.js:1464:367 at process.processTicksAndRejections (node:internal/process/task_queues:103:5) [latest-25315]2025-11-17T14:05:05.825Z <HassController:NOTICE> HassController#hass websocket closing, 1000 -
Reactor w/HA 2025.11 error on set_datetime service call setting only timeSounds good, thank you for your work!
-
Reactor w/HA 2025.11 error on set_datetime service call setting only time -
There is an alternative to homebridge-mqttthingJust throwing out a general hint to the people running Homebridge and MQTT.
Homebridge MQTT-Thing hasn't been updated in almost 2 years and it falls behind on compatibility with the development of Homebridge.
I was looking for a replacement and found Homebridge Easy MQTT and I think it's a good replacement for MQTT-Thing. I particularly find Easy MQTT
Value tranformerseasier to to understand and use compared to MQTT-ThingApplyfunction.It took a while to migrate everything but I'm pleased and can recommend.
-
Reactor w/HA 2025.11 error on set_datetime service call setting only time@toggledbits Do you know if this is related to that PR or is it a change they made in 2025.11.1?
[latest-25310]2025-11-11T13:16:24.319Z <HassController:INFO> HassController#hass perform x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_dag with { "time": "10:45" } [latest-25310]2025-11-11T13:16:24.320Z <HassController:INFO> HassController#hass: sending payload for x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_dag action: { "type": "call_service", "service_data": { "date": (null), "time": "10:45", "datetime": (null), "timestamp": (null) }, "domain": "input_datetime", "service": "set_datetime", "target": { "entity_id": "input_datetime.vvb_dag" } } [latest-25310]2025-11-11T13:16:24.321Z <HassController:ERR> HassController#hass request 1762866984320<2025-11-11 14:16:24> (call_service) failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.321Z <HassController:WARN> HassController#hass action x_hass_input_datetime.set_datetime({ "time": "10:45" }) on Entity#hass>input_datetime_vvb_dag failed! [latest-25310]2025-11-11T13:16:24.321Z <HassController:INFO> Service call payload: {"type":"call_service","service_data":{"date":null,"time":"10:45","datetime":null,"timestamp":null},"domain":"input_datetime","service":"set_datetime","target":{"entity_id":"input_datetime.vvb_dag"},"id":1762866984320} [latest-25310]2025-11-11T13:16:24.322Z <HassController:INFO> Service data: {"fields":{"date":{"example":"\"2019-04-20\"","selector":{"text":{"multiline":false,"multiple":false}}},"time":{"example":"\"05:04:20\"","selector":{"time":{}}},"datetime":{"example":"\"2019-04-20 05:04:20\"","selector":{"text":{"multiline":false,"multiple":false}}},"timestamp":{"selector":{"number":{"min":0,"max":9223372036854776000,"mode":"box","step":1}}}},"target":{"entity":[{"domain":["input_datetime"]}]}} [latest-25310]2025-11-11T13:16:24.322Z <Engine:ERR> Engine#1 reaction rule-mgb8pfhs:S step 0 perform x_hass_input_datetime.set_datetime failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.322Z <Engine:INFO> Engine#1 action args: { "time": "10:45" } [latest-25310]2025-11-11T13:16:24.322Z <Engine:INFO> Resuming reaction Sätt Schema VVB i Home Assistant<AKTIV> (rule-mgb8pfhs:S) from step 1 [latest-25310]2025-11-11T13:16:24.323Z <HassController:INFO> HassController#hass perform x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_natt with { "time": "03:00", "timestamp": 0 } [latest-25310]2025-11-11T13:16:24.323Z <HassController:INFO> HassController#hass: sending payload for x_hass_input_datetime.set_datetime on Entity#hass>input_datetime_vvb_natt action: { "type": "call_service", "service_data": { "date": (null), "time": "03:00", "datetime": (null), "timestamp": 0 }, "domain": "input_datetime", "service": "set_datetime", "target": { "entity_id": "input_datetime.vvb_natt" } } [latest-25310]2025-11-11T13:16:24.324Z <HassController:ERR> HassController#hass request 1762866984323<2025-11-11 14:16:24> (call_service) failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.324Z <HassController:WARN> HassController#hass action x_hass_input_datetime.set_datetime({ "time": "03:00", "timestamp": 0 }) on Entity#hass>input_datetime_vvb_natt failed! [latest-25310]2025-11-11T13:16:24.324Z <HassController:INFO> Service call payload: {"type":"call_service","service_data":{"date":null,"time":"03:00","datetime":null,"timestamp":0},"domain":"input_datetime","service":"set_datetime","target":{"entity_id":"input_datetime.vvb_natt"},"id":1762866984323} [latest-25310]2025-11-11T13:16:24.324Z <HassController:INFO> Service data: {"fields":{"date":{"example":"\"2019-04-20\"","selector":{"text":{"multiline":false,"multiple":false}}},"time":{"example":"\"05:04:20\"","selector":{"time":{}}},"datetime":{"example":"\"2019-04-20 05:04:20\"","selector":{"text":{"multiline":false,"multiple":false}}},"timestamp":{"selector":{"number":{"min":0,"max":9223372036854776000,"mode":"box","step":1}}}},"target":{"entity":[{"domain":["input_datetime"]}]}} [latest-25310]2025-11-11T13:16:24.324Z <Engine:ERR> Engine#1 reaction rule-mgb8pfhs:S step 1 perform x_hass_input_datetime.set_datetime failed: [Error] Not a parseable type for dictionary value @ data['date'] [-] [latest-25310]2025-11-11T13:16:24.324Z <Engine:INFO> Engine#1 action args: { "time": "03:00", "timestamp": 0 } [latest-25310]2025-11-11T13:16:24.325Z <Engine:INFO> Resuming reaction Sätt Schema VVB i Home Assistant<AKTIV> (rule-mgb8pfhs:S) from step 2 [latest-25310]2025-11-11T13:16:24.325Z <Engine:INFO> Sätt Schema VVB i Home Assistant<AKTIV> all actions completed. -
[Solved] alarm() in global expression throws error in log.Yes sir, your magic has worked for sure!
No more errors, thank you very much. -
[Solved] alarm() in global expression throws error in log.New variable, another entity but same error with
alarm()
There must be something off in my system then.[latest-25310]2025-11-07T17:14:14.037Z <Engine:NOTICE> Engine#1 creating global expression neverusedbeforevariable [latest-25310]2025-11-07T17:14:14.039Z <Engine:CRIT> Engine#1 alarm() scheduled neverusedbeforevariable tick for 1762535669039<2025-11-07 18:14:29> = now 1762535654039<2025-11-07 18:14:14> + delay 15000 [latest-25310]2025-11-07T17:14:22.195Z <Engine:ERR> Engine#1: error evaluating expression neverusedbeforevariable: [ReferenceError] alarm() can only be used in global expressions [-] [latest-25310]2025-11-07T17:14:22.195Z <Engine:ERR> Engine#1: expression: alarm(15), getEntity( "vera>device_56" ).attributes.x_vera_svc_micasaverde_com_EnergyMetering1.momentary_active_import [latest-25310]2025-11-07T17:14:22.195Z <Engine:CRIT> ReferenceError: alarm() can only be used in global expressions [-] ReferenceError: alarm() can only be used in global expressions at /home/homebridge/reactor/server/lib/Engine.js:1455:23 at _run (/home/homebridge/reactor/common/lexp.js:1704:34) at /home/homebridge/reactor/common/lexp.js:1426:29 at Array.forEach (<anonymous>) at _run (/home/homebridge/reactor/common/lexp.js:1425:28) at Object.run (/home/homebridge/reactor/common/lexp.js:1855:24) at Engine._eval_expr (/home/homebridge/reactor/server/lib/Engine.js:1170:141) at Engine._expr_dependency (/home/homebridge/reactor/server/lib/Engine.js:1555:82) at /home/homebridge/reactor/server/lib/MessageBus.js:114:195 at Array.forEach (<anonymous>) [latest-25310]2025-11-07T17:14:27.526Z <Rule:INFO> Notifiering - Auto off laddning poolrobot (rule-md7japbd in Notifieringar) starting rule state evaluation; because entity-changed Switch#mosquitto-mqtt>laddning_poolrobot [latest-25310]2025-11-07T17:14:29.039Z <Engine:CRIT> Engine#1 neverusedbeforevariable alarm() tick [latest-25310]2025-11-07T17:14:29.039Z <Engine:CRIT> Engine#1 alarm() scheduled neverusedbeforevariable tick for 1762535684039<2025-11-07 18:14:44> = now 1762535669039<2025-11-07 18:14:29> + delay 15000 [latest-25310]2025-11-07T17:14:30.681Z <Engine:ERR> Engine#1: error evaluating expression neverusedbeforevariable: [ReferenceError] alarm() can only be used in global expressions [-] [latest-25310]2025-11-07T17:14:30.681Z <Engine:ERR> Engine#1: expression: alarm(15), getEntity( "vera>device_56" ).attributes.x_vera_svc_micasaverde_com_EnergyMetering1.momentary_active_import [latest-25310]2025-11-07T17:14:30.681Z <Engine:CRIT> ReferenceError: alarm() can only be used in global expressions [-] ReferenceError: alarm() can only be used in global expressions at /home/homebridge/reactor/server/lib/Engine.js:1455:23 at _run (/home/homebridge/reactor/common/lexp.js:1704:34) at /home/homebridge/reactor/common/lexp.js:1426:29 at Array.forEach (<anonymous>) at _run (/home/homebridge/reactor/common/lexp.js:1425:28) at Object.run (/home/homebridge/reactor/common/lexp.js:1855:24) at Engine._eval_expr (/home/homebridge/reactor/server/lib/Engine.js:1170:141) at Engine._expr_dependency (/home/homebridge/reactor/server/lib/Engine.js:1555:82) at /home/homebridge/reactor/server/lib/MessageBus.js:114:195 at Array.forEach (<anonymous>) -
[Solved] alarm() in global expression throws error in log.Sorry but no
-
[Solved] alarm() in global expression throws error in log.Nowhere, strictly to test the function before I put it in production
-
[Solved] alarm() in global expression throws error in log.Oops, sorry. There's a lot going on with other stuff then this is logged.
[latest-25310]2025-11-07T16:16:51.930Z <Engine:INFO> Engine#1 global expression poolHeat old value=false [latest-25310]2025-11-07T16:16:51.930Z <Engine:INFO> Engine#1 evaluation context { "__lvar": { "MAXINT": 9007199254740991, "MININT": -9007199254740991, "MAXFLOAT": 1.7976931348623157e+308, "MINFLOAT": 5e-324, "testHere": "test", "chargeAmps": 16, "poolHeat": false, "poolHeatTrigger": "auto", "Växthuset": { "LYWSD03aa6def": { "x_mqtt_device": { "online": true, "templates": Array(1) ["tasmota_sensor_lyw"] }, "temperature_sensor": { "value": 7.3, "units": "C" }, "humidity_sensor": { "value": 96, "units": "%" }, "battery_power": { "level": 0.75, "since": 1762532173549, "alert_level": 0.5 }, "reactor_entity": { } }, "Flora1": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 10.3, "units": "C" }, "light_sensor": { "value": 0, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora1_Lux": 0.0001, "Flora2": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 8.4, "units": "C" }, "light_sensor": { "value": 618, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora2_Lux": 618 }, "Medeltemp": 8.67, "Luftfuktighet": 1.1162790697674418, "EzloDevicesNotResponding": Array(0) [], "prevEzloDevicesNotResponding": Array(0) [], "VeraDevicesNotResponding": Array(0) [], "openLuupWasDown": "No", "Charging": false, "ReactorRestarted": false, "HumOutdoor": 86, "TempOutdoor": 8.82, "Självförsörjande": 0, "Elpris": 178.405, "restartCameraRTSP": false, "lovVecka": false, "VVBsellingHigh": false, "HassElpriser": { "buy_sek": 1.86, "sell_sek": 1.53 }, "chargeNow": false, "alertBLE": true, "ElpriserMedelMedian": "Idag:86/87, Imorgon:78/65", "ChargingPaused": false, "alertElmatare": false, "functions": "Global functions", "functionsDEV": "Global functions", "alarmTest": "1.123" }, "__depth": 0, "__tag": "$global", "__func": { "_compare": [Function (anonymous) (?,?,?)], "fileRead": [Function (anonymous) (?,?,?)], "fileWrite": [Function (anonymous) (?,?,?,?)], "fileExists": [Function (anonymous) (?,?)], "dumpVars": [Function (anonymous) (?)], "strftime": [Function (anonymous) (?)], "format": [Function (anonymous) (?)], "geodist": [Function (anonymous) (?)], "_assign": [Function (anonymous) (?,?,?)], "getEntity": [Function _0x498020 (?,?)], "entity": [Function _0x498020 (?,?)], "$": [Function _0x498020 (?,?)], "matchEntities": [Function (anonymous) (?,?)], "groupMembers": [Function (anonymous) (?,?)], "performAction": [Function _0x498020 (?,?,?,?)], "perform": [Function _0x498020 (?,?,?,?)], "getRule": [Function (anonymous) (?,?)], "isRuleSet": [Function (anonymous) (?,?)], "isRuleEnabled": [Function (anonymous) (?,?)], "alarm": [Function (anonymous) (?)], "getPrices": [Function (anonymous) (?)], "getSlots": [Function (anonymous) (?)], "cheapestHours": [Function (anonymous) (?)], "VVBdayRange": [Function (anonymous) (?)], "getChargingTime": [Function (anonymous) (?)], "getPricesOLD": [Function (anonymous) (?)], "SlotsOLD": [Function (anonymous) (?)], "cheapestHoursOLD": [Function (anonymous) (?)], "getChargingTimeOLD": [Function (anonymous) (?)] }, "__global": { "__lvar": (seen=.__lvar), "__depth": 0, "__tag": "$global", "__func": (seen=.__func), "__global": (seen=.__global), "__alarmhandle": { "alarmTest": Timer(Timer#alarm:alarmTest) }, "__suppress_dependencies": true, "__tree": Array(1) ["poolHeat"] }, "__alarmhandle": (seen=.__global.__alarmhandle), "__suppress_dependencies": true, "__tree": (seen=.__global.__tree) } [latest-25310]2025-11-07T16:16:51.930Z <Engine:INFO> Engine#1 expr poolHeat result changed=false, was false now false [latest-25310]2025-11-07T16:16:51.932Z <Engine:INFO> Engine#1 evaluating global alarmTest expression alarm(0), alarm(15), getEntity( "hass>sensor_momentary_active_import" ).attributes.string_sensor.value source global [latest-25310]2025-11-07T16:16:51.932Z <Engine:INFO> Engine#1 global expression alarmTest old value="1.123" [latest-25310]2025-11-07T16:16:51.932Z <Engine:INFO> Engine#1 evaluation context { "__lvar": { "MAXINT": 9007199254740991, "MININT": -9007199254740991, "MAXFLOAT": 1.7976931348623157e+308, "MINFLOAT": 5e-324, "testHere": "test", "chargeAmps": 16, "poolHeat": false, "poolHeatTrigger": "auto", "Växthuset": { "LYWSD03aa6def": { "x_mqtt_device": { "online": true, "templates": Array(1) ["tasmota_sensor_lyw"] }, "temperature_sensor": { "value": 7.3, "units": "C" }, "humidity_sensor": { "value": 96, "units": "%" }, "battery_power": { "level": 0.75, "since": 1762532173549, "alert_level": 0.5 }, "reactor_entity": { } }, "Flora1": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 10.3, "units": "C" }, "light_sensor": { "value": 0, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora1_Lux": 0.0001, "Flora2": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 8.4, "units": "C" }, "light_sensor": { "value": 618, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora2_Lux": 618 }, "Medeltemp": 8.67, "Luftfuktighet": 1.1162790697674418, "EzloDevicesNotResponding": Array(0) [], "prevEzloDevicesNotResponding": Array(0) [], "VeraDevicesNotResponding": Array(0) [], "openLuupWasDown": "No", "Charging": false, "ReactorRestarted": false, "HumOutdoor": 86, "TempOutdoor": 8.82, "Självförsörjande": 0, "Elpris": 178.405, "restartCameraRTSP": false, "lovVecka": false, "VVBsellingHigh": false, "HassElpriser": { "buy_sek": 1.86, "sell_sek": 1.53 }, "chargeNow": false, "alertBLE": true, "ElpriserMedelMedian": "Idag:86/87, Imorgon:78/65", "ChargingPaused": false, "alertElmatare": false, "functions": "Global functions", "functionsDEV": "Global functions", "alarmTest": "1.123" }, "__depth": 0, "__tag": "$global", "__func": { "_compare": [Function (anonymous) (?,?,?)], "fileRead": [Function (anonymous) (?,?,?)], "fileWrite": [Function (anonymous) (?,?,?,?)], "fileExists": [Function (anonymous) (?,?)], "dumpVars": [Function (anonymous) (?)], "strftime": [Function (anonymous) (?)], "format": [Function (anonymous) (?)], "geodist": [Function (anonymous) (?)], "_assign": [Function (anonymous) (?,?,?)], "getEntity": [Function _0x498020 (?,?)], "entity": [Function _0x498020 (?,?)], "$": [Function _0x498020 (?,?)], "matchEntities": [Function (anonymous) (?,?)], "groupMembers": [Function (anonymous) (?,?)], "performAction": [Function _0x498020 (?,?,?,?)], "perform": [Function _0x498020 (?,?,?,?)], "getRule": [Function (anonymous) (?,?)], "isRuleSet": [Function (anonymous) (?,?)], "isRuleEnabled": [Function (anonymous) (?,?)], "alarm": [Function (anonymous) (?)], "getPrices": [Function (anonymous) (?)], "getSlots": [Function (anonymous) (?)], "cheapestHours": [Function (anonymous) (?)], "VVBdayRange": [Function (anonymous) (?)], "getChargingTime": [Function (anonymous) (?)], "getPricesOLD": [Function (anonymous) (?)], "SlotsOLD": [Function (anonymous) (?)], "cheapestHoursOLD": [Function (anonymous) (?)], "getChargingTimeOLD": [Function (anonymous) (?)] }, "__global": { "__lvar": (seen=.__lvar), "__depth": 0, "__tag": "$global", "__func": (seen=.__func), "__global": (seen=.__global), "__alarmhandle": { "alarmTest": Timer(Timer#alarm:alarmTest) }, "__suppress_dependencies": true, "__tree": Array(1) ["alarmTest"] }, "__alarmhandle": (seen=.__global.__alarmhandle), "__suppress_dependencies": true, "__tree": (seen=.__global.__tree) } [latest-25310]2025-11-07T16:16:51.932Z <Engine:ERR> Engine#1: error evaluating expression alarmTest: [ReferenceError] alarm() can only be used in global expressions [-] [latest-25310]2025-11-07T16:16:51.933Z <Engine:ERR> Engine#1: expression: alarm(0), alarm(15), getEntity( "hass>sensor_momentary_active_import" ).attributes.string_sensor.value [latest-25310]2025-11-07T16:16:51.945Z <Engine:INFO> Engine#1: path alarmTest->alarmTest [latest-25310]2025-11-07T16:16:51.945Z <Engine:CRIT> ReferenceError: alarm() can only be used in global expressions [-] ReferenceError: alarm() can only be used in global expressions at /home/homebridge/reactor/server/lib/Engine.js:1455:23 at _run (/home/homebridge/reactor/common/lexp.js:1704:34) at /home/homebridge/reactor/common/lexp.js:1426:29 at Array.forEach (<anonymous>) at _run (/home/homebridge/reactor/common/lexp.js:1425:28) at Object.run (/home/homebridge/reactor/common/lexp.js:1855:24) at Engine._eval_expr (/home/homebridge/reactor/server/lib/Engine.js:1170:141) at Engine._expr_dependency (/home/homebridge/reactor/server/lib/Engine.js:1555:82) at /home/homebridge/reactor/server/lib/MessageBus.js:114:195 at Array.forEach (<anonymous>) [latest-25310]2025-11-07T16:16:51.947Z <Engine:INFO> Engine#1 expr alarmTest result changed=true, was "1.123" now (null) [latest-25310]2025-11-07T16:16:51.948Z <Engine:INFO> Engine#1 notify() expression state change GlobalExpression#alarmTest [latest-25310]2025-11-07T16:16:51.948Z <Engine:INFO> Engine#1 notify() expression state change GlobalExpression#alarmTest [latest-25310]2025-11-07T16:16:51.949Z <Engine:INFO> Engine#1 var alarmTest changed, evaluating dependents { } [latest-25310]2025-11-07T16:16:51.949Z <Engine:INFO> Engine#1 update dependencies for alarmTest, which are: Array(0) [] [latest-25310]2025-11-07T16:16:51.959Z <Engine:INFO> Engine#1 evaluating global chargeAmps expression do -
[Solved] alarm() in global expression throws error in log.[latest-25310]2025-11-07T16:16:41.926Z <Engine:INFO> Engine#1 expr alertElmatare result changed=false, was false now false [latest-25310]2025-11-07T16:16:41.926Z <Engine:INFO> Engine#1 evaluating global poolHeat expression do selling = getEntity( "virtual>time_series_selling" ).attributes.power_sensor.value, buying = getEntity( "mosquitto-mqtt>smartmeter" ).attributes.x_momentary_active_import.value, rule = isRuleSet("rule-l3wyah83"), case when selling >= 1.8 : bool(true) when buying < 0.8 and rule : bool(true) when poolHeatTrigger == "on" : bool(true) else bool(false) end done source global [latest-25310]2025-11-07T16:16:41.926Z <Engine:INFO> Engine#1 global expression poolHeat old value=false [latest-25310]2025-11-07T16:16:41.926Z <Engine:INFO> Engine#1 evaluation context { "__lvar": { "MAXINT": 9007199254740991, "MININT": -9007199254740991, "MAXFLOAT": 1.7976931348623157e+308, "MINFLOAT": 5e-324, "testHere": "test", "chargeAmps": 16, "poolHeat": false, "poolHeatTrigger": "auto", "Växthuset": { "LYWSD03aa6def": { "x_mqtt_device": { "online": true, "templates": Array(1) ["tasmota_sensor_lyw"] }, "temperature_sensor": { "value": 7.3, "units": "C" }, "humidity_sensor": { "value": 96, "units": "%" }, "battery_power": { "level": 0.75, "since": 1762532173549, "alert_level": 0.5 }, "reactor_entity": { } }, "Flora1": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 10.3, "units": "C" }, "light_sensor": { "value": 0, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora1_Lux": 0.0001, "Flora2": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 8.4, "units": "C" }, "light_sensor": { "value": 618, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora2_Lux": 618 }, "Medeltemp": 8.67, "Luftfuktighet": 1.1162790697674418, "EzloDevicesNotResponding": Array(0) [], "prevEzloDevicesNotResponding": Array(0) [], "VeraDevicesNotResponding": Array(0) [], "openLuupWasDown": "No", "Charging": false, "ReactorRestarted": false, "HumOutdoor": 86, "TempOutdoor": 8.82, "Självförsörjande": 0, "Elpris": 178.405, "restartCameraRTSP": false, "lovVecka": false, "VVBsellingHigh": false, "HassElpriser": { "buy_sek": 1.86, "sell_sek": 1.53 }, "chargeNow": false, "alertBLE": true, "ElpriserMedelMedian": "Idag:86/87, Imorgon:78/65", "ChargingPaused": false, "alertElmatare": false, "functions": "Global functions", "functionsDEV": "Global functions", "alarmTest": "hello" }, "__depth": 0, "__tag": "$global", "__func": { "_compare": [Function (anonymous) (?,?,?)], "fileRead": [Function (anonymous) (?,?,?)], "fileWrite": [Function (anonymous) (?,?,?,?)], "fileExists": [Function (anonymous) (?,?)], "dumpVars": [Function (anonymous) (?)], "strftime": [Function (anonymous) (?)], "format": [Function (anonymous) (?)], "geodist": [Function (anonymous) (?)], "_assign": [Function (anonymous) (?,?,?)], "getEntity": [Function _0x498020 (?,?)], "entity": [Function _0x498020 (?,?)], "$": [Function _0x498020 (?,?)], "matchEntities": [Function (anonymous) (?,?)], "groupMembers": [Function (anonymous) (?,?)], "performAction": [Function _0x498020 (?,?,?,?)], "perform": [Function _0x498020 (?,?,?,?)], "getRule": [Function (anonymous) (?,?)], "isRuleSet": [Function (anonymous) (?,?)], "isRuleEnabled": [Function (anonymous) (?,?)], "alarm": [Function (anonymous) (?)], "getPrices": [Function (anonymous) (?)], "getSlots": [Function (anonymous) (?)], "cheapestHours": [Function (anonymous) (?)], "VVBdayRange": [Function (anonymous) (?)], "getChargingTime": [Function (anonymous) (?)], "getPricesOLD": [Function (anonymous) (?)], "SlotsOLD": [Function (anonymous) (?)], "cheapestHoursOLD": [Function (anonymous) (?)], "getChargingTimeOLD": [Function (anonymous) (?)] }, "__global": { "__lvar": (seen=.__lvar), "__depth": 0, "__tag": "$global", "__func": (seen=.__func), "__global": (seen=.__global), "__tree": Array(1) ["poolHeat"], "__suppress_dependencies": true }, "__tree": (seen=.__global.__tree), "__suppress_dependencies": true } [latest-25310]2025-11-07T16:16:41.926Z <Engine:INFO> Engine#1 expr poolHeat result changed=false, was false now false [latest-25310]2025-11-07T16:16:42.411Z <Engine:INFO> Engine#1 evaluating global Självförsörjande expression int(getEntity( "vera>device_56" ).attributes.x_vera_svc_micasaverde_com_GenericSensor1.self_sufficient) source global [latest-25310]2025-11-07T16:16:42.412Z <Engine:INFO> Engine#1 global expression Självförsörjande old value=0 [latest-25310]2025-11-07T16:16:42.412Z <Engine:INFO> Engine#1 evaluation context { "__lvar": { "MAXINT": 9007199254740991, "MININT": -9007199254740991, "MAXFLOAT": 1.7976931348623157e+308, "MINFLOAT": 5e-324, "testHere": "test", "chargeAmps": 16, "poolHeat": false, "poolHeatTrigger": "auto", "Växthuset": { "LYWSD03aa6def": { "x_mqtt_device": { "online": true, "templates": Array(1) ["tasmota_sensor_lyw"] }, "temperature_sensor": { "value": 7.3, "units": "C" }, "humidity_sensor": { "value": 96, "units": "%" }, "battery_power": { "level": 0.75, "since": 1762532173549, "alert_level": 0.5 }, "reactor_entity": { } }, "Flora1": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 10.3, "units": "C" }, "light_sensor": { "value": 0, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora1_Lux": 0.0001, "Flora2": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 8.4, "units": "C" }, "light_sensor": { "value": 618, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora2_Lux": 618 }, "Medeltemp": 8.67, "Luftfuktighet": 1.1162790697674418, "EzloDevicesNotResponding": Array(0) [], "prevEzloDevicesNotResponding": Array(0) [], "VeraDevicesNotResponding": Array(0) [], "openLuupWasDown": "No", "Charging": false, "ReactorRestarted": false, "HumOutdoor": 86, "TempOutdoor": 8.82, "Självförsörjande": 0, "Elpris": 178.405, "restartCameraRTSP": false, "lovVecka": false, "VVBsellingHigh": false, "HassElpriser": { "buy_sek": 1.86, "sell_sek": 1.53 }, "chargeNow": false, "alertBLE": true, "ElpriserMedelMedian": "Idag:86/87, Imorgon:78/65", "ChargingPaused": false, "alertElmatare": false, "functions": "Global functions", "functionsDEV": "Global functions", "alarmTest": "hello" }, "__depth": 0, "__tag": "$global", "__func": { "_compare": [Function (anonymous) (?,?,?)], "fileRead": [Function (anonymous) (?,?,?)], "fileWrite": [Function (anonymous) (?,?,?,?)], "fileExists": [Function (anonymous) (?,?)], "dumpVars": [Function (anonymous) (?)], "strftime": [Function (anonymous) (?)], "format": [Function (anonymous) (?)], "geodist": [Function (anonymous) (?)], "_assign": [Function (anonymous) (?,?,?)], "getEntity": [Function _0x498020 (?,?)], "entity": [Function _0x498020 (?,?)], "$": [Function _0x498020 (?,?)], "matchEntities": [Function (anonymous) (?,?)], "groupMembers": [Function (anonymous) (?,?)], "performAction": [Function _0x498020 (?,?,?,?)], "perform": [Function _0x498020 (?,?,?,?)], "getRule": [Function (anonymous) (?,?)], "isRuleSet": [Function (anonymous) (?,?)], "isRuleEnabled": [Function (anonymous) (?,?)], "alarm": [Function (anonymous) (?)], "getPrices": [Function (anonymous) (?)], "getSlots": [Function (anonymous) (?)], "cheapestHours": [Function (anonymous) (?)], "VVBdayRange": [Function (anonymous) (?)], "getChargingTime": [Function (anonymous) (?)], "getPricesOLD": [Function (anonymous) (?)], "SlotsOLD": [Function (anonymous) (?)], "cheapestHoursOLD": [Function (anonymous) (?)], "getChargingTimeOLD": [Function (anonymous) (?)] }, "__global": { "__lvar": (seen=.__lvar), "__depth": 0, "__tag": "$global", "__func": (seen=.__func), "__global": (seen=.__global), "__tree": Array(1) ["Självförsörjande"], "__suppress_dependencies": true }, "__tree": (seen=.__global.__tree), "__suppress_dependencies": true } [latest-25310]2025-11-07T16:16:42.412Z <Engine:INFO> Engine#1 expr Självförsörjande result changed=false, was 0 now 0 [latest-25310]2025-11-07T16:16:47.368Z <Engine:NOTICE> Engine#1 expression alarmTest has changed [latest-25310]2025-11-07T16:16:47.369Z <Engine:INFO> Engine#1 _compile_global_expr alarmTest [latest-25310]2025-11-07T16:16:47.369Z <Engine:INFO> Engine#1 global expression alarmTest refers to: Array(0) [] [latest-25310]2025-11-07T16:16:47.369Z <Engine:INFO> Engine#1 evaluating global alarmTest expression alarm(0), alarm(15), getEntity( "hass>sensor_momentary_active_import" ).attributes.string_sensor.value source global [latest-25310]2025-11-07T16:16:47.369Z <Engine:INFO> Engine#1 global expression alarmTest old value=hello [latest-25310]2025-11-07T16:16:47.369Z <Engine:INFO> Engine#1 evaluation context { "__lvar": { "MAXINT": 9007199254740991, "MININT": -9007199254740991, "MAXFLOAT": 1.7976931348623157e+308, "MINFLOAT": 5e-324, "testHere": "test", "chargeAmps": 16, "poolHeat": false, "poolHeatTrigger": "auto", "Växthuset": { "LYWSD03aa6def": { "x_mqtt_device": { "online": true, "templates": Array(1) ["tasmota_sensor_lyw"] }, "temperature_sensor": { "value": 7.3, "units": "C" }, "humidity_sensor": { "value": 96, "units": "%" }, "battery_power": { "level": 0.75, "since": 1762532173549, "alert_level": 0.5 }, "reactor_entity": { } }, "Flora1": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 10.3, "units": "C" }, "light_sensor": { "value": 0, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora1_Lux": 0.0001, "Flora2": { "x_mqtt_device": { "online": true, "templates": Array(1) ["my_tasmota_sensor_flora"] }, "temperature_sensor": { "value": 8.4, "units": "C" }, "light_sensor": { "value": 618, "units": "lux" }, "humidity_sensor": { "value": 0, "units": "%" }, "value_sensor": { "value": 0, "units": (null) }, "reactor_entity": { } }, "Flora2_Lux": 618 }, "Medeltemp": 8.67, "Luftfuktighet": 1.1162790697674418, "EzloDevicesNotResponding": Array(0) [], "prevEzloDevicesNotResponding": Array(0) [], "VeraDevicesNotResponding": Array(0) [], "openLuupWasDown": "No", "Charging": false, "ReactorRestarted": false, "HumOutdoor": 86, "TempOutdoor": 8.82, "Självförsörjande": 0, "Elpris": 178.405, "restartCameraRTSP": false, "lovVecka": false, "VVBsellingHigh": false, "HassElpriser": { "buy_sek": 1.86, "sell_sek": 1.53 }, "chargeNow": false, "alertBLE": true, "ElpriserMedelMedian": "Idag:86/87, Imorgon:78/65", "ChargingPaused": false, "alertElmatare": false, "functions": "Global functions", "functionsDEV": "Global functions", "alarmTest": "hello" }, "__depth": 0, "__tag": "$global", "__func": { "_compare": [Function (anonymous) (?,?,?)], "fileRead": [Function (anonymous) (?,?,?)], "fileWrite": [Function (anonymous) (?,?,?,?)], "fileExists": [Function (anonymous) (?,?)], "dumpVars": [Function (anonymous) (?)], "strftime": [Function (anonymous) (?)], "format": [Function (anonymous) (?)], "geodist": [Function (anonymous) (?)], "_assign": [Function (anonymous) (?,?,?)], "getEntity": [Function _0x498020 (?,?)], "entity": [Function _0x498020 (?,?)], "$": [Function _0x498020 (?,?)], "matchEntities": [Function (anonymous) (?,?)], "groupMembers": [Function (anonymous) (?,?)], "performAction": [Function _0x498020 (?,?,?,?)], "perform": [Function _0x498020 (?,?,?,?)], "getRule": [Function (anonymous) (?,?)], "isRuleSet": [Function (anonymous) (?,?)], "isRuleEnabled": [Function (anonymous) (?,?)], "alarm": [Function (anonymous) (?)], "getPrices": [Function (anonymous) (?)], "getSlots": [Function (anonymous) (?)], "cheapestHours": [Function (anonymous) (?)], "VVBdayRange": [Function (anonymous) (?)], "getChargingTime": [Function (anonymous) (?)], "getPricesOLD": [Function (anonymous) (?)], "SlotsOLD": [Function (anonymous) (?)], "cheapestHoursOLD": [Function (anonymous) (?)], "getChargingTimeOLD": [Function (anonymous) (?)] }, "__global": { "__lvar": (seen=.__lvar), "__depth": 0, "__tag": "$global", "__func": (seen=.__func), "__global": (seen=.__global), "__tree": Array(1) ["alarmTest"] }, "__tree": (seen=.__global.__tree) } [latest-25310]2025-11-07T16:16:47.371Z <Engine:CRIT> Engine#1 alarm(0) -- cancelling alarmTest timer [latest-25310]2025-11-07T16:16:47.371Z <Engine:CRIT> Engine#1 alarm() scheduled alarmTest tick for 1762532222371<2025-11-07 17:17:02> = now 1762532207371<2025-11-07 17:16:47> + delay 15000 [latest-25310]2025-11-07T16:16:47.371Z <Engine:INFO> Engine#1 getEntity evaluating global alarmTest with ValueSensor#hass>sensor_momentary_active_import dependency [latest-25310]2025-11-07T16:16:47.371Z <Engine:INFO> Engine#1 expr alarmTest result changed=true, was hello now "1.123" [latest-25310]2025-11-07T16:16:47.372Z <Engine:INFO> Engine#1 notify() expression state change GlobalExpression#alarmTest [latest-25310]2025-11-07T16:16:47.373Z <Engine:INFO> Engine#1 var alarmTest changed, evaluating dependents { } [latest-25310]2025-11-07T16:16:47.373Z <Engine:INFO> Engine#1 update dependencies for alarmTest, which are: Array(0) [] [latest-25310]2025-11-07T16:16:47.373Z <Engine:INFO> Engine#1 expr_tree is now { testHere: {}, chargeAmps: {}, poolHeat: {}, poolHeatTrigger: { poolHeat: {} }, 'Växthuset': {}, Medeltemp: {}, Luftfuktighet: {}, EzloDevicesNotResponding: {}, prevEzloDevicesNotResponding: {}, VeraDevicesNotResponding: {}, openLuupWasDown: {}, Charging: {}, ReactorRestarted: {}, HumOutdoor: {}, TempOutdoor: {}, 'Självförsörjande': {}, Elpris: {}, restartCameraRTSP: {}, lovVecka: {}, VVBsellingHigh: {}, HassElpriser: {}, chargeNow: {}, alertBLE: {}, ElpriserMedelMedian: {}, ChargingPaused: {}, alertElmatare: {}, functions: {}, functionsDEV: {}, alarmTest: {} } [latest-25310]2025-11-07T16:16:51.916Z <Engine:INFO> Engine#1 evaluating global chargeAmps expression doMore?
-
[Solved] alarm() in global expression throws error in log.Unfortunately that's long gone by testing level 5 but before that the expression was the simple string "hello" so there were only rule related log entries before it. I can reproduce it if you want though...








