kiwi-cam / homebridge-broadlink-rm

[This fork supports TV accessories] Broadlink RM Mini and Pro plugin for homebridge: https://github.com/nfarina/homebridge
Apache License 2.0
304 stars 96 forks source link

more than one IR blaster - failover #582

Open vmarks opened 1 year ago

vmarks commented 1 year ago

Describe the solution you'd like A clear and concise description of what you want to happen.

I would like to have more than one IR blaster connected, and have it blast out the second blaster if the first becomes unavailable.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

So far, I've noticed that it cannot detect 2 units of the same model (RM4 mini.). But, it can detect an RM4 Mini and an RM2 Pro Plus.

It will pick one of them as the unit for sending IR, and not blast out of the other unit.

If the unit goes off line, or otherwise fails, it will not change to the other unit.

My experience so far: the RM4 mini went offline and was not able to come back until I power-cycled it. I want a redundant system so that I can trust it will be reliable, if possible.

masterfordev commented 1 year ago

I have 3 bloadlink 4 mini, autodetected, no issues.

ggroel commented 1 year ago

I have 5 devices, your configuration is something similar to this?

    {
        "platform": "BroadlinkRM",
        "name": "Broadlink",
        "hideScanFrequencyButton": true,
        "hideLearnButton": false,
        "hideWelcomeMessage": true,
        "hosts": [
            {
                "address": "10.0.0.20",
                "mac": "EC:0B:AE:6A:A3:95",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.21",
                "mac": "EC:0B:AE:6B:07:45",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.22",
                "mac": "EC:0B:AE:6A:8F:DE",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.23",
                "mac": "EC:0B:AE:6A:A6:16",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.24",
                "mac": "EC:0B:AE:9E:96:B2",
                "isRFSupported": false,
                "isRM4": true
            }
        ],
        "accessories": [
        ]
    },

El 24 abr. 2023, a las 02:59, Victor Marks @.***> escribió:

Describe the solution you'd like A clear and concise description of what you want to happen.

I would like to have more than one IR blaster connected, and have it blast out the second blaster if the first becomes unavailable.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

So far, I've noticed that it cannot detect 2 units of the same model (RM4 mini.). But, it can detect an RM4 Mini and an RM2 Pro Plus.

It will pick one of them as the unit for sending IR, and not blast out of the other unit.

If the unit goes off line, or otherwise fails, it will not change to the other unit.

My experience so far: the RM4 mini went offline and was not able to come back until I power-cycled it. I want a redundant system so that I can trust it will be reliable, if possible.

— Reply to this email directly, view it on GitHub https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582, or unsubscribe https://github.com/notifications/unsubscribe-auth/APBDDDCHYW3NKVLUZQXSLPLXCYJFRANCNFSM6AAAAAAXJCWXYA. You are receiving this because you are subscribed to this thread.

vmarks commented 1 year ago

Interesting. If you unplug one, do the others take over?

On Mon, Apr 24, 2023 at 9:25 AM masterfordev @.***> wrote:

I have 3 bloadlink 4 mini, autodetected, no issues.

— Reply to this email directly, view it on GitHub https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582#issuecomment-1519457286, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACSWUYE6OZKD7DCWMTFUFTXCYMFBANCNFSM6AAAAAAXJCWXYA . You are receiving this because you authored the thread.Message ID: @.***>

vmarks commented 1 year ago

I do not have mine declared in Hosts. In yours, do they all blast at the same time? Or does it blast to one and when you unplug one it sends to the next?

Mine are auto detected. When I unplug one, it doesn’t send to the next one.

On Mon, Apr 24, 2023 at 3:42 PM Gastón Groel @.***> wrote:

I have 5 devices, your configuration is something similar to this?

{ "platform": "BroadlinkRM", "name": "Broadlink", "hideScanFrequencyButton": true, "hideLearnButton": false, "hideWelcomeMessage": true, "hosts": [ { "address": "10.0.0.20", "mac": "EC:0B:AE:6A:A3:95", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.21", "mac": "EC:0B:AE:6B:07:45", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.22", "mac": "EC:0B:AE:6A:8F:DE", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.23", "mac": "EC:0B:AE:6A:A6:16", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.24", "mac": "EC:0B:AE:9E:96:B2", "isRFSupported": false, "isRM4": true } ], "accessories": [ ] },

El 24 abr. 2023, a las 02:59, Victor Marks @.***> escribió:

Describe the solution you'd like A clear and concise description of what you want to happen.

I would like to have more than one IR blaster connected, and have it blast out the second blaster if the first becomes unavailable.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

So far, I've noticed that it cannot detect 2 units of the same model (RM4 mini.). But, it can detect an RM4 Mini and an RM2 Pro Plus.

It will pick one of them as the unit for sending IR, and not blast out of the other unit.

If the unit goes off line, or otherwise fails, it will not change to the other unit.

My experience so far: the RM4 mini went offline and was not able to come back until I power-cycled it. I want a redundant system so that I can trust it will be reliable, if possible.

— Reply to this email directly, view it on GitHub < https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582>, or unsubscribe < https://github.com/notifications/unsubscribe-auth/APBDDDCHYW3NKVLUZQXSLPLXCYJFRANCNFSM6AAAAAAXJCWXYA . You are receiving this because you are subscribed to this thread.

— Reply to this email directly, view it on GitHub https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582#issuecomment-1520085098, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACSWU33E5I2Q7Q3IW4A3GTXCZYLJANCNFSM6AAAAAAXJCWXYA . You are receiving this because you authored the thread.Message ID: @.***>

ggroel commented 1 year ago

It did not work in auto-detect, I defined them as a host and then on each device (air deficiting, fan, television) I clarify host = address. Everyone is working at the same time. But each of the hosts also have them as accessories to have the IR-Learner.

Example (more detailed):

    {
        "platform": "BroadlinkRM",
        "name": "Broadlink",
        "hideScanFrequencyButton": true,
        "hideLearnButton": false,
        "hideWelcomeMessage": true,
        "hosts": [
            {
                "address": "10.0.0.20",
                "mac": "EC:0B:AE:6A:A3:95",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.21",
                "mac": "EC:0B:AE:6B:07:45",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.22",
                "mac": "EC:0B:AE:6A:8F:DE",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.23",
                "mac": "EC:0B:AE:6A:A6:16",
                "isRFSupported": false,
                "isRM4": true
            },
            {
                "address": "10.0.0.24",
                "mac": "EC:0B:AE:9E:96:B2",
                "isRFSupported": false,
                "isRM4": true
            }
        ],
        "accessories": [
            {
                "accessory": "Broadlink RM Learner",
                "host": "10.0.0.20",
                "name": "IR Living",
                "type": "learn-code"
            },
            {
                "accessory": "Broadlink RM Learner",
                "host": "10.0.0.21",
                "name": "IR Comedor",
                "type": "learn-code"
            },
            {
                "accessory": "Broadlink RM Learner",
                "host": "10.0.0.22",
                "name": "IR Mir y Gastón",
                "type": "learn-code"
            },
            {
                "accessory": "Broadlink RM Learner",
                "host": "10.0.0.23",
                "name": "IR Luli",
                "type": "learn-code"
            },
            {
                "accessory": "Broadlink RM Learner",
                "host": "10.0.0.24",
                "name": "IR Facu",
                "type": "learn-code"
            },
            {
                "name": "TV Mir y Gastón",
                "type": "tv",
                "host": "10.0.0.22",
                "pingIPAddress": "10.0.0.15",
                "pingIPAddressStateOnly": true,
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE",
                    "remote": {
                        "select": "HEX_CODE",
                        "back": "HEX_CODE",
                        "exit": "HEX_CODE",
                        "info": "HEX_CODE",
                        "arrowUp": "HEX_CODE",
                        "arrowDown": "HEX_CODE",
                        "arrowLeft": "HEX_CODE",
                        "arrowRight": "HEX_CODE",
                        "playPause": "HEX_CODE"
                    },
                    "volume": {
                        "up": "HEX_CODE",
                        "down": "HEX_CODE"
                    },
                    "inputs": [
                        {
                            "name": "Telecentro",
                            "type": "hdmi",
                            "data": [
                                {
                                    "data": "HEX_CODE",
                                    "pause": 0.6
                                },
                                {
                                    "data": "HEX_CODE",
                                    "pause": 0.6
                                },
                                {
                                    "data": "HEX_CODE",
                                    "sendCount": 2,
                                    "interval": 0.3,
                                    "pause": 0.6
                                },
                                {
                                    "data": "HEX_CODE"
                                }
                            ]
                        },
                        {
                            "name": "Apple TV",
                            "type": "hdmi",
                            "data": [
                                {
                                    "data": "HEX_CODE",
                                    "pause": 0.6
                                },
                                {
                                    "data": "HEX_CODE",
                                    "pause": 0.6
                                },
                                {
                                    "data": "HEX_CODE",
                                    "sendCount": 3,
                                    "interval": 0.3,
                                    "pause": 0.6
                                },
                                {
                                    "data": "HEX_CODE"
                                }
                            ]
                        }
                    ]
                }
            },
            {
                "name": "TV Comedor",
                "type": "tv",
                "host": "10.0.0.21",
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE",
                    "remote": {
                        "select": "HEX_CODE",
                        "back": "HEX_CODE",
                        "exit": "HEX_CODE",
                        "info": "HEX_CODE",
                        "arrowUp": "HEX_CODE",
                        "arrowDown": "HEX_CODE",
                        "arrowLeft": "HEX_CODE",
                        "arrowRight": "HEX_CODE",
                        "playPause": "HEX_CODE"
                    },
                    "volume": {
                        "up": "HEX_CODE",
                        "down": "HEX_CODE"
                    },
                    "inputs": [
                        {
                            "name": "Apple TV",
                            "type": "hdmi",
                            "data": "HEX_CODE"
                        }
                    ]
                }
            },
            {
                "name": "Decodificador Mir y Gastón",
                "type": "switch",
                "host": "10.0.0.22",
                "pingIPAddress": "10.0.0.15",
                "pingIPAddressStateOnly": true,
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE"
                }
            },
            {
                "name": "Decodificador Living",
                "type": "switch",
                "host": "10.0.0.20",
                "pingIPAddress": "10.0.0.6",
                "pingIPAddressStateOnly": true,
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE"
                }
            },
            {
                "name": "AC Living",
                "type": "heater-cooler",
                "host": "10.0.0.20",
                "noHistory": true,
                "temperatureUpdateFrequency": 30,
                "defaultCoolTemperature": 22,
                "defaultHeatTemperature": 26,
                "minTemperature": 17,
                "maxTemperature": 30,
                "defaultRotationSpeed": 100,
                "tempStepSize": 1,
                "fanStepSize": 25,
                "mqttURL": "mqtt://10.0.0.10",
                "mqttUsername": "USER_NAME",
                "mqttPassword": "PASSWORD",
                "mqttTopic": [
                    {
                        "identifier": "temperature",
                        "topic": "CASA/Adelante/Clima/temperatura"
                    },
                    {
                        "identifier": "humidity",
                        "topic": "CASA/Adelante/Clima/humedad"
                    }
                ],
                "data": {
                    "heat": {
                        "on": "HEX_CODE",
                        "off": "HEX_CODE",
                        "temperatureCodes": {
                            "17": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "18": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "19": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "20": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "21": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "22": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "23": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "24": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "25": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "26": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "27": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "28": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "29": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "30": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            }
                        }
                    },
                    "cool": {
                        "on": "HEX_CODE",
                        "off": "HEX_CODE",
                        "temperatureCodes": {
                            "17": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "18": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "19": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "20": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "21": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "22": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "23": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "24": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "25": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "26": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "27": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "28": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "29": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "30": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            }
                        }
                    }
                }
            },
            {
                "name": "AC Mir y Gastón",
                "type": "heater-cooler",
                "host": "10.0.0.22",
                "noHistory": true,
                "temperatureUpdateFrequency": 30,
                "defaultCoolTemperature": 22,
                "defaultHeatTemperature": 26,
                "minTemperature": 17,
                "maxTemperature": 30,
                "defaultRotationSpeed": 100,
                "tempStepSize": 1,
                "fanStepSize": 25,
                "mqttURL": "mqtt://10.0.0.10",
                "mqttUsername": "USER_NAME",
                "mqttPassword": "PASSWORD",
                "mqttTopic": [
                    {
                        "identifier": "temperature",
                        "topic": "CASA/Adelante/Clima/temperatura"
                    },
                    {
                        "identifier": "humidity",
                        "topic": "CASA/Adelante/Clima/humedad"
                    }
                ],
                "data": {
                    "heat": {
                        "on": "HEX_CODE",
                        "off": "HEX_CODE",
                        "temperatureCodes": {
                            "25": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "26": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "27": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "28": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "29": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "30": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            }
                        }
                    },
                    "cool": {
                        "on": "HEX_CODE",
                        "off": "HEX_CODE",
                        "temperatureCodes": {
                            "17": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "18": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "19": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "20": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "21": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "22": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "23": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "24": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "25": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "26": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "27": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "28": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "29": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "30": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            }
                        }
                    }
                }
            },
            {
                "name": "Ventilador Mir y Gastón",
                "type": "fan",
                "host": "10.0.0.22",
                "hideRotationDirection": true,
                "hideSwingMode": true,
                "alwaysResetToDefaults": true,
                "defaultFanSpeed": 33,
                "stepSize": 33,
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE",
                    "fanSpeed33": [
                        {
                            "data": "HEX_CODE",
                            "pause": 1
                        },
                        {
                            "data": "HEX_CODE"
                        }
                    ],
                    "fanSpeed66": [
                        {
                            "data": "HEX_CODE",
                            "pause": 1
                        },
                        {
                            "data": "HEX_CODE",
                            "sendCount": 2,
                            "interval": 1
                        }
                    ],
                    "fanSpeed99": [
                        {
                            "data": "HEX_CODE",
                            "pause": 1
                        },
                        {
                            "data": "HEX_CODE",
                            "sendCount": 3,
                            "interval": 1
                        }
                    ]
                }
            },
            {
                "name": "AC Luli",
                "type": "heater-cooler",
                "host": "10.0.0.23",
                "noHistory": true,
                "mqttURL": "mqtt://10.0.0.10",
                "mqttUsername": "USER_NAME",
                "mqttPassword": "PASSWORD",
                "mqttTopic": [
                    {
                        "identifier": "temperature",
                        "topic": "CASA/Facu/AC/temperatura"
                    },
                    {
                        "identifier": "humidity",
                        "topic": "CASA/Adelante/Clima/humedad"
                    }
                ],
                "temperatureUpdateFrequency": 30,
                "defaultCoolTemperature": 22,
                "minTemperature": 18,
                "maxTemperature": 24,
                "defaultRotationSpeed": 100,
                "tempStepSize": 1,
                "fanStepSize": 25,
                "coolOnly": true,
                "data": {
                    "cool": {
                        "on": "HEX_CODE",
                        "off": "HEX_CODE",
                        "temperatureCodes": {
                            "18": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "19": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "20": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "21": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "22": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "23": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            },
                            "24": {
                                "rotationSpeed100": {
                                    "swingDnd": "HEX_CODE",
                                    "swingToggle": "HEX_CODE"
                                }
                            }
                        }
                    }
                }
            },
            {
                "name": "Estufa Luli",
                "type": "air-conditioner",
                "host": "10.0.0.23",
                "noHistory": true,
                "mqttURL": "mqtt://10.0.0.10",
                "mqttUsername": "USER_NAME",
                "mqttPassword": "PASSWORD",
                "mqttTopic": [
                    {
                        "identifier": "temperature",
                        "topic": "CASA/Facu/AC/temperatura"
                    },
                    {
                        "identifier": "humidity",
                        "topic": "CASA/Adelante/Clima/humedad"
                    }
                ],
                "temperatureUpdateFrequency": 30,
                "defaultHeatTemperature": 26,
                "minTemperature": 25,
                "maxTemperature": 30,
                "tempStepSize": 1,
                "heatOnly": true,
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE",
                    "heat25": "HEX_CODE",
                    "heat26": "HEX_CODE",
                    "heat27": "HEX_CODE",
                    "heat28": "HEX_CODE",
                    "heat29": "HEX_CODE",
                    "heat30": "HEX_CODE"
                }
            },
            {
                "name": "Luz Luli",
                "type": "switch",
                "host": "10.0.0.23",
                "data": {
                    "on": [
                        {
                            "data": "HEX_CODE",
                            "sendCount": 2,
                            "interval": 0.5
                        }
                    ],
                    "off": [
                        {
                            "data": "HEX_CODE",
                            "sendCount": 2,
                            "interval": 0.5
                        }
                    ]
                }
            },
            {
                "name": "Estufa Facu",
                "type": "air-conditioner",
                "host": "10.0.0.24",
                "noHistory": true,
                "mqttURL": "mqtt://10.0.0.10",
                "mqttUsername": "USER_NAME",
                "mqttPassword": "PASSWORD",
                "mqttTopic": [
                    {
                        "identifier": "temperature",
                        "topic": "CASA/Facu/AC/temperatura"
                    },
                    {
                        "identifier": "humidity",
                        "topic": "CASA/Adelante/Clima/humedad"
                    }
                ],
                "temperatureUpdateFrequency": 30,
                "defaultHeatTemperature": 26,
                "minTemperature": 25,
                "maxTemperature": 30,
                "tempStepSize": 1,
                "heatOnly": true,
                "data": {
                    "on": "HEX_CODE",
                    "off": "HEX_CODE",
                    "temperature25": "HEX_CODE",
                    "temperature26": "HEX_CODE",
                    "temperature27": "HEX_CODE",
                    "temperature28": "HEX_CODE",
                    "temperature29": "HEX_CODE",
                    "temperature30": "HEX_CODE"
                }
            },
            {
                "name": "Luz Facu",
                "type": "switch",
                "host": "10.0.0.24",
                "data": {
                    "on": [
                        {
                            "data": "HEX_CODE",
                            "sendCount": 2,
                            "interval": 0.3
                        }
                    ],
                    "off": [
                        {
                            "data": "HEX_CODE",
                            "sendCount": 2,
                            "interval": 0.3
                        }
                    ]
                }
            }
        ]
    },
    {
        "name": "mqtt",
        "persistence": true,
        "port": "1883",
        "host": "10.0.0.10",
        "auth": {
            "isEnabled": true,
            "username": "USER_NAME",
            "password": "PASSWORD"
        },
        "tls": {
            "isEnabled": false
        },
        "platform": "HomebridgeAedes"
    },

El 24 abr. 2023, a las 09:53, Victor Marks @.***> escribió:

I do not have mine declared in Hosts. In yours, do they all blast at the same time? Or does it blast to one and when you unplug one it sends to the next?

Mine are auto detected. When I unplug one, it doesn’t send to the next one.

On Mon, Apr 24, 2023 at 3:42 PM Gastón Groel @.***> wrote:

I have 5 devices, your configuration is something similar to this?

{ "platform": "BroadlinkRM", "name": "Broadlink", "hideScanFrequencyButton": true, "hideLearnButton": false, "hideWelcomeMessage": true, "hosts": [ { "address": "10.0.0.20", "mac": "EC:0B:AE:6A:A3:95", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.21", "mac": "EC:0B:AE:6B:07:45", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.22", "mac": "EC:0B:AE:6A:8F:DE", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.23", "mac": "EC:0B:AE:6A:A6:16", "isRFSupported": false, "isRM4": true }, { "address": "10.0.0.24", "mac": "EC:0B:AE:9E:96:B2", "isRFSupported": false, "isRM4": true } ], "accessories": [ ] },

El 24 abr. 2023, a las 02:59, Victor Marks @.***> escribió:

Describe the solution you'd like A clear and concise description of what you want to happen.

I would like to have more than one IR blaster connected, and have it blast out the second blaster if the first becomes unavailable.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

So far, I've noticed that it cannot detect 2 units of the same model (RM4 mini.). But, it can detect an RM4 Mini and an RM2 Pro Plus.

It will pick one of them as the unit for sending IR, and not blast out of the other unit.

If the unit goes off line, or otherwise fails, it will not change to the other unit.

My experience so far: the RM4 mini went offline and was not able to come back until I power-cycled it. I want a redundant system so that I can trust it will be reliable, if possible.

— Reply to this email directly, view it on GitHub < https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582>, or unsubscribe < https://github.com/notifications/unsubscribe-auth/APBDDDCHYW3NKVLUZQXSLPLXCYJFRANCNFSM6AAAAAAXJCWXYA . You are receiving this because you are subscribed to this thread.

— Reply to this email directly, view it on GitHub https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582#issuecomment-1520085098, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACSWU33E5I2Q7Q3IW4A3GTXCZYLJANCNFSM6AAAAAAXJCWXYA . You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582#issuecomment-1520103467, or unsubscribe https://github.com/notifications/unsubscribe-auth/APBDDDFNZU4ZQHXYVKFDOITXCZZSZANCNFSM6AAAAAAXJCWXYA. You are receiving this because you commented.

vmarks commented 1 year ago

That's really interesting - you've specified a blaster for each device by IP, and if one goes down (as my RM4 mini did after a couple of days) - no other blaster is going to pick up the job.

In my case, I have just one cable box as an IR receiver I'm blasting at. the other devices are all controlled over Ethernet. I wanted to have two blasters set up in case one dies in a couple of days.

I may have to just put them on an outlet with a schedule to power cycle the outlet. I don't know why the RM4 mini went offline after a few days.

ggroel commented 1 year ago

Actually, every Broadlink I define it as a host and it is a Learner accessory. Then in each accessory (air conditioning, fan, TV) I tell him the host by which he will receive the infrared signal (if he did not define it he did not work well ... I suppose it was because the sign that sent him by Homekit sent him To all Broadlink)

El 24 abr. 2023, a las 13:58, Victor Marks @.***> escribió:

That's really interesting - you've specified a blaster for each device by IP, and if one goes down (as my RM4 mini did after a couple of days) - no other blaster is going to pick up the job.

In my case, I have just one cable box as an IR receiver I'm blasting at. the other devices are all controlled over Ethernet. I wanted to have two blasters set up in case one dies in a couple of days.

I may have to just put them on an outlet with a schedule to power cycle the outlet. I don't know why the RM4 mini went offline after a few days.

— Reply to this email directly, view it on GitHub https://github.com/kiwi-cam/homebridge-broadlink-rm/issues/582#issuecomment-1520522659, or unsubscribe https://github.com/notifications/unsubscribe-auth/APBDDDE2RXDDHL5LIUMJLNLXC2WMNANCNFSM6AAAAAAXJCWXYA. You are receiving this because you commented.

vmarks commented 1 year ago

What I notice in the Homebridge Log is that the IR blasts to only one broadlink, which ever homebridge decides is the main one.

Homekit does not send to all broadlink, just the one only, unless you specify with hosts and IP addresses.

vmarks commented 1 year ago

The summary so far is:

  1. you can specify hosts per device being blasted at.
  2. you cannot blast out of all blasters at once
  3. there is no failover - if one broadlink stops responding, the others do not take over.
lualroja commented 1 year ago

I have 5 IR blaster, but even though i am using the same configuration your are using here, I don’t know why in my homebridge, I can make work just up to 4 of them. The fifth blaster fails.

stale[bot] commented 10 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.