MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    1. Home
    2. Radu_Stancu
    3. Posts
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.
    R
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 4
    • Posts 37
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: MMM-awesome-alexa snowboy issue

      @mattsharp I`m kind of reluctant to update to 2.6.0 so I do not mess anything. I have modified quite a lot of config files and custom css. This is my college project and I have to present in a few months. The google assistant is working decently, although I was hoping for better, I will have to stick with it until this issue with electron is fixed.

      posted in Troubleshooting
      R
      Radu_Stancu
    • RE: MMM-awesome-alexa snowboy issue

      @mattsharp Thanks for trying, I will try soon enough, I have tried the google assistant module, but I`ll probably return to alexa soon.

      posted in Troubleshooting
      R
      Radu_Stancu
    • MMM-awesome-alexa snowboy issue

      Hi, I`m trying to install awesome-alexa but when I try to run the electron rebuild I get a huge error list…

      I updated electron, node-abi, every single thing that could be updated, ran npm audit-fix and still nothing.

      Here is the output:

      An unhandled error occurred inside electron-rebuild
      make: Entering directory ‘/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy/build’
      CXX(target) Release/obj.target/snowboy/swig/Node/snowboy.o
      In file included from …/…/nan/nan.h:192:0,
      from …/swig/Node/snowboy.cc:1:
      …/…/nan/nan_maybe_43_inl.h: In function ‘Nan::Maybe Nan::ForceSet(v8::Localv8::Object, v8::Localv8::Value, v8::Localv8::Value, v8::PropertyAttribute)’:
      …/…/nan/nan_maybe_43_inl.h:112:15: error: ‘class v8::Object’ has no member named ‘ForceSet’
      return obj->ForceSet(isolate->GetCurrentContext(), key, value, attribs);
      ^~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In function ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value)’:
      …/…/nan/nan.h:835:60: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate
      , v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      v8::Isolate::GetCurrent(), target, func, argc, argv);
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:94:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In function ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::Localv8::String, int, v8::Localv8::Value
      )’:
      …/…/nan/nan.h:850:62: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate*, v8::Localv8::Object, v8::Localv8::String, int, v8::Localv8::Value)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      v8::Isolate::GetCurrent(), target, symbol, argc, argv);
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:87:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In function ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, const char
      , int, v8::Localv8::Value)’:
      …/…/nan/nan.h:865:62: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate
      , v8::Localv8::Object, const char*, int, v8::Localv8::Value)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      v8::Isolate::GetCurrent(), target, method, argc, argv);
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:80:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In member function ‘v8::Localv8::Value Nan::Callback::Call_(v8::Isolate
      , v8::Localv8::Object, int, v8::Localv8::Value) const’:
      …/…/nan/nan.h:1479:5: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate
      , v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value*)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      ));
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:94:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      snowboy.target.mk:107: recipe for target ‘Release/obj.target/snowboy/swig/Node/snowboy.o’ failed
      make: Leaving directory ‘/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy/build’
      make: *** [Release/obj.target/snowboy/swig/Node/snowboy.o] Error 1
      gyp ERR! build error
      gyp ERR! stack Error: make failed with exit code: 2
      gyp ERR! stack at ChildProcess.onExit (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/node-gyp/lib/build.js:262:23)
      gyp ERR! stack at ChildProcess.emit (events.js:180:13)
      gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
      gyp ERR! System Linux 4.4.132+
      gyp ERR! command “/usr/bin/node” “/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/.bin/node-gyp” “rebuild” “–target=3.0.11” “–arch=arm” “–dist-url=https://atom.io/download/electron” “–build-from-source” “–module_name=snowboy” “–module_path=/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy/lib/node/binding/Release/electron-v3.0-linux-arm” “–remote_path=./snowboy/v1.2.0/Release/” “–package_name=snowboy-v1.2.0-electron-v3.0-linux-arm.tar.gz” “–host=https://snowboy-release-node.s3-us-west-2.amazonaws.com”
      gyp ERR! cwd /home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy
      gyp ERR! node -v v9.11.2
      gyp ERR! node-gyp -v v3.8.0
      gyp ERR! not ok

      Failed with exit code: 1

      Error: make: Entering directory ‘/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy/build’
      CXX(target) Release/obj.target/snowboy/swig/Node/snowboy.o
      In file included from …/…/nan/nan.h:192:0,
      from …/swig/Node/snowboy.cc:1:
      …/…/nan/nan_maybe_43_inl.h: In function ‘Nan::Maybe Nan::ForceSet(v8::Localv8::Object, v8::Localv8::Value, v8::Localv8::Value, v8::PropertyAttribute)’:
      …/…/nan/nan_maybe_43_inl.h:112:15: error: ‘class v8::Object’ has no member named ‘ForceSet’
      return obj->ForceSet(isolate->GetCurrentContext(), key, value, attribs);
      ^~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In function ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value)’:
      …/…/nan/nan.h:835:60: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate
      , v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      v8::Isolate::GetCurrent(), target, func, argc, argv);
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:94:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In function ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, v8::Localv8::String, int, v8::Localv8::Value
      )’:
      …/…/nan/nan.h:850:62: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate*, v8::Localv8::Object, v8::Localv8::String, int, v8::Localv8::Value)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      v8::Isolate::GetCurrent(), target, symbol, argc, argv);
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:87:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In function ‘v8::Localv8::Value Nan::MakeCallback(v8::Localv8::Object, const char
      , int, v8::Localv8::Value)’:
      …/…/nan/nan.h:865:62: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate
      , v8::Localv8::Object, const char*, int, v8::Localv8::Value)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      v8::Isolate::GetCurrent(), target, method, argc, argv);
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:80:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      In file included from …/swig/Node/snowboy.cc:1:0:
      …/…/nan/nan.h: In member function ‘v8::Localv8::Value Nan::Callback::Call_(v8::Isolate
      , v8::Localv8::Object, int, v8::Localv8::Value) const’:
      …/…/nan/nan.h:1479:5: warning: ‘v8::Localv8::Value node::MakeCallback(v8::Isolate
      , v8::Localv8::Object, v8::Localv8::Function, int, v8::Localv8::Value*)’ is deprecated: Use MakeCallback(…, async_context) [-Wdeprecated-declarations]
      ));
      ^
      In file included from /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:53:0,
      from …/…/nan/nan.h:49,
      from …/swig/Node/snowboy.cc:1:
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/node.h:94:50: note: declared here
      NODE_EXTERN v8::Localv8::Value MakeCallback(
      ^
      /home/linaro/.electron-gyp/.node-gyp/iojs-3.0.11/src/core.h:35:42: note: in definition of macro ‘NODE_DEPRECATED’
      attribute((deprecated(message))) declarator
      ^~~~~~~~~~
      snowboy.target.mk:107: recipe for target ‘Release/obj.target/snowboy/swig/Node/snowboy.o’ failed
      make: Leaving directory ‘/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy/build’
      make: *** [Release/obj.target/snowboy/swig/Node/snowboy.o] Error 1
      gyp ERR! build error
      gyp ERR! stack Error: make failed with exit code: 2
      gyp ERR! stack at ChildProcess.onExit (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/node-gyp/lib/build.js:262:23)
      gyp ERR! stack at ChildProcess.emit (events.js:180:13)
      gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
      gyp ERR! System Linux 4.4.132+
      gyp ERR! command “/usr/bin/node” “/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/.bin/node-gyp” “rebuild” “–target=3.0.11” “–arch=arm” “–dist-url=https://atom.io/download/electron” “–build-from-source” “–module_name=snowboy” “–module_path=/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy/lib/node/binding/Release/electron-v3.0-linux-arm” “–remote_path=./snowboy/v1.2.0/Release/” “–package_name=snowboy-v1.2.0-electron-v3.0-linux-arm.tar.gz” “–host=https://snowboy-release-node.s3-us-west-2.amazonaws.com”
      gyp ERR! cwd /home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/snowboy
      gyp ERR! node -v v9.11.2
      gyp ERR! node-gyp -v v3.8.0
      gyp ERR! not ok

      Failed with exit code: 1
      at SafeSubscriber._error (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/spawn-rx/lib/src/index.js:277:84)
      at SafeSubscriber.__tryOrUnsub (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:238:16)
      at SafeSubscriber.error (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:197:26)
      at Subscriber._error (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:128:26)
      at Subscriber.error (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:102:18)
      at MapSubscriber.Subscriber._error (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:128:26)
      at MapSubscriber.Subscriber.error (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:102:18)
      at SafeSubscriber._next (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/spawn-rx/lib/src/index.js:251:65)
      at SafeSubscriber.__tryOrSetError (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:247:16)
      at SafeSubscriber.next (/home/linaro/MagicMirror/modules/MMM-awesome-alexa/node_modules/rxjs/Subscriber.js:187:27)
      npm ERR! code ELIFECYCLE
      npm ERR! errno 255
      npm ERR! mmm-awesome-alexa@1.0.0 electron-rebuild: electron-rebuild --pre-gyp-fix
      npm ERR! Exit status 255
      npm ERR!
      npm ERR! Failed at the mmm-awesome-alexa@1.0.0 electron-rebuild script.
      npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

      npm ERR! A complete log of this run can be found in:
      npm ERR! /home/linaro/.npm/_logs/2018-12-13T13_18_01_671Z-debug.log

      If anybody else has encountered this and knows what to do, please help.

      Thanks.

      posted in Troubleshooting
      R
      Radu_Stancu
    • RE: MMM-MovieListings

      @mykle1 Thanks, it`s getting closer to what I want. I will check the module you are mentioning. I am not that familiar with js so I did not recognize the things I need to change to accomplish what I was looking for. I will try again and see if I can make the image a bit bigger and the title white. Thanks a lot for your patience.

      posted in Entertainment
      R
      Radu_Stancu
    • RE: MMM-MovieListings

      Hi, I have tried the code you provided, and it partially does what I want.

      It changes the font size and color of the actors but not of the description.

      I want to enlarge the module as a whole, image, description and any text while also making them white, as my mirror is a bit darker than I was expecting.

      Any further help is greatly appreciated.

      posted in Entertainment
      R
      Radu_Stancu
    • RE: Syntax error in python-shell

      Solved. It was actually the GPIO library for the ASUS tinker board, its RPi.GPIO implementation actually. It had a useless printf that sent that annoying message that messed up the json message. I removed that line and rebuilt from source and now it`s working flawlessly. Thanks.

      posted in Troubleshooting
      R
      Radu_Stancu
    • RE: Syntax error in python-shell

      https://forum.magicmirror.builders/topic/8907/flick-large-gesture-control

      Here is the code I`ve written and adapted to work as MMM module.

      posted in Troubleshooting
      R
      Radu_Stancu
    • RE: Syntax error in python-shell

      Yea, I kind of found out what is triggering it, however I`m not sure how to stop it. The flick Large module is sending direction == OUTPUT messages continuously for some reason. Any idea what this is or how to make a filter to stop it?

      posted in Troubleshooting
      R
      Radu_Stancu
    • Syntax error in python-shell

      Hi,

      I keep getting this error:

      SyntaxError: Unexpected token d in JSON at position 0
      at JSON.parse ()
      at PythonShell.asJson (/home/linaro/node_modules/python-shell/index.js:350:21)
      at /home/linaro/node_modules/python-shell/index.js:300:42
      at Array.forEach ()
      at PythonShell.recieveInternal (/home/linaro/node_modules/python-shell/index.js:298:15)
      at PythonShell.receive (/home/linaro/node_modules/python-shell/index.js:272:21)
      at Socket.emit (events.js:182:13)
      at addChunk (_stream_readable.js:279:12)
      at readableAddChunk (_stream_readable.js:260:13)
      at Socket.Readable.push (_stream_readable.js:219:10)

      I`m not entirely sure what causes it and how to fix it… the mirror seems to be working fine.

      Any help would be apreciated.

      Thanks.

      posted in Troubleshooting
      R
      Radu_Stancu
    • RE: Flick Large gesture control

      Updated the code, and also support for the Asus Tinker Board.

      posted in Hardware
      R
      Radu_Stancu
    • RE: MMM-MovieListings

      @mykle1 Thank you very much! I`ll test as soon as I reinstall MM on the Asus TinkerBoard.

      posted in Entertainment
      R
      Radu_Stancu
    • RE: MMM-MovieListings

      Can anyone tell me how to modify the size and the color of the text? It is rather small, and I would like to make it white , instead of gray.

      Thanks.

      posted in Entertainment
      R
      Radu_Stancu
    • RE: Flick Large gesture control

      @steffenschmidt, I was successful to some extent. I have managed to use the gestures from the board to control the interface. Up, down, left and right are working and more will follow when I know what I want them to do. The only problem is that the flick sensor is NOT WORKING behind the mirror, probably because of the aluminum/silver layer that makes a mirror a mirror.

      I will work on the project in the winter holidays and post some more details.

      posted in Hardware
      R
      Radu_Stancu
    • RE: Flick Large gesture control

      That is exactly what I’m planning to do. In theory it works behind the mirror, but you will lose the touch gestures more than likely. Unfortunately I do not have the mirror yet (it has not been delivered yet), but I’ll post a picture/results when I get it.

      So far I wrote the code this way:

      Left/right swipes go through MMM-pages & MMM-pages_indicator

      Up/down swipes open/close newsfeed details

      Each gesture also triggers the LED on the sensor board.

      I’m still thinking what other things I can do with the remaining gestures.

      I’ll update the correct code after I clean it up a bit.

      posted in Hardware
      R
      Radu_Stancu
    • RE: Flick Large gesture control

      Nvm, I got it working perfectly! xD

      posted in Hardware
      R
      Radu_Stancu
    • Flick Large gesture control

      Hello all,

      I have tried to use the flick Large sensor together with my Raspberry Pi 2 to control the interface of the MagicMirror, as I have made some pages and wanted to scroll through them.

      What I have managed to do is to control MMM-pages, MMM-page-indicator and the default news module via my MMM-flick module.

      The controls are as follows:

      Swipe Left - Decrement Page
      Swipe Right - Increment Page
      Swipe Up - Show news description
      Swipe Up again - Open News page
      Swipe Up as the news page is opened - Scroll down the news page
      Swipe Down - Close News Page
      Swipe Down again - Close News Description

      I`m currently working on implementing the touch functionality. I want to also have mouse control.

      The code is not perfect, I`m working it.

      Here is the code (note that I have changed some libraries for it to work with the ASUS Tinker Board, as far as I know I`m the only one who has working flicklibs on the TinkerBoard. If someone is interested in getting the flick sensor to work with the TinkerBoard pm me ):

      MMM-flick.py - used to read sensor data

       #!/usr/bin/env python
       
       import sys
       
       import json
       
       import time
       
       import signal
       
       import flicklib
       
       import RPi.GPIO as GPIO
       
       #import autopy
       
       
       
       GPIO.setmode(GPIO.BOARD)
       
       GPIO.setup(15, GPIO.OUT) 
       
       GPIO.setup(7, GPIO.OUT)
       
       
       
       #Turn on both LEDs for orange color in Stand By
       
       #GPIO.output(7, True) # Turn on RED LED
       
       #GPIO.output(15, True)# Turn on GREEN LED
       
       
       
       
       
       #Airwheel data
       
       
       
       some_value = 5000
       
      
       
       last_airwheel = 0
       
       delay = 5000
       
       
       
       
       
       #Get display size
       
       
       
       #width, height = autopy.screen.get_size()
       
       
       
       def to_node(type, message):
       
       	# convert to json and print (node helper will read from stdout)
       
       	try:
       
       		print(json.dumps({type: message}))
       
       	except Exception:
       
       		pass
       
       	# stdout has to be flushed manually to prevent delays in the node helper communication
       
       	sys.stdout.flush()
       
       
       
       to_node("status", 'Flick has started...')
       
       
       
       @flicklib.flick()
       
       def flick(start,finish):
       
         
       
       	#Slide down the newsfeed (DOWN GESTURE)
       
       	if(start == "north" and finish == "south"):
       
       		to_node("gesture", "ARTICLE_LESS_DETAILS")
       
       		GPIO.output(7, True)
       
       		time.sleep(0.5)
       
       		GPIO.output(7, False)
       
       		
       
       	#Slide up the newsfeed (UP GESTURE)
       
       	elif(start == "south" and finish == "north"):
       
       		to_node("gesture", "ARTICLE_MORE_DETAILS")
       
       		GPIO.output(15, True)
       
       		time.sleep(0.5)
       
       		GPIO.output(15, False)
       
       		
       
       	#Next page (RIGHT GESTURE)
       
       	elif(start == "west" and finish == "east"):
       
       		to_node("gesture", "PAGE_DECREMENT")
       
       		GPIO.output(7, True)
       
       		time.sleep(0.5)
       
       		GPIO.output(7, False)
       
       		
       
         
       
       	#Previous page (LEFT GESTURE)
       
       	elif(start == "east" and finish == "west"):
       
       		to_node("gesture", "PAGE_INCREMENT")
       
       		GPIO.output(15, True)
       
       		time.sleep(0.5)
       
       		GPIO.output(15, False)
       
          
       
       @flicklib.airwheel()
       
       def spinny(delta):
       
       	global some_value
       
       	global last_airwheel
       
       	global delay
       
       	some_value += delta
       
       	if some_value < 0:
       
       		some_value = 0
       
       	if some_value > 10000:
       
       		some_value = 10000
       
       	now = int(round(time.time() * 1000))
       
       	if(now - last_airwheel > delay):
       
       		#to_node()
       
       		last_airwheel = now
       
       
       
       #Mouse control via flick board
       
       
       
       #@flicklib.move()
       
       #def move(x,y,z):
       
       #	x = (x) * width
       
       #	y = (y) * height
       
       
       
       #	x = int(x)
       
       #	y = height - int (y)
       
       	
       
       #	if( y > 799 ):
       
       #		y = 799
       
       
       
       	#autopy.mouse.move(x, y)
       
       
       
       #Double tap gesture 
       
       
       
       #@flicklib.double_tap()
       
       #def doubletap(position):
       
       	#
       
       
       
       #Tap gesture
       
       
       
       @flicklib.tap()
       
       def tap(position):
       
       	if position == 'center':
       
       		GPIO.output(15, True)# Turn on GREEN LED
       
       		time.sleep(0.5)
       
       		GPIO.output(15, False)# Turn off GREEN LED
       
       
       
       #Touch gesture
       
       
       
       #@flicklib.touch()
       
       #def touch(position):
       
       	#
       
       
       
       
       
       
       
       signal.pause() 
      

      node_helper.js

       'use strict';
       
       
       
       const NodeHelper = require('node_helper');
       
       const {PythonShell} = require('python-shell');
       
       var pythonStarted = false
       
       
       
       module.exports = NodeHelper.create({
       
         
       
       	python_start: function () {
       
       		const self = this;
       
       		const pyshell = new PythonShell('modules/' + this.name + '/MMM-flick.py', { mode: 'json', args: [JSON.stringify(this.config)]});
       
       		
       
       		pyshell.on('message', function (message) {
       
             
       
       			if (message.hasOwnProperty('status')){
       
       			console.log("node_helper_[" + self.name + "]" + message.status);
       
       			}
       
       			
       
       			if (message.hasOwnProperty('gesture')){
       
       			console.log("node_helper_[" + self.name + "] " + message.gesture);
       
       			self.sendSocketNotification("gesture_observed", message.gesture);
       
       			}
       
       		});
       
       		
       
       		 pyshell.end(function (err) {
       
       			if (err) throw err;
       
       			console.log("node_helper_[" + self.name + "] " + 'finished running...');
       
       		});
       
       	},
       
       
       
       	// Subclass socketNotificationReceived received.
       
       	socketNotificationReceived: function(notification, payload) {
       
       		if(notification === 'CONFIG') {
       
       		  this.config = payload
       
       		  if(!pythonStarted) {
       
       			pythonStarted = true;
       
       			this.python_start();
       
       		  };
       
       		};
       
       	}
       
       	
       
       });
      

      MMM-flick.js

      Module.register("MMM-flick",{	
      
      		gesture_up: 0,
      
      		gesture_right: 0,	
      
      	// Override socket notification handler.
      
      	socketNotificationReceived: function(notification, payload) {
      
      		if (notification === "gesture_observed"){
      
      			const self = this;
      
      			self.sendNotification(payload);
      
      			if (payload === "up"){
      
      					MM.getModules().withClass(this.config.defaultClass).exceptWithClass(this.config.everyoneClass).enumerate(function(module) {
      
      						module.hide(1000, function() {
      
      							Log.log(module.name + ' is hidden.');
      
      						});
      
      					});
      
      			
      
      					MM.getModules().withClass("class_up_1_show").enumerate(function(module) {
      
      						module.show(1000, function() {
      
      							Log.log(module.name + ' is shown.');
      
      						});
      
      					});
      
      			}
      
      			else if (payload === "down") {
      
      				MM.getModules().withClass("class_up_1_show").enumerate(function(module) {
      
      						module.hide(1000, function() {
      
      							Log.log(module.name + ' is hidden by gesture.');
      
      						});
      
      					});
      
      			}
      
      		}
      
      	},
      
      	
      
      	start: function() {
      
      		this.current_user = null;
      
      		this.sendSocketNotification('CONFIG', this.config);
      
      		Log.info('Starting module: ' + this.name);
      
      	}
      
      	
      
      });
      
      posted in Hardware
      R
      Radu_Stancu
    • 1
    • 2
    • 2 / 2