Read the statement by Michael Teeuw here.
MMM-Navigate, Navigation inside MagicMirror with Rotary Encoder
-
@AxLed
Ok, i fix it now for me.I know, it is a dirty code, but don’t found another solution :dizzy_face:
I attached the KY040 python script in the node_helper.js. Then everything works fine.
//node_helper.js /* Magic Mirror * Node Helper: {MMM-Navigate} * * By {AxLED} * {MIT} Licensed. */ //Debugging //tail -f ~/.pm2/logs/mm-out-0.log //tail -f ~/.pm2/logs/mm-error-0.log const Gpio = require('onoff').Gpio; ... const spawn = require("child_process").spawn; //Variables ... start: function() { var self = this; this.loaded = false; var process = spawn("python", ["/home/pi/Downloads/KY040/examples/python3.py"]); }, ... });
-
@Eisblume
No Problem, i am glad it works for you now, so you also did your first coding experiance.AxLED
-
@AxLed
Yes very interesting experiences :-) !Could you explain my how to start “Tagesschau in 100 Sekunden” in MMM-Navigate ??
-
@Eisblume
You need two things:- first: a modules which is able to stream 100Sec Tagesschau, i made a fork see MMM-Podcast2
- second: the right config (i posting only the relevant part)
.... { module: 'MMM-Podcast2', config: { // See 'Configuration options' for more information. omxargs: ' --win 0,0,1920,1080 -o both ' } }, { module: "MMM-Navigate", header: "Navigation", position: "top_right", config: { Alias: [ 'Tagesschau 100 Sekunden', 'Herunterfahren' ], Action: [ {notification:'BUTTON_PRESSED',payload:''}, {notification: "REMOTE_ACTION", payload: {action: "SHUTDOWN"}} ], GPIOPins: [26,20,19]//rotary cw, rotary ccw, rotary press (BCM Numbering) }, }, ...
AxLED
-
@AxLed said in MMM-Navigate, Navigation inside MagicMirror with Rotary Encoder:
{notification:‘BUTTON_PRESSED’,payload:‘’},
Thanks. Works perfect !!!
-
Hello @AxLed ,
Two things:
First
I have the same issue like @Eisblume :
The click doesnt work.
When i then start a sample code to test the rotary encoder (from like here), the click works in the sample code.
If i start the Magic Mirror after that again, then the click works there too.Maybe there is a missing initialization of the rotary encoder in your code?
Second
Is there a possibility to get more config possibilities?
Like starting the module hidden or shortening the time of the hiding process?Thanks in advance :)
-
to your first issue:
- is only click not working or is rotation also not working?
Because rotation and click (Button press) uses the same library (onOff). - on which pin is click connected, as the pi GPIO Pins have different features?
- what versions you are using (pi, OS, MM-Version)?
To your second issue.
- MMM-Navigate uses the MM notification system, so you can do almost everything you want. What are you trying to to, maybe i can give you a sample for your config.js
- for shortening time of hidding see MM Docs -> search for hide, there is a parameter for speed.
Regards
AxLED
- is only click not working or is rotation also not working?
-
Hello @AxLed , thanks for your reply
first
- rotation works fine but the button press does not
- i use your standard configuration so it seems to be BCM 19
- PI 3 B+, stretch, MM 2.14.0
I tried MMM-Buttons too. Same problem there. I first have to run a sample script with python and after that the button works in MM too. It uses the onoff library too.
I found a strange behaviour:
I start MM -> button click doesnt work
I start python test script and after that MM -> button click works
When i restart the Raspberry PI and start MM (without the python test script) -> button click works
When i shutdown the Raspberry PI and cut off the connection to an electricity source and restart the PI after that -> button click doesnt workThats strange isnt it?
second
I changed the hiding time from 10000 to 2000 cause i prefer a shorter time.
Is there a way to start the module hidden?
I tried following:// Define start sequence. start: function() { Log.info("Starting module: " + this.name); this.sendConfig();//pass config to node_helper.js this.hide(); },
and this
//Helper, to use module without Rotary Encoder and without GPIO Pins, like developing in Pixel VM notificationReceived: function(notification, payload) { if(notification === "CW" || notification === "CCW" || notification === "PRESSED"){ this.naviaction({inputtype: ""+ notification +""}); } if(notification === "SHELLCOMMAND"){ this.sendSocketNotification(notification, payload); } if(notification === "MODULE_DOM_CREATED"){ this.hide(); } },
but both didnt take effect :(
third
I found an reproducable error:
When i start MM and first rotate counterclockwise there is an error in the MM console:[09.01.2021 09:11.07.337] [LOG] MMM-Navigate, listen on GPIO PINs (BCM): 26,20,19 [09.01.2021 09:11.18.306] [ERROR] Whoops! There was an uncaught exception... [09.01.2021 09:11.18.321] [ERROR] ReferenceError: lastdir is not defined at tick (/home/pi/MagicMirror/modules/MMM-Navigate/node_helper.js:92:39) at /home/pi/MagicMirror/modules/MMM-Navigate/node_helper.js:66:4 at /home/pi/MagicMirror/modules/MMM-Navigate/node_modules/onoff/onoff.js:135:9 at Array.forEach (<anonymous>) at pollerEventHandler (/home/pi/MagicMirror/modules/MMM-Navigate/node_modules/onoff/onoff.js:134:32)
It doesnt effect the functionality but just wanted to mention it… ;)
-
thanks for feedback.
first:
Idea A:- maybe the pin 19 is the problem, because it is not only a GPIO pin rather it has SPI features. Can you change to BCM16 (and change it in config.js as well) and try it?
Idea B:
- Do you use capacitors for debouncing? If not, you can change debouncing value of following line: https://github.com/Ax-LED/MMM-Navigate/blob/master/node_helper.js#L37
second:
- Which module should start hidden? MMM-Navigate?
third:
I tried to reproduce on my pi 3 and get no error, so i checked the code.
You can add following line as new line 19 in node_helper.js
var lastdir = '';
AxLED
-
@AxLed
I will try that later. Thanks
And yes, i want to start MMM-Navigate hidden. Is that possible?