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

Executing python in js - troublshooting/development

Scheduled Pinned Locked Moved Troubleshooting
18 Posts 2 Posters 1.4k Views 2 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.
  • B Offline
    beejay22
    last edited by Aug 25, 2020, 10:41 PM

    Sorry I copied the wrong node_helper.js file in my last post. This is how it looks like now:

    //node_helper.js
    const spawn = require("child_process").spawn
    var NodeHelper = require("node_helper")
    
    module.exports = NodeHelper.create({
      socketNotificationReceived: function(notification, payload) {
        switch(notification) {
          case "GIVE_ME_DATA":
            console.log("received notification")
            this.job()
            break
        }
      },
      job: function() {
        var process = spawn("python3", ["/home/pi/Desktop/realTester.py"])
        process.stdout.on("data", (data)=>{
          console.log(data.toString())    
          this.sendSocketNotification("HERE_IS_DATA", data.toString()) 
        })
      }
    })
    

    I was trying to test if I can at least print something to magic mirror without a pyscript… node_helper looks like this:

    //node_helper.js
    const spawn = require("child_process").spawn
    var NodeHelper = require("node_helper")
    
    module.exports = NodeHelper.create({
      socketNotificationReceived: function(notification, payload) {
        switch(notification) {
          case "GIVE_ME_DATA":
            console.log("received notification")
            this.job()
            break
        }
      },
      job: function() {
        var process = spawn("python3", ["/home/pi/Desktop/test.py"])
        process.stdout.on("data", (data)=>{
          data= "Hello World";
          console.log(data.toString())   
          this.sendSocketNotification("HERE_IS_DATA", data.toString())  
        })
      }
    })
    

    Hello World appears on MagicMirror but the test file that’s provided in the path (the test file just has: print(“this works”) does not so I’m not sure why I need to provide var process spawn if Hello World prints by itself… Anyways, I’m aware that there’s other ways to execute the child process however I’m not familiar with it. Please correct me if I’m wrong but can exec work in this situation as well? (pyscipt just prints out the latest titles when magic mirror restarts). I’m trying anything and everything at this point

    And I added the default and start function to my core module although I don’t think I have to use it. This is how it looks like now:

    /// MMM-Whitehouse.js - Core Module
    
    Module.register("MMM-Whitehouse", {
      defaults: {},
      start: function () {},
      getDom: function() {
        var e = document.createElement("div")
        e.id = "DISPLAY"
        return e
      },
      notificationReceived: function(notification, payload, sender) {
        switch(notification) {
          case "DOM_OBJECTS_CREATED":
            var timer = setInterval(()=>{
              this.sendSocketNotification("GIVE_ME_DATA")
            }, 1000)
            break
        }
      },
      socketNotificationReceived: function(notification, payload) {
        switch(notification) {
          case "HERE_IS_DATA":
            var e = document.getElementById("DISPLAY")
            e.innerHTML = payload
            break
        }
      },
    })
    
    S 1 Reply Last reply Aug 25, 2020, 11:05 PM Reply Quote 0
    • S Away
      sdetweil @beejay22
      last edited by sdetweil Aug 25, 2020, 11:22 PM Aug 25, 2020, 11:05 PM

      @beejay22 I don’t understand why u have trouble.

      the 3 files I posted work together as u designed.

      does your spawn(‘/use/bin/python’, [execname]) work to return the data.
      console log to see

      spawn and exec have different methods of returning the data. see the doc

      Google search nodejs process spawn

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      1 Reply Last reply Reply Quote 0
      • B Offline
        beejay22
        last edited by Aug 25, 2020, 11:21 PM

        Did you try it with the pyscript? Or are you talking about it the core module, node_helper and config?

        And okay

        S 1 Reply Last reply Aug 25, 2020, 11:24 PM Reply Quote 0
        • S Away
          sdetweil @beejay22
          last edited by sdetweil Aug 25, 2020, 11:25 PM Aug 25, 2020, 11:24 PM

          @beejay22 I am only working on inside MagicMirror

          the spawn on.data() gets called when the pgm launched outputs to stdout. my print hello

          of course I made sure the python script worked both ways, before showing that

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          1 Reply Last reply Reply Quote 0
          • B Offline
            beejay22
            last edited by Aug 25, 2020, 11:30 PM

            Okay. And yes it does return the data as output I believe

            S 1 Reply Last reply Aug 26, 2020, 12:07 AM Reply Quote 0
            • S Away
              sdetweil @beejay22
              last edited by sdetweil Aug 26, 2020, 12:11 AM Aug 26, 2020, 12:07 AM

              @beejay22 do you see this output from the node_helper in the terminal window where you do npm start?

              console.log(data.toString())

              from your python script

              Sam

              How to add modules

              learning how to use browser developers window for css changes

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