Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| tc:webcam:modellbahn-wiki [22.07.2025 12:09] – angelegt Martin Fitzel | tc:webcam:modellbahn-wiki [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Einbindung von Webcams in TrainController ====== | ||
| + | |||
| + | ===== Hardware Kamera ===== | ||
| + | |||
| + | Unsere Modellbahn-Anlage ist über viele Räume verteilt, da macht es Sinn, dass man die Bauabschnitte mit Hilfe von Kameras überwachen kann. Wir haben derzeit insgesamt 4 Robocams in 4 Räumen installiert. Jede der Kamera hat eine IP-Adresse und kann über " | ||
| + | |||
| + | Eine der Ideen war nun, dass TrainController diese Kameras steuern soll, denn wer, wenn nicht TC weiß, wo gerade Züge unterwegs sind. | ||
| + | |||
| + | Um den ganzen Raum überwachen zu können, bedarf es einer PTZ-Kamera. PTZ steht für " | ||
| + | |||
| + | Bei der Wahl der Kamera ist darauf zu achten, dass man Kommandos über eine frei zugängliche API zu steuern ist, d.h. der API-Code sollte quelloffen bereit liegen. | ||
| + | |||
| + | ===== Einbindung in TrainController ===== | ||
| + | |||
| + | Und damit kommen wir zur Schnittstelle zu TrainController: | ||
| + | |||
| + | Wenn das einmal im Stellwerk (oder einem weiteren Stellwerk) hinterlegt ist, dann bedarf es einer Automatik, die solche Knöpfe für uns " | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Was genau aufgerufen wird, hängt immer von der Kamera ab, da jeder Hersteller da seine eigenen Parameter definiert. Die Funktionalitäten sind zwar immer gleich, aber die " | ||
| + | |||
| + | Ich habe eine " | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | |||
| + | Andere Hersteller dokumentieren ihre Kameras nicht. Bei einigen - z.B. D-Link - kann man sich die Kommandos aus dem Internet zusammensuchen. Ich habe zuerst alte D-Link Kameras benutzt, die ich noch von einem anderen Projekt übrig hatte. Die lösten aber nicht hoch genug auf und hatten keinen optischen Zoom. Eine neue HD-Kamera von D-Link hatte die gleiche API, aber D-Link hat deren Benutzung deutlich erschwert. | ||
| + | |||
| + | |||
| + | |||
| + | Prinzipiell lässt sich aber jedes IoT-Gerät steuern, das über eine (REST-)API verfügt. Das könnten z.B. auch Philips Hue Lampen sein. Tag/ | ||
| + | |||
| + | Ein Einstieg dazu findet sich hier: | ||
| + | https:// | ||
| + | |||
| + | |||
| + | |||
| + | Das wird mein nächstes IoT-Projekt. Ich habe in TC eine Programmerung, | ||
| + | |||
| + | |||
| + | |||
| + | Wie man dann wann die Kamera positioniert, | ||
| + | |||
| + | Zuerst habe ich noch zwei Schalter definiert: 1. Steuerung generell an und aus. 2. Kamera ist grade in Benutzung. | ||
| + | |||
| + | Jedes Makro testet zuerst beide Schalter, schaltet dann den " | ||
| + | |||
| + | Prinzipiell gibt es drei verschiedene Kommandos: Kamera bewegen, Preset setzen, Preset aufrufen. | ||
| + | |||
| + | |||
| + | |||
| + | Am einfachsten sind die Kommandos für das Aufrufen eines Presets. Hier ein Beispiel meiner Kamera zum Aufruf des Presets Nummer 3 (für alle Beispiele gilt, dass man die IP-Adresse der Kamera sowie Username und Passwort ersetzen muss): | ||
| + | |||
| + | |||
| + | |||
| + | curl -H " | ||
| + | |||
| + | Hinter "/ | ||
| + | |||
| + | Die Kamera hat ein eigenes Web-Interface, | ||
| + | |||
| + | Ich habe aber auch diese Funktionen in TC übernommen. | ||
| + | |||
| + | |||
| + | |||
| + | Beispiel für das Kommando hinter einem Speicher-Knopf für Preset 3: | ||
| + | |||
| + | |||
| + | |||
| + | curl -H " | ||
| + | |||
| + | |||
| + | Hier müssen zusätzliche Parameter im XML-Format mitgeschickt werden. Diese stehen in einer Datei mit dem Namen " | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | |||
| + | |||
| + | Gespeichert wird die Position, die die Kamera in dem Moment hat. Man muss sie also vorher forthin bewegen. | ||
| + | |||
| + | |||
| + | |||
| + | Beispiel für das Bewegen der Kamera: | ||
| + | |||
| + | |||
| + | |||
| + | curl -H " | ||
| + | |||
| + | |||
| + | |||
| + | Die Datei " | ||
| + | |||
| + | |||
| + | < | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | Die Parameter pan, tilt und zoom definieren also die Richtung (-1 = links/ | ||
| + | Duration ist die Bewegungszeit in Millisekunden. | ||
| + | |||
| + | Für alle Bewegungen habe ich dann entsprechend Batch- und XML-Dateien erstellt. Die Knöpfe rufen dann die entsprechende Batch-Dateien auf. | ||
| + | |||
| + | |||
| + | |||
| + | Wir brauchen ja auch ein Bild. | ||
| + | |||
| + | |||
| + | |||
| + | Der Videostream der Kamera lässt sich so anzeigen: | ||
| + | |||
| + | |||
| + | |||
| + | **rtsp:// | ||
| + | |||
| + | |||
| + | Das ist das Bild in hoher Qualität und klappt z.B. mit VLC. | ||
| + | |||
| + | |||
| + | In einem Webbrowser bekommt man auch ein einfaches Bild angezeigt: | ||
| + | |||
| + | |||
| + | |||
| + | http:// | ||
| + | |||
| + | |||
| + | |||
| + | Das hochauflösende Bild kann man z.B. mit der freien Software OBS aufzeichnen oder Streamen. Z.B. nach Youtube. So kann ich live von der Anlage auf Youtube senden. | ||
| + | |||
| + | Man braucht auf jeden Fall auch das Webinterface der Kamera, um die Bildqualität, | ||
| + | |||
| + | |||
| + | |||
| + | LINK: https:// | ||