Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Unsolved
Collapse
Discussion Forum to share and further the development of home control and automation, independent of platforms.
  1. Home
  2. Software
  3. Multi-System Reactor
  4. Invocable rules via MQTT
Gradually turn on lights.
Tom_DT
I have several lights that I would like to turn on very gradually over 15 or 20 seconds. from 0 to .25 in .01 increments. I have tried a few things that came nowhere near working, so here I am.
Multi-System Reactor
Stop the MSR by an external switch on Hubitat.
wmarcolinW
Use case: When performing home maintenance, such as air conditioning, I want all rules involving air conditioning to be disabled. To do this, to day, I have a virtual switch that I placed within all rules involving air conditioning, meaning that if I turn it off, none of them work. Then another situation: the water pump system and garden irrigation, another switch. In short, I had to create several virtual switches in Hubitat to disable rules in MSR. Unfortunately, however, I was unable to cover all scenarios, so I wondered if it would be possible for MSR to support a virtual MSR switch, which, when configured in the reactor settings, would function as a general on/off switch for MSR. If it is configured and turned off, the entire rules and actions in MSR stops working, except for the status change reading process, specifically for this switch, which, when turned on, would restart the MSR. Would it be possible to do something like this? Any recommendations from the experts?
Multi-System Reactor
Error After Upgrade
T
Topic thumbnail image
Multi-System Reactor
Reset attribute value of entity in event handler
R
Topic thumbnail image
Multi-System Reactor
Need help figuring out how to delay a reset on reaction
T
Topic thumbnail image
Multi-System Reactor
Way to search for rules (rule state) in other rules
T
@toggledbits, not sure if this is a feature request or I'm using the search tool wrong. You have a "Search for rule" in the Rules Set tab in MSR. It works nicely to find a rule and bring up said rule, but can it/could it be used for as a "where used?" global search? For instance, I have a fairly large set of rules, divided up into 10 different rulesets. There's easily a hundred individual rules, and many of the rules have Rule State triggers, which of course refer to other rules. Amongst my troubleshooting today, I came across what may have been a duplicate or troubleshooting attempt, but I can't tell if it's actually used as a Rule State in another rule without opening each rule that I suspect it may be a part of. Thanks.
Multi-System Reactor
Links to MSR from HA
Tom_DT
I am using Home Assistant a lot recently. On a dashboard showing the devices, I would like to show a link to the MSR rule that controls the devices. Is there a way to link directly into MSR?
Multi-System Reactor
Set Reaction > Script Action
wmarcolinW
Topic thumbnail image
Multi-System Reactor
Errors after updating to MQTTController build 25139
tunnusT
I'm running MSR build 25139 on Docker, using MQTT controller 24293, and everything working as expected. But if I try to upgrade to MQTTController build 25139, I'm getting the following errors on MSR UI: An Entity Attribute condition in "Lay-Z-Spa auto heating off" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute value_sensor.god Last 11:20:37 An Entity Attribute condition in "Lay-Z-Spa auto heating off" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute temperature_sensor.green Last 11:20:37 An Entity Attribute condition in "Lay-Z-Spa filter pump auto off" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute temperature_sensor.red Last 11:20:37 An Entity Attribute condition in "Lay-Z-Spa filter pump auto run" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute value_sensor.pump Last 11:20:37 An Entity Attribute condition in "Lay-Z-Spa watchdog" (Terrace) failed because the referenced entity "Lay-Z-Spa States" (mqtt>layzspa_states) does not have attribute value_sensor.status Last 11:20:37 My MQTT configuration (local_mqtt_devices.yaml) for the related entity is: layzspa_message: type: ValueSensor capabilities: ["temperature_sensor", "value_sensor", "power_sensor"] primary_attribute: power_sensor.value events: "layzspa/message": "power_sensor.value": json_payload: true if_expr: '! isnull( payload?.PWR )' expr: "float(payload.PWR)" "value_sensor.air": json_payload: true if_expr: '! isnull( payload?.AIR )' expr: "float(payload.AIR)" "value_sensor.pump": json_payload: true if_expr: '! isnull( payload?.FLT )' expr: "float(payload.FLT)" "value_sensor.god": json_payload: true if_expr: '! isnull( payload?.GOD )' expr: "float(payload.GOD)" "value_sensor.lock": json_payload: true if_expr: '! isnull( payload?.LCK )' expr: "float(payload.LCK)" "value_sensor.unit": json_payload: true if_expr: '! isnull( payload?.UNT )' expr: "float(payload.UNT)" "value_sensor.error": json_payload: true if_expr: '! isnull( payload?.ERR )' expr: "float(payload.ERR)" "temperature_sensor.green": json_payload: true if_expr: '! isnull( payload?.GRN )' expr: "float(payload.GRN)" "temperature_sensor.red": json_payload: true if_expr: '! isnull( payload?.RED )' expr: "float(payload.RED)" "temperature_sensor.target": json_payload: true if_expr: '! isnull( payload?.TGT )' expr: "float(payload.TGT)" "temperature_sensor.value": json_payload: true if_expr: '! isnull( payload?.TMP )' expr: "float(payload.TMP)" "temperature_sensor.virtual": json_payload: true if_expr: '! isnull( payload?.VTM )' expr: "round(float(payload.VTM), 1)" "temperature_sensor.ambient": json_payload: true if_expr: '! isnull( payload?.AMB )' expr: "float(payload.AMB)" "layzspa/Status": "value_sensor.status": if_expr: '! isnull( payload )' expr: "payload" "layzspa/button": "value_sensor.button": if_expr: '! isnull( payload )' expr: "payload" and in reactor.yaml I have: "layzspa_states": name: "Lay-Z-Spa States" friendly_name: 'Lay-Z-Spa States' include: layzspa_message I realize my MQTT configuration might be a bit unorthodox, but could there still be something unintentional in the latest MQTTController build? If needed, I can provide detailed logs.
Multi-System Reactor
🎉 My very first MSR controller: OpenSprinkler
therealdbT
Since today is my birthday - and I still pretend to be unconventional - I'm giving away a present to this wonderful community and I'm releasing my first OpenSprinkler controller for MSR. It was real fun to code it - and while it's still WIP, it seems to work OK for me. It's polling-based at the moment, but I'll add support for updates via MQTT very soon (it's already partially coded). Get it at (install is similar to MQTTController and such): https://github.com/dbochicchio/reactor-opensprinkler Feel free to try it. It's beta software, but it's stable. I'll update it weekly until all the tasks from my todo list are empty. Since I've learnt a lot from this controller, I'll explore new controllers soon.
Multi-System Reactor
Advice reqeusted to migrate MSR from Bare Metal to Container
T
Good day all, I'm in the process of trying to shut down my 10 year old Linux home server that served many purposes, but primarily it's what I used for my NAS/Plex Media server. I migrated the NAS aspect of the server in November of last year to a true NAS solution (Ubiquti UNAS Pro), which is rack mount and much more efficient than my old tower, which it's only side benefit was heating my home office during the winter. Unfortunately it also means heating my home office during the summer, which were about to be in full swing. I have two things running on this 10 year old server at this point. MSR and pi-hole. I'm running Plex Media Server on Fedora Workstation in Podman on mini PC, which is much more energy efficient than my old tower. My next step is to migrate MSR. I know there are images of MSR out there, and creating it is well documented. I'm going to be using Podman instead of Docker for various reasons, but they work very similar. What I don't know, is what I need to do to migrate my existing Bare Metal installation over to a container. Has anyone done this? Any advice?
Multi-System Reactor
Reactor (Multi-System/Multi-Hub) Announcements
toggledbitsT
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.
Multi-System Reactor
Can´t restart or upgrade/deploy MSR
F
Topic thumbnail image
Multi-System Reactor
[Solved] Limit HA Entity in MSR
wmarcolinW
Topic thumbnail image
Multi-System Reactor
Organizing/ structuring rule sets and rules
R
Hi guys, Just wondering how you guys organize your rule sets and rules. I wish I had an extra layer to have some more granularity, but my feature request was not popular. Maybe there are better ways to organize my rule sets. I use the rule sets now primarily for rooms. So a rule set per room. But maybe grouping by functionality works better. Any examples/ suggestions would be appreciated.
Multi-System Reactor
Moving MSR from a QNAP container to RP 5 - some issues
Tom_DT
Topic thumbnail image
Multi-System Reactor
Widget deletion does not work and landing page (status) is empy
M
Topic thumbnail image
Multi-System Reactor
Need help reducing false positive notifications
T
Topic thumbnail image
Multi-System Reactor
Deleting widgets
tunnusT
Hopefully a trivial question, but how do you delete widgets in a status page? Using build 22266
Multi-System Reactor
MQTT configuration question
tunnusT
I have the following yaml configuration in local_mqtt_devices file x_mqtt_device: set_speed: arguments: speed: type: str topic: "command/%friendly_name%" payload: type: json expr: '{ "fan": parameters.speed }' While this works fine, I'm wondering how this could be changed to "fixed" parameters, as in this case "fan" only accepts "A", "Q" or a numeric value of 1-5?
Multi-System Reactor

Invocable rules via MQTT

Scheduled Pinned Locked Moved Multi-System Reactor
8 Posts 2 Posters 412 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • therealdbT Offline
    therealdbT Offline
    therealdb
    wrote on last edited by
    #1

    Hey @toggledbits.
    From the docs:

    You cannot control the state of rules via MQTT. Rule state is driven exclusively by the result of its conditions.

    And I'm OK when rules are triggered by something else, but I've built a couple of rules to be used by other rules, to streamline the logic, and it'll be useful to invoke a rule via MQTT. It's probably close to what rule/:id/restart is doing in the HTTP api.

    Thanks!

    --
    On a mission to automate everything.

    My MS Reactor contrib
    My Luup Plug-ins

    1 Reply Last reply
    0
    • toggledbitsT Offline
      toggledbitsT Offline
      toggledbits
      wrote on last edited by toggledbits
      #2

      There are other ways to accomplish this. Virtual switches are the traditional way, of course. You just add conditions to your rules to check the switch states, and that gives you additional external input you can use to control the rule state. The method I now prefer is to use a global variable, if for example, I don't need or want a UI for it. For example, I use virtual switches for "party mode" and "guest mode" in my house, which changes the behavior of my lighting rules, so my wife can turn these on and off from the dashboard or Alexa. But I use a global variable for "vacation mode", for which I want no Alexa visibility at all, and it's typically part of a bigger procedure to ready the house for long unoccupied times.

      I've heard this "it would be useful" before, but nobody has yet explained why or how, so as of this moment, I'm open to hear it, but I'm unconvinced. I also think there' may be a framing problem. Rules are not "invoked." They are state, not action. Reactions can be invoked, either explicitly or driven by rule state. The Rule is the driver, not the driven thing; the Reaction is the driven element.

      Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

      therealdbT 1 Reply Last reply
      0
      • toggledbitsT toggledbits

        There are other ways to accomplish this. Virtual switches are the traditional way, of course. You just add conditions to your rules to check the switch states, and that gives you additional external input you can use to control the rule state. The method I now prefer is to use a global variable, if for example, I don't need or want a UI for it. For example, I use virtual switches for "party mode" and "guest mode" in my house, which changes the behavior of my lighting rules, so my wife can turn these on and off from the dashboard or Alexa. But I use a global variable for "vacation mode", for which I want no Alexa visibility at all, and it's typically part of a bigger procedure to ready the house for long unoccupied times.

        I've heard this "it would be useful" before, but nobody has yet explained why or how, so as of this moment, I'm open to hear it, but I'm unconvinced. I also think there' may be a framing problem. Rules are not "invoked." They are state, not action. Reactions can be invoked, either explicitly or driven by rule state. The Rule is the driver, not the driven thing; the Reaction is the driven element.

        therealdbT Offline
        therealdbT Offline
        therealdb
        wrote on last edited by
        #3

        @toggledbits yes, you’re right and I’ve used all you mentioned, but I’m not really satisfied.

        But know I’ve started building a couple of new rule sets starting from previous code on luup, where I basically have to invoke a given set of actions (mainly setting roller shutters at a given positionm) based on other inputs (Alexa, a bot, another rule set). I’ve done it with global reactions, but since they’re not organizable it’s soon becoming too difficult to remember where it’s stored the logic and what is calling what.

        You’re right that it’s not what I really need. I’d prefer a way to watch for a given mqtt message instead. This will probably solve all my problems, since it will be easier to organize and I’ll archive the same result.

        In this particular case, I’d like to invoke it via Alexa and I’ll maybe just define a global variable and start messing with the corresponding api. Thanks!

        --
        On a mission to automate everything.

        My MS Reactor contrib
        My Luup Plug-ins

        toggledbitsT 1 Reply Last reply
        0
        • therealdbT therealdb

          @toggledbits yes, you’re right and I’ve used all you mentioned, but I’m not really satisfied.

          But know I’ve started building a couple of new rule sets starting from previous code on luup, where I basically have to invoke a given set of actions (mainly setting roller shutters at a given positionm) based on other inputs (Alexa, a bot, another rule set). I’ve done it with global reactions, but since they’re not organizable it’s soon becoming too difficult to remember where it’s stored the logic and what is calling what.

          You’re right that it’s not what I really need. I’d prefer a way to watch for a given mqtt message instead. This will probably solve all my problems, since it will be easier to organize and I’ll archive the same result.

          In this particular case, I’d like to invoke it via Alexa and I’ll maybe just define a global variable and start messing with the corresponding api. Thanks!

          toggledbitsT Offline
          toggledbitsT Offline
          toggledbits
          wrote on last edited by
          #4

          @therealdb said in Invocable rules via MQTT:

          You’re right that it’s not what I really need. I’d prefer a way to watch for a given mqtt message instead.

          You know you can do that to an entity, right? And then conditions check the entity?

          Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

          therealdbT 1 Reply Last reply
          0
          • toggledbitsT toggledbits

            @therealdb said in Invocable rules via MQTT:

            You’re right that it’s not what I really need. I’d prefer a way to watch for a given mqtt message instead.

            You know you can do that to an entity, right? And then conditions check the entity?

            therealdbT Offline
            therealdbT Offline
            therealdb
            wrote on last edited by
            #5

            @toggledbits yes, I’ll try to define a virtual entity that will just try to catch messages in a given topic and react to the payload. I don’t want to map every single actions to entities, because this is a lot of work for something that’s meant to be not exposed into ui.

            --
            On a mission to automate everything.

            My MS Reactor contrib
            My Luup Plug-ins

            toggledbitsT 1 Reply Last reply
            0
            • therealdbT therealdb

              @toggledbits yes, I’ll try to define a virtual entity that will just try to catch messages in a given topic and react to the payload. I don’t want to map every single actions to entities, because this is a lot of work for something that’s meant to be not exposed into ui.

              toggledbitsT Offline
              toggledbitsT Offline
              toggledbits
              wrote on last edited by
              #6

              @therealdb said in Invocable rules via MQTT:

              catch messages in a given topic and react to the payload

              This is where what you've asked so far is an incomplete thought, in my view. I can probably easily create a condition that responds to events from controllers such as an MQTT message, but those messages have payloads, and you haven't really mentioned that part before this post, although I anticipated that was where it was going to go. So as you have now said, you don't just need to respond to a message. You need to respond to a message, parse the payload it may or may not include, which may be a simple value or a more complex object in JSON form that you want to navigate, from which you may want to make a decision based on a single value taken from the payload or multiple values, which may possible need to be transformed or scaled prior to further processing (expressions), and then use any of the existing operations (and maybe some not yet conceived, so more expressions) to complete the conditional test, and/or store those values in local or global variables for additional uses elsewhere. This is all supposed to happen inside the context of a single condition.

              Functionally, this is what MQTTController's method of reducing topics/events to entities does today, it just does not do it within the definition of a single condition (or condition type) in a rule. To make it a condition would require an extremely elaborate UI — you have to be able to specify what topic you are interested in (and since they are not defined/standardized, the user has to know and supply it correctly to the letter), parse the payload (which is in a form that the user again must know and supply) and use that output to extract data from the payload (the type and location of which within the payload again must be supplied by the user accurately — expressions? maybe too complex, so add an object navigator?), then store and/or build conditions from any number of those payload values (where currently conditions are one-value-one-test). MQTTController does all this now, but if you want it in a UI for a condition type, what you really are asking, in my view, is that I build Node-RED as a condition type, because this is also exactly how NR operates; this basically describes what NR fundamentally is and does.

              I agree that configuring the custom entities for MQTTController is not for the timid, and I'd like it to be easier, but that's due in large part of what MQTT is, and what it is not. MQTT is, as you point out, not meant for UIs. It is fundamentally a transport interface, and nothing more. It doesn't define what the topics or payloads are, and it invites manufacturer/implementor interpretation/imagination/entropy in its use, and thus eschewing standardization/consistency/predictability, all of which defies the idea of creating a simple one-size-fits-all UI, and shifting a lot of the knowledge requirement onto the user. Even though NR has (is) a GUI, the user has to supply all of the knowledge about the topic and payload, and that is different for every topic/device/vendor. This is exactly why NR gets as complex as it gets, and why the learning curve is so steep and a lot of people can't use it all.

              Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

              1 Reply Last reply
              0
              • therealdbT Offline
                therealdbT Offline
                therealdb
                wrote on last edited by
                #7

                I have to define something to parse the payload because I really don’t want to define too many rule set just to intercept messages. But it’s not too different than parsing a json after an http call, or transform entities values in expressions.

                The choice is up to you, but this is not uncommon for power users to use mqtt to send/receive values from different systems and I’m not that interested in having a bus message representing an entity, so an an UI artifact.

                As I didn’t wanted to invest too much time, I’ve accomplished the same by sending a numeric value to an an expression and I’m using it as a trigger. I already have a system that’s it’s able to intercept specific mqtt messages with a simple configuration and I’ll continue to use it. Thanks anyway for the pointers.

                --
                On a mission to automate everything.

                My MS Reactor contrib
                My Luup Plug-ins

                1 Reply Last reply
                0
                • therealdbT Offline
                  therealdbT Offline
                  therealdb
                  wrote on last edited by
                  #8

                  For anyone trying to do the same in future, here's what I did, in detail:

                  • I defined a global variable named scenefrommqtt (leave it empty, so it's settable)
                  • I'm publishing an MQTT message under reactor/mqtt/Expr/scenefrommqtt/set, with value "mykey" (the quotes are important)
                  • On Reactor's side, I'm using the variable as a trigger, using the same name defined for the Rule Set

                  It's working very well for me, and it's easy to setup. Thanks @toggledbits for both MSR and for pushing me to think of current features, instead of asking for new complicated ones 🙂

                  Now I have just one single vera code running, and I'll migrate it later, leaving the Vera just as a glorified ZWave bridge until it'll work.

                  --
                  On a mission to automate everything.

                  My MS Reactor contrib
                  My Luup Plug-ins

                  1 Reply Last reply
                  0
                  • toggledbitsT toggledbits locked this topic on
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Recent Topics

                  • Gradually turn on lights.
                    G
                    gwp1
                    0
                    4
                    145

                  • Stop the MSR by an external switch on Hubitat.
                    wmarcolinW
                    wmarcolin
                    0
                    1
                    38

                  • Error After Upgrade
                    G
                    gwp1
                    0
                    4
                    106

                  • Reset attribute value of entity in event handler
                    R
                    RHCPNG
                    0
                    5
                    209

                  • Need help figuring out how to delay a reset on reaction
                    G
                    gwp1
                    0
                    22
                    931

                  • Way to search for rules (rule state) in other rules
                    T
                    tamorgen
                    0
                    3
                    104

                  • Links to MSR from HA
                    Tom_DT
                    Tom_D
                    0
                    1
                    93

                  • Set Reaction > Script Action
                    wmarcolinW
                    wmarcolin
                    0
                    11
                    440

                  • Wiring Samotech SM308-S into light fitting
                    akbooerA
                    akbooer
                    0
                    2
                    152

                  • Errors after updating to MQTTController build 25139
                    toggledbitsT
                    toggledbits
                    0
                    6
                    242

                  • 🎉 My very first MSR controller: OpenSprinkler
                    therealdbT
                    therealdb
                    5
                    13
                    920

                  • Advice reqeusted to migrate MSR from Bare Metal to Container
                    T
                    tamorgen
                    0
                    5
                    264
                  Powered by NodeBB | Contributors
                  Hosted freely by 10RUPTiV - Solutions Technologiques | Contact us
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Unsolved