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
Seite 1 von 2  1 2      
SvB

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

Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 07:56
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.
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
969 Beiträge
 
Delphi 6 Professional
 
#2

AW: Technische Hintergrundfrage, Webanbindung, REST

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

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

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08: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
 
#4

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 08: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
969 Beiträge
 
Delphi 6 Professional
 
#5

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 09: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.087 Beiträge
 
Delphi 12 Athens
 
#6

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 09: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
 
#7

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 09: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
969 Beiträge
 
Delphi 6 Professional
 
#8

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 09: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
969 Beiträge
 
Delphi 6 Professional
 
#9

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 09: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.087 Beiträge
 
Delphi 12 Athens
 
#10

AW: Technische Hintergrundfrage, Webanbindung, REST

  Alt 7. Jun 2018, 11: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
Antwort Antwort
Seite 1 von 2  1 2      


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 21:44 Uhr.
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