• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

[MMM-MQTTbridge] A module to publish and receive MQTT messages

Scheduled Pinned Locked Moved Utilities
16 Posts 3 Posters 2.1k Views 3 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    wishmaster270 Module Developer @Cr4z33
    last edited by Jul 22, 2024, 7:33 PM

    @Cr4z33 Hi, you will first need the URL of the RTSP stream of your camera.
    In the next step you will need to subscribe to the topic in the file mqttDictionary.js

    var mqttHook = [
        {
          mqttTopic: "DahuaVTO/VideoTalkLog/Event",
          mqttPayload: [
            {
               jsonpath: "Action", 
               conditions: [
                           {
                             type: "eq",
                             value: "Pulse"
                           },
                         ],
              mqttNotiCmd: ["doorbell"]
            },
          ],
        },
      ];
    var mqttNotiCommands = [
        {
          commandId: "doorbell",
          notiID: "RTSP-PLAY",
          notiPayload: "YOUR-STREAM-URL" 
        },
      ]; 
    

    But you will need to find a way to stop the stream in any way.

    C 1 Reply Last reply Jul 23, 2024, 9:05 AM Reply Quote 1
    • C Offline
      Cr4z33 @wishmaster270
      last edited by Jul 23, 2024, 9:05 AM

      @wishmaster270 thank you mate!

      Yeah I will add a timeout command as I don’t think it will take much to search for it. 🙂

      C 1 Reply Last reply Jul 23, 2024, 9:29 AM Reply Quote 0
      • C Offline
        Cr4z33 @Cr4z33
        last edited by Jul 23, 2024, 9:29 AM

        @wishmaster270 sorry to bother you again.

        Right now my mqtt Dictionary.js looks like this

        var mqttHook = [
          {
            mqttTopic: "zigbee2mqtt/BTicino F20T60A",
            mqttPayload: [
              {
                payloadValue: "",
                mqttNotiCmd: ["POWERMETER"],
                mqttPayload: ""
              },
            ],
          },
        ];
        
        var mqttNotiCommands = [
          {
            commandId: "POWERMETER",
            notiID: "POWERMETER_VALUES",
          },
        ];
        
        module.exports = { mqttHook,  mqttNotiCommands};
        

        so how should I add the new piece of code please?

        W 1 Reply Last reply Jul 23, 2024, 3:01 PM Reply Quote 0
        • W Offline
          wishmaster270 Module Developer @Cr4z33
          last edited by Jul 23, 2024, 3:01 PM

          @Cr4z33 The two datatstructures are arrays containing objects. So you can simply append the two objects…

          var mqttHook = [
            {
              mqttTopic: "zigbee2mqtt/BTicino F20T60A",
              mqttPayload: [
                {
                  payloadValue: "",
                  mqttNotiCmd: ["POWERMETER"],
                  mqttPayload: ""
                },
              ],
            },
            {
                mqttTopic: "DahuaVTO/VideoTalkLog/Event",
                mqttPayload: [
                  {
                     jsonpath: "Action", 
                     conditions: [
                                 {
                                   type: "eq",
                                   value: "Pulse"
                                 },
                               ],
                    mqttNotiCmd: ["doorbell"]
                  },
                ],
              },
          ];
          
          var mqttNotiCommands = [
            {
              commandId: "POWERMETER",
              notiID: "POWERMETER_VALUES",
            },
            {
                commandId: "doorbell",
                notiID: "RTSP-PLAY",
                notiPayload: "YOUR-STREAM-URL" 
              },
          ];
          
          module.exports = { mqttHook,  mqttNotiCommands};
          
          
          C 1 Reply Last reply Jul 23, 2024, 3:16 PM Reply Quote 1
          • C Offline
            Cr4z33 @wishmaster270
            last edited by Cr4z33 Jul 23, 2024, 3:19 PM Jul 23, 2024, 3:16 PM

            @wishmaster270 thank you again!

            However nothing happens in the MagicMirror frontend (although I can see the MQTT event if running MM by npm start

            [23.07.2024 17:15.55.132] [LOG]   [MQTT bridge] MQTT message received. Topic: DahuaVTO/VideoTalkLog/Event, message: {"Action":"Pulse","Data":{"EndState":"Missed","LocalNumber":"9901","LocaleTime":"2024-07-23 17:15:55","RealUTC":1721747755,"TalkTime":0,"UTC":1721751355}}
            

            I suspect that I am entering the wrong data at

            "YOUR-STREAM-URL"
            

            What shall I enter? Just the IP address or something like ie.

            rtsp://username:password@IPADDRESS/cam/realmonitor?channel=1&subtype=1#backchannel=0
            
            S W 2 Replies Last reply Jul 23, 2024, 3:35 PM Reply Quote 0
            • S Offline
              sdetweil @Cr4z33
              last edited by Jul 23, 2024, 3:35 PM

              @Cr4z33 said in [MMM-MQTTbridge] A module to publish and receive MQTT messages:

              although I can see the MQTT event if running MM by npm start

              if using pm2 to autolaunch MM, then

              pm2 logs --lines=xxxx
              

              will show you the last xxxx of the output

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              C 1 Reply Last reply Jul 24, 2024, 9:55 AM Reply Quote 1
              • W Offline
                wishmaster270 Module Developer @Cr4z33
                last edited by Jul 23, 2024, 5:24 PM

                @Cr4z33 Hi,

                think I found the problem.
                You need to send streamX as value where X is the number of the stream in the configuration of MMM-RTSPStream.
                You will need to configure the camera information in the MMM-RTSPStream module and only will be able to start the stream by notification

                C 1 Reply Last reply Sep 23, 2024, 10:47 AM Reply Quote 1
                • C Offline
                  Cr4z33 @sdetweil
                  last edited by Cr4z33 Jul 24, 2024, 9:56 AM Jul 24, 2024, 9:55 AM

                  @sdetweil said in [MMM-MQTTbridge] A module to publish and receive MQTT messages:

                  @Cr4z33 said in [MMM-MQTTbridge] A module to publish and receive MQTT messages:

                  although I can see the MQTT event if running MM by npm start

                  if using pm2 to autolaunch MM, then

                  pm2 logs --lines=xxxx
                  

                  will show you the last xxxx of the output

                  @wishmaster270 said in [MMM-MQTTbridge] A module to publish and receive MQTT messages:

                  @Cr4z33 Hi,

                  think I found the problem.
                  You need to send streamX as value where X is the number of the stream in the configuration of MMM-RTSPStream.
                  You will need to configure the camera information in the MMM-RTSPStream module and only will be able to start the stream by notification

                  Thank you both will do as soon as I am back at home again!

                  1 Reply Last reply Reply Quote 0
                  • C Offline
                    Cr4z33 @wishmaster270
                    last edited by Sep 23, 2024, 10:47 AM

                    @wishmaster270 said in [MMM-MQTTbridge] A module to publish and receive MQTT messages:

                    @Cr4z33 Hi,

                    think I found the problem.
                    You need to send streamX as value where X is the number of the stream in the configuration of MMM-RTSPStream.
                    You will need to configure the camera information in the MMM-RTSPStream module and only will be able to start the stream by notification

                    Hi mate I am coming back after a long time because real life was very busy lately and I could get back at this only in the last 2 days.

                    So based on your reply I set mqttDictionary.js like this

                    var mqttHook = [
                      {
                        mqttTopic: "zigbee2mqtt/BTicino F20T60A",
                        mqttPayload: [
                          {
                            payloadValue: "",
                            mqttNotiCmd: ["POWERMETER"],
                            mqttPayload: ""
                          },
                        ],
                      },
                      {
                          mqttTopic: "DahuaVTO/VideoTalkLog/Event",
                          mqttPayload: [
                            {
                               jsonpath: "Action", 
                               conditions: [
                                           {
                                             type: "eq",
                                             value: "Pulse"
                                           },
                                         ],
                              mqttNotiCmd: ["videocitofono"]
                            },
                          ],
                        },
                    ];
                    
                    var mqttNotiCommands = [
                      {
                        commandId: "POWERMETER",
                        notiID: "POWERMETER_VALUES",
                      },
                      {
                          commandId: "videocitofono",
                          notiID: "RTSP-PLAY",
                          notiPayload: "stream1" 
                        },
                    ];
                    
                    module.exports = { mqttHook,  mqttNotiCommands};
                    

                    Although stream1 is the one and only stream used in MMM-RTSPStream I still get no playback when the doorbell button is pressed, but if I start the stream by clicking on the module’s playback button then it works.

                    I paste here also the PM2 log line (note that sensitive data have been censored) when the doorbell button is pressed:

                    [23.09.2024 12:36.03.216] [LOG]   [MQTT bridge] MQTT message received. Topic: DahuaVTO/VideoTalkLog/Event, message: {
                        "Action": "Pulse",
                        "Code": "VideoTalkLog",
                        "Data": {
                            "EndState": "Missed",
                            "LocalNumber": "9901",
                            "LocaleTime": "2024-09-23 12:36:03",
                            "RealUTC": 1727087763,
                            "TalkTime": 0,
                            "UTC": 1727091363.0
                        },
                        "Index": 0,
                        "deviceType": "DHI-VTO2202F-P-S2",
                        "serialNumber": "*******"
                    }
                    

                    Can you please see why it’s not working yet? 🙏🏼

                    W 1 Reply Last reply Sep 23, 2024, 7:06 PM Reply Quote 0
                    • W Offline
                      wishmaster270 Module Developer @Cr4z33
                      last edited by Sep 23, 2024, 7:06 PM

                      @Cr4z33 Hi and welcome back.
                      I still do not have a glue about the RTSP module.

                      Can you please provide your RTSP config. I try to reproduce the problem but do not have much time to test at the moment.

                      C 1 Reply Last reply Sep 25, 2024, 7:54 AM Reply Quote 1
                      • 1
                      • 2
                      • 1 / 2
                      • First post
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy