NEWS
Frigate Adapter für ioBroker
-
@minki ,
wenn du im MQTT Adapter das "Eigene States beim Verbinden publizieren oder States bei subscribe publizieren" eingeschaltet hast, muss bei jeder Kamera in den MQTT Objekten "detect.state, motion.state usw" ON stehen. Wenn OFF drinnen steht sendet er beim neu verbinden ein false und schaltet die Funktion aus.
Das ist das Problem wenn du über die Weboberfläche ein oder ausschaltest und der MQTT Adapter nicht läuft, da bekommt er den Status nicht mit. -
@wal
Mein lieber Walter! Du hast mein Problem gelöst und verhindert das eine wehrlose Flasche Weisswein heute Abend missbraucht wird! Genau das war das Problem!
Darauf wäre ich nicht gekommen. Danke dir vielmals! -
v0.2.5 ist jetzt im stable
neu v0.2.6 im latest
add lastcamid and camid
Erleichterung beim zusammensetzen des Dateinamens, wenn man lokal Zugriff auf den Snapshot/Clip hat.
-
@Wal : Guter Adapter
Hab die Logs allerdings voll, dass bool erwartet wurde, aber string reinkam, z.B:
State value to set for "frigate.0.decka.car.snapshot" has to be type "boolean" but received type "string"
Ich denke, hier liegt der Hund begraben (state wird als bool statt string angelegt):
https://github.com/Bettman66/ioBroker.frigate/blob/0c4765ed047dc475960e70fd9ec050d6072b412f/main.js#L92Vielleicht schafft es eine Korrektur in eine der nächsten Updates
-
@moista ,
ich wandle im Adapter die String Objekte (On/OFF) vom MQTT-Adapter in Bool Objekte (True/False) um.if (type.toString() == 'string') if (state.val == 'ON') state.val = true; else if (state.val == 'OFF') state.val = false;
Man kann mit Bool Objekten in der Vis besser arbeiten.
Was bei dir schief läuft kann ich i.M. nicht sagen, da ja Strings erwartet werden.edit: "frigate.0.decka.car.snapshot" ist ein Ordner, dem wird kein Wert zugewiesen.
-
@moista ,
das Objekt "frigate.0.decka.car.snapshot" dürfte es gar nicht geben sehe ich gerade.
So müsste er lauten frigate.0.decka.snapshots.set
Kannst du eine Bildschirmcopy deiner Objekte hier mal zeigen ? -
@Wal
Die Umwandlung von ON/OFF in bool ist auch OK, wie du auch vermutest gibt es den snapshots.set als bool. Für den Snapshots aber nicht, da kommt das JFIF als string encoded rein.Ich weiß gerade nicht, ob du jetzt gerne einen Screen von mqtt oder von frigate haben möchtest und von welchem Bereich genau (der Datentyp ist ja nicht im Baum ersichtlich), daher hoffe ich, dass du mit dem JSON evtl. besser arbeiten kannst ("decka" ist jetzt "eingang"). Ansonsten kann ich natürlich auch Screens anfertigen - muss nur wissen, von was genau
Ich häng auch mal eine gekürzte frigate.yml an, vielleicht hab ich da ja irgendwas falsch eingestellt, so dass sich das bei mir anders verhält als du es erwartest?
mqtt.0.frigate.eingang.json
frigate.0.eingang.json
frigate.ymlDie enthaltenen Snapshots (JFIF...) hab ich durch "JFIF-ERSETZT-MANUELL" ersetzt, damit das JSON nicht so groß ausfällt.
-
@moista ,
mir fällt ein was das ist, es ist ein Bild das deaktiviert werden muss in Frigate.cameras: doorbell: ffmpeg: hwaccel_args: preset-vaapi inputs: - path: rtsp://192.168.xxx.xxx:8554/doorbell?mp4 roles: - detect - record detect: width: 960 height: 720 mqtt: enabled: False
So wird das für die Kamera deaktiviert.
mqtt:
enabled:FalseIch schau mal, ob ich das im Adapter deaktivieren kann.
-
@wal Gehört vielleicht nicht wirklich zum Thema, aber mit einen OrangePi5 OHNE Corel laufen 5 Kameras problemlos, wo der Raspi4 MIT Corel schon gepusted hat.
-
@hardyvo ,
die Corel haben nichts mit der Menge der Kameras zu tun, die sind für Objekterkennung zuständig.
Es steht und fällt immer wie viele Streams gewandelt werden müssen und ob der Videoserver über Hardware die Streams wandelt oder über Software. Im besten Fall wenn sie nicht gewandelt werden müssen. -
@moista ,
die Warnungen dürften jetzt weg sein wenn du den Adapter über Github aktualisierst. -
Servus miteinander!
Großen Dank an @Wal für den Adapter, läuft hier seit Wochen Stabil und ohne Probleme
Eine Sache die mich noch beschäftigt ist: Wenn eine Person erkannt wird, dass ich mir eine Nachricht mit Bild über Pushover zukommen lasse.
Das Skript funktioniert soweit Tadellos, nur ist das Bild das gesendet wird, immer das vorletzte.
Ich habe gestern erstmal rausgefunden, dass der bzw. die Datenpunkte unter frigate.0.Kamera.objects.person.web.snap erst dann aktualisiert werden, wenn die Person nicht mehr erkannt wird.
Bzw. anders formuliert: Wenn eine aktuelle Bewegung erkannt wird und der Erkennungsprozes noch läuft, wird kein Snapshot erstellt.Wie löst ihr das? Macht ihr ein Snapshot direkt von der Kamera?
Anbei mal mein Skript dazu:
-
@sidm ,
ja ich mach meine Snapshot direkt, deshalb ist das mir auch noch nicht aufgefallen. -
Ah super, bin ich doch nicht blind
Dann muss ich nochmal bei mir schauen. Hatte es gestern mal mit den Snapshot der Reolink probiert, allerdings war die erstellte Datei dann leer.
-
@sidm ,
ich mach das so wenn jemand klingeltvar request = require('request'); var fs = require('fs'); var bell = true; var snap = ''; function sendImage() { request.get({url: 'http://192.168.133.10:5000/api/doorbell/latest.jpg?h=600', encoding: 'binary'}, function (err, response, body) { fs.writeFile(snap, body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.0', {text: snap, caption: 'Jemand klingelt an der Haustür !!!'}); sendTo("email", { to: "xxx@gmx.de", subject: "Message from ioBroker", text: "Jemand klingelt an der Haustür !!!", attachments: [{path: snap}] }); sendTo("email", { to: "xxx@gmx.net", subject: "Message from ioBroker", text: "Jemand klingelt an der Haustür !!!", attachments: [{path: snap}] }); sendTo("email", { to: "xxx@gmx.net", subject: "Message from ioBroker", text: "Jemand klingelt an der Haustür !!!", attachments: [{path: snap}] }); sendTo("email", { to: "xxx@gmail.com", subject: "Message from ioBroker", text: "Jemand klingelt an der Haustür !!!", attachments: [{path: snap}] }); } }); }); } on({id: "mqtt.0.piface.input.DoorBell_1", val: true}, function (obj) { if (bell) { snap = '/opt/iobroker/snapshots/snap_' + formatDate(obj.state.lc, 'TT.MM.JJJJ_hh:mm:ss') + '.jpg'; sendImage(); } bell = false; setTimeout(function() { bell = true; }, 120000);
edit: die Snapshot-Url kommt von der Frigate Api
editedit: du musst da dein Kameranamen einsetzen -
-
Super genau das hatte ich gesucht, danke dir! Läuft
-
Hallo,
keine Ahnung ob es gewollt ist oder nicht, aber wenn bei Frigate die Snapshots deaktivuert sind für camX, aktualisiert der Adapter trotzdem das Objekt: frigate.0.camX.objects.person.web.clip.clip_0, da scheinbar was getriggert wurde. In Frigate wird ja auch immer ein Thumbnail generiert des letztens Objekt.
Öffnet man aber die Url ist kein Event verfügbar, da die Funktion Snapshots ja auch aus war und somit kein JPG erzeugt wurde.
Ein Idee daher meinerseits, das Objekt erst zu aktualisieren, wenn auch die Funktion in Frigate überhaupt aktiviert ist.
Grüße
dragst3r -
@dragst3r ,
du kannst über Github installieren und testen, müsste jetzt funktionieren. -
@wal
Danke für die Aktualisierung, leider funktioniert es nicht.
Wann wird das Objekt in Clip_n aktualisiert? Wenn sich das Objekt frigate.0.camX.objects.person.id ändert?Mmn müsste bevor das Objekt aktualisiert wird, geprüft werden ob frigate.0.camX.snapshots.state true ist.
Viele Grüße
dragst3r