WebSockets with Yun?

Is there a WebSockets (like Socket.IO) implementation either for the Arduino or the Linino site of the Yun?

On the yun in preinstalled spacebrew, that uses websocket with python. Check this out GitHub - julioterra/yunSpacebrew: developing a version of spacebrew and Hiroki Ohtani's websocket lib that can run on the Arduino Yun.

Thanks.
And how would one listen in a sketch like by using Noduino?

noduino is a nodejs application that runs on your pc and that talks to arduino via serial. There are no websockets running on the board.

There are some contributed packages for installing nodejs on the yun, although there are no official ones yet.

You'll also need to change the way linino and 32u4 talk, as right now 32u4 sees the linino terminal: instead noduino speaks its own protocol, much like the bridge does.

In essence: check out own spacebrew works, it's pretty much the same stuff

If I get it right from the Spacebrew docu, it uses the serial port to communicate with the python scripts on the Linino site and transfers the data to their cloud hub.
But that is not what I want to do.
I would like to have an event based API in my sketch and a WebSocket provider on the Linino site.
That would be awesome and enable a very reactive web interface to the sketch.

mamu:
If I get it right from the Spacebrew docu, it uses the serial port to communicate with the python scripts on the Linino site and transfers the data to their cloud hub.

The spacebrew code implements a websocket client. For the Yun a websocket server would be a great addition.
I looked at some python implementations but most of them use the gevent package which is not available for OpenWRT.

PyWebsocket might work, looks like they do not use any native code that needs to be cross-compiled.

The echo example for pywebsockets works on the Yun.

Tested it like this:

It looks like the library does not have any external requirements in standalone mode. If performance is not the major concern pywebsocket looks like a good starting point.

That sounds good.
And how would my data from the Arduino sketch get pasted to the WebSockets server?
I would like to have an event handler in my sketch, put some data as a result, and get it past as JSON to my clients JavaScript.

mamu:
And how would my data from the Arduino sketch get pasted to the WebSockets server?
I would like to have an event handler in my sketch, put some data as a result, and get it past as JSON to my clients JavaScript.

There is a forum post which collects some ideas to communicate with a Sketch running on the ATMega from python code running on the linux machine.

The idead would be to send your JSON data from the sketch to the python code over Serial1. Then the python code forwards the data to your Websocket-Client.

wayoda:
There is a forum post which collects some ideas to communicate with a Sketch running on the ATMega from python code running on the linux machine.

The idead would be to send your JSON data from the sketch to the python code over Serial1. Then the python code forwards the data to your Websocket-Client.

Doesn't this sound like what Spacebrew does?

mamu:
Doesn't this sound like what Spacebrew does?

I don't know much about what spacebrew does.
With the outline for the pywebsocket code, a typical application would be :

  • You run the WebSocket server on the Yun
  • You open a html page with your browser, that brings in the javascript code to open,read and write to the websocket
  • Some code that is run on the server handles the communication with the Arduino.
  • Your browser window gets updated by some javascript code that interprets the data returned from the Yun

Spacebrew seems to add a lot of extra stuff to this basic layout for an app.
Running a Spacebrew server depends on Node.js which is not available as a package for the Yun AFAIK.

But ...already mentioned ... I didn't look into Spacebrew that much...

wayoda:
With the outline for the pywebsocket code, a typical application would be :

  • You run the WebSocket server on the Yun
  • You open a html page with your browser, that brings in the javascript code to open,read and write to the websocket
  • Some code that is run on the server handles the communication with the Arduino.
  • Your browser window gets updated by some javascript code that interprets the data returned from the Yun

You're absolutely right, that is exactly what I would like to have/do!
I hoped to find this missing link going from Arduino sketch to the Linino out of the box.
Plus I would like to see the lib on the Arduino to have an event like registration API.

BTW: There are already node.js implementations for Yun.

You can do that using the serial communication to pass info between the two environments. In the forum there is a thread talking about...

Did you mean this one? Tty for serial port to Arduino from Linino - Arduino Yún - Arduino Forum

Yes I got the comunication via serial and ussing firdata. You can modify python program to interact with sockets and serial. I'm working on too...

Do you think one can make node.js Serialport to point to the matching tty?
Which tty is the one used by the sketch? ttyATH0?

I'm working with tornado python web server... it's ok for me.

ok and on which serial port are you listening?

For linux side check the tty trhead in forum. The name isis some think like ttyATH....: in arduino side use serial1. Excuse me I dont have yun here with me. Yo can find the names in the sources of bridge library & in the source of bridge.py in linux side.

Hm, sorry, I was not able to find the serial port names in any of the two files.