Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
        {
            "accessory": "mqttthing",
            "type": "fan",
            "name": "fireplace-fan",
            "url": "http://192.168.1.50:1883",
            "username": "homebridge",
            "password": "pass",
            "topics": {
              "getOn": {
                "topic": "stat/fireplace-fan/RESULT",
                "apply": "return JSON.parse(message).FanSpeed > 0 ? true : false;"
              },
              "setOn": {
                "topic": "cmnd/fireplace-fan/FanSpeed",
                "apply": "return message ? '' : '0';"
              },
              "getRotationSpeed": {
                "topic": "stat/fireplace-fan/RESULT",
                "apply": "return Math.round(JSON.parse(message).FanSpeed * 33.3);"
              },
              "setRotationSpeed": {
                "topic": "cmnd/fireplace-fan/FanSpeed",
                "apply": "return Math.round(message / 33.3);"
              }
            },
            "confirmationPeriodms": 1000
        },


Order of Operations when Setting Rotation Speed

If we add some console.log statments in our apply function, we see that setting the rotation speed makes 2 calls. The first to setRotationSpeed and then to setOn.

Code Block
Code Block
***** ff:setRotationSpeed - mesage=73
***** ff:setOn - mesage=true

...


After installing the iFan for use with my fireplace, I concluded that the fan level 1 was too low and decided to bypass it. This new configuration changes the fan such that it operates at 0% (off), 50%(fan level2) and 100%(fan level 3).

Code Block
{
            "accessory": "mqttthing",
            "type": "fan",
            "name": "fireplace-fan",
            "url": "http://192.168.1.50:1883",
            "username": "homebridge",
            "password": "pass",
            "topics": {
              "getOn": {
                "topic": "stat/fireplace-fan/RESULT",
                "apply": "return JSON.parse(message).FanSpeed > 0 ? true : false;"
              },
              "setOn": {
                "topic": "cmnd/fireplace-fan/FanSpeed",
                "apply": "return message ? '' : '0';"
              },
              "getRotationSpeed": {
                "topic": "stat/fireplace-fan/RESULT",
                "apply": "val=JSON.parse(message).FanSpeed; if(val==0)return '0'; if(val=='2') return '50'; if(val==3) return '100';"
              },
              "setRotationSpeed": {
                "topic": "cmnd/fireplace-fan/FanSpeed",
                "apply": "if(message >50) return 3; if(messag=e=0) return 0; return 2;"
              }
            },
            "confirmationPeriodms": 1000
        },


References

...