MagicMirror² v2.8.0 is available! For more information about this release, check out this topic.

Module Sending notification to a python project



  • Hello,

    can someone help me to create a simple module that send all notification from the magic mirror module to a python script. I need also some help to create the code in python to intercept the notification.

    Which goal ? I have a google assistant develop in python, i am using the facial recognition and i want to send notification from MMM-facial or other module to the google assistant which is develop in python to say something when a notification is received.

    here is the link of the google assistant project : https://github.com/shivasiddharth/GassistPi

    One other way is to create a module based on the python project but i do not know how to do it, and then it will received all the notification.

    I know there is a lot of assistant module for the magic mirror, but this one works very well, it has a lot of functionnality and i can configure it easyly in french.

    thanks so much.


  • Module Developer

    @bimbim2401 You just have to establish a Websocket connection from your Python module to the MagicMirror at port 8080.



  • so i just need to create a websocket in a python script like this below ? and it will listen to all notification from the magic mirror sending by the method sendnotification ?

    import SocketServer

    class MyTCPHandler(SocketServer.BaseRequestHandler):
    “”"
    The RequestHandler class for our server.

    It is instantiated once per connection to the server, and must
    override the handle() method to implement communication to the
    client.
    """
    
    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper())
    

    if name == “main”:
    HOST, PORT = “localhost”, 8080

    # Create the server, binding to localhost on port 8080
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
    
    # Activate the server; this will keep running until you
    # interrupt the program with Ctrl-C
    server.serve_forever()
    

    or do i have to add the MMM-WEBSOCKET module found here :
    https://github.com/JanLoebel/MMM-websocket


  • Module Developer

    @bimbim2401 Well, in Chrome I can see. That the MagicMirror Webclient establishes a Websocket connection to ws://IP:8080/socket.io/?EIO=3&transport=websocket&sid=SOME_ID. You can clearly see the communication, as the communication is not encrypted at all.



  • Thanks both for your response

    Do you think that the python code I have wrote is ok or can you give me the direction for the python code for listening to the notification


  • Module Developer

    @bimbim2401 Well, my Python times are a long time ago. Just try to run this script ans log the output. I also highly recogmend you to open Chrome and look at the Websocket frames.



  • F12 and then network ? Right ?


  • Module Developer

    @bimbim2401 Yep, on Windows its F12, on macOS its alt + cmd + i.

    • Open the Network-Tab
    • Look for the status code 101 (Switching Protocols) or just look for the type websocket
    • Open the request
    • Inspect the Socket as you wish (View frames, headers…)


  • Sorry but i cannot succeed to launch multiple script i found to intercept the get request from the module in python.

    i need some help … sorry this is my first program in python language

    Here is the script i want to modify : https://github.com/shivasiddharth/GassistPi/blob/master/src/main.py


  • Module Developer

    @bimbim2401 I am not a Python guy either. Start small, create a simple Python script that establishes a Websocket connection, then interprete the websocket messages and so on…