Appropriate approach to communicate with (pluggable) external systems


I have a working PoC of an extension to control Google Meet. I have a toolbar button that enables when a Google Meet is in progress, and offers buttons to mute audio/video. This allows me to access this functionality even if I have switched to a different tab.

I would like to extend this extension, so I can control it from an outside process. For example, integrate it in a home-automation system, so I can light up a led if I am in a meeting, or have a physical button on my desk to mute. Another integration could be running a small web server that lets me control a meeting from my phone.

I wonder which approach should I choose to integrate with arbitrary end-points. Communication should be bidirectional (send meeting status, receive mute commands) and real-time. I’m thinking of two options:

  • Use native messaging. I think this would be the best option, but I dislike that the path to the native binary needs to be absolute. If I understand correctly, this means that users will only be able to use this if they are root (because I need the executable to be in /usr/local/bin or a fixed place which at least in Linux is commonly only writable by root). That might be a good idea for security, but it’s driving me towards other options.

  • Use a network connection. I assume the easiest would be to use a websocket (so it’s bidirectional) connection to a process running on the same host.

Any other options I have? Any recommendation or example of some other extension that does something similar?



1 Like

OK, so I have been researching a bit and I think I want MQTT over WebSockets. Home automation systems seem to support MQTT out of the box. Also, the “homie” convention seems useful.

For use for people without dedicated MQTT infra, I suppose I would publish some self-contained setup that embeds an MQTT broker and serves a web interface.