Websocket zur Sensordatenuebermittlung - TXT Controller

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Lari
Beiträge: 11
Registriert: 06 Jan 2020, 23:22

Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Lari » 06 Jan 2020, 23:29

Hallo,
ich habe eine Fabrik von Fischertechnik.
Ich wuerde gerne auf den TXT-Controllern ein Programm haben, welches ueber eine Websocket Daten der Sensoren und Motoren sendet an einen Webserver.
Als konkretes Beispiel: Eine JSON-Nachricht, wenn zum Beispiel eine Lichtschranke gebrochen wird.
Habt ihr Ideen wie man so etwas angehen koennte?
Ich stehe ein bisschen auf dem Schlauch und ein paar Ansaetze wuerden mir sehr weiterhelfen!
Vielen Dank!
Lari

vleeuwen
Beiträge: 1220
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von vleeuwen » 07 Jan 2020, 09:24


Lari
Beiträge: 11
Registriert: 06 Jan 2020, 23:22

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Lari » 08 Jan 2020, 23:59

Thanks for your answer! I will look into it, looks exactly like what I need :)

Torsten
Beiträge: 191
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Torsten » 11 Jan 2020, 11:19

Hallo Lari,
Lari hat geschrieben:
06 Jan 2020, 23:29
Ich wuerde gerne auf den TXT-Controllern ein Programm haben, welches ueber eine Websocket Daten der Sensoren und Motoren sendet an einen Webserver.
Als konkretes Beispiel: Eine JSON-Nachricht, wenn zum Beispiel eine Lichtschranke gebrochen wird.
Falls Du nicht unbedingt auf ROBOPro angewiesen bist, könntest Du auch Python verwenden (das wird ja seit kurzem standardmäßig auf dem TXT mitgeliefert). Für Python gibt auch bereits JSON-Encoder/Decoder und Websockets sind sowie immer dabei.

Viele Grüße
Torsten

vleeuwen
Beiträge: 1220
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von vleeuwen » 11 Jan 2020, 15:45


Lari
Beiträge: 11
Registriert: 06 Jan 2020, 23:22

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Lari » 11 Jan 2020, 17:12

Danke fuer eure Antworten!
Lari hat geschrieben:
06 Jan 2020, 23:29
Falls Du nicht unbedingt auf ROBOPro angewiesen bist, könntest Du auch Python verwenden (das wird ja seit kurzem standardmäßig auf dem TXT mitgeliefert). Für Python gibt auch bereits JSON-Encoder/Decoder und Websockets sind sowie immer dabei.
@Thorsten: Ja Python ware eigentlich eine ziemlich gute Option. Mein Problem ist nur, dass ich schon mehrere komplexe Scripts in ROBOPro habe und diese dann umschreiben muesste. Was ich im Moment noch vermeiden will.
Oder gibt es eine Moeglichkeit das ROBOPro Programm und ein Python scribt gleichzeitig laufen zu lassen?
Ich will eigentlich nur ganz simple den Status von den Motoren und Sensoren bekommen.

Torsten
Beiträge: 191
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Torsten » 11 Jan 2020, 18:28

Hallo Lari,
Lari hat geschrieben:
11 Jan 2020, 17:12
Oder gibt es eine Moeglichkeit das ROBOPro Programm und ein Python scribt gleichzeitig laufen zu lassen?
es ist leider nicht möglich, ROBOPro und Python (ftrobopy) gleichzeitig zu verwenden, da der Serverprozess auf dem TXT (TxtControlMain) über Websockets nur die Verbindung zu einem Programm zulässt.

Viele Grüße
Torsten

vleeuwen
Beiträge: 1220
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von vleeuwen » 11 Jan 2020, 21:55

I agree with Torsten,
Python and RoboPro can't easy be combined. It looks like that the internal fischertechnik TXT Berkeley-socket is limit to one client.
However there are some solutions.
All in the line of how the TXT MotorIO and his FRoboPy is operating, namely socket based communication.
Because RoboPro has the option of the user defined elements (SLI's), you can think about the next strategies:
*)
A SLI that add dedicated Web Socket server functionality to your RoboPro application.
This with the functionality of transmitting relevant parts of the TA (transfer area) to the subscript clients and/or receiving TA data and fill it in into the TA.
The web socket can do this text base (Json, XML) or binary (compressed?). The last will be faster.
Web socket is programming language independent, so you can use a client a Python or a html/Jscript or other languages that has a web socket library.
That is what I do in my proof of concept.
*)
A SLI that add dedicated Berkely-socket server support to your RoboPro application.
This with the functionality of transmitting relevant parts of the TA (transfer area) to the subscript clients and/or receiving TA data and fill it in into the TA.
This solution is also langage independent, so Python can be used at the client side. If you make use of relevant parts of the TA definition, and adapt parts of the FtRoboPy, the client interface is already their.

====================Google translate, for what it is ===========================================================
Ik ben het eens met Torsten,
Python en RoboPro kunnen niet eenvoudig worden gecombineerd. Het lijkt erop dat de interne fischertechnik TXT Berkeley-socket beperkt is tot één client.
Er zijn echter enkele oplossingen.
Alles in lijn met hoe de TXT MotorIO en zijn FRoboPy werken, namelijk socket-gebaseerde communicatie.
Omdat RoboPro de optie van de door de gebruiker gedefinieerde elementen (SLI's) heeft, kunt u nadenken over de volgende strategieën:
*)
Een SLI die speciale Web Socket serverfunctionaliteit toevoegt aan uw RoboPro-toepassing.
Dit met de functionaliteit van verzenden van relevante delen van de TA (overdrachtsgebied) naar de subscriptclients en / of het ontvangen van TA-gegevens en deze invullen in de TA.
De websocket kan deze tekstbasis (Json, XML) of binair (gecomprimeerd?) Uitvoeren. De laatste zal sneller zijn.
Websocket is onafhankelijk van de programmeertaal, dus u kunt een client gebruiken een Python of een html / Jscript of andere talen met een websocketbibliotheek.
Dat is wat ik doe in mijn proof of concept.
*)
Een SLI die speciale [url = https://en.wikipedia.org/wiki/Berkeley_sockets]Berkely-socket] Berkely-socket [/ url] serverondersteuning toevoegt aan uw RoboPro-applicatie.
Dit met de functionaliteit van het verzenden van relevante delen van de TA (overdrachtsgebied) naar de subscript-clients en / of het ontvangen van TA-gegevens en deze in te vullen in de TA.
Deze oplossing is ook langage-onafhankelijk, zodat Python aan de clientzijde kan worden gebruikt. Als u relevante delen van de TA-definitie gebruikt en delen van de FtRoboPy aanpast, is de clientinterface er al.

Je suis d'accord avec Torsten,Python et RoboPro ne peuvent pas être facilement combinés. Il semble que le socket fischertechnik TXT Berkeley interne soit limité à un client.Cependant, il existe des solutions.Tout dans la ligne de fonctionnement du TXT MotorIO et de son FRoboPy, à savoir la communication par socket.Parce que RoboPro a l'option des éléments définis par l'utilisateur (SLI), vous pouvez penser aux stratégies suivantes:
*)SLI qui ajoute une fonctionnalité de serveur [url = https: //nl.wikipedia.org/wiki/WebSocket] Web Socket [/ url] dédiée à votre application RoboPro.Ceci avec la fonctionnalité de
transmettant les parties pertinentes de l'AT (zone de transfert) aux clients abonnés et / ou recevoir des données TA et les remplir dans le TA.Le socket web peut faire cette base de texte (Json, XML) ou binaire (compressé?). Le dernier sera plus rapide.La socket Web est indépendante du langage de programmation, vous pouvez donc utiliser un client Python ou html / Jscript ou d'autres langages disposant d'une bibliothèque de socket Web.C'est ce que je fais dans ma [url = viewtopic.php? F = 8 & t = 5705 & sid = e51d1aa19c573085fc766a051cfce870 # p42158] preuve de concept [/url].
*)Un SLI qui ajoute la prise en charge du serveur dédié [url = https://en.wikipedia.org/wiki/Berkeley_sockets] Berkely-socket [/url] à votre application RoboPro.Ceci avec la fonctionnalité de transmettre les parties pertinentes de l'AT (zone de transfert) aux clients en indice et / ou de recevoir les données TA et de les remplir dans l'AT.Cette solution est également indépendante du langage, donc Python peut être utilisé côté client. Si vous utilisez des parties pertinentes de la définition TA et adaptez des parties de FtRoboPy, l'interface client est déjà la.

Ich stimme torsten zuPython und RoboPro können nicht einfach kombiniert werden. Es sieht so aus, als ob die interne fischertechnik TXT Berkeley-Buchse auf einen Client beschränkt ist.Es gibt jedoch einige Lösungen.Alles im Einklang mit der Funktionsweise des TXT MotorIO und seines FRoboPy, nämlich der buchsenbasierten Kommunikation.Da RoboPro über die Option der benutzerdefinierten Elemente (SLIs) verfügt, können Sie über die nächsten Strategien nachdenken:
*)
Eine SLI, die Ihrer RoboPro-Anwendung dedizierte Web Socket -Serverfunktionen hinzufügt.Dies mit der Funktionalität von , relevante Teile des TA (Übertragungsbereich) an die tiefgestellten Clients zu übertragen und / oder TA-Daten empfangen und in den TA eintragen.Der Web-Socket kann diese Textbasis (Json, XML) oder Binärdatei (komprimiert?). Der letzte wird schneller sein.Web Socket ist programmiersprachenunabhängig. Sie können also einen Client verwenden, der über eine Python- oder HTML / J-Skript- oder eine andere Sprache mit einer Web Socket-Bibliothek verfügt.Das mache ich in meinem [url = https: //forum.ftcommunity.de/viewtopic.php?F=8 & t = 5705 & sid=e51d1aa19c573085fc766a051cfce870#p42158] Proof of Concept [/url].
*)
Eine SLI, die Ihrer RoboPro-Anwendung dedizierte Berkely-Socket - Serverunterstützung hinzufügt. Dies mit der Funktionalität, relevante Teile des TA (Übertragungsbereich) an die tiefgestellten Clients zu senden und / oder TA-Daten zu empfangen und in den TA einzufügen.Diese Lösung ist auch sprachunabhängig, sodass Python auf der Clientseite verwendet werden kann. Wenn Sie relevante Teile der TA-Definition verwenden und Teile des FtRoboPy anpassen, ist die Client-Schnittstelle bereits vorhanden.

Torsten
Beiträge: 191
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Torsten » 11 Jan 2020, 23:06

Yes, I agree, this would be a possible solution to the problem of combining RoboPro and Python. However it would involve some C/C++ programming as well.

Best,
Torsten

vleeuwen
Beiträge: 1220
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von vleeuwen » 11 Jan 2020, 23:42

Certainly, SLI's are C/C++ project
(Embedded) CivetWeb also.
But is no low level C/C++ coding.
It differ not so much from Python and the Eclipse development environment is very helpful.

Lari
Beiträge: 11
Registriert: 06 Jan 2020, 23:22

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Lari » 14 Jan 2020, 22:28

Thank you all for your responses! :)
I think I will just rewrite the robo pro files, seems for me the best and easiest way and I will get more controll.

Freedo
Beiträge: 1
Registriert: 29 Jan 2020, 15:48

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Freedo » 29 Jan 2020, 15:59

Lari hat geschrieben:
06 Jan 2020, 23:29
Hallo,
ich habe eine Fabrik von Fischertechnik.
Ich wuerde gerne auf den TXT-Controllern ein Programm haben, welches ueber eine Websocket Daten der Sensoren und Motoren sendet an einen Webserver.
Als konkretes Beispiel: Eine JSON-Nachricht, wenn zum Beispiel eine Lichtschranke gebrochen wird.
Habt ihr Ideen wie man so etwas angehen koennte?
Ich stehe ein bisschen auf dem Schlauch und ein paar Ansaetze wuerden mir sehr weiterhelfen!
Vielen Dank!
Lari
Hallo,

ich habe auch seit ein paar Tagen die Lernfabrik und bin völlig neu hier im Forum und auch im Thema. (Und habe es im Moment noch nicht geschafft, die Fabrik ans laufen zu bringen. Fischertechnik Cloud zeigt ein paar Daten und die Kamera läßt sich steuern, aber ansonsten bewegt sich nichts. Aber ich komm schon noch dahinter. Aber immerhin habe ich es geschafft, auf dem Master TXT Controller als Root-User den MQTT-Tunnel von der Fischertechnik-Cloud auf meinen eigenen MQTT-Broker umzubiegen.)

@Lari: mal ganz naiv gefragt, warum nutzt Du nicht MQTT, um an die Daten ranzukommen?

VG
Freedo

vleeuwen
Beiträge: 1220
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von vleeuwen » 29 Jan 2020, 17:35

The Mosquitto MQTT support has been compiled in TXT firmware version 4.7.0 with websocket support.
See: https://github.com/fischertechnik/FT-TX ... tag/v4.7.0
See also:
https://github.com/fischertechnik/txt_training_factory

Otherwise the Embedded Civetweb server is also offering websocket support in combination with a nice webserver.
viewtopic.php?f=8&t=5705
I am using this to develop SLI's with Eclipse for JSON websocket based control panel on a browser.
But you can also include the Civetweb inside local C/C++ applications like the trainings factory software.
JSON actuator data on remote web page
JSON actuator data on remote web page
Jason.JPG (62.76 KiB) 757 mal betrachtet
RoboPro (online and offline)
RoboPro (online and offline)
Jason1.JPG (18.1 KiB) 726 mal betrachtet
(motor+virtual joystick)
(motor+virtual joystick)
Jason.JPG (44.87 KiB) 726 mal betrachtet
Die Mosquitto MQTT-Unterstützung wurde in TXT-Firmware-Version 4.7.0 mit Websocket-Unterstützung kompiliert.
Siehe: https://github.com/fischertechnik/FT-TX ... tag / v4.7.0
Siehe auch:
https://github.com/fischertechnik/txt_training_factory

Ansonsten bietet der Embedded Civetweb Server auch Websocket-Unterstützung in Kombination mit einem netten Webserver an.
viewtopic.php? f = 8 & t = 5705
Ich verwende dies, um SLIs mit Eclipse für JSON-Websocket-basiertem Control Panel in einem Browser zu entwickeln.
Sie können das Civetweb aber auch in lokale C / C ++ - Anwendungen wie die Schulungsfactory-Software integrieren

Lari
Beiträge: 11
Registriert: 06 Jan 2020, 23:22

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von Lari » 03 Feb 2020, 22:49

Freedo hat geschrieben:
29 Jan 2020, 15:59
@Lari: mal ganz naiv gefragt, warum nutzt Du nicht MQTT, um an die Daten ranzukommen?
Hey,
gute Frage :D. Ich habe noch die alte Version der Fabrik, da war MQTT noch nicht unterstuetzt.
Fuer mich war es jetzt am besten einfach die Scripts in python neu zu schreiben.

vleeuwen
Beiträge: 1220
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Websocket zur Sensordatenuebermittlung - TXT Controller

Beitrag von vleeuwen » 04 Feb 2020, 09:01

For the Mosquitto MQTT support you only need to update the firmware on the TXT's to 4.6.6 or 4.7.0(including web socket support) .
The binary for the factory software and instructions can be found here
The sources can also be cross compiled under Windows with Eclipse.
But for this you will to modify the Eclipse Cproject files a little bit.
So you can adapt the source to your own needs. Or reuse parts of it.


Overview topology

It is also possible to run the Mosquitto MQTT server/bridge on a laptop instead of a TXT.
================Google translate for what it is ===========================================================


Für die Unterstützung von Mosquitto MQTT muss lediglich die Firmware [url = https: //github.com/fischertechnik/FT-TXT/releases] auf dem TXT auf 4.6.6 oder 4.7.0 [/ url] aktualisiert werden.
[url = https: //github.com/fischertechnik/txt_training_factory/tree/master/bin] Die Binärdatei für die Factory finden Sie hier [/ url]
Die Quelle kann auch unter Windows mit Eclipse crosskompiliert werden.
So können Sie die Quelle an Ihre eigenen Bedürfnisse anpassen.

Bild

Es ist möglich, den Mosquitto MQTT-Server / die Mosquitto MQTT-Bridge auf einem Laptop anstelle eines TXT auszuführen.

Antworten