VTO Event-Script Anbindung an ioBroker

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,147
Punkte für Reaktionen
202
Punkte
63
Du kannst mitsniffen, das würde mir auch schon reichen um zu sehen, ob da wirklich kein Indiz für den User von der VTO daherkommt.
Unter Linux:
Code:
tshark -f "host x.x.x.x" -w /tmp/vtotrace1.pcap
und dann Code eingeben. x.x.x.x ist die IP der VTO.
Das /tmp/vtotrace1.pcap würde auch die Info beinhalten.
 

rettroo

Neuer User
Mitglied seit
1 Jan 2021
Beiträge
19
Punkte für Reaktionen
6
Punkte
3
Hab dir die Datei per PN gesendet
 

riogrande75

Aktives Mitglied
Mitglied seit
30 Okt 2017
Beiträge
1,147
Punkte für Reaktionen
202
Punkte
63
Tja, ist offenbar so. Im Event steht leider nichts mit drinnen, was auf den User hindeuten würde.
Du musst dich für diesem Fall also der HTTP API Abfrage bedienen. Sollte ja keine große Sache sein, dass in das Script mit einzubauen.
 

rettroo

Neuer User
Mitglied seit
1 Jan 2021
Beiträge
19
Punkte für Reaktionen
6
Punkte
3
Wird neben dem User auch das eigegebene Passwort nicht gesendet? Schade...

Leider habe ich 0 Ahnung wie ich die API Abfrage ins Script bekomme. Die Events werden nicht über das API abgerufen? Wie funktioniert das sonst?

Ich habe nur die Abfrage der Serial im Script. Auf der müsste man aufbauen. Vielleicht findet sich hier jemand der mir zu Hilfe kommt? :cool:

Code:
`http://${this.dahua_host}/cgi-bin/magicBox.cgi?action=getSystemInfo`
 

Pseudoreal

Neuer User
Mitglied seit
10 Apr 2020
Beiträge
52
Punkte für Reaktionen
2
Punkte
8
Hallo,

ich habe mich jetzt auch mal an dem Thema Dahua und iobroker versucht, bin aber noch nicht weitergekommen. Was ich bereits gemacht habe:
  1. mqtt installiert und konfiguriert. Es gibt mir als Status gelb zurück, da es mir sagt, dass noch nichts verbunden ist (logisch, das JavaScript verbindet sich noch nicht)
  2. dahuavto2mqtt container auf der Synology im Docker zum laufen gebracht und konfiguriert. Hier bekomme ich den ersten Fehler: Failed to retrieve Dahua model, error: HTTPSConnectionPool(host='192.168.178.10', port=443): Max retries exceeded with url: /cgi-bin/magicBox.cgi?action=getSystemInfo (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)'))), Line: 296 -
  3. Als Alternative zu 2. das Script aus Post 6 eingeführt - hier bekomme ich die Fehlermeldung im ioBroker log, die inhaltlich identisch ist mit dem Fehler aus 2: Error: request to https://192.168.178.10:443/cgi-bin/magicBox.cgi?action=getSystemInfo failed, reason: unable to verify the first certificate
Ich vermute, die Fehlermeldungen kommen daher, dass ich kein gültiges Zertifikat für die IP habe - ich aber auch nicht weiß, wie ich ein Zertifikat für lokale IP Adresse erstellen kann oder wie ich diese Prüfung ausschalten kann.
EDIT: Nachdem ich die SSL Verschlüsselung in der VTO ausgeschaltet hatte, konnte ich mich via script und mqtt verbinden

Trotz der Fehlermeldungen sehe ich im docker container von dahuavto2mqtt im Protokoll die Events die Ankommen ( INFO __main__ Publishing MQTT message DahuaVTO/VideoMotion/Event: {'Action': 'Start', 'Code': 'VideoMotion', 'Data': {'LocaleTime': '2021-04-08 10:27:07', 'UTC': 1617874027.0}, 'Index': 0})

Irgendeine Idee?

Ferner noch eine Verständnisfrage: wenn ich dann die Verbindung zum mqtt habe - entweder via javascript in iobroker oder via container im docker, dann kommen "Events" im mqtt an, und ich muss dann noch in iobroker sagen (im mqtt oder mit was anderem), was er bei einem ankommenden Event machen soll, korrekt?
 
Zuletzt bearbeitet:

Pseudoreal

Neuer User
Mitglied seit
10 Apr 2020
Beiträge
52
Punkte für Reaktionen
2
Punkte
8
@riogrande75

Ich bekomme desöfteren im Log folgende Warnung, an was könnte das liegen:

Code:
    (1196) script.js.DAHUA.Dahua_Script: Unknown severity level "[object Object]" by log of [handleGenericPayload# Cannot handle received payload]
Konntest Du das Problem lösen? Ich habe das auch...
 

Pseudoreal

Neuer User
Mitglied seit
10 Apr 2020
Beiträge
52
Punkte für Reaktionen
2
Punkte
8
@rettroo

ich habe das script von riogrande75 nun zum Laufen gebracht. Ich habe im ioBroker nun dein Script als JS gepostet und funktioniert einwandfrei.
Ich möchte nun auf den Event "FingerPrintCheck" reagieren und auf FingerprintID -1 abfragen, allerdings habe ich keinen Weg gefunden? Irgendeine Idee?

Danke
 

rettroo

Neuer User
Mitglied seit
1 Jan 2021
Beiträge
19
Punkte für Reaktionen
6
Punkte
3
Zuletzt bearbeitet von einem Moderator:

Pseudoreal

Neuer User
Mitglied seit
10 Apr 2020
Beiträge
52
Punkte für Reaktionen
2
Punkte
8
in MQTT kommt folgendes an:
{"Data":{"FingerPrintID":6,"LocaleTime":"2021-05-03 08:17:42","UTC":1620026262},"deviceType":"VTO4202F","serialNumber":"xxxxxxxxxx"}

Ich bräuchte den Wert der FingerPrintID. In den Beispiel also die 6
 

rettroo

Neuer User
Mitglied seit
1 Jan 2021
Beiträge
19
Punkte für Reaktionen
6
Punkte
3
Versuch mal folgendes Javacode-Script

Den Datenpunkt "0_userdata.0.FingerPrintID" musst du erstellen und die Pfade anpassen.

Code:
on({id: "mqtt.0.DahuaVTO.AccessControl.Event", change: "any"}, function (obj) { ParseCommand(obj); });

function ParseCommand(obj) {

  let value = obj.state.val;

  let FingerPrintID = "";
 
  try {
    obj = JSON.parse(value);

    UserID = obj.Data.CardNo;
 
    setState('0_userdata.0.FingerPrintID', (FingerPrintID));
   
  } catch (e) {
    return;
  }
}
 
  • Like
Reaktionen: Pseudoreal

Pseudoreal

Neuer User
Mitglied seit
10 Apr 2020
Beiträge
52
Punkte für Reaktionen
2
Punkte
8
Danke, nach leichter Anpassung hat es nun funktioniert:
Code:
on({id: "mqtt.0.DahuaVTO.FingerPrintCheck.Event", change: "any"}, function (obj) { ParseCommand(obj); });
function ParseCommand(obj) {
  let value = obj.state.val;
  let FingerPrintIDJS = "";

  try {
    obj = JSON.parse(value);
    FingerPrintIDJS = obj.Data.FingerPrintID;

    setState('0_userdata.0.FingerPrintID', (FingerPrintIDJS));
  
  } catch (e) {
    return;
  }
}
 
Zuletzt bearbeitet:

Erhalten Sie 3CX für 1 Jahr kostenlos!

Gehostet, in Ihrer privaten Cloud oder on-Premise! Ganz ohne Haken. Geben Sie Ihren Namen und Ihre E-Mail an und los geht´s:

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.
oder via