AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Technische Hintergrundfrage, Webanbindung, REST
Thema durchsuchen
Ansicht
Themen-Optionen

Technische Hintergrundfrage, Webanbindung, REST

Ein Thema von SvB · begonnen am 7. Jun 2018 · letzter Beitrag vom 7. Jun 2018
Antwort Antwort
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 07:21
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.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#2

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 07:45
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.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#3

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08:00
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.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#4

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08:08
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
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#5

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08:31
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.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#6

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08:53
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/

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
...

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.

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.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#7

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08:57
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!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#8

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 10:27
@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
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 10:46
Die Maschinensteuerung ist in Delphi geschrieben und steht irgendwo beim Kunden im Netzwerk, hat also nur Kommunikationsmöglichkeit nach außen. Vom Internet her ist die Maschine nicht direkt erreichbar, es gibt also keinen Portweiterleitung von außen nach innen.
Die Maschine muss sich also irgendwie mit dem Webserver verbinden, entweder über regelmäßige periodische Abfrage ob es was neues gibt oder direkt verbunden sein.
In der Kundenumgebung können auch mehrere Maschinen stehen, bzw. über Standorte verteilt sein und es wird auch Konfigurationen für Gruppen von Maschinen geben.

Ich werde mir das mit dem Broker und MQTT ansehen, hört sich interessant an. Der erzeugte Traffic sollte für die reine Änderungsinfo auch nicht so groß sein.
Sven

Alle sagen, das geht nicht. Da kam einer, der wusste das nicht und hat es gemacht.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#10

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 10:49
Hmm..

Da lt. TE die Maschinen ja anscheinend mit einem REST_Server 'sprechen' können,
sollte dort bereits eine TCP-IP Kommunikation vorhanden sein (Ohne die geht HTTP/REST nicht).

TCP/IP ist für MQTT die Mindest-Voraussetzung, optional können auch andere Schnittstellen benutzt werden, sie müssen nur Bytes als Stream verschicken können und im Brocker zur Verbindung zur Verfügung stehen.

Jede Message bestehrt aus wenigen Bytes als Header und dem Payload.
Der Payload beinhaltet eigendlich die Message und kann alles sein, von Bytes über einfache Strings hin zu XML/JSON...

Es müsste somit nur eine (verallgemeinerte) Definition eben dieses Payloads erstellt werden, über den die Maschine mitteilt, was sie als Konfiguration erwarten kann und eben die Steuerbefehle entschlüsselt.

Alternativ würde bei (alten) Maschinen ohne TCP/IP eh ein PI oder Microcontroller dazwischen geschaltet werden müssen, um das Protokoll zu implementieren, dort würde dann der MQTT-Client installiert werden plus die Hardware-Seitige Anbindung zur Maschine.

Altrernativ könnte das sogar auf einem 8-Bit Microcontroller installiert werden, da die benötigten Resourcen überschaubar sind

Beispiel:
Die Maschine meldet sich am Broker an und schickt (in definierter Form) eine Beschreibung aller Sensoren und Aktoren, welche sie zur Verfügung stellt.

Der REST-Service wird per Brocker benachrichtigt, erhält die Definition (MQTT kennt den Inhalt nicht!) und richtet bei sich dann die Views und Parametereinträge ein, welche von Extern dann angesprochen werden können.

Bei Änderung (durch REST-Put/GET.. von externen System) würde dann der REST per MQTT an die Maschine einen (im Format definierten) Befehl schicken, um den Sensor X abzufragen oder den Aktor Y auf Wert XXX zu sezten.

Was das nun wirklich für Sensoren oder Aktoren sind, braucht der REST-Service nicht komplett zu kennen. Auch, wie die Daten dann Technisch bei der Maschine ankommen bzw. Umgesetzt werden ist dem REST-Service egal, dass macht dann der MQTT-Client auf der Maschinenseite..
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz