Live data from Hacker News

Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

news.ycombinator.com

1–10 of 16 posts

Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

#1
I was originally thinking of making a Python/Flask or PHP web app that can take form field inputs and then run a subprocess to run the command, with the inputted data as argument values.

Eg I can input "microsoft.com" into a form field (or passed in the URL like http://raspi/pingapp/microsoft.com), and the RasPi runs "ping microsoft.com > microsoft.txt" in Raspbian (not that exact command obviously, but it's the best way to explain it).

Ideally they'd then see the progress and output of the command in their browser, after submitting.

This won't have public access, so auth/security is not a concern. Pretend every user is 100% trusted, and data does not need to be cleaned or checked in any way.

I'm open to any language, tool, or framework. I just want it to be as light and reliable as possible.

Anyone got any ideas? Thanks.

Re: Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

#4
post #2

https://github.com/jheising/HAPI or REST

I thought about doing an API, but is that really the easiest way to run a single command and get a single input? Seems like overkill.

Then Websockets. There are few python implementations of websockets module, this is one of them https://pypi.org/project/websockets/

Re: Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

#5
If you want to run commands on the raspbi from the web, you have lots of options. The question is if you want to send the commands literally to the terminal, or have some preprocessing step in between?

If you want to have a preprocessing step, then you need an API to take the commands, process them, run them, and then return the output. If you want to stream the output, you should look into something like websockets. There are also libraries built specifically for streaming logs to the browser, e.g. [0]

But might I suggest a simpler approach? How about a JS terminal emulator that is SSHed into the raspberry pi? I've used a library called "wetty" [1] successfully in the past. It's a node server + JS terminal emulator (based on hterm, used in chromebooks). The node server SSH's into the target box on behalf of the client, and then forwards the tty over the link `client server ssh target`. All you need to do is install the node server on the pi and have it SSH into localhost.

[0] https://github.com/mthenw/frontail

[1] https://github.com/krishnasrinivas/wetty

Re: Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

#7
Hey I am building daptin. I have chosen golang so that it can run on raspi (or any target).

I haven't personally tried it on raspi yet since I don't have one, but I invite you to give this a try

If I understand correctly you should be able to run the arm7 static build directly

You can find the docs here at https://docs.dapt.in

There is a nice dashboard accessible over the web which you can completely protect after signing up on it. Daptin is completely standalone and can work offline (doesn't load any asset from internet as such, everything is packed in). You can reach me out via my github profile.

[1] https://github.com/daptin/daptin/releases/tag/v0.6.8

edit:

a little bit more details of how you would build what you asked

- create a subsite exposing html form

- use js to call daptin api

- daptin creates a sqlite db (unless configured otherwise)

- share subsite address with users

- take dump from admin dashboard

Re: Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

#9
Check out MQTT and Adafruit.io in particular. The cool thing about MQTT is that your device is reachable behind NAT. I'm doing pretty much exactly what you describe here with this IOT-lamp project.

https://github.com/h-c-c/IOT-LAMP

I set up a 'util' feed for system commands and have implemented a shutdown routine so far. I send my lamp commands with Google Assistant through IFTTT.

Re: Ask HN: Best way to input data to a RasPi, from browsers on the same LAN?

#10
post #7

Hey I am building daptin. I have chosen golang so that it can run on raspi (or any target). I haven't personally tried it on raspi yet since I don't have one, but I invite you to give this a try If I understand correctly you should be able to run the arm7 static build directly You can find the docs here at https://docs.dapt.in There is a nice dashboard accessible over the web which you can completely protect after si…

This sounds very interesting and the timing couldn't be perfect. How does your dashboard differ from the freeboard.io that was referenced below?
Post reply on HN