A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
  • 2 Votes
    2 Posts
    346 Views
    KristjanESPERANTOK

    Nice! :smiley: Please add it to the modules list: https://github.com/MagicMirrorOrg/MagicMirror/wiki/3rd-party-modules.

  • Turn pages with physical button

    Solved Troubleshooting
    3
    0 Votes
    3 Posts
    558 Views
    G

    @sdetweil Thanks, that is excatly what i was looking for

  • MMM-flic

    System
    2
    1 Votes
    2 Posts
    903 Views
    brobergB

    @da4throux excellent! Maybe now I will have the motivation to setup the flic buttons I got two years ago 😁

  • Music Player Module

    Development
    3
    0 Votes
    3 Posts
    2k Views
    N

    @maukoell said in Music Player Module:

    Hello,
    I am trying to create a module which plays music from a directory. I wanted to use two buttons to control it. One for Pause/Play and one to skip the current song. But unfortunately when I start the MM2 I always get the message that it is not able to find the helper for my module. I’m new to node.js so maybe there are just some basic mistakes.

    My module:

    Module.register("MMM-MusicPlayer",{ defaults: { playButtonPIN: 10, nextButtonPIN: 12, clickDelay: 500, musicPath = "/home/pi/MagicMirror/modules/MMM-MusicPlayer/music", }, start: function() { this.sendSocketNotification("BUTTON_CONFIG", this.config); Log.info('Starting module: ' + this.name); } });

    My node_helper:

    "use strict"; const NodeHelper = require("node_helper"); const gpio = require("onoff"); var path = require('path'); var fs = require('fs'); const { Howl, Howler } = require('howler'); var sound; var musicList = []; var index = 0; var started; var config; module.exports = NodeHelper.create({ start: function () { started = false; }, // Subclass socketNotificationReceived received. socketNotificationReceived: function (notification, payload) { const self = this; if (notification === 'BUTTON_CONFIG' && started === false) { config = payload; self.fromDir(config.musicPath, "mp3"); self.createSound(); var GPIO = require('onoff').Gpio; var button1 = new GPIO(config.playButtonPIN, 'in', 'both', { persistentWatch: true, debounceTimeout: config.clickDelay }); button1.watch(function (err, state) { // 1 == pressed, 0 == not pressed if (state === 1) { if (sound.playing()) { sound.pause(); } else { sound.play(); } } }); var button2 = new GPIO(config.playButtonPIN, 'in', 'both', { persistentWatch: true, debounceTimeout: config.clickDelay }); button2.watch(function (err, state) { // 1 == pressed, 0 == not pressed if (state === 1) { self.playNext(); } }); started = true; } }, fromDir: function(startPath, filter) { if (!fs.existsSync(startPath)) { Log.info("no dir ", startPath); return; } var files = fs.readdirSync(startPath); var i; var fullPath; var filename; var stat; for (i = 0; i < files.length; i+=1) { fullPath = path.join(startPath, files[i]); filename = files[i]; stat = fs.lstatSync(fullPath); if (stat.isFile()) { if (filename.indexOf(filter) >= 0) { musicList.push(fullPath); } } } }, playNext: function() { if (sound.playing()) { sound.stop(); } index += 1; if (index === musicList.length()) { index = 0; } sound.play(index); }, createSound: function() { sound = new Howl({ src: musicList }); } } );

    Maybe someone can help me.
    Thanks in advance

    I don’t think that your code respects helpers as described in official documentarion,
    Or we are not talking about the same helpers Pnr Status.TextNow

  • 0 Votes
    1 Posts
    917 Views
    F

    Hi,

    I am building an app with different buttons which the user can define for them selfes what happens when they are pressed. This information is located in the configuration array:

    config = { button : { name : "bla", callback : function(){} } }

    and the class organnizing it has a refrence to that button and subscribes to the click event and triggers said callback when clicked.
    How can I use module.sendSocketNotification in this configuration for the button callback?

  • 0 Votes
    2 Posts
    2k Views
    P

    install the MMM-Admin module. It will serve up a webpage and you can control the HDMI from there…even use it on your phone. works well

  • How do notifications work?

    Troubleshooting
    11
    0 Votes
    11 Posts
    9k Views
    cowboysdudeC

    @Sruc91

    console.log(your output);

  • 2 Votes
    43 Posts
    32k Views
    KamiSchamiK

    Hi, suddenly the border of my buttons are black. I no longer know whether I have adjusted something. Where can i search? By the way, great module.

  • 0 Votes
    7 Posts
    5k Views
    J

    @bez252 Actually what they describe might also work for you, based on a quick glance through the setup code.

    To shutdown from the node_helper you need to change some code in the file(will be in MMM-Button/node_helper.js in your file system).
    Here is an example from my module to shut down the RPi, you can replace the self.sendSocketNotification(...) in the node_helper with a similar command:

    exec('sudo shutdown -h now', null);

    Also, at the beginning of the file you need to include the exec function, like here:

    const exec = require('child_process').exec;