NEWS
[Frage]Skript zur Steuerung ONVIF Kameras
-
Er hat doch Windows ... du nicht
Nimm das erstmal als Füller ... :const dest_path = '/opt/iobroker/iobroker-data/files/vis.0/snapsonvif.jpg';
@Alexxx2005 sagte in [Frage]Skript zur Steuerung ONVIF Kameras:
@Glasfaser
Habe jetzt mal das WebInterface der Kamera geöffnet wenn ich dann die
Kamera im VIS bewege , bewegt sie sich auch im WebInterface , ich verstehe
nur nicht warum das Widget kein Bild anzeigt , als Quelle wird hier auf :
{javascript.0.Xeoma.Kamera.1.IP} verwiesen , benötige ich ein weiteres Skript
zum Bild anzeigen ?Meinst du das :
Dort kannst du deine URL auch eingeben (Snapshot )http://user:passwort@.......
-
@Glasfaser said in [Frage]Skript zur Steuerung ONVIF Kameras:
snapsonvif.jpg';
Okay ja ich benötige einen Windows Pfad da iobroker bei mir auf einem
Nuc mit Windows läuft.Verstehe jetzt nur nicht ob die Klammern \ oder so / hin müssen normal ja :
C:\Program Files\iobroker\SmartHome\iobroker-data\files\vis.0\snap.jpg
Das nächste große Problem ist wie finde ich die Snapshot URL heraus
da es sich um eine Kamera handelt die nicht so gängig ist (5MP YoLuke
PTZ) , habe ich mit dem Programm Ispy64 hunderte URL`s ermittelt aber
die wo ich mal getestet haben gehen nicht :rtsp://admin:admin@192.168.86.34:554/1 rtsp://192.168.86.34/12: http://admin:admin@192.168.86.34/snap.jpg?JpegCam=0
Kennst du zufällig Möglichkeiten oder gibt es ein Skript sowas auszulesen ?
Danke, Grüße Alex
-
Mit dem Windows Pfad kann ich dir nicht helfen ….
Kennst du zufällig Möglichkeiten oder gibt es ein Skript sowas auszulesen ?
Von Jey Cee der Adapter onvif v0.1.x , ist sehr gut !
-
habe nun festgestellt das nach einem Iobroker neustart die URL
http://<IP>/web/tmpfs/snap.jpg http://Name:PW@<IP>/snap.jpg?JpegCam=1
funktioniert.
Was noch nicht funktioniert ist der PTZ Present ist es möglich diese
Steuerung im Skript anzupassen ?Nach Stundenlangen Googeln kam ich auf diesen Pfad was durch ändern
der Number=1 die verschiedenen Postionen anfährt.http://<IP>/cgi-bin/hi3510/param.cgi?cmd=preset&-act=goto&-status=1&-number=2
Grüße Alex
-
Hallo zusammen,
ich möchte mich gerne hier mit ran hängen.
Auch ich möchte meine Cams gerne mit VIS visualisieren.
Allerdings bin ich noch recht neu in der Materie und an der ein oder anderen Stelle hakt es noch ein wenig.
Eine Stelle an der es gewaltig hakt, ist die Einbindung der CAMS.Ich habe mir den Adapter Onvif Support geladen. Die Kameras gesucht und auch gefunden.
Allerdings komme ich nun nicht weiter. Unter den Objekten wird mir die Kamera angezeigtAber wie komme ich nun an die Bilder?
Danke euch und schönes Wochenende
Gruß BamBam89 -
Du hast den offiziellen Onvif Adapter installiert ...
Nimm den Test Adapter onvif v0.1.x ,dazu kann man sagen , er funktioniert .
( aber vorher den Adapter komplett deinstallieren )
-
Grüsse,
ich habe das Script auch am Laufen. Funktioniert soweit, wenn ich die States direkt in den Objekten ändere, zum Beispiel gotopreset auf 7, Kamera geht auf Position 7. Wenn ich den State jedoch durch Blockly ändere, Datenpunkt steuern oder aktualisieren, dann wird zwar die Zahl eingetragen, aber die Kamera bewegt sich nicht !?
Wo ist der Fehler ?
-
Ich antworte mir mal selbst....
Nachdem ich alles aus dem Skript außer die gotopreset Funktion gelöscht habe, funktioniert es mit dem Blockly steuere Befehl.
-
@wiednitz könntest du eventl. deine gekürzte Version online stellen?
Habe ein ähnliches Problem und brauche eigentlich auch nur die gotopreset Funktion.
Danke -
const fC = false; const logging = false; const pfad = 'javascript.' + instance + '.Yucheng.PTZ.'; const idGotoPreset = pfad + 'gotoPreset'; const onvif = require('node-onvif'); const fs = require('fs'); createState(idGotoPreset, 0, fC, { def: 0, name: 'Kamera 1 PTZ Preset Wähler', desc: 'Preset auswählen (Zahlen von 1 bis X)', type: 'number' }); // Create an OnvifDevice object const device = new onvif.OnvifDevice({ xaddr: 'http://192.xxx.xx.xx:80/onvif/device_service', user : 'xxxxx', pass : 'xxxxx' }); // https://github.com/futomi/node-onvif#gotopresetparams-callback-method function gotoPreset (presetNumber) { // 1,2,3 kommt als ganze Zahl if (presetNumber > 0) { device.init((error) => { if (error) { log('[ERROR] ' + error.message, 'error'); return; } /*else {*/ // The OnvifServicePtz object var ptz = device.services.ptz; if (ptz) { //var profile = device.getCurrentProfile(); // debug //log(JSON.stringify(profile, null, ' ')); // debug log var params = { 'ProfileToken': 'PROFILE_000', 'PresetToken' : presetNumber.toString(), 'Speed' : {'x': 1, 'y': 1, 'z': 1} }; device.services.ptz.gotoPreset(params, (error, result) => { if (error) { log('[ERROR] ' + error.message, 'error'); } else { if (logging) log('Preset: ' + JSON.stringify(result.data, null, ' ')); // statt result.['data'] log('Camera moved to Preset #' + presetNumber.toString()); } }); } else { log('[ERROR] Your ONVIF network camera does not support the PTZ service.'); } //} }); } else { log('Preset für Kamera 1 kein valider Preset-Wert'); // debug log } } // zum bereits gespeicherten Preset X fahren (Ganze Zahl, kommt aus VIS, Scenes oder Script) on(idGotoPreset, function (obj) { if (!obj.state.ack && obj.state.val) { gotoPreset(parseInt(obj.state.val,10)); // wird später zu einem String gewandelt //setStateDelayed(idGotoPreset, 0, 500); // reset } }); // Skriptstart //setTimeout(saveImage, 15000); // setTimeout(goHome, 1000); /* setTimeout(function() { movePTZ(1,0,0,5); // rechts, 2 sek }, 1000); */
Achtung ! Hab den Profile Token an meine Kamera angepasst und verwende anderen Pfad zu den Objekten !
Habe jetzt für meine Cam endlich die http xml requests herausgefunden mit einem speziellen Programm. Eine API Dokumentation wie für Hikvision ist für meine Yucheng/Esunstar nirgends zu finden. Node-onvif ist irgendwie langsam, XML reagiert sofort, werde das wohl nicht weiter verwenden. Mit XML kann man alle Funktionen aufrufen, die auch die Konfiguration der Cam im Browser bietet.
-
@wiednitz sagte in [Frage]Skript zur Steuerung ONVIF Kameras:
Eine API Dokumentation wie für Hikvision ist für meine Yucheng/Esunstar nirgends zu finden.
Teste mal :
Schwenkt nach rechts :
http://user:passwort@192.168.178.53/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=2&mode=start
Schwenken stop :
http://user:passwort@192.168.178.53/PTZ/channels/1/PTZControl?command=PAN_RIGHT&speed=1&mode=stop
-
nein alles schon durch. Für PTZ 1 (bei cgi oder xml Aufruf muss dafür 0 eingetragen werden) funktioniert folgendes Script:
var request = require('request'); var options = { 'method': 'PUT', 'url': 'http://192.168.10.62/PTZ/1/Presets/Goto', 'headers': { 'Host': '192.168.10.62', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Authorization': 'Basic XXXXXXXXXXXXXX', 'Accept': '*/*', 'DNT': '1', 'X-Requested-With': 'XMLHttpRequest', 'If-Modified-Since': '0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded', 'Origin': 'http://192.168.10.62', 'Referer': 'http://192.168.10.62/main.html', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7', 'Cookie': 'userInfo=XXXXXXXXXXXXXXX; stream=1; language=de; commandPort=6060; rtspPort=554' }, form: { 'Param1': '0' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); }); setStateDelayed('javascript.' + instance + '.scriptEnabled.' + name.slice(10), false, 3*1000);
Url, Cookie und Parameter gilt es eben herauszufinden, ohne Doku ein Rätsel, aber nun gelöst
-
Hallo welches Widget benutzt ihr um den livestream anzuzeigen?