nickbreaton / homebridge-modern-forms

Add support for Modern Forms fans to Homekit using Homebridge.
https://npm.im/homebridge-modern-forms
Apache License 2.0
20 stars 5 forks source link

Expected a string as the second argument #1

Open anon1y4012 opened 4 years ago

anon1y4012 commented 4 years ago

Hi, when I try to run homebridge with the plugin installed I'm hitting the following error.

[8/28/2020, 10:10:47 PM] TypeError: Expected a string as the second argument at Object.module.exports [as default] (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/network-calculator/index.js:12:11) at MapSubscriber.project (/usr/local/lib/node_modules/homebridge-modern-forms/dist/platform.js:42:310) at MapSubscriber._next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/operators/map.js:49:35) at MapSubscriber.Subscriber.next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/Subscriber.js:66:18) at TapSubscriber._next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/operators/tap.js:65:26) at TapSubscriber.Subscriber.next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/Subscriber.js:66:18) at MergeMapSubscriber.notifyNext (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/operators/mergeMap.js:93:26) at SimpleInnerSubscriber._next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/innerSubscribe.js:27:21) at SimpleInnerSubscriber.Subscriber.next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/Subscriber.js:66:18) at AsyncSubject.Subject.next (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/Subject.js:60:25) at AsyncSubject.complete (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/AsyncSubject.js:53:35) at handler (/usr/local/lib/node_modules/homebridge-modern-forms/node_modules/rxjs/internal/observable/bindNodeCallback.js:53:33) at /usr/local/lib/node_modules/homebridge-modern-forms/node_modules/network/lib/index.js:109:11 at /usr/local/lib/node_modules/homebridge-modern-forms/node_modules/network/lib/linux.js:10:7 at ChildProcess.exithandler (child_process.js:294:7) at ChildProcess.emit (events.js:315:20) at maybeClose (internal/child_process.js:1021:16) at Socket. (internal/child_process.js:443:11) at Socket.emit (events.js:315:20) at Pipe. (net.js:674:12)

It actually logs the error twice, with the same timestamp.

Homebridge then crashes. The config looks like this

...... { "platform": "ModernForms" }, .....

Any thoughts?

nickbreaton commented 4 years ago

Hey thanks for reporting! I'm taking a look into it now and will report back.

nickbreaton commented 4 years ago

@john2691 I think there may be a problem with the auto discovery feature of the plugin. This has turned out to be a bit more challenging than originally anticipated, but as long as you know the IP address of your fan(s), you can skip that entirely by specifying the following:

{
    "platform": "ModernForms",
    "autoDiscover": false,
    "fans": [
        {
            "ip": "YOUR FANS IP ADDRESS"
        }
    ]
}

That should hopefully get things working for you, but it would be great to understand what's causing this in the first place. Would you mind sharing what platform you're running on (Mac, Linux, Windows, HOOBS device), and if you are running in a Docker container?

nickbreaton commented 4 years ago

I've also pushed an update, 1.0.6, that should prevent the crash from happening. The issue is I can't seem to determine some network details to make a guess at the range of IP addresses your fan's may be in. I've now provided fallbacks for those missing details, but those fallbacks may align with how your network is configured.

anon1y4012 commented 4 years ago

Ok, so I've updated to 1.0.6 and get a different error, with and without the manual IP address of the fan in the config file.

I'll also note that the fan is on the same subnet of the machine running Homebridge, which is a Raspberry Pi 3B+ running Buster.

[8/29/2020, 8:39:32 PM] Error: spawn arp ENOENT at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19) at onErrorNT (internal/child_process.js:469:16) at processTicksAndRejections (internal/process/task_queues.js:84:21)

Thanks for the fast response, let me know what else you need!

nickbreaton commented 4 years ago

@john2691 Okay that's a bummer, will try to reproduce with Buster but might take a little longer 😄.

Did you also add "autoDiscover": false, to the config?

anon1y4012 commented 4 years ago

Just added it, problem solved. Working great now, thanks!

For anyone with this bug in the immediate future, my config looks like this.

{ "platform": "ModernForms", "autoDiscover": false, "fans": [ { "ip": "192.168.X.XX" } ] },

nickbreaton commented 4 years ago

@john2691 Great! Would be super helpful if you could test the auto discovery for me in the future when I push a fix. I'll leave the issue open for now.

anon1y4012 commented 4 years ago

Just let me know!