UDP/TCP Websocket

Projektleiter: Mijzelf / Ariek2, diverse

The FFP-stick is an USB stick (or an external USB disk) which uses the advantages offered by usb_key_func.sh to install and start FFP on a ZyXEL NAS.

Many other projects / application
rich
Posts: 8
Joined: Tue 14. May 2019, 20:39

UDP/TCP Websocket

Post by rich »

Hallo Ihr lieben,

ist es möglich einen Websocket auf dem Nas laufen zu lassen, der einen UDP/TCP Datenstrom empfangen und auswerten kann ?

der GPS-Tracker (ist im Auto verbaut) sendet (per IP) Positionsdaten auf einen China-Server, der diese verarbeitet und anzeigt
nun sollen die Daten nicht mehr an das Portal gesendet werden,
sondern an den Nas der zuhause steht, der dann die Daten abgreift und speichert.

die Empfangsadresse (IP/Domain) kann im Tracker verändert werden.

ich habe versucht mich dort ein wenig schlau zu machen aber blicke noch nicht wirklich durch
es braucht einen Websocket Server (hier dann der NAS) und einen Clienten, der die Daten versendet (der Tracker)
der Socketserver muss aber gestartet und immer im Hintergrund lauschen
ggf. kann man das mit Tweaks/Cron und .sh Dateien bewerkstelligen.

der Tracker sollte dann die Position auf die WANIP vom Router sender, der diese weiter auf den Nas durchreicht und per Socket ausliest.

so die Theorie aber auch umsetzbar ?

leibe grüße
Mijzelf
Posts: 48
Joined: Wed 14. Nov 2018, 19:50

Re: UDP/TCP Websocket

Post by Mijzelf »

Depending on the complexity of the data to be received, you could use websocketd in combination with a simple shell script. The binary provided on the server runs on a Armv7 NAS. Don't know about an Armv5 one.
rich
Posts: 8
Joined: Tue 14. May 2019, 20:39

Re: UDP/TCP Websocket

Post by rich »

Mijzelf wrote:Depending on the complexity of the data to be received
ich nehmemal an, dass der Datenstrom in etwa so aussieht.
beispiel: https://geolink.io/configure.php
Mijzelf wrote:you could use websocketd in combination with a simple shell script.
werde ich mir mal anschauen.
Mijzelf wrote:The binary provided on the server runs on a Armv7 NAS. Don't know about an Armv5 one.
das heisst, die 310 oder 540er können das nicht?
Mijzelf
Posts: 48
Joined: Wed 14. Nov 2018, 19:50

Re: UDP/TCP Websocket

Post by Mijzelf »

rich wrote:
Mijzelf wrote:Depending on the complexity of the data to be received
ich nehmemal an, dass der Datenstrom in etwa so aussieht.
beispiel: https://geolink.io/configure.php
I expressed myself wrong. The limiting factor is not the complexity of the data, but the complexity of the handling. If you only want to log the data, it's fine. If you want convert the given coordinate to another coordinate system, a shell script will not be the right choice.
Assuming you only want to log it, a shell script is fine. For instance:

Code: Select all

#!/bin/sh

exec >/path/to/storage/$( date '+%H%M%S' )

while read line
do
    echo $line
done
For each socket connection a new script is launched. This script redirects it's stdout to a file which name is the current time. Then it writes all received lines from stdin to stdout. If the client disconnects, the script ends.
Mijzelf wrote:The binary provided on the server runs on a Armv7 NAS. Don't know about an Armv5 one.
das heisst, die 310 oder 540er können das nicht?
A 540 is Armv7, so that will work. A 310 is Armv5. I just don't know if that works. It is certainly possible, but I haven't tried.
rich
Posts: 8
Joined: Tue 14. May 2019, 20:39

Re: UDP/TCP Websocket

Post by rich »

Mijzelf wrote:I expressed myself wrong. The limiting factor is not the complexity of the data, but the complexity of the handling. If you only want to log the data, it's fine.
es wäre ja schon mal ein erfolg, die daten überhaupt empfangen und speichern (txt/mysql) zu können,
die verarbeitung der informationen die gesendet werden ist erstmal zweitrangig.
Mijzelf wrote:If you want convert the given coordinate to another coordinate system, a shell script will not be the right choice.
die informationen sollen später per php ausgelsen und angezeigt werden, nichts kompliziertes
Mijzelf wrote:Assuming you only want to log it, a shell script is fine.
For instance:

Code: Select all

#!/bin/sh

exec >/path/to/storage/$( date '+%H%M%S' )

while read line
do
    echo $line
done
Mijzelf wrote:For each socket connection a new script is launched.
wie wird denn erkannt, dass eine Verbundung aufgebaut wurde
oder lasse ich das Script jede Minute per Cron ausführen ?
Mijzelf wrote:This script redirects it's stdout to a file which name is the current time. Then it writes all received lines from stdin to stdout. If the client disconnects, the script ends.
okay es wird eine Datei erstellt die als Namen die Zeit angegeben hat, wann das Skript gestartet wurde,
in diese Datei werden Zeilen geschrieben, die an die Socketverbindung gesendet werden, gut aber hat die Datei eine Endung?
Mijzelf wrote:The binary provided on the server runs on a Armv7 NAS. Don't know about an Armv5 one.
A 540 is Armv7, so that will work. A 310 is Armv5. I just don't know if that works. It is certainly possible, but I haven't tried.
sofern das Script auf dem 540 läuft kann ich es auf dem 310 testen ;)
Mijzelf
Posts: 48
Joined: Wed 14. Nov 2018, 19:50

Re: UDP/TCP Websocket

Post by Mijzelf »

rich wrote:wie wird denn erkannt, dass eine Verbundung aufgebaut wurde
oder lasse ich das Script jede Minute per Cron ausführen ?
No, no. That's a function of websocketd. You start it with, for instance,

Code: Select all

websocketd --port=8080 /path/to/myscript
websocketd will sit and wait for a connection. If a connection is made, it will launch 'myscript', with it's stdin and stdout redirected to 'the other end' of the socket. If 2 clients are connected, you will have 2 scripts running.
In my sample script it re-redirects it's stdout to the logfile, as you don't want to talk back anyway.
hat die Datei eine Endung?
websocketd will close the stdin of the running script if the client disconnects. So the script will step out it's 'while read line' loop, and terminate.
As one line easily fits in one TCP package, I don't think there will ever be broken lines. a packet arrives completely, or not at all.
rich
Posts: 8
Joined: Tue 14. May 2019, 20:39

Re: UDP/TCP Websocket

Post by rich »

Hi Mijzelf
Mijzelf wrote:The binary provided on the server runs on a Armv7 NAS. Don't know about an Armv5 one.
das heisst, die 310 oder 540er können das nicht?
A 540 is Armv7, so that will work. A 310 is Armv5. I just don't know if that works. It is certainly possible, but I haven't tried.[/quote]

Stellt Zyxel eingentlich noch Nas Systeme her ?
ich bin der Meinung irgendwann mal gelesen zu haben, dass die keine mehr produzieren wollen.

welche der Zyxel nas (außer der 540) hat denn die ARMv7 Architektur?
ggf wäre dann ja auch eine andere Station interessant zb von Synology: DS116 / DS214 / DS214+

Mijzelf wrote:you could use websocketd in combination with a simple shell script
ich habe mir mal dein Link angeschaut und bin noch etwas überfragt.

unter Download muss ich dann wahrscheinlich die Linux ARM Version Herunterladen,
aber was dann?
wo sollen die Dateien hin?

wie ich ein Shellscript erstelle ist mir ja schon mal geläufig,
auf der Webseite wird dies auch schon mit einem vorgeschrieben Code erklärt

Code: Select all

 #!/usr/bin/env xcrun swift import AppKit for index in 1...10 { print(index) fflush(__stdoutp) NSThread.sleepForTimeInterval(0.5) } 
okay
dann noch die frage, wie Starte ich das dann über Tweaks?

Code: Select all

 $ websocketd --port=8080 my-program 
(my-program = Pfhad zu den Dateien aus der Linux ARM.zip) ?

etwas Kompliziert, aber ich versuch mich noch mal weiterhin schlau zu machen.
lg
Mijzelf
Posts: 48
Joined: Wed 14. Nov 2018, 19:50

Re: UDP/TCP Websocket

Post by Mijzelf »

rich wrote:Stellt Zyxel eingentlich noch Nas Systeme her ?
ich bin der Meinung irgendwann mal gelesen zu haben, dass die keine mehr produzieren wollen.
AFAIK the 542 was the latest one. The 520, 542 and 326 are still in production, but nothing new.
welche der Zyxel nas (außer der 540) hat denn die ARMv7 Architektur?
All firmware 5 devices. 540, 520, 542 and 326.
unter Download muss ich dann wahrscheinlich die Linux ARM Version Herunterladen,
aber was dann?
wo sollen die Dateien hin?
You should extract the zip file, it contains a binary websocketd, and put that somewhere on a non-volatile place. Doesn't really matter where. /i-data/sysvol/ is fine.
dann noch die frage, wie Starte ich das dann über Tweaks?
You can add a line to crond, on time @reboot. If you have installed RandomTools you can also put a startscript in /i-data/sysvol/.PKG/RandomTools/etc/custom_startscripts/

Code: Select all

 $ websocketd --port=8080 my-program 
(my-program = Pfhad zu den Dateien aus der Linux ARM.zip) ?
No the zipfile contains websocketd. my-program is your shell script.
BTW, you'll have to provide the full path to websocketd.
rich
Posts: 8
Joined: Tue 14. May 2019, 20:39

Re: UDP/TCP Websocket

Post by rich »

Mijzelf wrote:All firmware 5 devices. 540, 520, 542 and 326.
okay, für mein vorhaben (von 2 GPS-Tracker die Daten zu empfangen) sollte der 326 ja geeignet sein.

Mijzelf wrote:You should extract the zip file, it contains a binary websocketd, and put that somewhere on a non-volatile place. Doesn't really matter where. /i-data/sysvol/ is fine.

You can add a line to crond, on time @reboot. If you have installed RandomTools you can also put a startscript in /i-data/sysvol/.PKG/RandomTools/etc/custom_startscripts/

No the zipfile contains websocketd. my-program is your shell script.
BTW, you'll have to provide the full path to websocketd.
gut, ich bestelle demnächst dann den 326 Nas.

wie sieht es mit den Festplatten aus,
im 540 laufen Western Digital RED.

verträgt der 326 Nas eine SSD ?
oder reicht dort sonst auch eine ganz normale ?

liebe grüße
Mijzelf
Posts: 48
Joined: Wed 14. Nov 2018, 19:50

Re: UDP/TCP Websocket

Post by Mijzelf »

rich wrote:gut, ich bestelle demnächst dann den 326 Nas.
Euhm, wouldn't you first check if you can get it to work on your 540? If it doesn't work on youe 540, it won't work on the 326 either. But if it works on the 540, it might also work on your 310.
verträgt der 326 Nas eine SSD ?
I would expect that. But I've no experience. My 540 accepted an SSD.
oder reicht dort sonst auch eine ganz normale ?
For only logging a few lines of data in a minute? Of course it can. But of course the disk(s) won't spin down as long as the data is streaming in. Which is not a problem for the disk. It's made for spinning, but it's not 'green'.
Post Reply