Good morning,
I have a service MQTT service that needs a restart occasionally. The add-on (Smartbed MQTT) is for the smart bed base for my bed. It has a "safety light" that I can control from HAAS & MSR as a light entity, and also moves the head of the bed to a preset at bedtime, and then lies it back flat in the morning The problem is, from time to time, the light becomes "unavailable" Restarting from the Add-ons tab in HAAS always fixes it, but I should be able to detect when it happens when "light.tempur_pedic_safety_lights" is not true or false, i.e., unavailable.
What I don't know how to do is how to restart that service. Does anybody have experience in restarting add-ons from MSR?
Running:
Reactor (Multi-hub) latest-24212-3ce15e25 ZWaveJSController [0.1.24232]HAAS:
RPi5-64 (8GB) Core 2024.7.3 Supervisor 2024.08.0 Operating System 13.0 Frontend 20240710.0Hi!
Is it possible to generate two additional log files, the first being the replica of what is displayed on screen by the Rule History widgets and the other with Recently Changed Entities?
And could I configure the generation of one file per day, and delete the older ones? For example, store the last 5 days?
And being more ambitious, does Windget have an icon to open these TXT files in the navigated?
Well, we're approaching Christmas, so here's my request to Santa Claus @toggledbits 🙂
Hi @toggledbits
I'm working on a controller to generate llm response from a prompt in reactor. I have http response coming thru an http request action at the moment, capturing the response inside a local variable. So, it's practically sync.
I want to create a controller, so I don't have to rely on a proxy (and have a simpler architecture), and duplicate absurd http actions, but AFAIK in the current implementation, actions are async only. But if I have multiple requests going on, I cannot be sure what it's really inside an attribute. I also thought that something like a correlation id when sending the request could be used to identity multiple responses, but I wanted to double check with you before starting with something too complicated. I also noticed that some actions in home assistant (ie forecast) are sync and I'm wondering if you have any plan or hint to address this situation. Thanks.
Thanks.
@togglebits I am curious as to why the tilt_sensor.state (primary) = NULL. I believe it should show true or false. I have to use binary_sensor.state instead in my rules.
Again, not sure if this is related to Reactor/ZwaveJSController implementation or the actual Z-Wave JS UI docker version. I have copied, below, the attributes of the tilt sensor in hopes it can help.
Thanks in advance.
Reactor version 23302
ZWaveJSController version 23254
Z-Wave JS UI version 9.3.0.724519f
zwave-js version 12.2.3
@toggledbits I have noticed after upgrading both Reactor and ZWaveJSController to version 24257 that two of my devices/entities, TILT-ZWAVE2.5-ECO and Zooz ZSE18, had their entity re-named in an unusual way and also appears to be duplicated.
Reactor version 24257
ZWaveJSController version 24257
Z-Wave JS UI version 9.18.1
zwave-js version 13.2.0
Vestibule Motion Sensor State attributes/partial screenshot of entities it created. All entities have the same attributes.
motion_sensor.state=true x_zwave_values.Notification_Home_Security_Motion_sensor_status=8 zwave_device.capabilities=[113] zwave_device.endpoint=0 zwave_device.failed=null zwave_device.manufacturer_info=null zwave_device.node_id=23 zwave_device.valueId=[113,"Notification","Home Security","Home Security","Motion sensor status","Motion sensor status"] zwave_device.version_info=nullTilt Sensor Door State and Tilt Sensor Door State Simple attributes/partial screenshot of entities it created. All entities have similar attributes with exception of x_zwave_values.Notification_Access_Control_Door_State = 22 or 23.
tilt_sensor.state=true x_zwave_values.Notification_Access_Control_Door_state=22 zwave_device.capabilities=[113] zwave_device.endpoint=0 zwave_device.failed=null zwave_device.manufacturer_info=null zwave_device.node_id=24 zwave_device.valueId=[113,"Notification","Access Control","Access Control","Door state","Door state"] zwave_device.version_info=null tilt_sensor.state=true x_zwave_values.Notification_Access_Control_Door_state_simple=22 zwave_device.capabilities=[113] zwave_device.endpoint=0 zwave_device.failed=null zwave_device.manufacturer_info=null zwave_device.node_id=24 zwave_device.valueId=[113,"Notification","Access Control","Access Control","Door state (simple)","Door state (simple)"] zwave_device.version_info=null tilt_sensor.state=false x_zwave_values.Notification_Access_Control_Door_state=23 zwave_device.capabilities=[113] zwave_device.endpoint=0 zwave_device.failed=null zwave_device.manufacturer_info=null zwave_device.node_id=24 zwave_device.valueId=[113,"Notification","Access Control","Access Control","Door state","Door state"] zwave_device.version_info=null tilt_sensor.state=false x_zwave_values.Notification_Access_Control_Door_state_simple=23 zwave_device.capabilities=[113] zwave_device.endpoint=0 zwave_device.failed=null zwave_device.manufacturer_info=null zwave_device.node_id=24 zwave_device.valueId=[113,"Notification","Access Control","Access Control","Door state (simple)","Door state (simple)"] zwave_device.version_info=nullI'm slowly migrating all my stuff to MQTT under MSR, so I have a central place to integrate everything (and, in a not-so-distant future, to remove virtual devices from my Vera and leave it running zwave only).
Anyway, here's my reactor-mqtt-contrib package:
Contrib MQTT templates for Reactor. Contribute to dbochicchio/reactor-mqtt-contrib development by creating an account on GitHub.
Simply download yaml files (everything or just the ones you need) and you're good to go.
I have mapped my most useful devices, but I'll add others soon. Feel free to ask for specific templates, since I've worked a lot in the last weeks to understand and operate them.
The templates are supporting both init and query, so you have always up-to-date devices at startup, and the ability to poll them. Online status is supported as well, so you can get disconnected devices with a simple expression.
Many-many thanks to @toggledbits for its dedication, support, and patience with me and my requests 🙂
Build 21228 has been released. Docker images available from DockerHub as usual, and bare-metal packages here.
Home Assistant up to version 2021.8.6 supported; the online version of the manual will now state the current supported versions; Fix an error in OWMWeatherController that could cause it to stop updating; Unify the approach to entity filtering on all hub interface classes (controllers); this works for device entities only; it may be extended to other entities later; Improve error detail in messages for EzloController during auth phase; Add isRuleSet() and isRuleEnabled() functions to expressions extensions; Implement set action for lock and passage capabilities (makes them more easily scriptable in some cases); Fix a place in the UI where 24-hour time was not being displayed.Hi @toggledbits.
After a couple of weeks, I noticed that my Remotec zrc90 isn't working as expected.
Scenes are working in ZWaveJS, but this device has a strange behavior: the scene change, but then it's set again to null. In Reactor, this remains null:
battery_power.level=0.7 battery_power.since=1725817957361 x_debug.dt={"description":"Scene master 8 button remote","model":"BW8510/ZRC-90US","default_name":"Scene master 8 button remote","manufacturerId":21076,"productType":0,"productId":34064} x_zwave_values.Battery_isLow=false x_zwave_values.Battery_level=70 x_zwave_values.Central_Scene_scene_001=null x_zwave_values.Central_Scene_scene_002=null x_zwave_values.Central_Scene_scene_003=null x_zwave_values.Central_Scene_scene_004=null x_zwave_values.Central_Scene_scene_005=null x_zwave_values.Central_Scene_scene_006=null x_zwave_values.Central_Scene_scene_007=null x_zwave_values.Central_Scene_scene_008=null x_zwave_values.Central_Scene_slowRefresh=null x_zwave_values.Manufacturer_Specific_manufacturerId=21076 x_zwave_values.Manufacturer_Specific_productId=34064 x_zwave_values.Manufacturer_Specific_productType=1 x_zwave_values.Version_firmwareVersions=["1.1","1.1"] x_zwave_values.Version_hardwareVersion=3 x_zwave_values.Version_libraryType=2 x_zwave_values.Version_protocolVersion="4.5" x_zwave_values.Wake_Up_controllerNodeId=1 x_zwave_values.Wake_Up_wakeUpInterval=0 zwave_device.capabilities=[91,114,128,132,134] zwave_device.endpoint=0 zwave_device.failed=false zwave_device.generic_class="Remote Controller" zwave_device.impl_sig="24242:1:22315:1" zwave_device.is_beaming=false zwave_device.is_listening=false zwave_device.is_routing=false zwave_device.is_secure=false zwave_device.manufacturer_info=[21076,1,34064] zwave_device.max_data_rate=null zwave_device.node_id=154 zwave_device.specific_class="Simple Remote Control" zwave_device.status=2 zwave_device.status_text="awake" zwave_device.version_info=[null,"1.1"] zwave_device.wakeup_interval=0Anything I could look at? Thanks.
Hi, @toggledbits!
I have a question about the execution behavior. See the code below, and I'll explain the situation.
12957c3e-ff06-46c9-929d-b53f936665df-image.png
This is a routine that, at a certain point, determines that the desktop on which the VM hosting the Reactor is located receives an instruction to perform a shutdown (Shell Command).
When this happens, the desktop is turned off, and then Hubitat detects by a "ping" that the VM has been down, waits 15 seconds, turns off the power to this desktop, and then 15 seconds later turns on the desktop with the Reactor VM again.
After restarting the desktop, the VM is loaded, and the Reactor is triggered. Still, the following problem occurs: I expected that when the rule was continued to be executed again, the next step would be executed, that of the 900-second delay after shutdown, but the Shell command is executed again, and then it goes into a loop, the rule does not advance.
To break the loop, I first have to make the VM not load, change the desktop password, and then start the VM. In this case, Reactor generates an error when trying to execute the Shell Command because of the invalid password and then finishes the routine following the 900 delay step.
b58b0d4a-d6c1-4fe3-bab7-4222acea9607-image.png
Is my interpretation that when it returns, the routine should continue to the next step that has not yet been executed incorrectly? Or does Reactor, through the shutdown command, interpret that it hasn't finished this step and keep trying, which is the correct reaction?
Thanks for clarifying.
Hi @toggledbits ,
I'm slowly moving my ZWave network from Vera to ZWaveJS. I successfully cloned my ZWave network using a spare Vera Edge (a new post for the community later when I'll be fully back from vacation) and I'm testing a couple of things before moving everything to ZWaveJS.
In the meanwhile, I have a couple of venetian blinds connected to Fibaro Roller Shutters 2 (FGR222) and I'm using some proprietary ZWave commands to control the tilt position, that right now I'm sending via Vera (with some code from the old place, messing with this):
af7f883c-f49e-419c-a2fe-8669572e3792-image.png
The ZWaveJS values are reported via this:
x_zwave_values.Manufacturer_Proprietary_fibaro_venetianBlindsPosition=0 x_zwave_values.Manufacturer_Proprietary_fibaro_venetianBlindsTilt=0I hope there's a way to expose a separate device to control the tilt position directly, without doing the mess I'm doing now. Let me know if you need some files. Thanks.
As per @toggledbits request, new topic.
Position and cover commands not working and position/cover attributes are incorrect. Dimming is OK.
cover.state=null dimming.level=1 dimming.step=0.1 energy_sensor.units="kWh" energy_sensor.value=0.41 position.value=null power_sensor.units="W" power_sensor.value=0 power_switch.state=true x_debug.dt={"entity_class":"Cover","match":"deviceClass.generic.key=17;deviceClass.specific.key=6","capabilities":["cover","toggle","position"],"primary_attribute":"cover.state"} x_zwave_values.Meter_reset=null x_zwave_values.Meter_value_65537=0.41 x_zwave_values.Meter_value_66049=0 x_zwave_values.Multilevel_Switch_Down=null x_zwave_values.Multilevel_Switch_Up=null x_zwave_values.Multilevel_Switch_currentValue=99 x_zwave_values.Multilevel_Switch_duration="unknown" x_zwave_values.Multilevel_Switch_restorePrevious=null x_zwave_values.Multilevel_Switch_targetValue=99 x_zwave_values.Notification_Power_Management_Over_current_status=0 x_zwave_values.Notification_System_Hardware_status=0 x_zwave_values.Notification_alarmLevel=null x_zwave_values.Notification_alarmType=null zwave_device.capabilities=[38,50,113] zwave_device.endpoint=1 zwave_device.failed=null zwave_device.impl_sig="24225:1:22315:1" zwave_device.manufacturer_info=null zwave_device.node_id=148 zwave_device.version_info=nullThanks!
Another one for you, @toggledbits.
I have two water sensors (same device, NAS-WS01Z), but one is reporting leak_detector.state=true even if no alarm is detected (I double checked from ZWaveJS UI):
battery_power.level=0.86 battery_power.since=null leak_detector.state=true x_debug.dt={"entity_class":"Notification Sensor","match":"deviceClass.generic.key=7"} x_zwave_values.Battery_isLow=false x_zwave_values.Battery_level=86 x_zwave_values.Binary_Sensor_Water=false x_zwave_values.Configuration_Alarm_Activity_Duration=5 x_zwave_values.Configuration_Alarm_Beep=1 x_zwave_values.Configuration_Alarm_Duration=120 x_zwave_values.Configuration_Alarm_Interval=null x_zwave_values.Configuration_Basic_Set_Level=255 x_zwave_values.Configuration_First_Alarm_Activity_Duration=null x_zwave_values.Configuration_Water_Detection=1 x_zwave_values.Manufacturer_Specific_manufacturerId=600 x_zwave_values.Manufacturer_Specific_productId=4229 x_zwave_values.Manufacturer_Specific_productType=3 x_zwave_values.Notification_Water_Alarm_Sensor_status=null x_zwave_values.Notification_alarmLevel=0 x_zwave_values.Notification_alarmType=0 x_zwave_values.Version_firmwareVersions=null x_zwave_values.Version_hardwareVersion=null x_zwave_values.Version_libraryType=null x_zwave_values.Version_protocolVersion=null x_zwave_values.Wake_Up_controllerNodeId=1 x_zwave_values.Wake_Up_wakeUpInterval=43200 zwave_device.capabilities=[48,112,113,114,128,132,134] zwave_device.endpoint=0 zwave_device.failed=false zwave_device.generic_class="Notification Sensor" zwave_device.impl_sig="24225:1:22315:1" zwave_device.is_beaming=false zwave_device.is_listening=false zwave_device.is_routing=true zwave_device.is_secure=false zwave_device.last_wakeup=1724143899220 zwave_device.manufacturer_info=[600,3,4229] zwave_device.max_data_rate=null zwave_device.node_id=114 zwave_device.specific_class="Notification Sensor" zwave_device.status=1 zwave_device.status_text="asleep" zwave_device.version_info=[null,null] zwave_device.wakeup_interval=43200here's the other one, correctly report the leak status:
battery_power.level=1 battery_power.since=null leak_detector.state=false x_debug.dt={"entity_class":"Notification Sensor","match":"deviceClass.generic.key=7"} x_zwave_values.Battery_isLow=false x_zwave_values.Battery_level=100 x_zwave_values.Binary_Sensor_Water=false x_zwave_values.Configuration_Alarm_Activity_Duration=5 x_zwave_values.Configuration_Alarm_Beep=1 x_zwave_values.Configuration_Alarm_Duration=120 x_zwave_values.Configuration_Alarm_Interval=1 x_zwave_values.Configuration_Basic_Set_Level=255 x_zwave_values.Configuration_First_Alarm_Activity_Duration=60 x_zwave_values.Configuration_Water_Detection=1 x_zwave_values.Manufacturer_Specific_manufacturerId=600 x_zwave_values.Manufacturer_Specific_productId=4229 x_zwave_values.Manufacturer_Specific_productType=3 x_zwave_values.Notification_Water_Alarm_Sensor_status=0 x_zwave_values.Notification_alarmLevel=null x_zwave_values.Notification_alarmType=null x_zwave_values.Version_firmwareVersions=["2.54"] x_zwave_values.Version_hardwareVersion=48 x_zwave_values.Version_libraryType=6 x_zwave_values.Version_protocolVersion="4.5" x_zwave_values.Wake_Up_controllerNodeId=1 x_zwave_values.Wake_Up_wakeUpInterval=43200 zwave_device.capabilities=[48,112,113,114,128,132,134] zwave_device.endpoint=0 zwave_device.failed=false zwave_device.generic_class="Notification Sensor" zwave_device.impl_sig="24225:1:22315:1" zwave_device.is_beaming=false zwave_device.is_listening=false zwave_device.is_routing=true zwave_device.is_secure=false zwave_device.last_wakeup=1724105239533 zwave_device.manufacturer_info=[600,3,4229] zwave_device.max_data_rate=null zwave_device.node_id=113 zwave_device.specific_class="Notification Sensor" zwave_device.status=1 zwave_device.status_text="asleep" zwave_device.version_info=[null,"2.54"] zwave_device.wakeup_interval=43200Also, both seems to have no primary value. Thanks.
Hi-
I have an android media player entity publishing from HA. I watch for changes in transport state and media title to trigger some actions.
Though those attributes report as expected, the set rule is being throttled for possible flapping.
There is an attribute for media position that continually updates, I suspect it is causing the evaluations to run constantly.
The workaround I am seeking is to ignore those attributes in HA or MSR. Anyone know how, or have a better idea??
Thx
Btw- this problem has spanned versions of HA and reactor, but I am current on both. Too current on HA for transparency, but the issue has survived several updates.
Referencing an expression inside a reaction is in the form of ${{ expression }}. When referenced inside my shell command to set the watering delay duration for my Rachio sprinkler system, it just does not work.
If I enter "86400" instead of referencing the expression lWateringDelayDuration, it works. Either I am doing something wrong or referencing an expression inside a shell command is not supported.
Reactor version: 24212
Local Expression
lWateringDelayDuration =
Setting Reaction using Shell command
curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer xxxxxxxxxx -d '{ "id" : "xxxxxxxxxx", "duration" : ${{ lWateringDelayDuration}} }' https://api.rach.io/1/public/device/rain_delayThanks in advance
As per @toggledbits request, here's a new topic.
My Fibaro Door Window Sensor 2 (FGDW002) is always reporting as open, even if
x_zwave_values.Notification_Access_Control_Door_state=23 x_zwave_values.Notification_Access_Control_Door_state_simple=23which means that the door is closed. It was working before and I could downgrade to test, if necessary. Thanks.
Hi @toggledbits,
I'm not sure if it's a bug or something, but I have a lot of Fibaro Double Switch (FGS223) as follows.
In the example, it's zwavejs>65-2:
energy_sensor.units="kWh" energy_sensor.value=0.21 power_sensor.units="W" power_sensor.value=0 power_switch.state=false x_debug.dt={"entity_class":"Switch","match":"deviceClass.generic.key=16","capabilities":["power_switch","toggle"],"primary_attribute":"power_switch.state"} x_zwave_values.Binary_Switch_currentValue=false x_zwave_values.Binary_Switch_targetValue=false x_zwave_values.Meter_reset=null x_zwave_values.Meter_value_65537=0.21 x_zwave_values.Meter_value_66049=0 zwave_device.capabilities=[37,50] zwave_device.endpoint=2 zwave_device.failed=null zwave_device.impl_sig="23326:1:22315:1" zwave_device.manufacturer_info=null zwave_device.node_id=65 zwave_device.version_info=nullWhen operating endpoint 2, it's triggered endpoint 1. Endpoint 1 is fine. This is causing a lot of troubles, as you may imagine.
Also, endpoint 0 is not really a switch, and the associated actions are not doing anything at all. Maybe these could be removed. Also, I see battery_maintenance and power_source capabilities, all with null values.
battery_maintenance.charging=null battery_maintenance.rechargeable=false battery_maintenance.replace=false battery_maintenance.state=null heat_detector.state=false power_source.source=null power_switch.state=null x_debug.dt={"entity_class":"Switch","match":"deviceClass.generic.key=16","capabilities":["power_switch","toggle"],"primary_attribute":"power_switch.state","description":"Double Switch 2","model":"FGS223","default_name":"Double Switch 2","manufacturerId":271,"productType":515,"productId":4096} x_zwave_values.Central_Scene_scene_001=null x_zwave_values.Central_Scene_scene_002=null x_zwave_values.Central_Scene_slowRefresh=null x_zwave_values.Configuration_First_Channel_Energy_Reports_Threshold=100 x_zwave_values.Configuration_First_Channel_Operating_Mode=0 x_zwave_values.Configuration_First_Channel_Power_Reports_Minimum_Time_Between_Reports=10 x_zwave_values.Configuration_First_Channel_Power_Reports_Threshold=20 x_zwave_values.Configuration_First_Channel_Pulse_Time_for_Blink_Mode=5 x_zwave_values.Configuration_First_Channel_Reaction_to_Key_S1_for_Delay_Auto_ON_OFF_Modes=0 x_zwave_values.Configuration_First_Channel_Time_Parameter_for_Delay_Auto_ON_OFF_Modes=50 x_zwave_values.Configuration_General_Purpose_Alarm_Response=3 x_zwave_values.Configuration_Include_Consumption_By_Device_Itself_in_Reports=0 x_zwave_values.Configuration_Input_Button_Switch_Configuration=2 x_zwave_values.Configuration_Key_S1_Associations_Double_Click_Value_Sent=99 x_zwave_values.Configuration_Key_S1_Associations_Send_OFF_With_Single_Click_2=0 x_zwave_values.Configuration_Key_S1_Associations_Send_ON_With_Single_Click_1=0 x_zwave_values.Configuration_Key_S1_Associations_Send_When_Double_Clicking_8=0 x_zwave_values.Configuration_Key_S1_Associations_Send_When_Holding_and_Releasing_4=0 x_zwave_values.Configuration_Key_S1_Associations_Switch_OFF_Value_Sent=0 x_zwave_values.Configuration_Key_S1_Associations_Switch_ON_Value_Sent=255 x_zwave_values.Configuration_Key_S1_Send_Scenes_When_Held_Down_and_Released_8=1 x_zwave_values.Configuration_Key_S1_Send_Scenes_When_Pressed_1_Time_1=1 x_zwave_values.Configuration_Key_S1_Send_Scenes_When_Pressed_2_Times_2=1 x_zwave_values.Configuration_Key_S1_Send_Scenes_When_Pressed_3_Times_4=1 x_zwave_values.Configuration_Key_S2_Associations_Double_Click_Value_Sent=99 x_zwave_values.Configuration_Key_S2_Associations_Send_OFF_With_Single_Click_2=0 x_zwave_values.Configuration_Key_S2_Associations_Send_ON_With_Single_Click_1=0 x_zwave_values.Configuration_Key_S2_Associations_Send_When_Double_Clicking_8=0 x_zwave_values.Configuration_Key_S2_Associations_Send_When_Holding_and_Releasing_4=0 x_zwave_values.Configuration_Key_S2_Associations_Switch_OFF_Value_Sent=0 x_zwave_values.Configuration_Key_S2_Associations_Switch_ON_Value_Sent=255 x_zwave_values.Configuration_Key_S2_Send_Scenes_When_Held_Down_and_Released_8=1 x_zwave_values.Configuration_Key_S2_Send_Scenes_When_Pressed_1_Time_1=1 x_zwave_values.Configuration_Key_S2_Send_Scenes_When_Pressed_2_Times_2=1 x_zwave_values.Configuration_Key_S2_Send_Scenes_When_Pressed_3_Times_4=1 x_zwave_values.Configuration_Periodic_Active_Power_Reports=3600 x_zwave_values.Configuration_Periodic_Energy_Reports=3600 x_zwave_values.Configuration_Report_During_Blink_Mode=0 x_zwave_values.Configuration_Second_Channel_Energy_Reports_Threshold=100 x_zwave_values.Configuration_Second_Channel_Operating_Mode=0 x_zwave_values.Configuration_Second_Channel_Power_Reports_Minimum_Time_Between_Reports=10 x_zwave_values.Configuration_Second_Channel_Power_Reports_Threshold=20 x_zwave_values.Configuration_Second_Channel_Pulse_Time_for_Blink_Mode=5 x_zwave_values.Configuration_Second_Channel_Reaction_to_Key_S2_for_Delay_Auto_ON_OFF_Modes=0 x_zwave_values.Configuration_Second_Channel_Time_Parameter_for_Delay_Auto_ON_OFF_Modes=50 x_zwave_values.Configuration_Send_Secure_Commands_to_2nd_Association_Group_1=1 x_zwave_values.Configuration_Send_Secure_Commands_to_3rd_Association_Group_2=1 x_zwave_values.Configuration_Send_Secure_Commands_to_4th_Association_Group_4=1 x_zwave_values.Configuration_Send_Secure_Commands_to_5th_Association_Group_8=1 x_zwave_values.Configuration_Smoke_CO_or_CO2_Alarm_Response=3 x_zwave_values.Configuration_State_After_Power_Failure=1 x_zwave_values.Configuration_Temperature_Alarm_Response=1 x_zwave_values.Configuration_Time_of_Alarm_State=600 x_zwave_values.Configuration_Water_Flood_Alarm_Response=2 x_zwave_values.Manufacturer_Specific_manufacturerId=271 x_zwave_values.Manufacturer_Specific_productId=4096 x_zwave_values.Manufacturer_Specific_productType=515 x_zwave_values.Notification_Heat_Alarm_Heat_sensor_status=0 x_zwave_values.Notification_Power_Management_Over_current_status=0 x_zwave_values.Notification_alarmLevel=null x_zwave_values.Notification_alarmType=null x_zwave_values.Protection_exclusiveControlNodeId=null x_zwave_values.Protection_local=0 x_zwave_values.Protection_rf=0 x_zwave_values.Protection_timeout=null x_zwave_values.Version_firmwareVersions=["3.2"] x_zwave_values.Version_hardwareVersion=3 x_zwave_values.Version_libraryType=3 x_zwave_values.Version_protocolVersion="4.5" zwave_device.capabilities=[91,112,113,114,117,134] zwave_device.endpoint=0 zwave_device.failed=false zwave_device.generic_class="Binary Switch" zwave_device.impl_sig="23326:1:22315:1" zwave_device.is_beaming=false zwave_device.is_listening=true zwave_device.is_routing=true zwave_device.is_secure=false zwave_device.manufacturer_info=[271,515,4096] zwave_device.max_data_rate=null zwave_device.node_id=65 zwave_device.specific_class="Binary Power Switch" zwave_device.status=4 zwave_device.status_text="alive" zwave_device.version_info=[null,"3.2"]Thanks.
Good morning,
I'm having an issue with controlling my Zooz Zen14 outdoor double outlet. I should be able to control each outlet individually, and this does work when use Home Assistant (haas) from Reactor.
When I use zwavejs, I see 3 entries:
8305eccf-a99e-421f-ad18-1f08da9c8c9c-image.png
The first entry is for the overall device. I can turn both outlets on and off (in theory) by setting the power_switch state to on or off. This does turn them on and off when using zwavejs.
When I go to the individual outlets, performing the power_switch.on or power_switch.off actions turns them all (main, 1 and 2) on or off, and not just the individual outlets. When I perform the same action from haas, turning on outlet 1 will turn on the main switch and 1, but not 2.
I reviewed the logs for that node and I'm not seeing anything obvious.
:~/reactor/logs$ cat reactor.log.1 | grep ZWaveJSController#zwavejs | grep "node 216" [latest-24212]2024-08-07T00:19:00.233Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "0:37:targetValue:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "endpoint": 0, "property": "targetValue", "newValue": true, "prevValue": false, "propertyName": "targetValue" } } [latest-24212]2024-08-07T00:19:00.235Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "0:37:currentValue:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "currentValue", "endpoint": 0, "newValue": true, "prevValue": false, "propertyName": "currentValue" } } [latest-24212]2024-08-07T00:19:00.321Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "0:37:currentValue:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "currentValue", "endpoint": 0, "newValue": true, "prevValue": true, "propertyName": "currentValue" } } [latest-24212]2024-08-07T00:19:00.322Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "0:37:targetValue:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "targetValue", "endpoint": 0, "newValue": true, "prevValue": true, "propertyName": "targetValue" } } [latest-24212]2024-08-07T00:19:00.323Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "0:37:duration:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "duration", "endpoint": 0, "newValue": { "value": 0, "unit": "seconds" }, "prevValue": { "value": 0, "unit": "seconds" }, "propertyName": "duration" } } [latest-24212]2024-08-07T00:19:02.189Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "1:37:currentValue:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "currentValue", "endpoint": 1, "newValue": true, "prevValue": false, "propertyName": "currentValue" } } [latest-24212]2024-08-07T00:19:02.192Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "1:37:targetValue:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "targetValue", "endpoint": 1, "newValue": true, "prevValue": false, "propertyName": "targetValue" } } [latest-24212]2024-08-07T00:19:02.193Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs update node 216 value "1:37:duration:" data [Object]{ "source": "node", "event": "value updated", "nodeId": 216, "args": { "commandClassName": "Binary Switch", "commandClass": 37, "property": "duration", "endpoint": 1, "newValue": { "value": 0, "unit": "seconds" }, "prevValue": { "value": 0, "unit": "seconds" }, "propertyName": "duration" } } [latest-24212]2024-08-07T05:32:30.127Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs configuring node 216 endpoint 0 (entity "216-0") [latest-24212]2024-08-07T05:32:30.127Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs configuring node 216 endpoint 1 (entity "216-1") [latest-24212]2024-08-07T05:32:30.128Z <ZWaveJSController:INFO> ZWaveJSController#zwavejs configuring node 216 endpoint 2 (entity "216-2")I'm running:
Reactor (Multi-hub) latest-24212-3ce15e25
ZWaveJSController [0.1.23326] (with zwavejs_data from 7/25/2024)
HA:
Core 2024.7.3
Supervisor 2024.08.0
Operating System 12.3
Frontend 20240710.0
Reactor (Multi-System/Multi-Hub) Announcements
-
Build 22044
- PR 0000306: Certain condition options not being saved for rule-based constraints.
- PR 0000305: Copying rule expression can renumber expression in source rule.
- PR 0000302: Reaction delay "from start" working same as "from this point".
- InfluxDB: Support for more extensive control of written measurements, including name and type modification; see docs
- Reactions: Fix an issue where missing device in a rule reaction does not flag trouble on the rule.
- Three new capabilities:
valve
,scene_activation
andbattery_maintenance
. These will be fully integrated with eligible Controllers and Entities in a future release. - Reactions: An error in a special form on the Comment action is fixed (simple notification).
- Expressions: New expression
case
statement; see docs - Expressions: Fix sort in
median()
function. - Expressions: An error in the
fileRead()
function has been fixed.
-
Build 22049
NOTE: Bare-metal users should run
npm i --no-save --omit-dev
to update packages for this release.- Update lexpjs for new
pad()
function - PR 0000307: Nested group would repeat interior actions outside group (reaction UI)
- Update to latest minor revisions of jquery-ui, bootstrap, popper. This now silences the long-endured warning when doing
npm i --no-save --omit dev
- Update lexpjs for new
-
Build 22053
BREAKING CHANGE/FIX This version contains what may be a breaking change for some users. Some actions offer lists of predefined values (e.g.
media_source.set
offershdmi1
,hdmi2
, etc.). A bug in the Reaction editor was causing a numeric index value to be stored instead of the string value (i.e. it would store 0 rather thanhdmi1
). The bug is now fixed, but any action like this previously created/edited may have had an invalid value stored in the rule or reaction to which it belongs, and this cannot be reliably automatically fixed, it generally requires user review. Most likely, these actions didn't work well for you anyway, because the erroneous numeric value would likely have given invalid results/behaviors/errors when attempted, and we just haven't noticed until now (they are fairly rarely-used actions, on the whole). The specific actions affected are:av_repeat.set_repeat
,muting.set
,media_source.set
,hvac_control.set_mode
,hvac_blower_unit.set_mode
,hvac_blower_swing.set_mode
,hvac_humidifier.set_moded
,hvac_dehumidifier.set_mode
,zwave_device.set_config
. Hopefully this list helps you narrow down what, if any, of your rules/reactions may be affected. Just take the rule/reaction into the editor, fix the new correct value and save.- PR 0000308: Fix issue where delay action with substitition in delay may self-replace evaluated value in stored object.
- UI: Autogrow fields get more room for datalist controls.
- UI: Fix issue with some value lists incorrectly showing and storing index values rather than actual listed value; see BREAKING notice above.
- Bless Hass to 2022.2.9
-
Build 22067
Bare-metal Users: Please run
npm i --no-save --omit dev
when installing this update.- PR 0000309: Exception while evaluating global reaction predicate (conditional group).
- HubitatController: Attempt to eliminate additional query to fetch full device data when a device-change event is received from the hub. Please see the documentation for cautions.
- UI will now highlight deprecated capabilities, attributes and actions when used.
- Bless Hass to 2022.3.3
-
Just an FYI for everyone, I'll be on holiday from tomorrow March 10 through March 19, and I'm leaving the laptop on the shelf at home for this one. I can answer emails and forum posts, but I won't likely be checking more than once a day, and I won't doing builds or any bug fixing while away. See you all on the other side!
-
Build 22069
Note: Only users of Hubitat hubs need to upgrade to this version, and then only if you previously upgraded to 22067.
- HubitatController: Fix a possible loss of attribute change across restarts of the hub (that is, when a value changes during a Hubitat restart but Reactor is not restarted).
-
Build 22080
- PR 0000311: Vera Scene controller entities missing attributes in new and exisitng rules
- PR 0000310: Dependent global variable may not update after editing parent.
- HubitatController: Because the HE events websocket passes all values as strings, the new fast-update process introduced in 22067 would change (for example) a previously-numeric attribute value to a string when updated by the hub. While this doesn't generally bother conditions or expressions, the type change affects InfluxFeed because InfluxDB cannot digest the type change. The data type declared by the hub during inventory is now stored and used to remap the events feed values to keep the data types consistent on the attributes. It must be noted, however, that the data types of extension attributes (
x_hubname_...
) are driven by the hub, and are therefore not guaranteed by Reactor (types are guaranteed for Reactor-defined capabilities, e.g.dimming
,value_sensor
, etc.). Users exporting extension attributes into InfluxDB are advised to always use explicit type setting for those attributes in their InfluxFeed configuration. This advisory has been added to the documentation for InfluxFeed. - HubitatController: An inconsistency in the (HE) attribute names between their MediaPlayer and MusicPlayer capabilities with respect to transport state is now handled correctly, so that Reactor's native
av_transport.state
attribute shows a correct value regardless of which the device uses. - SystemController: Will now issue system alerts unconditionally when disk space becomes critical (unless disk space monitoring has been disabled by user configuration), in addition to the (previously available) values and flags on the
reactor_system>system
(Reactor System) entity. It's also probably a good idea to add notifications (i.e. in your own rules) for such conditions raised by the system entity, if the user is not regularly looking at the Reactor UI. See the documentation for SystemController. - SystemController: A
dst
(boolean) attribute has been added to thereactor_system>sun
(Sun Information) entity; it will be true when Daylight Saving Time is in effect, false otherwise. - HassController: Fix
cover
capability handling on non-positionable covers (e.g. garage doors). - Dashboard: New display for cover entities.
-
Build 22118 (latest and zwavejs) — PLEASE READ ALL ADVISORIES BELOW
NODEJS VERSION REQUIREMENT: As previously announced, nodejs versions below 16 are no longer supported as of 2022-Mar-31. Bare-metal users (only) will need to upgrade their nodejs to version 16 (the current LTS version) or higher. Bare-metal RPi users can use the install script to do this. Docker image users needn't concern themselves; the image is built with an approved version of nodejs.
NOTE: This release includes changes to package dependencies. Bare-metal users please run
npm install --no-save --omit dev
to resolve.IMPORTANT: This update includes some significant enhancements for entity tracking. On your first startup after upgrading, you will get a lot of alerts about new devices being discovered (i.e. existing devices are being noted as new) as the enhanced tracking learns what is "normal" for your system. This is expected behavior for this version on its first startup. Just clear the alerts and go on about your day. After that, you should only receive notices when new devices are added to a hub, or new hubs are configured in Reactor.
Remember to hard-refresh all browsers after upgrading and restarting.
- PR 0000316: Variable Value condition with substitution in operand may replace expression with value in saved rule.
- PR 0000315: Improve alert message when a Rule-based reaction fails.
- PR 0000314: Fix "self-subscribe" exceptions logged after creating new Rule with local expressions and a Variable Value condition (exceptions clear after restart of Reactor).
- PR 0000312: Expressions
getEntity()
helper not listing or updating attributes correctly (fixed). - Raspberry Pi Install Script: Support for 64-bit installation on Raspbian Bullseye.
- Raspberry Pi Install Script: Can now be used to upgrade nodejs with a local (user-specific) install.
- UI: Faster core startup brings up the UI more quickly, and does not wait for controller startups, so a delay in a controller becoming ready (e.g. its associated hub is offline) will no longer delay the UI being available.
- UI: You can now add an SSL/TLS certificate and have the UI and API served over HTTPS (see How-To in documentation).
- New actions in
sys_system
capability to tell a Controller instance to purge unused entities (i.e. that no longer exist on the hub but are still present in Reactor), delete an entity (from Reactor only, not from the hub/mesh/etc.), and rename an entity (in Reactor, not at the hub/mesh/etc.). - UI/Entity Picker: You can now move the entity picker by dragging its title bar.
- UI/Entity Picker: The name search field will now also match on entity IDs.
- UI/Reaction editor: Changing from a group or while to another reaction type while editing would leave the conditions behind (they should be removed); fixed.
- Expressions: lexpjs updated, adds
yday
(day of year),isoweek
(ISO-8601 week number) anddst
(boolean) todateparts()
function result. - Status: Controller Status widget now sorts down/failed controllers first.
- Docs: Added How-Tos for serving media files from Reactor's built-in web server and set up HTTPS for the UI.
- HassController: Bless Hass version 2022.4.7.
REMINDER: If you need to post an issue related to this (or any) version, please follow the posting guidelines.
-
Build 22123 (latest and zwavejs)
This version primarily addresses a formatting problem in error messages when certain conditions (triggers and constraints) take an error (e.g. an Entity Attribute condition references an entity that no longer exists). This is cosmetic/display only and has no operational impact, but I thought it important to make a new release for the fix because of the difficulty of troubleshooting conditions with the broken messages.
If you are upgrading to this version from any version earlier than 22118, please read the release notes for 22118 in the prior post above.
-
Build 22136
NEW: This version adds the availability of 64-bit ARM docker images. This is recommended for Raspberry Pi 4 users on Raspbian Bullseye (only; Raspbian Buster users should continue to use the armv7l image). The 64-bit ARM images also work (and are tested) on the NVIDIA Jetson Nano (2GB model tested, but should work for all).
NOTE TO ALL USERS, ESP. CURRENT DOCKER USERS: Starting June 1, 2022, the naming of all deployed packages and docker images will be changed to remove the "raspbian" or "generic" component of the name. For example. the
latest-raspbian-armv7l
docker image will be named simplylatest-armv7l
, and thelatest-generic-amd64
ZIP archive will be namedlatest-amd64
. You will need to update your version upgrade procedures accordingly; users ofdocker-compose
will need to make this change in their compose files.- Additional localization updates;
- HassController: Bless Hass to 2022.5.4
-
Build 22140
NOTE TO DOCKER CONTAINER USERS: Starting with the first release in June 2022, docker images will be named only with the release branch and architecture. That is, the current
latest-generic-amd64
will becomelatest-amd64
, andlatest-raspbian-armv7l
will becomelatest-armv7l
. This will require changes to your upgrade procedure, or if you are using docker-compose, theimage
value in your compose file.- Additional localization updates;
- HassCOntroller: Bless Hass to 2022.5.5
-
Build 22142 (latest, zwavejs)
- PR 0000321: HTTP API
perform
action does not send response when it succeeds (clients then time out waiting for the response that never comes). - PR 0000320: API Docs: Fix
entity
API examples.
- PR 0000321: HTTP API
-
Build 22149 (latest, zwavejs)
- PR 0000322: EzloController: provide mapping for Xiaomi Mini Switch (a single-button remote).
- Rule: make sure clear of trouble state (on startup) is saved if necessary (so UI updates properly without need to refresh).
- VeraController: Hack for variables named
sl_
, which are the special Luup state variables that always send updates/call watches even when set to the same value they already have (all other state variables in Vera/Luup do not behave this way, they only trigger events when their values change). In particular, thesesl_
states are changed when lock codes on locks are entered, or buttons on scene controllers are pressed. For these uses, it is important that a repeated use of the same code or button signals an additional event, so Vera/Luup's uses these specialsl_
states for those. VeraController now inserts an extra_updated
attribute of the same name that can be used with the changes operator to detect when thesl_
states are updated. Refer to this forum post for more information.
-
Build 22168 (latest, zwavejs, stable)
REMINDER: As previously announced, all docker images are now named with the release branch and target architecture only. The
latest
branch docker image for all x86_64/amd64 systems is now namedlatest-amd64
(was previouslylatest-generic-amd64
). Thelatest
branch image for armv7l, which includes Raspberry Pi systems on Raspbian Buster, is now namedlatest-armv7l
(was previouslylatest-raspbian-armv7l
). Please adjust your upgrade procedures and, if used, docker-compose or Portainer configurations accordingly.- NUTController (for Network UPS Tools) is now available as an installable extra.
- Documentation updates to reflect updated installation archive and docker image names.
-
Build 22178 (latest, zwavejs)
NOTE: I will be on holiday for most of the month of July, and with limited Internet access. During this time, I will not be able to provide software support, fixes or builds, and likely will not have much time or means to read and answer questions. Please step up and provide support to your peers if questions come up!
- HassController: Set null state for switches and sensors when Hass reports them unavailable.
- HassController: Bless Hass to 2022.6.7.
- Docs: Improve details in Synology/Docker installation.
-
Build 22179 (latest, zwavejs)
NOTE: I will be on holiday for most of the month of July, and with limited Internet access. During this time, I will not be able to provide software support, fixes or builds, and likely will not have much time or means to read and answer questions. Please step up and provide support to your peers if questions come up!
- HassController: Fix an issue that may randomly affect/disable assignment of primary attributes (since 22118).
- Fix a problem in after...within (time-restricted) sequence conditions.
-
Build 22203 (latest, zwavejs)
- Expressions: the
time()
function has been extended to allow parsing of date/time values in strings in forms beyond ISO-8601; most simple date/time forms should work, particularly those that closely adhere to your locale's default. A string that contains only a time will be converted to that moment on the current date; a string that contains only a date will yield midnight on that date. If a given string cannot be converted, an error will be thrown. Refer to the documentation for Expressions for more information. - HassController: Bless Hass to 2022.7.6
- Docs: documentation for Reactions now includes additional information about rule-based reaction behaviors and action groups, and has been "modernized" to use the terminology of Multi-Hub Reactor rather than that of the Reactor for Vera plugin.
- Expressions: the
-
Build 22233 (latest, zwavejs)
BARE-METAL INSTALL USERS: When upgrading to this version, you must upgrade package dependencies after unpacking the archive file (delete any existing
package-lock.json
file and then runnpm install --no-save --omit dev
). The UI will not function properly if you fail to perform this upgrade.ALL USERS -- REMINDER: A hard refresh of your browser is necessary after upgrading to any new build.
- Upgraded the Bootstrap library to 5.2, which gave rise to a large number of required UI changes, and an opportunity for some useful cleanups. The Bootstrap Icons library was also upgraded to 1.9. All of this also means that Internet Explorer is no longer a supported browser (use its replacement, Edge).
- HassController: Bless Hass to 2022.8.6
-
Build 22240 (latest, zwavejs)
BARE-METAL USERS: If you are upgrading to this version from any version earlier than 22233, you need to update your package dependencies. Pleasee see the post for that build for instructions.
ALL USERS -- REMINDER: A hard refresh of your browser is necessary after upgrading to any new build.
- PR 0000327: Reaction Entity Action layout for additional data fields is messy.
- VeraController: Ensure
x_vera_device.failed
and.configured
are null if Vera fails to provide state for these values. - EzloController: Dead-marking and automatic removal (after delay) of entities for Ezlo devices/rooms/scenes that no longer exist (functional parity with other hub Controller objects).
- HassController: Implement mappings for scenes, scripts, and automations. All of these can have their actions run via Reactor's
script.run
action. Automations also can be en-/disabled using thepower_switch
capability actions (and entity primary state is the automation's en-/disabled state). All appear as runnable scenes in the dashboard. - UI: Improve highlighting of containing groups when sort/drop changes to conditions are made in the rules editor.
- HassController: Bless Hass to 2022.8.7
-
Just a news item: the ZWaveJSController is now an official add-on, available for download from
extras
. Instructions for installing it are in the Reactor documentation.For (only) those users who have been using the zwavejs build series for testing ZWaveJSController, you will now need to go back to the latest build series, and install ZWaveJSController as referenced above. There will be no further builds on the zwavejs branch. Also, ZWaveJSController no longer requires an authentication key to use, so you can remove the
auth
entry from configuration (it will be ignored and is harmless if you leave it).