Hallo,
ich bekomme es einfach nicht hin. Habe zwei 9008er und eine 9020er Kamera und würde diese gerne in Home Assistant einbinden. Eigentlich reicht es mir schon wenn ich die Kameras über einen Bewegungsmelder der auch in HA eingebunden ist zum auslösen einer Aufnahme bewegen kann. Ich habe jetzt schon viel gelesen und probiert, aber leider alles ohne Erfolg (MQTT usw.). Wäre vielleicht einer von euch so nett und nimmt mich einmal an die Hand???
Danke danke !!!
Wenn das Alarmereignis des BM bereits in HA ankommt, braucht man nur einen kurzen Befehl zur Kamera senden. Z.b. über HTTP:
/param.cgi?cmd=setmanualrecattr&enable=1&time=15&=pre=0
Wenn die Kamera über MQTT eingebunden ist kann man die gewünscht Aufnahmelänge in Sekunden [1s-900s] auch an das folgende Topic senden:
task/video/manualrec/time
z.B.{"val": "15"}
Das senden kann dann als „Switch“ in HA angelegt werden - sowohl über MQTT als auch HTTP. Für letzteres findet man hier z.B. einen Foreneintrag:
Sorry aber ich stelle mich wohl einfach zu töffelig an.
Deine verlinkten Hinweise sind mir dann doch noch etwas zu hoch.
Wenn ich folgenden Befehl über einen Browser eingebe nimmt die Kamera auch auf.
http://user:pwd@IP.44:port/param.cgi?cmd=pushhostalarm
Wenn ich diese URL über Home Assist oder auch über einen Shelly aufrufen lasse, passiert einfach nichts. So langsam bin ich echt am verzeifeln denn so schwer kann es doch nun wirklich nicht sein…oder ???
Wäre echt klasse wenn mir jemand einmal helfen könnte.
Danke danke !!!
Mit dem Befehl wird ein Alarm ausgelöst - mit allen aktivierten Alarmaktionen. Wenn man nur die Aufnahme starten möchte kann man einfach den folgenden Befehl senden:
/param.cgi?cmd=startrec&time=15
EDIT:
Ich sehe gerade, es handelt sich um Full HD Kameras. Bei denen nimmt man am besten den pushhostalarm
- der startrec
funktioniert nur mit WQHD und FQHD Kameras.
Und bzgl. des Logins - am besten die Benutzerdaten als Query anhängen. Das Voranstellen …
http://user:pwd@IP.44:port/param.cgi?cmd=pushhostalarm
…wird oft blockiert. Das Anhängen schaut dann so aus:
http://IP.44:port/param.cgi?cmd=pushhostalarm&user=user&pwd=pwd
Und beim Login darauf achten, dass dieses keine „gefährlichen“ Sonderzeichen beinhaltet. Wenn diese vorhanden sind - einfach „%-kodieren“:
Erst einmal danke für deine Hilfe.
Leider verzweifle ich weiterhin. Ich habe die URL nach deinen Vorgaben angepasst (natürlich meine richtige IP und die richtigen Zugangsdaten---------die haben auch keine Sonderzeichen)
http://111.222.333.444:555/param.cgi?cmd=pushhostalarm&user=xxxx&pwd=xxxxxxx
http://111.222.333.444:555/param.cgi?cmd=pushhostalarm&-usr=xxxx&-pwd=xxxxxxx
Trotzdem wird leider einfach keine Aufnahme gestartet. Wenn du weitere Tips hast würde ich mich echt freuen. DANKE !!!
Nachtrag: Wenn ich beide oben aufgeführte URL im Browser eingebe funktioniert es. Dann wird eine Aufnahme gestartet??? Komisch oder??
Der erste Befehl mit user
ist für WQHD und FQHD Kameras. Der untere mit -usr
für HDs und FHDs.
Ich würde mal den hier beschriebenen Switch probieren. Der würde dann einen Schalter erzeugen, der beim Aktivieren den Befehl sendet. Sobald man das am Laufen hat, kann man es „verkomplizieren“, indem man den Switch über ein anderes Gerät in HA schalten lässt.
Erst einmal danke für die Hilfe. Leider bin ich noch nicht gaaanz so tief in der Materie…sorry.
In der verlinkten Anleitung geht es leider um ein anderes Gerät und ich weiß jetzt nicht genau wie ich es bei mir in der configuration.yaml eintragen muss. Wäre es zuviel verlangt mir einmal ein fertigen Eintrag zu erstellen? Ich hänge den Eintrag vom Beispiel einmal mit ran.
switch:
- platform: command_line
switches:
axis:
friendly_name: ‚Axis Speaker‘
command_on: ‚curl -k „http://user:password@192.168.1.155/axis-cgi/virtualinput/activate.cgi?schemaversion=1&port=1“‘
command_off: ‚curl -k „http://user:password@192.168.1.155/axis-cgi/virtualinput/deactivate.cgi?schemaversion=1&port=1“‘
Am einfachsten gehts es m.E. per MQTT - da kann man einfach dieser Anleitung folgen:
Aber hier einam kurz zusammengefasst für den konkreten Fall:
1.) MQTT Integration hinzufügen zu HA:
„MQTT“ auswählen:
2.) MQTT Broker in der Kamera aktivieren:
3.) MQTT HA Integration an den Kamera MQTT Broker anbinden - einfach die Daten - IP der Kamera, MQTT Port und Broker Login - von oben hier in HA eintragen:
4.) Jetzt kann man MQTT Entitäten in der HA Config hinzufügen. Um die Hauptkonfigurationsdatei „sauber“ zu halten, kann man diese einfach verlinken:
Wie die entsprechenden Topics aussehen, hängt von der MQTT Client Konfiguration in der Kamera ab:
Hier hat man das MQTT Präfix cameras
und die Client ID 201
- diese entsprechend gemäss der eigenen Konfiguration anpassen. In der Haupt-Config hatte ich die MQTT Config von hier mqtt/entities.yaml
eingelinkt. Entprechend muss jetzt das Unterverzeichnis mqtt
im HA Konfigurationsverzeichnis erstellt und eine Datei entities.yaml
darin erstellt werden. Hier können wir jetzt unsere Buttons erstellen:
Darauf achten, dass den Topics das oben konfigurierte MQTT Präfix und die Client ID vorangestellt werden muss! Bei mir war das cameras/201/
5.) Jetzt kann man die Konfiguration in HA neuladen und die neuen Geräte testen:
Klickt man z.B. auf den Alarmauslöser bekommt man hier den Button angezeigt:
Ein Klick auf „Press“ und schon taucht der Trigger Befehl per MQTT auf. Kurz danach gefolgt vom Alarmserver - wo wir den Auslöser und eventuell erkannte Objekte sehen. Und im Kamera-Logbuch sieht man, dass die Alarmauslösung erfolgreich war!
Ich werde langsam wahnsinnig…egal was ich mache, entweder es funktioniert nicht oder es kommen Fehlermeldungen? Obwohl ich wirklich bemüht bin alles richtig einzugeben. Kannst du mit diesem Fehler etwas anfangen?
so ist der Eintrag in meiner configuration.yaml.
Da auf Zeile 32 verwiesen wird, habe ich 32 und 33 einmal getauscht. Bleibt aber derselbe Fehler? Auch habe ich mal mit dem Minussymbol vor „Button“ probiert und einmal ohne. Auch derselbe Fehler. ( - Button … Button).
Der Payload wird nicht als String verwendet. Ok, da der JSON Payload das "
Zeichen braucht, musst du '
zum escapen verwenden. Also so:
button:
- name: 'Garden Alarm Trigger'
command_topic: 'cameras/115/alarm/pushalarm'
payload_press: '{"val":"1"}'
icon: mdi:alarm-light
qos: 2
retain: false
Du kannst auch online checken lassen ob es valides YAML ist:
siehe YAML Checker
Das Minus muss rein - damit unterteilst du die Liste. Also jede Zeile die mit -
ist in dem Fall eine neue Entität:
button:
- name: 'Garden Alarm Trigger'
command_topic: 'cameras/115/alarm/pushalarm'
payload_press: '{"val":"1"}'
icon: mdi:alarm-light
qos: 2
retain: false
- name: 'Garden Reboot'
command_topic: 'cameras/115/system/reboot/now'
payload_press: '{"val":"1"}'
icon: mdi:cog-refresh-outline
qos: 2
retain: false
YAML ist nur eine vereinfachte Schreibweise von JSON. Die Liste oben wird dann intern als JSON verwendet:
{
"button": [
{
"name": "Garden Alarm Trigger",
"command_topic": "cameras/115/alarm/pushalarm",
"payload_press": "{\"val\":\"1\"}",
"icon": "mdi:alarm-light",
"qos": 2,
"retain": false
},
{
"name": "Garden Reboot",
"command_topic": "cameras/115/system/reboot/now",
"payload_press": "{\"val\":\"1\"}",
"icon": "mdi:cog-refresh-outline",
"qos": 2,
"retain": false
}
]
}
Teilerfolg !!!
Endlich hat HA alles akzeptiert. Der Button ist richtig eingepflegt und läuft auch.
Jedoch passiert nichts wenn man ihn dann drückt. Eine Aufnahme lässt sich einfach nicht auslösen???
Wir sind ja schon einmal auf dem richtigen Weg. Wenn du jetzt noch eine Idee hast nehme ich sie gerne. Wenn deine Geduld langsam zu Ende geht verstehe ich das natürlich und bedanke mch recht herzlich für deine Mühe !!!
Per CGI Befehl wird der Alarm aber ausgelöst?
param.cgi?cmd=pushhostalarm
Nicht das da eventuell der Alarm pausiert ist auf der Kamera
Um das MQTT zu debuggen nutzt man am besten den MQTT Explorer:
Da schauen ob alle Status Topics reinkommen und ob das gewünschte passiert wenn man einen Befehl absendet.
Also auf der Linken Seite sollten alle Status Topics zu sehen sein. Man kann sich daraus die Befehl-Topics ableiten, indem man das status/
entfernt. Den Befehl dann unten rechts reinkopieren und den gewünschten Payload darunter im JSON Format.
Zum Testen kann man z.B. unter Multimedia/Privacy die Privatsphären aktivieren/deaktivieren - dann sieht man sofort im Livevideo ob es funktioniert hat.
Kurz noch eine Anmerkung. Das ist ja eigentlich schon die ganze Zeit mein Problem. Ich kann ja über den MQTT Explorer von HA ein Publish absenden, der jedoch keine Wirkung hat? Da liegt also irgendwo der Fehler. Ich kann über MQTT einfach keine Aufnahme an der Kamera auslösen und weiß nicht warum.
Wenn ich auf Publish drücke müsste die Kamera ja eigentlich eine Aufnahme starten. Das macht sie allerdings nicht!
Sorry hatte es erst jetzt gelesen.
Bei dem Befehl „* param.cgi?cmd=pushhostalarm
“ löst die Kamera aus!
Die Kamera scheint da ja mit einem externen Broker in HA verbunden zu sein? Wie schaut es aus, wenn man in der Kamera den lokalen Broker aktiviert und den MQTT Explorer direkt mit dem - anstelle des HA Brokers verbindet?
P.S. ich hatte es auch schonmal, das sich auf der Kamera etwas „verschluckt“ hatte. Betraf nur die neueren Kameras - und hängt vermutlich mit der Mosquitto 2 „Topic Retention“ zusammen, die dort aktiviert ist.
In dem Fall kann man aber einen Kamera Reset probieren. Danach gingen die Befehle dann wieder durch.
Und am besten mit den Privatsphären testen multimedia/privacy/region1/enable
/ {"val": "1/0"}
. Das ein/ausschalten sieht man sofort und es gibt nichts was das unterdrücken könnte - im Gegensatz zum Alarm.
Soooooo…wir kommen immer näher.
Ich habe jetzt den internen MQTT Broker von der Kamera genommen und schon funktioniert es mit dem Publish vom HA MQTT Explorer!
Leider musste ich ja dazu den MQTT Explorer von HA so konfigurieren, dass er die Daten von der Kamera bekommt. Jedoch brauche ich den HA Broker um die Daten von meinen anderen Geräten zu bekommen.
Wie ist der Broker denn konfiguriert? Sieht man etwas im Log wenn sich die Kamera verbindet? Irgendwelche Fehlermeldungen, wenn man einen Befehl sendet und keine Updates kommen?
Alternativ kann man auch schnell einen externen Mosquitto Broker in Docker starten und den dann als globalen Broker nutzen für alle Geräte in HA. Da hat man dann volle Kontrolle über alle Einstellungen und kann das Log im Auge behalten.
Habe es hinbekommen. Ich weiß zwar nicht genau wie, aber es funktioniert jetzt. Vielen lieben Dank für deine Zeit und Mühe !!! Danke danke