Inhaltsverzeichnis
BiDiB-Broker & Family
BiDiB-Broker & Family ist eine Sammlung von Java Anwendungen für das BiDiB-System zur Kommunikation mit BiDiBus und netBiDiB-Klienten via TCP/IP. Die Implementierung folgt der Protokollerweiterung netBiDiB des universellen BiDiB-Protokolls.
Die Hauptanwendung ist der BiDiB-Broker (im Folgenden: Broker) als Mittler zum BiDiBus (RS232) und zwischen TCP/IP-fähigen Anwendungen und Geräten.
An Brokers Seite stehen kleinere „Familienmitglieder“ mit einer so genannten REST-Schnittstelle zur Bedienung via Browser oder Apps.
BiDiB-Broker
Die Hauptanwendungsmöglichkeiten Brokers:
Adapter vom BiDiBus (USB, RS232) auf TCP/IP
Hub für BiDiBus sowie netBiDiB-Anwendungen und -Geräte
Standalone Buskopf für netBiDiB-Bediengeräte *1)
In allen Fällen kann die Ethernet-Netzverbindung mit LAN oder WLAN erfolgen.
Broker spielt seine größten Vorteile auf einem Einplatinencomputer aus wie Raspberry Pi oder Banana Pi. Über eine LAN- oder WLAN-Verbindung lassen sich die verschiedenen Einstellungen mit Konfigurationsgeräten wie dem BiDiB-Monitor bzw. -Wizard komfortabel durchführen. Aber auch auf dem PC ist Broker universell einsetzbar.
Der direkte Link zur aktuellen Broker-Version.
Ein Link auf die jeweils aktuellste Broker-Version befindet sich auch im Anwenderhandbuch.
Zur Zeit liegen die folgenden erläuternden Handbücher vor:
Anwenderhandbuch - Grundsätzliche Erklärungen zu Inbetriebnahme und Betrieb
Entwicklerhandbuch - Hintergrundwissen mit Konfigurationsmöglichkeiten
Handbuch Embedded Systems - Beschreibung Inbetriebnahme Raspberry Pi inkl. Aufbau Pairing-LED und -Taster
siehe auch Fichtelbahn Newsletter 71, Seite 7ff v. Dez/22
1*) In der Entwicklung (Stand 01.02.2023) - Fragen nach dem Auslieferungstermin sind zwecklos …
BiDiB-Registrar
Der Registrar bietet eine REST-Schnittstelle zur Registrierung als netBiDiB-Partner von Broker. Der Registrar kann jederzeit beauftragt werden, ein Vertrauensverhältnis zu Broker aufzubauen.
Standardmäßig spricht der Registrar über Port 62877 mit Broker, z.B.:
http://localhost:62877/trust/00000DFA010303 // einfachste Variante nur mit eigener UID http://localhost:62877/trust/00000DFA010303?timeout=10000 // Angabe der Wartezeit in Sekunden http://localhost:62877/trust/00000DFA010303?p-version=08&prod-string=Handheld-Terminal &user-string=Harry%20Hirsch // kompletter Descriptor curl -X "GET" "http://localhost:62877/trust/00000DFA010303" // als Konsoleneingabe curl -v "GET" "http://localhost:62877/trust/00000DFA010303" // inkl. HTTP-Status
Die Antwort von Broker im Browser bzw. als JSON-Format, z.B.:
{„register“:{„uid“:„DA000D680064EA“,„pVersion“:„0.7“,„prodString“:„GBMBoost Master“,„userString“:„ “},„summing“:„ADMITTED“}
BiDiB-Harvester
Der Harvester (Sammler) sammelt über eine REST-Schnittstelle die Knotentabelle des BiDiB-Systems ein. Zur Zeit kann der Harvester nur beauftragt werden, wenn keine andere aktive Verbindung zu Broker besteht. Der beauftragende netBiDiB-Teilnehmer muss Broker vertraut sein (siehe oben Registrar).
Standardmäßig spricht der Harvester über Port 62878 mit Broker, z.B.:
http://localhost:62878/harvest/00000DFA010303 // eigene UID, Abfrage gesamter BiDiBus http://localhost:62878/harvest/00000DFA010303?start-address=3 // nur Knoten mit der Adresse 3 abfragen http://localhost:62878/harvest/00000DFA010303?send-disable=true // vor der Abfrage den Bus zu sperren curl -X "GET" "http://localhost:62878/harvest/00000DFA010303" // als Konsoleneingabe
Die Antwort von Broker im Browser bzw. als JSON-Format, z.B.:
{„acre“:{„uid“:„DA000D680064EA“,„pVersion“:„0.7“,„prodString“:„GBMBoost Master“,„userString“:„ “},
„summing“:„FRUITFUL“,„count“:7,„nodeTab“:[
{„msgAddr“:[0],„uid“:„DA000D680064EA“,„version“:5},
{„msgAddr“:[1,0],„uid“:„8000FB6B005300“,„version“:5},
{„msgAddr“:[1,1,0],„uid“:„05000D8F00D4EC“,„version“:5},
{„msgAddr“:[1,2,0],„uid“:„05000D8C002AEE“,„version“:5},
{„msgAddr“:[2,0],„uid“:„05000D75001EF0“,„version“:5},
{„msgAddr“:[3,0],„uid“:„05000D79002E00“,„version“:5},
{„msgAddr“:[4,0],„uid“:„45000DCD0037EB“,„version“:5}]}
BiDiB-Barker
Der Barker (Marktschreier) verkündet über eine REST-Schnittstelle die Features und Konfigurationsdaten eines angegebenen Knotens. Zur Zeit kann der Barker nur beauftragt werden, wenn keine andere aktive Verbindung zu Broker besteht. Der beauftragende netBiDiB-Teilnehmer muss Broker vertraut sein (siehe oben Registrar).
Standardmäßig spricht der Barker über Port 62879 mit Broker, z.B.:
http://localhost:62879/bark/00000DFA010303/3,2 // Knotenattribute, Adresse 3,2 http://localhost:62879/bark/00000DFA010303/3,2? send-disable=true&timeout=1000 // zusätzlich Reduzierung der Wartezeit curl -X "GET" "http://localhost:62879/bark/00000DFA010303/3.2" // als Konsoleneingabe
Die Antwort von Broker im Browser bzw. als JSON-Format, z.B.:
{„market“:{„uid“:„DA000D680064EA“,„pVersion“:„0.7“,„prodString“:„GBMBoost Master“,„userString“:„ “},„summing“:„ACCEPTED“,„features count“:18,„configXen count“:40,
„features“:[
{„number“:-4,„value“:24},
{„number“:-2,„value“:1},
{„number“:40,„value“:24},
{„number“:41,„value“:1},
…
{„number“:67,„value“:1},
{„number“:70,„value“:40}],„
configXen“:[
{„port“:0,„parameter“:[-127,2,4,0,7,20,8,-6,9,4]},
{„port“:1,„parameter“:[-127,2,4,0,7,20,8,-6,9,4]},
{„port“:2,„parameter“:[-127,2,4,0,7,20,8,-6,9,4]},
…
{„port“:38,„parameter“:[-127,15,-127,-128,14,0,15,0,11,0]},
{„port“:39,„parameter“:[-127,15,1,-128,14,0,15,0,11,0]}]}
BiDiB-Z21LAN-Agent
Ein größeres Mitglied der Familie ist der netBiDiB-Teilnehmer BiDiB-Z21Lan-Agent (im Folgenden: Agent). Er verbindet Geräte mit Z21LAN-Protokoll, wie z.B. die © ROCO WLANMAUS, mit dem BiDiB-System. Der Agent kann als Host oder Sub-Knoten agieren.
In der Entwicklung: Adapter für Z21LAN-Handregler, z.B. © Roco Z21 WLANMAUS
FAQ
Zusammenfassung der Fragen aus dem Forum
Wie finde ich die Konfigurations- und Protokolldateien?
Die Konfigurations- und Protokolldateien sind in einem Verzeichnis mit vorangestelltem Punkt gespeichert. Dadurch sind sie in der Standardeinstellung ausgeblendet, da sie in der Regel nicht vom Anwender benötigt werden.
Hier ein Tipp vom Anwender "wissbegierig", wie man diese Verzeichnisse unter Windows sichtbar machen kann:
„Um dies zu sehen, ist in Windows ein Haken zu setzen: Ausgeblendete Elemente“
Wie kann ich Broker mit der Desktop-Verknüpfung in Windows starten?
Laut Handbuch wird empfohlen, für den vereinfachten Start Brokers eine passende Batchdatei von der Fichtelbahnseite in das Broker-Verzeichnis zu laden und anschließend eine Verknüpfung auf dem Desktop abzulegen.
Wenn man die Verknüpfung beim ersten Mal aufruft, verweigert Windows u.U. den Start. Das läßt sich mit folgenden zwei Klicks beheben:
https://forum.opendcc.de/wiki/doku.php?id=bidib_broker_family#faq
Wie kann Broker starten, obwohl die gewünschten Ports belegt sind?
Es kann passieren, dass andere (BiDiB-)Anwendungen die gleichen Ports wie Broker verwenden.
Das wird im Broker-Protokoll als Fehler angezeigt, z.B.:
Diese Ports stehen Broker für die netBiDiB-Verbindungen nicht mehr zur Verfügung. Aber Broker kann im Bedarfsfall mit jeweils anderen Ports gestartet werden.
Das Port 62874 - für „einfache“ netBiDiB-Knoten, die „Bonjour“ nicht beherrschen - ändert man mit z.B.:
java -jar bidib-broker-latest.jar –connection.side-entrance.port=62873
Allerdings muss man die Portnummer in allen „einfachen“ Anwendungen ebenfalls anpassen.
Das Port 62875 ist für die Kommunikation mit einem Host-System zuständig, wie z.B. dem Wizard. Änderung der Portnummer, z.B.:
java -jar bidib-broker-latest.jar –master-data.tcp-port-number=62877
Die Port-Nummer muss natürlich frei sein und auch im Host-System entsprechend angepasst werden.
Alle Startparameter können, getrennt durch Leerzeichen, hintereinander geschrieben werden.
Was tun, wenn Broker mit der Meldung "Web server failed to start. Port 62876 was already in use." abbricht?
Unter widrigen Umständen kann der Start Brokers mit der folgenden Meldung scheitern:
In diesem Falle verwendet eine andere Anwendung das Port 62786, der für die Pairing-GUI zuständig ist. Oder Broker ist irregulär beendet worden und konnte das Port nicht mehr schließen. Damit steht das Port für den aktuellen Broker nicht mehr zur Verfügung.
Wenn man die Anwendung kennt, sollte sie beendet und nach Broker gestartet werden. Hat jetzt die andere Anwendung das Problem, bleibt die Möglichkeit Broker mit einem anderen Port zu starten, z.B.:
java -jar bidib-broker-latest.jar –server.port=62879
In diesem Beispiel muss das Port ausprobiert werden und in der Browser-GUI entsprechend übernommen werden.
Ist die blockierende Anwendung nicht zu ermittelt, bleibt als Abhilfe nur die Brechstange, indem der Verursacher identifiziert und radikal beendet wird. Hier unter Windows am Beispiel Port 62876: