USB-Verbindung
zu Salesforce

Moderne Browser unterstützen nun die direkte Kommunikation zwischen Browser-Technologien und externen Hardware-Geräten über USB-Ports. Neben dem allgemein bekannten PC-Zubehör gibt es eine Reihe von USB-fähigen Geräten, die von WebUSB profitieren können. Diese ermöglichen es Web-Anwendungen, dynamisch mit solchen Geräten zu interagieren, um ihre Funktionalität lokal auf dem Rechner des Benutzers zu erweitern.

Dieses Projekt von Arlanis Reply zielt darauf ab, das Potenzial dieser Brücke in Kombination mit der leistungsstarken Cloud-Technologie von Salesforce zu demonstrieren. Untersuchen wir den Weg des Hochladens von Daten von einem solchen Gerät in den Browser, die Übertragung bis zur Cloud und das anschließende Herunterladen der verarbeiteten Informationen zurück auf das Gerät.


USB – eine Erfolgsgeschichte

Der Universal Serial Bus (USB) wurde 1996 von einem Konsortium aus mehreren Unternehmen erfunden. USB dient dazu, die Verbindung von elektronischen Geräten mit einem Computer über Kabel, Anschlüsse und ein Protokoll für die bidirektionale Datenübertragung zu ermöglichen. USB ersetzte schnell viele andere Schnittstellen in der Computerwelt. Der USB-Standard hat sich seither im Laufe der Jahre weiterentwickelt, da Geschwindigkeit und Funktionen mit jeder Überarbeitung zunahmen. Heute ist USB der Industriestandard für alle Arten von Geräten und Anwendungen.

Es gibt jedoch Herausforderungen, die sich ergeben, wenn USB zu einer allgegenwärtigen Lösung in technologischen Umgebungen wird. So kann beispielsweise die Kompatibilität bei der Verwendung von USB ein Problem sein. USB-Treiber sind in den meisten Fällen nur für Windows oder MacOS, aber nicht für Linux erhältlich. Außerdem müssen USB-Treiber aus dem Internet heruntergeladen werden und können ein Sicherheitsrisiko darstellen: Wenn der Code von geringer Qualität ist, kann er Ihr gesamtes System zum Absturz bringen, da der Treiber auf Systemebene läuft. Treiber für ältere Geräte sind manchmal nicht mit neueren Versionen der Betriebssysteme kompatibel und werden vom Hersteller nie aktualisiert.

Web USB – Treiber mit Javascript

Wie können wir die Nachteile von USB-Treibern vermeiden? Die Lösung ist, den Treiber in Javascript zu platzieren und in die Website einzubetten. Dies führt dazu, dass der Treiber immer die neuesten Updates erhält, ohne dass er ständig manuell aktualisiert werden muss. Außerdem wird kein älterer Treibercode im System verbleiben, der ihn Sicherheitsrisiken aussetzen könnte. Es besteht auch keine Notwendigkeit, einen Systemtreiber zu installieren, d.h. es sind keine zusätzlichen Administratorberechtigungen auf dem Computer erforderlich (Beaufort).

WebUSB ist ein Entwurf von Google, der dem W3C zur Standardisierung vorgelegt wurde (Github). Während die aktuelle Implementierung nur in Chrome-basierten Browsern (d.h. Chromium, Google Chrome, Microsoft Edge (Beta)) läuft, wird erwartet, dass auch andere Browserhersteller WebUSB übernehmen werden, sobald es in naher Zukunft als Industriestandard veröffentlicht wird.

Use Case: USB-Geräte mit der Cloud verbinden

Nicht alle Geräte müssen aus verschiedenen Gründen ständig mit dem Internet verbunden sein. So ist beispielsweise WiFi-Hardware für kleine und billige Verbrauchergeräte zu teuer, während aus Sicherheitsgründen nicht alle Industriegeräte angeschlossen werden dürfen.

Andererseits müssen alle Geräte von Zeit zu Zeit gewartet werden, wie z.B. das Aktivieren des Wartungsmodus von einer Web-Anwendung aus, das Hochladen von Diagnosedaten zum Hersteller oder das Herunterladen neuer Firmware mit Fehlerbehebungen und Verbesserungen.

Mit WebUSB besteht keine Notwendigkeit, spezielle, auf bestimmte Betriebssysteme beschränkte Anwendungen zu entwickeln. Apps können auf jedem Laptop (im Chrome-Browser) oder Mobiltelefon (Android) ausgeführt werden (Google Developers).


Prototyp

Auswahl eines geeigneten Gerätes

USB-Zubehör

Ein erster Test bestand darin, Daten von Standard-PC-Zubehör – einer PC-Tastatur und einer PC-Webcam – zu lesen. Allerdings werden Standard-USB-Geräte durch den Treiber des Betriebssystems gesperrt, wenn sie angeschlossen werden, und verhindern somit den Zugriff auf das Gerät.

Ein Gerät mit programmierbarer USB-Hersteller-ID und einer Geräte-ID, die dem System als "unbekannt" erscheint, war erforderlich.


Raspberry

Zunächst wurde der weit verbreitete Raspberry-Minicomputer, der mit einem Linux-Betriebssystem läuft, in Betracht gezogen. Der Linux-USB-Treiber müsste jedoch in einen WebUSB-Standard konvertiert werden, was letztlich als zu komplex für die Aufgabe angesehen wurde. (BeyondLogic)

Arduino Leonardo

Ein Durchbruch kam mit der Entdeckung des WebUSB-Projekts für Arduino auf GitHub. Arduino, ein programmierbarer Mikrocontroller ohne Betriebssystem, ist ein viel einfacherer Minicomputer als Raspberry, der keine Treiber-Konvertierung erforderte.

Arduino ist eine Plattform mit vielen verschiedenen Hardware-Boards. Der Arduino Leonardo wurde aufgrund seines integrierten Mikro-USB-Controllers und des seriellen Ports ausgewählt.

Einrichtung

Arduino Leonardo

Die Idee war, ein benutzerfreundliches Gerät zu schaffen, das Logging-Einträge der beiden Kategorien "Fehler" und "Info" simuliert. Die Log-Einträge können dann vom Kunden über das Gerät hochgeladen werden, um den Hersteller in der Cloud zu informieren. Ein automatisch erstellter Support-Fall würde es dem Hersteller ermöglichen, auf die Bedürfnisse des Kunden zu reagieren. Auf der Grundlage dieser Anforderungen haben wir ein Gerät entwickelt mit:

  • zwei Knöpfen, um Protokolleinträge vom Typ Fehler und Information zu simulieren;
  • zwei LEDs zur Statusanzeige;
  • ein LCD-Display zur Anzeige einer Ticketnummer.


Salesforce Org

Für die Softwareentwicklung wurde eine Salesforce Developer Org angelegt, um Daten in die Cloud zu übertragen. Ziel war es, die Salesforce-Datensätze mit den Anmeldeinformationen des Benutzers direkt über das Arduino-Gerät mittels WebUSB nahtlos zu aktualisieren.

Implementierung

Lightning Web Component

Lightning Web Components (LWC) sind die neueste Technologie von Salesforce zur Erstellung wiederverwendbarer Frontend-Komponenten. LWC sind benutzerdefinierte HTML-Elemente, die mit HTML und modernem JavaScript erstellt werden. (Salesforce Developer)

Wir haben eine Lightning Web Component implementiert, die über JavaScript eine Verbindung zum Arduino-Gerät herstellt. Der Zugriff auf Browser-APIs auf der Salesforce-Plattform wird über einen Service namens Lightning Locker (Salesforce Developer) gesteuert. Diese Sicherheitsfunktion unterstützt jedoch noch nicht WebUSB und blockiert den Zugriff auf das USB-Gerät.

Heroku-Anwendung

Da die Implementierung der Lightning Web Component nicht zum Erfolg führte, wurde ein alternativer Ansatz getestet. Eine benutzerdefinierte Anwendung mit dem Java-Framework Spring Boot wurde erstellt und auf Heroku, einer weiteren Salesforce-Cloud-Plattform, die die Ausführung von Anwendungen ermöglicht, gehostet. Wir haben erfolgreich ein Support-Formular erstellt, das mit dem USB-Gerät verbunden wird. Der Benutzer kann nun Tasten auf dem Gerät drücken, um Protokolleinträge in der Cloud zu erstellen. Um die Funktionalität zu testen, wurde die Web-to-Case-Funktion von Salesforce verwendet, um Daten ohne weitere Authentifizierung in die Salesforce Org zu übertragen. Das Lightning Design System wurde verwendet, um die benutzerdefinierte Anwendung mit dem bekannten Salesforce-Design zu gestalten.


Aura-Komponente

Die Heroku-Anwendung war ein erfolgreicher Proof-of-Concept, aber es fehlte noch die nahtlose Integration in die Salesforce-Plattform. Daher wurde weiterhin nach einer besseren Lösung gesucht.

Das Aura Component Framework ist ein älteres, aber weit verbreitetes Framework für Frontend-Komponenten in Salesforce (Salesforce Developer). Aura Komponenten unterliegen den gleichen Einschränkungen von Lightning Locker wie LWC, aber zusätzlich gibt es eine offiziell unterstützte Möglichkeit, Lightning Locker für eine einzelne Komponente zu deaktivieren (Salesforce Developer). Mit dieser Lösung konnte die USB-Funktion im Browser mit JavaScript aufgerufen werden.

Eine Aura-Komponente mit einer einzigen "Verbinden"-Schaltfläche wurde implementiert. Die Komponente kann mit anderen Komponenten in einer Salesforce-Anwendung kombiniert werden. Sie kapselt das gesamte Javascript auf benutzerfreundliche Weise. Wenn der Benutzer auf "Verbinden" klickt, wird eine USB-Verbindung zum Gerät hergestellt.

Der Hauptvorteil der Aura-Komponente im Vergleich zur Heroku-Lösung ist die Möglichkeit, Datensätze mit den Anmeldedaten des angemeldeten Benutzers zu erstellen. Die Benutzer müssen die vertraute Salesforce-Benutzeroberfläche nicht verlassen, während sie mit einem externen Tool arbeiten.

Arduino Firmware

Die Firmware auf dem Arduino ist das Gegenstück zum JavaScript-Treiber. Sie liest und überträgt Daten entsprechend den Befehlen des Treibers. Die Arduino IDE wurde zur Entwicklung der Firmware verwendet (Arduino).

Die Zweiwege-Kommunikation wird mit den folgenden Funktionen demonstriert:
Wenn der Benutzer eine Taste auf dem Gerät drückt, wird das Ereignis in Echtzeit im Browser verarbeitet. Eine Popup-Benachrichtigung auf der Salesforce-Benutzeroberfläche wird zur sofortigen Rückmeldung angezeigt. Nachdem ein Datensatz in Salesforce erstellt wurde, wird die ID des Datensatzes an das Gerät übertragen und auf dem LCD-Display angezeigt.


Arduino Firmware

Das speziell angefertigte Gerät von außen mit einem USB-Kabel, zwei Tasten, LCD-Display und zwei LEDs.


Fazit

In diesem Artikel zeigt Arlanis Reply die Vorteile von WebUSB für Kunden und Hardwarehersteller auf. Es wurde eine Browser-kompatible Lösung gefunden, ohne dass eine betriebssystem-spezifische Anwendung oder ein betriebssystem-spezifischer Treiber erforderlich ist. Um aufzuzeigen, dass die Kommunikation mit einem benutzerdefinierten USB-Gerät möglich ist, wurde eine Aura-Komponente gebaut. Durch den Anwendungsfall Web-to-Case werden weitergehende Anwendungen ermöglicht.


  • strip-0

    Arlanis Reply ist spezialisiert auf Beratung, Planung, Entwicklung und Integration von Salesforce-Lösungen und -Services. Arlanis Reply bietet Marktführern nahtlos integrierte Lösungen für alle kundenbezogenen Prozesse in Vertrieb, Marketing und Service – vom ersten Kontakt bis zum langfristigen Servicegeschäft. Arlanis Reply konfiguriert alle gängigen Salesforce-Komponenten wie Sales Cloud, Service Cloud, Community Cloud, Marketing Cloud oder App Cloud oder ergänzt bei Bedarf individuelle Programmierung mit Heroku. Mit Mulesoft bietet Arlanis Reply eine Integrationstechnologie, die es ermöglicht, APIs und kundenspezifische Punkt-zu-Punkt-Integrationen zu entwickeln, zu erstellen, zu analysieren, zu verwalten und zu überwachen. Dabei setzt Arlanis Reply auf agile Projektmanagementmethoden und einen für die Einführung von Salesforce optimierten Projektansatz, der maximale Flexibilität gewährleistet. www.arlanis-reply.de