Skip to content
  • 0 Votes
    9 Posts
    249 Views
    toggledbitsT

    It looks like the device has separate targetValue values for the white channels, so you'll need to use those. That means for red, green, and blue, you'll use targetValue for the property, but leave the propertyKey blank. For warm white, you use property targetValue with propertyKey zero (0), and for cold white you'll use propertyKey one (1).

  • Problem with simultaneous notifications.

    Multi-System Reactor
    1
    0 Votes
    1 Posts
    11 Views
    No one has replied
  • MQTT configuration question

    Multi-System Reactor
    7
    0 Votes
    7 Posts
    144 Views
    toggledbitsT

    @tunnus Kudos! I'm guessing you discovered that something like payload[config.cmd] got you where you were going with that (I'm repeating it here for future readers, since you didn't show your final result).

    To your next question, first thing: I believe you said you are using local_mqtt_devices.yaml. You'll "modernize" a bit by moving your template to its own file (e.g. daikin.yaml) in config/mqtt_templates/. Within template files in that subdirectory, you can define both custom capabilities and the templates that use them. They are structured more like a package, so you can more easily share them as others here have done.

    In this case, though, you probably don't need to define your own capability. While the system-defined capabilities have values for attributes and action parameters, they are not set in stone. The defined values are a reasonable subset that a lot of devices may have in common, but there would be no way for me to know the entire range of values for every device that ever was or will be, so Reactor doesn't enforce them. They are mostly hints to the UI for reasonable values it can display for the user as a starting point. You can use your own values for hvac_blower_unit.set_mode without defining your own capability; it won't be a problem as long as your implementation (template) expects those values and handles them.

    You're on the right track replacing the value_sensor capability with hvac_blower_unit. Using your posted config as a guide, it may look something like below. Let's look at the attributes of the capability first:

    daikin_command: # some config here, redacted in OP's post capabilities: [ "hvac_heating_unit", "hvac_blower_unit" ] primary_attribute: hvac_heating_unit.setpoint events: "some-topic-for-status-I-assume": # topic was redacted in OP's post # hvac_heating_unit stuff redacted for clarity/focus on hvac_blower_unit "hvac_blower_unit.state": json_payload: true if_expr: '! isnull( payload?.fan )' expr: 'payload?.fan !== "X"' # whatever expression you need here. "hvac_blower_unit.mode": json_payload: true if_expr: '! isnull( payload?.fan )' map: A: auto Q: quiet 1: low 2: low-medium 3: medium 4: medium-high 5: high

    What I can't tell from your posts is if there's a value for payload.fan that represents fan off. That would be used to drive the state boolean attribute. You may use an expression like expr: payload?.fan !== "X" Assuming X means off, state will be false when the fan is off, and true when it's running at any speed, which is the intent of the attribute. If the fan is always running or you just don't know (i.e. the device doesn't actually report it), you can forego the if_expr and expr and just supply value: true (or perhaps value: null, meaning "I don't know"), which supplies a fixed value for that attribute that never changes.

    For hvac_blower_unit.mode, you can see I've mapped the single-character values to strings. This isn't strictly necessary, but it's in keeping with the spirit of Reactor's design goals. Some of the values map to pre-defined values in the capability, and some don't, and that's just fine. It won't bother Reactor at all.

    Now on the action side, we need to add:

    actions: hvac_blower_unit: set_mode: topic: "command/%friendly_name%" payload: type: json expr: | value = {}, value.fan = ({ "auto": "A", "quiet": "Q", "low": 1, "low-medium": 2, "medium": 3, "medium-high": 4, "high": 5 })[parameters.mode] ?? parameters.mode, value

    This defines the set_mode action for the capability, preparing it to send a JSON payload. It first sets up an empty object in the value local variable. It then sets the fan key in the object by mapping any words given in the mode parameter to the action back to their letter equivalent for the device. If the value of the mode parameter doesn't map, it's just passed through as given (so you can still use the one-letter values directly if you don't want to use the words). Finally, the object in value is returned as the expression result (that's the , value bit at the end).

    Digging in to that mapping a little more, we're creating a key-value pair object on the fly to use to look the value in parameters.mode. If it matches a key (i.e. left side of a colon), it changes it to the value (the right of the colon). If it matches nothing, the lookup results in null, which is handled by the ?? operator — when given null on its left, it returns the value of the expression on its right (i.e. if the map isn't matched, parameters.mode as given is the result). This is how you can use either the fancy strings or the one-letter values equally.

    Hint: for debugging, when you run an action, MQTTController logs the exact topic and full payload being published at INFO level by default.

    Finally, if you truly wanted to define your own capability, you could make your own Daikin+MQTT custom version of hvac_blower_unit by putting it in a capabilities section of your template file (this does not work in local_mqtt_devices.yaml, only in files in config/mqtt_templates/:

    capabilities: x_mqtt_daikin_moredetail: # moredetail may include device type, model number, interface type, etc. attributes: speed: type: string values: - A - Q - 1 - 2 - 3 - 4 - 5 actions: set_speed: arguments: speed: type: string values: - A - Q - 1 - 2 - 3 - 4 - 5

    This section can just precede the templates: section in your file. You would then adjust the capability name, attribute name, and action and parameters names accordingly in the above example to match your custom definition.

    When you post snippets, please don't redact in a way that disrupts the structure. For example, you removed the topics from under events, and other data in your template. For future readers, that makes your post confusing and misleading, so other people that may find your post because they're having the same problem won't be able to follow it as easily. It would also be a courtesy to those other readers if you posted the final solution, for example the expression you finally came up with for the first problem solved.

    Link to: MQTTController Documentation

  • Problem after upgrading to 25067

    Multi-System Reactor
    4
    0 Votes
    4 Posts
    147 Views
    R

    I reviewed my Reactor configuration file. Some time ago I had duplicated one of the hubitat device sections in anticipation of making changes to my extended LAN. While one entry was marked as "enabled: false", it seems that MSR did not like the duplicate ID even though the duplicate was disabled. I added and "X" to the "id" and "name" of the duplicated entry and the error messages ceased.
    Thanks for the help

  • 5 Votes
    119 Posts
    17k Views
    toggledbitsT
    Reactor build 25082

    NOTE: Bare-metal users, please run npm run deps in your Reactor directory after updating, then restart Reactor. Generally, you should always do this after upgrading to a new build, but for this build in particular, it's necessary.

    Status Tab: fix an error that could cause lost notifications on object changes to some widgets. Packages: update some packages and force one dependency to eliminate a warning from node about a deprecated subsystem (not every package has caught up yet). Reactor UI: improve cleanup and memory utilization of tabs when switching between them. Engine: The isRuleSet() and isRuleEnabled() expression functions now trigger re-evaluation of expressions in which they appear when the subject rule changes state. HassController: Bless Hass to 2025.3.4 ZWaveJSController build 25082

    This build of ZWaveJSController requires Reactor build 25082 or higher.

    BREAKING CHANGE: For RGBW/RGBWW devices, the color_temperature capability is no longer used; white channels will now be mapped to the dimming capability. If you have such devices and use color_temperature attributes and actions, you will need to make appropriate adjustments to your Rules and Reactions.

    Add support for start and stop heal actions (in zwave_network capability). Improve connection retry decay computation (use slow initial decay with rapid ramp). Improve handling of white channels in RGBW/RGBWW devices. Mapping them to color_temperature seems to be incorrect in most cases, so they are now mapped to dimming. If the device has multiple channels, the white or color channels may be pushed to child entities. The zwave_device.set_value action now accepts JSON in the value fields for Z-Wave JS values that support it. Some devices are able to report or set multiple values simultaneously by using a dictionary as the value (aka JSON object with key/value pairs). RGBWW devices, for example, may support the currentColor and targetColor property with a value object like { "warmWhite": 0, "coldWhite": 0, "red": 128, "green": 0, "blue": 240 }.
  • Global expressions not always evaluated

    Multi-System Reactor
    3
    0 Votes
    3 Posts
    110 Views
    tunnusT

    @toggledbits great! Will this fix make it to the next build?

  • [Solved] Local expression evaluation

    Multi-System Reactor
    13
    0 Votes
    13 Posts
    358 Views
    tunnusT

    @toggledbits the main thing is that now I know that this behaviour is not a bug and there's a clear alternative (not using global variables when rule does not trigger often enough).

    Anyway, MSR is a great software and thanks for your continued support!

  • 0 Votes
    7 Posts
    530 Views
    G

    @toggledbits Confirmed.

  • Cannot delete Global Expressions

    Multi-System Reactor
    3
    0 Votes
    3 Posts
    178 Views
    SnowmanS

    The new built fixed the issue. Thanks for the fast response. Much appreciated.

  • Advice on Storing and Backing Up Bind Mounts - Docker

    Software
    5
    1 Votes
    5 Posts
    374 Views
    therealdbT

    @Pabla said in Advice on Storing and Backing Up Bind Mounts - Docker:

    Perfect thats exactly what I was thinking of doing! Since I am using Portainer their equivalent of Docker Compose is Stacks and Portainer has a handy built in GUI back up feature which backs all that up. Just need to figure out how to automate it and store it off the host for easy future retrieval.

    Portainer is just a nice GUI - I'm using it too to do basic stuff like restarting a container or see the logs, especially when I'm remote. But at the end of the day, it's just some GUI over docker/docker-compose CLI commands:

    cd /home/casa/containers/zwavejs/ && sudo docker compose pull && sudo docker compose up -d

    and you're good to go. Easier to run 5-6 times per container than clicking on some random web page, but I know it's personal. The only thing that matters is a disaster/recovery strategy that you'll be able to quickly follow.

  • Disaster recovery and virtualisation

    Unsolved General Discussion
    4
    0 Votes
    4 Posts
    275 Views
    CatmanV2C

    Thanks. I've got a new 6TB drive coming in a couple of days (I tried an enterprise level disc I had snagged from the office on an off chance, and it was fine) so I've got a 50% uplift on my storage. The two VMs that are running are noticeably snappier on VMs than on Pis, which is nice. Particularly when browsing 9k music tracks, which now takes a couple of seconds rather than the Pi's 20ish

    Once the drive upgrade is in place, I'm not quite sure where to go next. Just bite the bullet and try and connect the Zway stick straight into the VM. Try it with a new Zway stick for experimentation, or do something else.

    I'm far more comfortable now, though. I have snapshots and OVA images and everything!

    C

  • Local notification methods?

    Multi-System Reactor
    24
    0 Votes
    24 Posts
    2k Views
    toggledbitsT

    @therealdb said in Local notification methods?:

    @toggledbits time for a custom mqtt template

    LOL! I think for one topic, it might be a bit of overkill, but then, that's kind of how we roll, isn't it?

  • RFC: When disaster strikes (sorry it's a bit verbose)

    Unsolved General Discussion
    12
    0 Votes
    12 Posts
    471 Views
    CatmanV2C

    OK here's a useful resource:

    The Synology RAM megathread II

    With a linked sheet of all results that people have entered.

    Despite the thread I originally found, no one has got that particular RAM to work on the sheet. There's another Crucial item:
    CCT16G4SFD824A

    Which has 10 reports of working in the 224+

    Return initiated, new RAM arriving tomorrow. £10 more expensive so £35.

    <edit> New RAM in and booted fine. Takes a little longer to come up (I assume it takes a bit longer to check 18G of RAM than 2G 🙂 I think I'll start another thread about how I'm going to do this.

    C

  • AltUI sans internet connection

    Software
    7
    0 Votes
    7 Posts
    230 Views
    A

    Just on AltUI:

    The browser would be downloading any number of resources first time round from various servers. But I would have thought the majority of servers would be using some sort of cache control header combinations to the command the browser's caching. You don't need to be downloading jquery every time you hit a web page and I think it's unlikely that would be happening.

    So I would have thought that the browser (for AltUI) could have cached most of what AltUI needed? What resource is the browser calling up that it can't download with the internet connection down? Maybe AltUI could have functioned but in some sort of reduced capability mode?

    But yes the openLuup console, as I understand it, has been written to not rely overly on outside resources. Surprising akbooer could get it work!!

  • 0 Votes
    1 Posts
    141 Views
    No one has replied
  • Custom capabilities in MQTT templates

    Multi-System Reactor
    8
    1 Votes
    8 Posts
    384 Views
    toggledbitsT

    That is cool. I really love stuff that combines simple, available IoT bits with the old greasy bits to solve problems. It appeals to my libertarian steampunk fantasy of how I'd run my home, which unfortunately far exceeds my wife's tolerance for the lower limits of luxury over sustainability. 😆

  • 0 Votes
    16 Posts
    493 Views
    toggledbitsT

    The alerts persisting is a sync problem with the alerts data object. I've found and (hopefully) fixed it for the next build. Both it and the Controller Status widget need special handing when the API connection is restarted.

  • [SOLVED]Logs permissions for Docker Install

    Multi-System Reactor
    8
    0 Votes
    8 Posts
    347 Views
    toggledbitsT

    @vezinpi said in [SOLVED]Logs permissions for Docker Install:

    from the dist-config/logging.yaml that the default is 0644 (which would work just fine)

    Yes, and that needs to read 0o644 now -- I've fixed that for the next build. The default is actually 0o640 in the code, so I've fixed the distribution template for that as well.

  • Button.Since Revisited

    Multi-System Reactor
    1
    0 Votes
    1 Posts
    173 Views
    No one has replied
  • 0 Votes
    9 Posts
    313 Views
    CatmanV2C

    Oooh thanks!

    C

Recent Topics