NEWS
go2rtc installieren und einrichten
-
@marc_el_k
hallo freut mich das du nun soweit bist.
tut mir leid das ich nicht rascher zurückschreben konnte, aber ich bin in der arbeit.es gibt mehrere methoden um ein script im hintergrund laufen zu lassen.
ich habe es aber nun anders gelöst.
Der sinn dahinter:
hin und wieder kommt es vor das sich mein Server neustartet, teils gewollt, teils weil er leider hengen geblieben ist. wie auch immer...... mein Wunsch ist es, wenn ich den server neustarte, dass alle programme, scripts und ähnliches von selbst laufen.
So auch go2rtc.So mache ich das:
CRONTAB.
falls du das nicht kennst: Ich kenne es aus der Website programmierung. Es geht darum scripte zu einer bestimmten Zeit automatisch auszuführen. So auch beim Neustart
Wie funktioniert es:- Crontab m uss installier sein (ich glaube das ist aber bei den meistn linux dist. bereits standardmäßig)
- gestartet wird das ganze mit "crontab -e".
- es öffnet sich in putty die crontab datei, in welcher die scripte und die entsprechende uhrzeit angegeben werden können.
- man gibt an, dass beim restart einfach die go2rrtc dateiausgeführt wird. der Vorteil: ALLE Scripts laufen im Hintergrund, welche über crontab gestartet werden. Das würde bei dir s aussehen
@reboot /usr/local/bin $ ./go2rtc_linux_arm64
möchtest du ein script immer um 15:30 ausführen schaut das so aus:
30 15 * * * /usr/local/bin $ ./go2rtc_linux_arm64
das kannst du sogar soweit abändern, das es nur an bestimmten wochentagen erfolgt. Dafür musst du nur die Werte abändern. Hier aber eine Hilfe, welche das erleichtert: https://crontab.guru/hier noch zwei scripte, welche ich nutze, da ich go2rtc manchmal neu starten möchte.
zuvor muss jedoch der laufende go2rtc process beendet werden:
das script zum beenden:#!/usr/bin/bash kill -9 $(pgrep -f 'go2rtc')
hier das script zum starten
#!/usr/bin/bash ./go2rtc_linux_arm64
ich arbeite gerade daran, dass ich die scripts mittels exec direkt aus dem iboker starte, aber leider funktioniert das noch nicht ganz, wegen pfad problemen.....
achja, crontab kannst du auch mit sudo crontab -e ausführen, aber da hatte ich probleme mit dem speicherot der automatisch angelegten ymal datei von go2rtc
-
mein Wunsch ist es, wenn ich den server neustarte, dass alle programme, scripts und ähnliches von selbst laufen.
Ich würde es in systemd als Service anlegen. Dann kann man das easy in den Boot-Prozess reinhängen.
-
@thomas-braun
okay, danke ist die crontab idee schlecht? es funktioniert nämlich einwandfreiich verzweifle eher an der scriptausführung über den iobroker. aber dazu habe ich schon ein thema eröffnet
-
Ja , cronjob sind nicht dafür gedacht, sondern dienen dazu wiederkehrende Aufgaben zu erledigen, nicht zum Start von Diensten. Dafür hat man sich sowas wie aktuell systemd oder sysinitv oder sonstige init-Systeme ausgedacht.
-
@thomas-braun said in go2rtc installieren und einrichten:
systemd oder sysinitv oder sonstige init-Systeme ausgedacht.
ja, systemd wollte ich versuchen und ich habe es jetzt nochmal versucht, aber ich scheitere am gleichen problem, wie in meinem anderen thread, nämlich dem absoluten pfad
meine service datei enthält:
[Unit] Description=starting go2rtc server [Service] User=odroid WorkingDirectory = </usr/local/bin/go2rtc/> ExecStart=</usr/local/bin/go2rtc_linux_arm64> Restart=always [Install] WantedBy=multi-user.target
fehlermeldung beim start....
in der log datei:Aug 15 18:13:27 odroidc2 systemd[1]: /etc/systemd/system/go2rtc.service:6: WorkingDirectory= path is not absolute: </usr/local/bin/go2rtc/> Aug 15 18:13:27 odroidc2 systemd[1]: go2rtc.service: Unit configuration has fatal error, unit will not be started. lines 1-16/16 (END)
bisher habe ich die datei am schreibtisch gehabt unter:
/home/odroid/Schreibtisch/go2rtc/go2rtc_linux_arm64gleiche fehlermeldung wenn ich unter pfad:
/home/odroid/Schreibtisch/go2rtc/go2rtc_linux_arm64
schreibe -
Wie kommst du an die spitzen Klammern im Pfad? Die haben da nix zu suchen.
-
@thomas-braun sagte in go2rtc installieren und einrichten:
Ja , cronjob sind nicht dafür gedacht, sondern dienen dazu wiederkehrende Aufgaben zu erledigen, nicht zum Start von Diensten. Dafür hat man sich sowas wie aktuell systemd oder sysinitv oder sonstige init-Systeme ausgedacht.
Mich würde interessieren wie es mit Systemd funktioniert. Gibt es dafür eine verständliche Anleitung?
-
@marc_el_k sagte in go2rtc installieren und einrichten:
Gibt es dafür eine verständliche Anleitung?
Moin,
ganz viele im WWW
Z.B. https://www.suse.com/de-de/support/kb/doc/?id=000019672
Wer sucht, der findet
VG
Bernd -
@thomas-braun
mein beitrag fehlt plötzlich. aber kurz version, es klappt alles -
@jumbo125 sagte in go2rtc installieren und einrichten:
es klappt alles
So soll es sein. Vielleicht kannst du @Marc_el_K ja noch ein paar Tips geben.
-
@marc_el_k
funktioniert es bei dir?
sonst gib bescheid -
@dp20eic Habe ich mir durchgelesen, aber tatsächlich hab ich es noch nicht gecheckt.
-
@marc_el_k sagte in go2rtc installieren und einrichten:
@dp20eic Habe ich mir durchgelesen, aber tatsächlich hab ich es noch nicht gecheckt.
Moin,
komme gerade vom
Santiano
Konzert, bin erst morgen wieder am Start.VG
Bernd -
@Marc_el_K
okay, hier nochmal die erklärung:- go2rtc_linux_.... runterladen. entweder über einen normalen browser oder über die Konsole, bspw. mit wget
- datei dort hin verschieben, wo sie ungestört bleiben kann bspw. usr/local/bin (bei mir liegt sie am desktop/Schreibtisch in einem unterordner)
- rechte vergeben, d.h. in den ordner wechseln, wo die datei nun liegt und mittels
chmod +x go2rtc_xxx_xxx
die rechte vergeben. Es geht auch mit dem vollständigen Pfad.
wechsel aber ev. trotzdem mittelscd dein/pfad
zum entsprechenden ordner.
So.... wenn du die rechte vergeben hast und dich im ordner befindest, kannst du mittels
./go2rtcxxxx
die datei ausführen.
klappt das, dann geht es weiter mit dem eintragen der go2rtcxxxx datei in die service scripte.
also:- falls du die datei ausgeführt hast, siehst du in der konsole die rückmeldungen, das der dienst läuft. schließe den laufenden prozess (terminal schließen, oder strg + c drücken)
2 nun wechsel zu dem ordner, in dem die verweise liegen, welche scripts, zum systemd dienst gehören.
cd /etc/systemd/system/
- nun befindest du dich im ordner /etc/systemd/system/
erstelle hier nun eine Datei mittels:
sudo nano go2rtc.service
- hier trage dann folgende daten ein:
[Unit] Description=starting go2rtc server [Service] User=odroid WorkingDirectory = der/pfad/zur/go2rtc-datei/aber/nur/den/ordner/indem/die/Datei/liegt ExecStart= der/Pfad/zur/datei/selbst/go2rtc_xxxxxxx Restart=always [Install] WantedBy=multi-user.target
- starte nun den server dienst neu, damit dein gerade erzeugter verweis auch geladen wird:
sudo systemctl daemon-reload
- nun kannst du das script über den zuvor erstellen verweis über systemd starten:
sudo systemctl start go2rtc.service
oder auch stoppen:
sudo systemctl stop go2rtc.service
- nun fügen wir noch das script zum systemd autostart, damit es beim neustart des pc auch gleich startet:
sudo systemctl enable go2rtc.service
falls du es aus der liste der autostart programme wieder löschen möchtest:
sudo systemctl disable go2rtc.service
hilft das?
-
Und wenn man ein Verzeichnis aus dem $PATH verwendet kann man das ganze auf direkt aufrufen.
Auf deinem Desktop liegt das verkehrt/ungünstig.
Wenn es schon im home eines Users liegen soll dann verwendet man dafür~/.local/bin
-
@jumbo125 sagte in go2rtc installieren und einrichten:
Zunächst vielen Dank für die Anleitung. Ich denke, sie wird vielen helfen. Tatsächlich fehlte mir nur der letzte Schritt und nun läuft auch alles wie gewünscht.
Ein Hinweis noch zu deiner Anleitung: Als ich begann die Datei herunterzuladen und aufzurufen, musste ich anfangs noch die Config Datei anlegen und ebenfalls mit den entsprechenden Rechten versehen. Nur für den Fall, dass dies hier noch weitere User lesen
-
@marc_el_k sagte in go2rtc installieren und einrichten:
...noch die Config Datei anlegen und ebenfalls mit den entsprechenden Rechten versehen...
Welche Datei meinst Du damit konkret (go2rtc.service oder go2rtc.yaml)?
Ich habe go2rtc bei mir dank der Hinweise von @Thomas-Braun derzeit soweit zum Laufen bekommen, daß es als Dienst via systemd nach jedem Boot startet. Der Zugriff auf die Video-Streams einer D-Link DCS-2132L (die ich zum Testen benutze) via Browser und VIS-iFrame-Widget funktioniert allerdings nicht über einen Reboot des Raspis hinaus, da ich die Configuration bisher nur über den go2rtc-Webserver/GUI eingeben konnte und go2rtc dies offenbar nicht eigenständig in go2rtc.yaml hinterlegt. Auch das vorherige Anlegen einer (leeren) go2rtc.yaml-Datei (mit Berechtigung 777) unter /usr/local/bin/go2rtc/ bringt hier keine Abhilfe. Ich nehme an, daß man die Konfiguration manuel via Editor in die go2rtc.yaml eingeben muß!? Allerdings habe ich im Netz dafür leider keine (Syntax-)Beispiele gefunden.
Wäre nett, wenn Du oder vielleicht @jumbo125 ein paar Tips geben könntet, wie Ihr Eure via GUI erstellte Konfiguration "reboot-sicher" gemacht habt oder vielleicht Eure go2rtc.yaml hier einstellen würdet?Probiere das ganze derzeit auf einem Debian11(Bullseye) auf nem Raspi4 8GB.
Edit:
Als ich meinen Beitrag eben abgeschickt hatte, kam die "Erleuchtung":
Die unter https://github.com/AlexxIT/go2rtc#source-rtsp stehenden "Code"-Beispiele sind bereits Einträge aus einer go2rtc.yaml.Ich habe daher einfach das unter "RTSP over WebSocket" stehende Beispiel:
streams: # WebSocket with authorization, RTSP - without axis-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&resolution=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:pass@192.168.1.123:4567/rtsp-over-websocket
für mich so abgewandelt und es funktioniert:
streams: # Konfiguration für einen rtsp-Stream: Kamera_1_rtsp: rtsp://Benutzer:Paßwort@IPmeinerKamera:Port/live1.sdp
-
@andersmacher
tut mir leid, habe erst jetzt deinen beitrag gelesen. sonst hätte ich dir früher geantwortet.ich arbeite daran, automatisch festzustellen, wenn mein video stecken bleibt, leider ist dies immer mal wieder der fall. das neuladen des iframes hilft schon, nun muss ich nur detectieren wann es soweit ist.
Der VORTEIL: wenn das mal klaoot kann ich eine motion detection sehr einfach dazuprogrammieren. dann kann man bspw über simple api einen datenpunkt ansteuern, wenn sich voir der kamera etwas bewegt. das geht sogar soweit, das man einen bestimmten bereich der kamera überwachen kann, bspw. nur bewegung in rechter unterer ecke
-
@andersmacher schön, dass du es gelöst hast. Ich meinte die .yaml config-Datei. Diese hatte ich mir vorher erstellt und dann hochgeladen. Bei mir funktionierte es zunächst nicht, dass Änderungen abgespeichert wurden, daher der manuelle Upload. Seitdem klappt es tadellos und ist für mich bislang die ressourcenschonenste Lösung von allen getesteten.
-
@jumbo125 Danke für die Rückmeldung, aber bei mir war das Problem ja dann ohnehin bereits gelöst. Dir viel Erfolg bei Deinem weiteren Vorhaben!