In Home Assistant I have an integration that if I add entities to it, I will get the following error in MSR as certain entity values I'm using in expressions are null for a moment. This is more or less cosmetic issue and happens very rarely as I rarely modify that integration on the hass side.
Screenshot 2024-11-28 at 22.20.41.png
And the expression is
Screenshot 2024-11-28 at 22.38.19.png
Could I "wrap" hass-entity shown above somewhat differently to prevent this error from happening? Using build 24302.
Hello
I am trying to set up Multi System Reactor to automate routines across multiple smart home devices & platforms (e.g., Home Assistant, SmartThings, and Hubitat). While I have successfully linked the systems; I am facing issues with:
-Delays in triggering actions on secondary devices.
-Inconsistent execution of complex logic conditions.
-Synchronization of states between devices when one system updates.
Is there a recommended way to optimize performance & confirm seamless state sharing across systems?
I have checked https://smarthome.community/category/22/multi-system-reactor-msbi guide for reference but still need advice.
Any tips on debugging or log analysis to pinpoint where the issue arises would also be appreciated.
Thank you !
I've managed to use MSR UI on iOS devices to some degree*, so that although UI elements (e.g. rule sets) are not visible in portrait mode, you've seen them in landscape. Now with recents builds (24302) this does not work anymore, elements (rule sets, entities) are not anymore visible in landscape mode.
Does anyone have similar experiences? Using iOS 18 and Safari/Chrome browser.
( *Drag & drop of rule conditions have never worked on a mobile)
@toggledbits Since I have upgraded ZWaveJSController to 24293 from 24257 I am seeing entries related to registering action set_volume, but action is not defined by the capability 143 every time I restart Reactor.
The Siren seems to be doing what it is supposed to do. The volume levels are fine. Should I worry about it?
Reactor version 24302
ZWaveJSController version 24293
Z-Wave JS UI version 9.27.4
zwave-js version 14.3.4
I have the following ACL defined:
groups: admin: users: - admin applications: true api_acls: # This ACL allows users in the "admin" group to access the API - url: "/api" group: admin allow: true log: true # This ACL allows anyone/thing to access the /api/v1/alive API endpoint - url: "/api/v1/alive" allow: trueAnd I have authenticated to MSR as "admin" user. However, I'm getting "access denied" when trying to access http://*******:8111/api/v1/log
So what I'm missing, is my ACL incorrectly defined?
Using build 24302 on Docker.
Thanks to @toggledbits for adding a custom CSS. I've started doing a darker Reactor style.
Here's the file: https://gist.github.com/dbochicchio/825098ac13b7f8cac22012eae37ff7ce
A couple of things are still too bright and I'll eventually catch-up. Just place it under your /config directory, naming the file as customstyles.css. Hard refresh your browser.
Hi
I have just connected a bunch of EzloPi controllers to MSR to import some ESP based devices etc.
They all seemed to have worked and imported in to MSR apart from I have one missing device. It is a Digital Gas Sensor device.
This is how that device looks in the Ezlo API.
Devices Info:
_id: "10696001" deviceTypeId: "ezlopi" parentDeviceId: "10696000" category: "level_sensor" subcategory: "" gatewayId: "457a5069" batteryPowered: false name: "Gas Sensor Digital" type: "sensor" reachable: true persistent: true serviceNotification: false armed: false roomId: "" security: "no" ready: true status: "idle" parentRoom: true protectConfig: "default"Items Info:
_id: "20696001" deviceId: "10696001" hasGetter: true hasSetter: false name: "smoke_density" show: true valueType: "substance_amount" scale: "parts_per_million" value: 2.7472610473632812 valueFormatted: "2.75" status: "idle"There is also an Analog Gas sensor that one did import in to MSR OK.
68d63dab-b871-4f44-912b-cf6e0b9eb4c6-image.png
Devices Info:
_id: "10696000" deviceTypeId: "ezlopi" parentDeviceId: "10696000" category: "security_sensor" subcategory: "gas" gatewayId: "457a5069" batteryPowered: false name: "Gas Sensor Analog" type: "sensor" reachable: true persistent: true serviceNotification: false armed: false roomId: "" security: "no" ready: true status: "idle" parentRoom: true protectConfig: "default"Items Info:
_id: "20696000" deviceId: "10696000" hasGetter: true hasSetter: false name: "gas_alarm" show: true valueType: "token" enum: 0: "no_gas" 1: "combustible_gas_detected" 2: "toxic_gas_detected" 3: "unknown" valueFormatted: "no_gas" value: "no_gas" status: "idle"And this is how this MQ2 Gas Sensor looks like on their dashboard:
Digital
cb77dfa3-4af5-4d06-9635-89207a716a89-image.png
Analog
4fb4da1b-e946-4b89-876c-bcd9f5699b6c-image.png
They have an EzloPi website here you can create your own sensor projects using ESP boards, which is very interesting stuff!
And I just wrote on the Ezlo forum here, how to connect an EzloPi controller to MSR.
THANKS.
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.A couple of things for you @toggledbits, since you mentioned that this release has new features and some tweaks are expected.
Local expressions cannot be deleted. Pushing the X button has no effect for me.
When cloning an entity action, the result is strange (first is cloned one, second is the original action):
a92ea094-9e2c-4aaa-bf47-2d07a6ffdbd0-image.png
When changing the action on the cloned element, the params are added to the original one. See screenshot:
92ac3011-83c8-466b-bd23-47d483ad7a52-image.png
Dark theme has a couple of strange contrasts. One is visible in the previous screenshots (white text on yellow background). Another one is in groups (blue text on blue background):
9b3c4988-53ef-44e6-9672-30e744cacb75-image.png
Overall, I found blue, yellow, red and green (in buttons and forms) to be too bright.
On the bright side:
I love the new script action: thank you! The dark theme is a great start to avoid getting blinded at night I promise I'll try very soon the new features around actions. Thanks!@toggledbits
I just upgraded to version MSR 24293, bare metal running on Fedora. Upon restart, I am getting a error banner:
I followed the new directions about npm
npm i --no-save --no-package-lock --omit dev
Any idea what the issue is?
Seems like switching the UI to the newly added dark mode (thank you for this) does nothing. The UI stays in light mode and only a few buttons turn into dark mode (see screenshot)
Things I have tried:
Hard refresh
Different browser
Different computer
Restarting Reactor
Failed troubleshooting attempts:
No errors in Chrome console
No relevant errors in Reactor log (can still PM the full log file)
Reactor version: latest-24293-ea42a81d
Hardware: Odroid N2+
Linux version: Ubuntu 24.04.1 LTS
3df2806f-9146-485b-9ec1-d056e91cefe5-image.png Dark mode enabled
ff823023-c079-4684-b01f-d6ac6527d31a-image.png Light mode enabled
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=nullZooz ZSE18 Motion Sensor.jpg
Tilt 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=nullTILT-ZWAVE2.5-ECO.jpg
CallMeBot new interface?
-
Hi @toggledbits
Apparently, there have been some changes to the CallMeBot interface, as the service recently stopped working for me. I've tried several configurations, and none of the ones below are working.
# CallMeBot CallMeBot: profiles: default: # description - A friendly description of this profile (for menus) description: Default Profile New # # api_url - Access URL for CallMeBot API being used api_url: http://api.callmebot.com/start.php # # api_key - (if needed) API key (use for Facebook API, WhatsApp API, etc.). # If the API you are using does not require it, leave it # commented out or blank. api_key: "177xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTGk" # # source - (if needed) Source field for some APIs. If yours does not require # it, leave it commented out or blank. #source: "source-value" # # phone - (if needed) Phone field for some APIs. If yours does not require # it, leave it commented out or blank. phone: "+5xxxxxxxx33" # # user - (if needed) User field for some APIs. If yours does not require # it, leave it commented out or blank. #user: "@xxxxxxxxxxxxx" # # lang - (optional) Language/voice; default "en-US-Standard-C". # See CallMeBot docs for possible values. lang: "en-US-Standard-C" # # rpt - (optional) Number of times to repeat message; default: 1. rpt: 2
I have already tested using the phone or the user.
Looking at the action log, I see that it starts, runs and finishes without any problems.
[latest-23302]2023-11-05T14:35:54.106Z <Engine:INFO> Enqueueing "teste<SET>" (rule-lolk0nlj:S) [latest-23302]2023-11-05T14:35:54.108Z <Engine:NOTICE> Starting reaction teste<SET> (rule-lolk0nlj:S) [latest-23302]2023-11-05T14:35:54.111Z <Engine:INFO> teste<SET> all actions completed.
When testing directly on the site, I see that it no longer uses API, and I haven't even found where to generate the API KEY.
http://api.callmebot.com/start.php?source=web&user=+5xxxxxxxx33&text=Teste callmebot pelo numero novo&lang=en-US-Standard-C
Please, can you advise me on what I should do to solve the problem?
Thanks.
-
What's your target messaging client? That's important, since CallMeBot can contact several and the API URL and parameters are different for each.
The CallMeBot web site has instructions for each client. That will tell you the correct URL and parameters to use.
I only use Telegram, and I just tested both Text and Voice with Telegram and it works fine.
-
@toggledbits hi!
I used CallMeBot normally until I changed my phone number, and then I looked up where to generate the new API KEY, and I couldn't find it. So I chose to use the phone number only, and it didn't work. If I execute the command via HTTP on the MSR, it works perfectly. Strange as I said, there is no error message in the logs.
Now you mention voice in Telegram, I didn't know about that. Do you have any recommended material or examples of how to use it?
Thank you.
-
@wmarcolin Here's my profile for using Telegram Voice API with the CallMeBot notifier in Reactor:
CallMeBot: profiles: default: # default profile details redacted, not important here telegram_voice: api_url: http://api.callmebot.com/start.php user: "@username"
Here's my action:
If you read their documentation (recommended), it says you need to authorize your user to receive messages that way (same is true of text, and I imagine, most other modes now, which may be your real problem). There's a link in the instructions to grant that authorization.
-
I still can't understand what's going on, in theory I'm following everything that the manual says, but for some reason when I change the phone number, @username no longer works, test calling http directly or even the CallMeBot test site doesn't work.
However, if I use the phone number, test it by calling the CallMeBot test site, or use this routine in MSR, it works perfectly.
Direct nagigator:
http://api.callmebot.com/start.php?source=web&user=+507XXXXXXXX&text=teste pela api&lang=en-US-Standard-B
The MSR configuration is the one you mentioned, which I have below, but instead of user I have phone
# CallMeBot CallMeBot: profiles: default: # description - A friendly description of this profile (for menus) description: Default Profile # # api_url - Access URL for CallMeBot API being used api_url: http://api.callmebot.com/start.php # # phone - (if needed) Phone field for some APIs. If yours does not require # it, leave it commented out or blank. phone: "+507XXXXXXXX"
And in this situation it doesn't work.
As I mentioned by user, there's something blocking it from working, no matter if it's through the CallMeBot website, direct http or MSR. In the case of using a phone number, it works via the CallMeBot website, it works via http calling directly in the browser or via the routine I put in the MSR. However, using MSR Notification with the above configuration doesn't work.
Could @toggledbits check if the call is in this structure?
http://api.callmebot.com/start.php?source=web&user=<+phone>&text=<text>&lang=en-US-Standard-B
Another rare occurrence is that no logs are being generated in reactor.log.
Thanks.
-
Add this to your
logging.yaml
file and restart Reactor. Then test and see what URL is being generated/queried.logging: # don't include this line, it's just for indenting reference NotifyCallMeBot: level: 5
-
Hi @toggledbits
First, thank you for your guidance, and see below for the log I've obtained.
[latest-23302]2023-11-15T14:27:47.501Z <NotifyCallMeBot:5:NotifyCallMeBot.js:108> [NotifyCallMeBot]NotifyCallMeBot requesting http://api.callmebot.com/start.php?text=novo%20teste%20para%20numero%20do%20telefone&phone=%2B507xxxxxx33&lang=en-US-Standard-C [latest-23302]2023-11-15T14:27:48.125Z <NotifyCallMeBot:5:NotifyCallMeBot.js:117> [NotifyCallMeBot]NotifyCallMeBot success 200 OK
If I compare the calls made in MSR with the ones I make directly, there are small differences. The point is that the MSR one isn't working and the direct one is.
MSR NOTIFY CALLMEBOT
http://api.callmebot.com/start.php?text=NEW%20TEST%20NOTIFY&phone=%2B507xxxxxx33&lang=en-US-Standard-C
DIRECT SITE
http://api.callmebot.com/start.php?source=web&user=+507xxxxxx33&text=NEW%20TEST%20NOTIFY&lang=en-US-Standard-C
What I'm checking is that if I configure the phone in this way:
phone: +507xxxxxx33
the call appears like this - no + in front the number
&phone=507xxxxxx33&
if I configure it like this
phone: "+507xxxxxx33"
the call looks like this - between hasps - I have the %2B
&phone=%2B507xxxxxx33&
When I use the direct browser call
http://api.callmebot.com/start.php?text=NEW%20TEST%20NOTIFY%205&source=web&phone=%2B507xxxxxx33&lang=en-US-Standard-C&rpt=2
Back
Than I change phone to user and add +, work:
http://api.callmebot.com/start.php?text=NEW%20TEST%20NOTIFY%205&source=web&user=+507xxxxxx33&lang=en-US-Standard-C&rpt=2
What I don't understand is that in all the tests, the log always comes back successful.
[latest-23302]2023-11-15T14:57:42.938Z <NotifyCallMeBot:5:NotifyCallMeBot.js:117> [NotifyCallMeBot]NotifyCallMeBot success 200 OK
At the end of the day, if I try to use my @wilxxxxxin username, the call is linked to my old phone, even though I've already changed it on Telegram. In this case, I've already sent a mail to CallMeBot support with no reply for over a week.
Using the phone, which is authorized, the direct call works in the browser or using HTTP in MSR, if I use the Notify feature it doesn't work.
And what bothers me the most is that I understand that anyone who places a call in a browser with my phone number will be made, because there is no API KEY to limit use.
Well, if you have any more ideas to help me, I'd appreciate it.
-
@wmarcolin said in CallMeBot new interface?:
MSR NOTIFY CALLMEBOT
http://api.callmebot.com/start.php?text=NEW TEST NOTIFY&phone=%2B507xxxxxx33&lang=en-
This is showing that you haven't configured the user field, which it seems you must do or the call will not work. Your direct site version of the URL shows a user field and is working. The error message you get back is telling you as much, and yet you seem focused on the phone field.
The difference in the phone field between the first two calls is probably not relevant, as the
+
must be URL-encoded when making the request to the server, and+
encodes as%2B
. Reactor is showing the final encoded URL, and the web interface is likely not. If the plus is left un-encoded, it actually reads as a space character to the server (URL encoding translates spaces to either+
or%20
); I'm sure it's not meant to be a space, but a literal plus, and as such, it must be%2B
when finally sent to the server.What I don't understand is that in all the tests, the log always comes back successful.
"Successful" means that the server was connected and the request made, and the server did not respond with an error. While the content of the response may or may not indicate an error, what matters is the server's response code. Their server hands back a 200 (OK status) but the content of the response body is an error message, and that's a defect of their server (which I'm not going to address). They should return a 400-series error if the parameters of the request are incorrect, but they don't.
And what bothers me the most is that I understand that anyone who places a call in a browser with my phone number will be made, because there is no API KEY to limit use.
This is another big defect in the changes they've made recently, and a good reason not to use this interface. It's alarming, in fact. Honestly, I'm not spending a lot more time on it, because it doesn't seem to be in wide use, you've found a structure that works, and there's a workaround available (making the call using an HTTP Request action).
Really, with their recent changes, the NotifyCallMeBot interface is little more than a pass-through HTTP request that is actually made more difficult by the interface trying to "simplify" handling of the parameters as configuration, especially in their evolving API. I may deprecate this interface, for all these reasons.
-
Thank you very much for your explanation. I've tried several ways to configure the phone number or user, without success, but as you say, I think this tool should really be abandoned.
I understand that it's good, because we often don't pay attention to messages, and a phone call is much more useful.
But this change to making calls without an API KEY is really bad, and your decision is totally reasonable.
Thanks.
-
Hi @toggledbits
Sorry for using this post, but by giving this instruction, you helped me a lot to find the error.
Is there a way to configure logging.yaml to generate specific files for event types? For example, a file to store only logs that are ERR, another file to have Rule:INFO, or Rule:NOTICE?
I don't want to do without the general file, but if I could create some especially to only show ERR, it could make it easier to maintain the system on a recurring basis.
Any recommendations?
Thanks.
-
Yeah, would have preferred a new thread for this question.
See the Troubleshooting section of the manual.
-