Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Technische Hintergrundfrage, Webanbindung, REST (https://www.delphipraxis.net/196658-technische-hintergrundfrage-webanbindung-rest.html)

SvB 7. Jun 2018 06:56

Technische Hintergrundfrage, Webanbindung, REST
 
Hallo Gemeinde,

ich muss demnächst eine Maschinensteuerung mit dem Internet verheiraten, d.h. es wird ein Webportal geben, in dem die Konfigurationen und Einstellungen zu den Maschinen hinterlegt und verwaltet wird. Die Einstellungen sollen dann von den Maschinen abgerufen werden.
Mit REST-API hab ich noch nichts gemacht aber schon mitbekommen das man die Kommunikation sinnvollerweise damit machen kann.

Meine Frage: Wie bekommt die Maschine mit, dass es eine Konfigurationsänderung im Webportal gibt. Am besten in "Echtzeit". Wie macht man das?

Vielen Dank für Eure Erfahrungsinfos.

HolgerX 7. Jun 2018 07:19

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Hmm..

Ich glaube, da kann Dir REST selber nicht helfen..

Hierfür bräuchtest Du einen Broker, an dem sich deine Maschine und deine zentrale Verwaltung anmeldet und ein Message-Austausch machen.

Gerade im Maschinenbereich hat sich hier MQTT etabliert.

Hierüber können Nachrichten verschickt werden, ohne REST/HTTP direkt auf TCP-Ebene.
Dies kann somit auch in 'kleinen' Steuerungen von Maschinen ohne viel Overhead recht einfach implementiert werden.

Ghostwalker 7. Jun 2018 07:21

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Grundsätzlich hast du da zwei Möglichkeiten:

a.) Die Maschine fragt alle xy Sekunden das Webportal ab, ob sich was geändert hat.

b.) Das Webportal benachrichtigt die Maschine, wenn Änderungen gemacht wurden.

Welche nun die passende ist, hängt von vielen Faktoren ab.

Elrond 7. Jun 2018 07:45

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Rest ansich, ist nur ein Architekturstil, zu oft wird es als Protokoll oder Schnittstelle betrachtet. Alle gängigen REST-Apis sind am ende nur http-Schnittstellen.
Für ein Echtzeitszenario ist Rest nicht geeignet, du hast aber andere Möglichkeiten. Wie bereits von HolgerX erwähnt, könntest du einen Broker verwenden, aus der Java Welt gibt es Beispielsweise ActiveMQ, kombiniert mit Camel ist es sehr mächtig, vielleicht schon zu viel des guten.
Du könntest aber genauso gut über Websockets direkt kommunizieren, jede Maschine eröffnet am Server ein Websocket.

HolgerX 7. Jun 2018 08:00

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Hmm..

Ich habe hier mit 'Mosquitto' als OpenSource Broker für MQTT gute Erfahrungen gemacht.
Jedoch habe ich mir die Schnittstelle (Delphi 6) selber erstellt, da ich die bestehenden nicht verwenden konnte und meist ein paar Dinge fehlten ;)

Der Vorteil von MQTT ist, das nur wenige Bytes übertragen werden, ohne Overhead.
Jeder Client meldet sich am Server an und subscript ein Thema, für das er direkt vom Server informiert wird, ohne Polling.

Rollo62 7. Jun 2018 08:08

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Verstehe ich das so das die Maschinensteuerung mit Delphi geschrieben ist ?
Dann könnte der REST-Server ja auf der gleichen Maschine laufen, und zum Internet durchleiten.

Ansonsten Vorschläge siehe unten.

Bekommt der REST-Server Änderungen z.B. bei GET einer Resource mit
www.maschine.de/v1/motor1?speed=500

Dann müsste der REST-Server mit der Maschine die Änderung umsetzen:
entweder direkt, wenn Server = Maschine
oder z.B. per Feldbus, RS485, Ethernet, oder was es da so gibt an der Maschine.

MQTT wurde schon erwähnt, finde ich auch super, allerdings braucht man einen MQTT-Broker,
den man dann möglicherweise auf einem separaten Server, Clouddients, etc. laufen lassen muss.
Einen leichten PHP-Broker gibt es dafür meines Wissens leider nicht, das würde ich aber bevorzugen um überall leicht ans Laufen zu bringen.

Rollo

Elrond 7. Jun 2018 08:31

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Von TMS gibt es einen MQTT Client: https://www.tmssoftware.com/site/tmsmqtt.asp
Der lässt sich sicher mit den ActiveMQ Broker verbinden: http://activemq.apache.org/mqtt.html
ActiveMQ verwende ich sehr oft als Nachrichtenbroker, das ganze ist sehr leichtgewichtig und lässt sich einbetten oder separat starten.

HolgerX 7. Jun 2018 08:53

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Zitat:

Zitat von Rollo62 (Beitrag 1404137)
Verstehe ich das so das die Maschinensteuerung mit Delphi geschrieben ist ?

Nope!
Es ist egal ob der Client (bei MQTT) eine Maschine, ein PC oder ein IoT oder was auch immer ist.
Es ist egal in welcher Sprache der Client das Protokoll implementiert hat.

Somit kannst Du deinen REST-Server mit Delphi Schreiben und dieser schickt die Konfigurationsänderung per MQTT an den Broker und dieser dann weiter an den/die Client/s.

Den Mosquitto Broker z.B. gibt es für diverse Plattformen:
https://mosquitto.org/download/

oder auch der erwähnte ActiveMQ:
http://activemq.apache.org/

Zitat:

Zitat von Rollo62 (Beitrag 1404137)
Bekommt der REST-Server Änderungen z.B. bei GET einer Resource mit
www.maschine.de/v1/motor1?speed=500

Hinweis zu REST und GET/PUSH..:
GET - Nur Holen von Daten
PUSH - Neue Daten Anlegen
PUT - Setzen/Ändern von Daten
DELETE - Löschen von Daten
...

Zitat:

Zitat von Rollo62 (Beitrag 1404137)
Dann müsste der REST-Server mit der Maschine die Änderung umsetzen:
entweder direkt, wenn Server = Maschine
oder z.B. per Feldbus, RS485, Ethernet, oder was es da so gibt an der Maschine.

Ungünstig, da der REST-Server ja dann 'Wissen' Muss, wie die Maschine direkt angesprochen wird!

Deshalb einen Broker!

Dieser leitet die Messages an alle entsprechenden Clients (Maschinen) weiter.
Somit muss nur für den Nachrichteninhalt eine Definition gemacht werden.

Die Maschine selber setzt dann anhand des Paketes die Konfiguration um.

Zitat:

Zitat von Rollo62 (Beitrag 1404137)
MQTT wurde schon erwähnt, finde ich auch super, allerdings braucht man einen MQTT-Broker,
den man dann möglicherweise auf einem separaten Server, Clouddients, etc. laufen lassen muss.

Richtig, jedoch genügt hierfür ein Raspberry Pi... ;)

Da du hier eh einen Zentralen REST-Server aufsetzen willst, kann auf diesm dein MQTT direkt mitlaufen..
Dieser muss nicht auf einem eigenen Server laufen.
Oder Du baust Dir direkt mit Delphi einen eigenen MQTT Server in deinen REST-Server mit ein.

HolgerX 7. Jun 2018 08:57

AW: Technische Hintergrundfrage, Webanbindung, REST
 
Hmm..

Ach noch was:
Da MQTT die Message puffern kann, würde sogar die Konfigurationsänderung dann auch ausgeführt werden, wenn die Maschine nach einer Verbindungsunterbrechung zum Internet sich wieder mit dem Broker verbindet!

Rollo62 7. Jun 2018 10:27

AW: Technische Hintergrundfrage, Webanbindung, REST
 
@HolgerX
Ok, dankesehr.
Meine Frage galt eher dem TE, trotzdem hast du das schön ausführlich beschrieben.

In deiner Beschreibung müsste die Maschine selbst aber MQTT-fähig (MQTT Client) sein, richtig ?
Der Broker kümmert sich nur um die Nachrichteversendung, und keent die Maschine nicht.

Das ist mir von der Eingangsfrage her immer noch nicht ganz klar.
Nicht jede Maschine kann MQTT verstehen.
Der WebService muss aber schon etwas von der MAdschine verstehen, denn er kennt zumindest die erlaubten Commandos, wenn es von da gesteuert werden soll.

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz