Read the statement by Michael Teeuw here.
Need help with MMM-MQTTbridge not "communicating" with MMM-RTSPStream
-
@Cr4z33 you are composing a service that does not yet exist
button on doorbell causes window w video stream to
openappears no one has done that w this video doorbell, welcome to the bleeding edge. u get to MAKE the sausage no one else wants to see!!
a MagicMirror module runs inside a web browser, all in javascript. it can consume info from the outside using url based apis http get or put/post
Now, sometimes, you want module A to work with data from module B. for example calendar. it reads the raw data file (ical/ics), parses all the events, gets the list of pertinent events ( dont care about 2 years ago, only next week…)
and displays them. hm id like a different display, but dont want to learn about all the file reading and parsing and selecting)
MagicMirror provides a way for one module to share its data with others, called Notifications. some identifying string, with some attached data. the mechanism is a broadcast. one send, every other module gets the same message.
if a modules doesn’t understand the identifying string, it ignores the message
if it DOES understand the identifying string, then it MUST understand the format of the attached data.so, modules that DO participate in this data sharing must document ( in their readme.md file)
what notification strings they send (and its associated data format, if any)
AND
what notifications strings they accept (and its required data format)nothing going outside the browser is known inside the browser,
to get that kind of info requires some module to be able to bridge the two environmentsi have a simple one
id like some way for a script running outside MagicMirror to trigger a module to do something (receive a notification it knows about)
so i wrote MMM-CurlToNotification
from the command line outside MagicMirror you can issue the curl command to send a packet of data that turns into a notification sent to all modules
there are other modules that provide similar support (as well as others), mmm-remotecontrol for exampleanyhow MMM-MqttBridge does that bridging for MQTT messages. in both directions
mqtt -> notifi(cation) and notification) -> mqtt
but you need to know a bunch of stuff, and figure out how to code the file that does the actual work
i work backwards
i need a video played from a url on demand
what modules can do that
and how do i setup for the on demand partpick a module RTSPStream or Minfo, read its doc to understand what notifications it understands, and what data it needs
install and configure the selected module
now you ‘could’ use my curltonotification module to verify that the video player module works
then you back up to the MQTT bridge module config to send the same message you just tested with, and what mqtt message will trigger it
then back up, and find/setup what will send that mqtt message
and how it is triggered to to thatyou can draw this all out on a piece of paper
coding is just making the computer fo the exact same thing over and over, just faster. if you dont know what, then it cant either
someone presses the doorbell button
how does something outside the doorbell know?
can that something send a msg via mqtt that the bridge is listening for? if not, can i find something that that can take the first things out and get it into our expected mqtt messagerepeat along the way,
test each step -
@sdetweil said in Need help with MMM-MQTTbridge not "communicating" with MMM-RTSPStream:
so i wrote MMM-CurlToNotification
Dear Sam,
trying to help I’m struggled with your module CurlToNotification :-({ module:"MMM-CurlToNotification", config:{ url_name:"doorbell", // the path of the url for curl post } },
And consecutively running
curl --header "Content-Type: application/json" --request POST --data '{"notification":"SHOW_ALERT","payload":{"message":"fribble"}}' http://localhost:8080/doorbell
Shows an error message:
pi@MagicMirrorPi5:~/MagicMirror/modules $ curl --header "Content-Type: application/json" --request POST --data '{"notification":"SHOW_ALERT","payload":{"message":"fribble"}}' http://localhost:8080/doorbell <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <pre>InternalServerError: stream is not readable<br> at readStream (/home/pi/MagicMirror/node_modules/raw-body/index.js:185:17)<br> at getRawBody (/home/pi/MagicMirror/node_modules/raw-body/index.js:116:12)<br> at read (/home/pi/MagicMirror/node_modules/body-parser/lib/read.js:79:3)<br> at jsonParser (/home/pi/MagicMirror/node_modules/body-parser/lib/types/json.js:138:5)<br> at Layer.handle [as handle_request] (/home/pi/MagicMirror/node_modules/express/lib/router/layer.js:95:5)<br> at trim_prefix (/home/pi/MagicMirror/node_modules/express/lib/router/index.js:328:13)<br> at /home/pi/MagicMirror/node_modules/express/lib/router/index.js:286:9<br> at Function.process_params (/home/pi/MagicMirror/node_modules/express/lib/router/index.js:346:12)<br> at next (/home/pi/MagicMirror/node_modules/express/lib/router/index.js:280:10)<br> at Layer.handle [as handle_request] (/home/pi/MagicMirror/node_modules/express/lib/router/layer.js:91:12)<br> at trim_prefix (/home/pi/MagicMirror/node_modules/express/lib/router/index.js:328:13)<br> at /home/pi/MagicMirror/node_modules/express/lib/router/index.js:286:9<br> at Function.process_params (/home/pi/MagicMirror/node_modules/express/lib/router/index.js:346:12)<br> at next (/home/pi/MagicMirror/node_modules/express/lib/router/index.js:280:10)<br> at /home/pi/MagicMirror/modules/MMM-Remote-Control/node_modules/body-parser/lib/read.js:132:5<br> at AsyncResource.runInAsyncScope (node:async_hooks:206:9)<br> at invokeCallback (/home/pi/MagicMirror/modules/MMM-Remote-Control/node_modules/raw-body/index.js:238:16)<br> at done (/home/pi/MagicMirror/modules/MMM-Remote-Control/node_modules/raw-body/index.js:227:7)<br> at IncomingMessage.onEnd (/home/pi/MagicMirror/modules/MMM-Remote-Control/node_modules/raw-body/index.js:287:7)<br> at IncomingMessage.emit (node:events:518:28)<br> at endReadableNT (node:internal/streams/readable:1698:12)<br> at process.processTicksAndRejections (node:internal/process/task_queues:82:21)</pre> </body> </html>
From Windows Client (changing localhost to MagicMirrors IP address a different error message:
PS C:\Users\Familienbenutzer> curl --header "Content-Type: application/json" --request POST --data "{\"notification\":\"SHOW_ALERT\",\"payload\":{\"message\":\"fribble\"}}" http://1xx.yy.zz.157:8080/doorbell Invoke-WebRequest : Es wurde kein Positionsparameter gefunden, der das Argument "Content-Type: application/json" akzeptiert. In Zeile:1 Zeichen:1 + curl --header "Content-Type: application/json" --request POST --d ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Any hint for me?
Thanks and regards,
Ralf -
@rkorell and you did restart MagicMirror after installing the module, right?
you can also add config parm (make sure there is a trailing comma after doorbell
debug:true,
-
@sdetweil said in Need help with MMM-MQTTbridge not "communicating" with MMM-RTSPStream:
and you did restart MagicMirror after installing the module, right?
yes, indeed :-)
And a trailing comma is there…
In the meantime I had even a PI-reboot (for other reasons) - error persists.
Even with debug-option enabled no debug message from your module.
Neither in pm2 logs nor in developer’s console…Ralf
-
@rkorell weird
i am away from my computer for most of the day helping family
i will review asap -
-
@rkorell said in Need help with MMM-MQTTbridge not "communicating" with MMM-RTSPStream:
Neither in pm2 logs nor in developer’s console…
all messages in dev-console … -
@rkorell said in Need help with MMM-MQTTbridge not "communicating" with MMM-RTSPStream:
Neither in pm2 logs nor in developer’s console…
startup log
0|MagicMir | > magicmirror@2.31.0-develop start 0|MagicMir | > npm run start:x11 0|MagicMir | 0|MagicMir | 0|MagicMir | > magicmirror@2.31.0-develop start:x11 0|MagicMir | > DISPLAY="${DISPLAY:=:0}" ./node_modules/.bin/electron js/electron.js 0|MagicMir | 0|MagicMir | [2025-05-03 17:06:27.179] [LOG] Starting MagicMirror: v2.31.0-develop 0|MagicMir | [2025-05-03 17:06:27.189] [LOG] Loading config ... 0|MagicMir | [2025-05-03 17:06:27.190] [LOG] config template file not exists, no envsubst 0|MagicMir | [2025-05-03 17:06:27.369] [INFO] Checking config file /home/pi/MagicMirror/config/config.js ... 0|MagicMir | [2025-05-03 17:06:27.436] [INFO] Your configuration file doesn't contain syntax errors :) 0|MagicMir | [2025-05-03 17:06:27.437] [INFO] Checking modules structure configuration ... 0|MagicMir | [2025-05-03 17:06:27.473] [INFO] Your modules structure configuration doesn't contain errors :) 0|MagicMir | [2025-05-03 17:06:27.474] [LOG] Loading module helpers ... 0|MagicMir | [2025-05-03 17:06:27.474] [LOG] No helper found for module: alert. 0|MagicMir | [2025-05-03 17:06:27.475] [LOG] No helper found for module: MMM-MagicMover. 0|MagicMir | [2025-05-03 17:06:27.476] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.477] [LOG] Module helper loaded: MMM-CurlToNotification 0|MagicMir | [2025-05-03 17:06:27.477] [LOG] No helper found for module: clock. 0|MagicMir | [2025-05-03 17:06:27.477] [LOG] No helper found for module: MMM-Profilepicture. 0|MagicMir | [2025-05-03 17:06:27.484] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.484] [LOG] Module helper loaded: MMM-Logging 0|MagicMir | [2025-05-03 17:06:27.491] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.491] [LOG] Module helper loaded: MMM-MoonPhase 0|MagicMir | [2025-05-03 17:06:27.491] [LOG] No helper found for module: MMM-Globe. 0|MagicMir | [2025-05-03 17:06:27.492] [LOG] No helper found for module: weather. 0|MagicMir | [2025-05-03 17:06:27.523] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.524] [LOG] Module helper loaded: MMM-JsonValue 0|MagicMir | [2025-05-03 17:06:27.531] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.531] [LOG] Module helper loaded: MMM-MyGarbage 0|MagicMir | [2025-05-03 17:06:27.532] [LOG] No helper found for module: MMM-CalendarExt3Agenda. 0|MagicMir | [2025-05-03 17:06:27.532] [LOG] No helper found for module: MMM-RAIN-MAP. 0|MagicMir | [2025-05-03 17:06:27.641] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.641] [LOG] Check MagicMirror² version for node helper 'MMM-Strava' - Minimum version: 2.2.0 - Current version: 2.31.0-develop 0|MagicMir | [2025-05-03 17:06:27.641] [LOG] Version is ok! 0|MagicMir | [2025-05-03 17:06:27.641] [LOG] Module helper loaded: MMM-Strava 0|MagicMir | [2025-05-03 17:06:27.718] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.718] [LOG] Module helper loaded: MMM-Todoist 0|MagicMir | [2025-05-03 17:06:27.718] [LOG] No helper found for module: MMM-UselessFacts. 0|MagicMir | [2025-05-03 17:06:27.748] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.748] [LOG] Module helper loaded: MMM-FRITZ-Box-Callmonitor-py3 0|MagicMir | [2025-05-03 17:06:27.749] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.749] [LOG] Module helper loaded: MMM-SystemMonitor 0|MagicMir | [2025-05-03 17:06:27.750] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.750] [LOG] Module helper loaded: MMM-SystemInfo 0|MagicMir | [2025-05-03 17:06:27.782] [LOG] 2025-05-03T17:06:27 <log> init module helper birthdaylist (/home/pi/MagicMirror/modules/birthdaylist/node_helper.js:15 Class.init) 0|MagicMir | [2025-05-03 17:06:27.782] [LOG] Module helper loaded: birthdaylist 0|MagicMir | [2025-05-03 17:06:27.898] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.899] [LOG] Module helper loaded: MMM-NowPlayingOnSpotify 0|MagicMir | [2025-05-03 17:06:27.925] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.925] [LOG] Module helper loaded: newsfeed 0|MagicMir | [2025-05-03 17:06:27.945] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.945] [LOG] Module helper loaded: MMM-Remote-Control 0|MagicMir | [2025-05-03 17:06:27.982] [LOG] Initializing new module helper ... 0|MagicMir | [2025-05-03 17:06:27.983] [LOG] Module helper loaded: calendar 0|MagicMir | [2025-05-03 17:06:27.983] [LOG] All module helpers loaded. 0|MagicMir | [2025-05-03 17:06:27.986] [LOG] Starting server on port 8080 ... 0|MagicMir | [2025-05-03 17:06:28.296] [LOG] Server started ... 0|MagicMir | [2025-05-03 17:06:28.297] [LOG] Connecting socket for: MMM-CurlToNotification 0|MagicMir | [2025-05-03 17:06:28.297] [LOG] Starting module helper: MMM-CurlToNotification 0|MagicMir | [2025-05-03 17:06:28.297] [LOG] Connecting socket for: MMM-Logging 0|MagicMir | [2025-05-03 17:06:28.298] [LOG] 2025-05-03T17:06:28 <log> Module helper started for MMM-Logging (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:19 Class.start) 0|MagicMir | [2025-05-03 17:06:28.298] [LOG] Connecting socket for: MMM-MoonPhase 0|MagicMir | [2025-05-03 17:06:28.304] [LOG] Starting module helper: MMM-MoonPhase 0|MagicMir | [2025-05-03 17:06:28.304] [LOG] Connecting socket for: MMM-JsonValue 0|MagicMir | [2025-05-03 17:06:28.305] [LOG] Connecting socket for: MMM-MyGarbage 0|MagicMir | [2025-05-03 17:06:28.305] [LOG] 2025-05-03T17:06:28 <log> Starting node_helper for module: MMM-MyGarbage (/home/pi/MagicMirror/modules/MMM-MyGarbage/node_helper.js:9 Class.start) 0|MagicMir | [2025-05-03 17:06:28.305] [LOG] Connecting socket for: MMM-Strava 0|MagicMir | [2025-05-03 17:06:28.306] [LOG] 2025-05-03T17:06:28 <log> Starting module helper: MMM-Strava (/home/pi/MagicMirror/modules/MMM-Strava/node_helper.js:47 Class.start) 0|MagicMir | [2025-05-03 17:06:28.306] [LOG] Connecting socket for: MMM-Todoist 0|MagicMir | [2025-05-03 17:06:28.307] [LOG] 2025-05-03T17:06:28 <log> Starting node helper for: MMM-Todoist (/home/pi/MagicMirror/modules/MMM-Todoist/node_helper.js:19 Class.start) 0|MagicMir | [2025-05-03 17:06:28.307] [LOG] Connecting socket for: MMM-FRITZ-Box-Callmonitor-py3 0|MagicMir | [2025-05-03 17:06:28.312] [LOG] 2025-05-03T17:06:28 <log> Starting module: MMM-FRITZ-Box-Callmonitor-py3 (/home/pi/MagicMirror/modules/MMM-FRITZ-Box-Callmonitor-py3/node_helper.js:28 Class.start) 0|MagicMir | [2025-05-03 17:06:28.313] [LOG] Connecting socket for: MMM-SystemMonitor 0|MagicMir | [2025-05-03 17:06:28.313] [LOG] Starting module helper: MMM-SystemMonitor 0|MagicMir | [2025-05-03 17:06:28.313] [LOG] Connecting socket for: MMM-SystemInfo 0|MagicMir | [2025-05-03 17:06:28.313] [LOG] Starting node helper: MMM-SystemInfo 0|MagicMir | [2025-05-03 17:06:28.313] [LOG] Connecting socket for: birthdaylist 0|MagicMir | [2025-05-03 17:06:28.314] [LOG] Connecting socket for: MMM-NowPlayingOnSpotify 0|MagicMir | [2025-05-03 17:06:28.314] [LOG] Connecting socket for: newsfeed 0|MagicMir | [2025-05-03 17:06:28.314] [LOG] Starting node helper for: newsfeed 0|MagicMir | [2025-05-03 17:06:28.318] [LOG] Connecting socket for: MMM-Remote-Control 0|MagicMir | [2025-05-03 17:06:28.319] [LOG] Starting node helper for: MMM-Remote-Control 0|MagicMir | [2025-05-03 17:06:28.323] [LOG] Connecting socket for: calendar 0|MagicMir | [2025-05-03 17:06:28.323] [LOG] Starting node helper for: calendar 0|MagicMir | [2025-05-03 17:06:28.323] [LOG] Sockets connected & modules started ... 0|MagicMir | [2025-05-03 17:06:28.540] [LOG] Launching application. 0|MagicMir | [2025-05-03 17:06:28.915] [INFO] System information: 0|MagicMir | ### SYSTEM: manufacturer: ; model: ; virtual: false 0|MagicMir | ### OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: arm64; kernel: 6.12.20+rpt-rpi-2712 0|MagicMir | ### VERSIONS: electron: 32.2.7; used node: 20.18.1; installed node: 20.18.1; npm: 10.8.2; pm2: 5.4.3 0|MagicMir | ### OTHER: timeZone: Europe/Berlin; ELECTRON_ENABLE_GPU: undefined 0|MagicMir | [2025-05-03 17:06:29.613] [LOG] [MMM-Remote-Control] Could not get defaults for MMM-RAIN-MAP. See #335. 0|MagicMir | [2025-05-03 17:06:31.249] [LOG] Create new calendarfetcher for url: https://calendar.google.com/calendar/ical/xxxxxxxxxxxx%40group.calendar.google.com/private-5yyyyyyyyyyyyyyyyyyyyyy/basic.ics - Interval: 300000 0|MagicMir | [2025-05-03 17:06:31.278] [LOG] 2025-05-03T17:06:31 <info> MMM-Logging updated config received, reloading console (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:30 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:31.279] [LOG] 2025-05-03T17:06:31 <log> payload: undefined (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:34 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:31.303] [LOG] 2025-05-03T17:06:31 <log> Received config for MMM-FRITZ-Box-Callmonitor-py3 (/home/pi/MagicMirror/modules/MMM-FRITZ-Box-Callmonitor-py3/node_helper.js:56 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:31.304] [LOG] 2025-05-03T17:06:31 <log> MMM-FRITZ-Box-Callmonitor-py3 is waiting for incoming calls. (/home/pi/MagicMirror/modules/MMM-FRITZ-Box-Callmonitor-py3/node_helper.js:118 Class.setupMonitor) 0|MagicMir | [2025-05-03 17:06:31.376] [LOG] Create new newsfetcher for url: https://www.gutekueche.de/feed/wochenrezepte - Interval: 300000 0|MagicMir | [2025-05-03 17:06:31.382] [LOG] Create new newsfetcher for url: https://www.gutekueche.de/feed/tagesrezept - Interval: 300000 0|MagicMir | [2025-05-03 17:06:31.385] [LOG] Create new newsfetcher for url: https://www.chefkoch.de/recipe-of-the-day/rss - Interval: 300000 0|MagicMir | [2025-05-03 17:06:31.389] [LOG] Create new calendarfetcher for url: https://www.feiertage-deutschland.de/kalender-download/ics/feiertage-deutschland.ics - Interval: 604800000 0|MagicMir | [2025-05-03 17:06:31.394] [LOG] 2025-05-03T17:06:31 <log> Starting module helper: birthdaylist (/home/pi/MagicMirror/modules/birthdaylist/node_helper.js:27 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:32.046] [LOG] 2025-05-03T17:06:32 <log> payload: undefined (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:34 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:32.050] [LOG] 2025-05-03T17:06:32 <log> payload: undefined (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:34 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:32.194] [LOG] 2025-05-03T17:06:32 <log> payload: undefined (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:34 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:32.353] [INFO] Newsfeed-Fetcher: Broadcasting 1 items. 0|MagicMir | [2025-05-03 17:06:32.398] [INFO] Newsfeed-Fetcher: Broadcasting 7 items. 0|MagicMir | [2025-05-03 17:06:32.495] [INFO] Newsfeed-Fetcher: Broadcasting 24 items. 0|MagicMir | [2025-05-03 17:06:32.734] [INFO] Calendar-Fetcher: Broadcasting 51 events from https://calendar.google.com/calendar/ical/xxxxxxxxxxxxxxxxxxxxxxgroup.calendar.google.com/private-yyyyyyyyyyyyyyyyyyyyyyyyyyyy/basic.ics. 0|MagicMir | [2025-05-03 17:06:32.827] [LOG] 2025-05-03T17:06:32 <log> Refreshed access token because it has expired. Expired at: 17:06:31 now is: 17:06:32 (/home/pi/MagicMirror/modules/MMM-NowPlayingOnSpotify/core/SpotifyConnector.js:24 ) 0|MagicMir | [2025-05-03 17:06:33.418] [LOG] 2025-05-03T17:06:33 <log> payload: undefined (/home/pi/MagicMirror/modules/MMM-Logging/node_helper.js:34 Class.socketNotificationReceived) 0|MagicMir | [2025-05-03 17:06:34.302] [INFO] Calendar-Fetcher: Broadcasting 22 events from https://www.feiertage-deutschland.de/kalender-download/ics/feiertage-deutschland.ics.
-
@rkorell git pull in the module folder restart MM
in the npm start output, should see (I sent 3 requests)
[2025-05-03 18:30:03.519] [LOG] MMM-CurlToNotificationreceived request to post notification { notification: 'HIDE_ALERT', payload: { message: 'fribble' } } with id=module_20_MMM-CurlToNotification [2025-05-03 18:30:36.302] [LOG] MMM-CurlToNotificationreceived request to post notification { notification: 'SHOW_ALERT', payload: { message: 'fribble' } } with id=module_20_MMM-CurlToNotification [2025-05-03 18:31:00.765] [LOG] MMM-CurlToNotificationreceived request to post notification { notification: 'HIDE_ALERT', payload: { message: 'fribble' } } with id=module_20_MMM-CurlToNotification
and in the dev console
MMM-CurlToNotification.js:14 MMM-CurlToNotification received request to send notication HIDE_ALERT with payload {message: 'fribble'} MMM-CurlToNotification.js:14 MMM-CurlToNotification received request to send notication SHOW_ALERT with payload {message: 'fribble'} MMM-CurlToNotification.js:14 MMM-CurlToNotification received request to send notication HIDE_ALERT with payload {message: 'fribble'}
-
@sdetweil I`m away from home today, will check tomorrow…
Thanks.
Ralf