Read the statement by Michael Teeuw here.
How to receive push notifications from another server?
-
I would like to receive notifications from another server in my module. To be more precise, I have a running openhab server and I would like to display the state of lights and window contacts on my mirror. Up to now, I am using the first version of the mirror:
Currently, I use the openhab REST API to pull the states every 10 seconds, but this produces a lot of requests on the openhab server and an update delay of up to 10 seconds. Instead, I would like the openhab server to tell my mirror each state change. On the openhab side, I can easily add some arbitrary java code, for example to perform some http requests or to open and communicate via a socket connection to a specific IP.
But how to implement a listener in a MM module? I don’t have much experience with electron and the new MM application infrastructure yet. How can I configure my module to receive notifications from another server? Is there maybe some module that does something similar?
-
The MagicMirror contains a SocketIO server. You could connect to that server and push notifications on the module specific channel. It’s an undocumented feature, so you might need to digg into the code.
-
Thanks for the really quick answer! :-)
Do you have any hint in which files I could start digging? -
I did some experiments but no success yet. Maybe you could clarify some things:
- What do you mean by ‘module specific channel’? How does that work?
- I tried to emit an event via a java application, but I don’t know which parameters to use so that the event is passed to my module?
- Where is the code that processes incoming socket events?
I tried socket.io-java-client, but nothing happens on the server (log remains empty, module does not return anything):
public static void main(String[] args) throws Exception { Socket socket = IO.socket("http://raspi:8080"); // I also tried: http://raspi:8080/socket-test-module socket.connect(); socket.emit("notification", "ping"); socket.close(); }
Any ideas how to get a simple external socket client running?
-
@paphko said in How to receive push notifications from another server?:
On the openhab side, I can easily add some arbitrary java code, for example to perform some http requests or to open and communicate via a socket connection to a specific IP.
in a module i forked from paviro, there is a functionality where you can make http requests to the module https://github.com/fewieden/MMM-syslog/blob/master/node_helper.js#L16
-
@strawberry-3.141 Awesome, thank you! That’s exactly what I was looking for :-)