• 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.

skywriter - python to javascript

Scheduled Pinned Locked Moved Development
18 Posts 3 Posters 11.9k 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.
  • K Offline
    kclemen @kclemen
    last edited by Dec 7, 2016, 11:18 PM

    I’ve got following error:

    SyntaxError: Unexpected token g in JSON at position 0
    at PythonShell.asJson (/home/pi/MagicMirror/modules/MMM-skywriter/node_modules/python-shell/index.js:142:21)
    at /home/pi/MagicMirror/modules/MMM-skywriter/node_modules/python-shell/index.js:232:35
    at Array.forEach (native)
    at PythonShell.receive (/home/pi/MagicMirror/modules/MMM-skywriter/node_modules/python-shell/index.js:231:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at Pipe.onread (net.js:543:20)

    Here is the script:
    `#!/usr/bin/env python
    import sys
    import json
    import time
    import signal
    import skywriter

    some_value = 5000

    last_airwheel = 0
    delay = 5000

    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”, ‘Skywriter started…’)

    @skywriter.flick()
    def flick(start,finish):

    #slide music player div OFF the screen
    if(start == "north" and finish == "south"):
    	print "gesture is north to south"
    	to_node("gesture", "down")
    
    #slide music player div ONTO the screen
    elif(start == "south" and finish == "north"):
    	print "gesture is south to north"
    	to_node("gesture", "up")
    
    #Next track
    elif(start == "west" and finish == "east"):
    	print "Gesture is west to east"
    	to_node("gesture", "next")
    
    #previous track
    elif(start == "east" and finish == "west"):
    	print "Gesture is east to west"
    	to_node("gesture", "previous")
    
    #else:
    	# print "Invalid"
    

    @skywriter.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):
    print(“TV & Digibox: power”)
    # system(“irsend SEND_ONCE TV KEY_POWER”)
    # system(“irsend SEND_ONCE Digibox KEY_POWER”)
    last_airwheel = now

    signal.pause()`

    I do not really understand what is wrong? Anybody an idea?

    J 1 Reply Last reply Dec 8, 2016, 11:18 AM Reply Quote 0
    • J Offline
      Jopyth Moderator @kclemen
      last edited by Dec 8, 2016, 11:18 AM

      @kclemen Please use three backticks (```) for markdown if you paste your code, instead of one (`). Otherwise it will not recognize it as multi line code.

      The problem are your regular print statements (e.g. print "Gesture is west to east"), these are also read by node, and they are not in the JSON format. You can comment these out, or maybe write them to a log file instead, if you want them to debug.

      Helpful sticky: How to troubleshoot

      1 Reply Last reply Reply Quote 0
      • K Offline
        kclemen
        last edited by Dec 8, 2016, 4:10 PM

        Thanks for the input. Indeed this was the mistake.

        seems I’m missing still something. Now I get following error:

        TypeError: parser.close is not a function
        at SAXStream.openf1 (/home/pi/MagicMirror/node_modules/feedme/lib/xmlfeedparser.js:107:14)
        at emitOne (events.js:96:13)
        at SAXStream.emit (events.js:188:7)
        at Object.me._parser.(anonymous function) [as onopentag] (/home/pi/MagicMirror/node_modules/sax/lib/sax.js:258:17)
        at emit (/home/pi/MagicMirror/node_modules/sax/lib/sax.js:640:35)
        at emitNode (/home/pi/MagicMirror/node_modules/sax/lib/sax.js:645:5)
        at openTag (/home/pi/MagicMirror/node_modules/sax/lib/sax.js:841:5)
        at Object.write (/home/pi/MagicMirror/node_modules/sax/lib/sax.js:1404:13)
        at SAXStream.write (/home/pi/MagicMirror/node_modules/sax/lib/sax.js:239:18)
        at yoshi.write (/home/pi/MagicMirror/node_modules/feedme/lib/feedme.js:41:14)

        1 Reply Last reply Reply Quote 0
        • K Offline
          kclemen
          last edited by Dec 8, 2016, 6:36 PM

          Ok, the script is performing without any errors at the moment.

          Would somebody be so kind to check why console.log(“payload.action is up”); is not executed in MMM-skywriter.js?

          I only get the message from node-helper.js : console.log(“[” + self.name + "] " + message.gesture);

          Files can be found here: https://github.com/Kclemen/MMM-skywriter

          1 Reply Last reply Reply Quote 0
          • K Offline
            kclemen
            last edited by kclemen Dec 9, 2016, 2:03 PM Dec 9, 2016, 2:02 PM

            Node helper:
            self.sendSocketNotification('gesture', message.gesture);

            script:

            Module.register("MMM-skywriter",{
            	
            	//	gesture_up: 0,
            	//	gesture_right: 0,	
            
            	// Override socket notification handler.
            	socketNotificationReceived: function(notification, payload) {
            			console.log ("socketnotificationreceived.")
            		if (payload === "up"){
            			console.log("test - up");
            		}
            		else if (payload === "left"){
            			console.log("test - left");
            		}
            		else if (payload === "down") {
            			console.log("test - down");
            		}
            } ```
            
            Why is there no ccommunication between the helper and the script?	}
            J 1 Reply Last reply Dec 9, 2016, 3:38 PM Reply Quote -1
            • J Offline
              Jopyth Moderator @kclemen
              last edited by Jopyth Dec 9, 2016, 3:39 PM Dec 9, 2016, 3:38 PM

              @kclemen Are you searching for the output in your browser console? The console.log("...") command from node_helper.js is shown on the console, however console.log("...") commands of your module will appear in your developer tools console in the browser (e.g. electron).

              Helpful sticky: How to troubleshoot

              K 1 Reply Last reply Dec 9, 2016, 4:00 PM Reply Quote 1
              • K Offline
                kclemen @Jopyth
                last edited by kclemen Dec 9, 2016, 4:24 PM Dec 9, 2016, 4:00 PM

                @Jopyth said in skywriter - python to javascript:

                developer tools console in the browser (e.g. electron).

                Indeed, I want to see the output to verify the communication works.
                Could you elaborate some more about the developer tools console?

                ctrl + shift + i does the trick :)

                @Jopyth you are a HERO. Last 2 days working on it, antd the trick was that simple!

                J 1 Reply Last reply Dec 9, 2016, 4:52 PM Reply Quote 0
                • J Offline
                  Jopyth Moderator @kclemen
                  last edited by Dec 9, 2016, 4:52 PM

                  @kclemen I was just pointing you in the right direction sometimes. ;) Best of luck with finishing the rest of the module.

                  Helpful sticky: How to troubleshoot

                  1 Reply Last reply Reply Quote 0
                  • K Offline
                    kclemen
                    last edited by Dec 9, 2016, 5:10 PM

                    ok, for now the last question ;):

                    Uncaught reference error: gesture_up is not defined. I understand what this means, but I can’t figure out why it says that :s

                    	
                    	// Default module config.
                    	defaults: {
                    		gesture_up: 0,
                    		gesture_right: 0,
                    		
                    	},
                    
                    	// Override socket notification handler.
                    	socketNotificationReceived: function(notification, payload) {
                    		if (notification === "gesture_observed"){
                    			const self = this;
                    			
                    			console.log ("socketnotificationreceived.");
                    		
                    			//self.sendNotification(notification, payload);
                    			
                    			if (payload === "up"){
                    				
                    				if (gesture_up == 0) {
                    					
                    					if (gesture_up == 0){
                    						gesture_up = gesture_up+1;
                    						
                    						console.log("gesture_up is nu 1");
                    
                    1 Reply Last reply Reply Quote 0
                    • Y Offline
                      yawns Moderator
                      last edited by Dec 9, 2016, 5:50 PM

                      Try this.config.gesture_up instead

                      1 Reply Last reply Reply Quote 1
                      • 1
                      • 2
                      • 2 / 2
                      2 / 2
                      • First post
                        12/18
                        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