Also, ich habe ein wening in dem Modul experimentiert und es lässt sich wie folgt umsetzen:
Ich habe in DOORBIRD einen HTTPS Aufruf mit doorbirdevent=rdif1 angelegt. Gleich aufgebaut wie die Webhooks aus dem Modul.
Dann habe ich in der Funktion „ProcessHookData“ folgendes eingefügt: (Änderung zwischen BOMMH und EOMMH)
//Auswerten von Events von Doorbird BOMMH hier eventuell RFID einfügen
// Doorbird nutzt GET
if (isset($_GET['doorbirdevent'])) {
$this->SendDebug('Doorbird:', json_encode($_GET), 0);
$data = $_GET['doorbirdevent'];
if ($data == 'doorbell1') {
$this->SetLastRingtone(1);
} elseif ($data == 'doorbell2') {
$this->SetLastRingtone(2);
} elseif ($data == 'doorbell3') {
$this->SetLastRingtone(3);
}elseif ($data == 'doorbell4') {
$this->SetLastRingtone(4);
}elseif ($data == 'doorbell5') {
$this->SetLastRingtone(5);
}elseif ($data == 'doorbell6') {
$this->SetLastRingtone(6);
}elseif ($data == 'motionsensor') {
$this->SetLastMovement();
} elseif ($data == 'dooropen1') {
$this->SetLastDoorOpen(1);
} elseif ($data == 'dooropen2') {
$this->SetLastDoorOpen(2);
} //BOMMH
elseif ($data == 'rfid1') {
$this->SetLastRFID(1);
}
//EOMMH
Zusätzlich habe ich eine Funktion SetLastRFID() hinzugefügt, im gleichen Stil wie die bereits vorhandenen:
//BOMMH hier SetLastRFID() einfügen
protected function SetLastRFID($rfid_id)
{
$relaxationrfid = $this->ReadPropertyInteger('relaxationrfid');
if ($rfid_id == 1) {
$last_write = IPS_GetVariable($this->GetIDForIdent('LastRFID'))['VariableChanged'];
} else {
$last_write = IPS_GetVariable($this->GetIDForIdent('LastRFID' . $rfid_id))['VariableChanged'];
}
$current_time = time();
if (($current_time - $last_write) > $relaxationrfid) {
$this->SendDebug('Doorbird:', 'doorbell event', 0);
if ($rfid_id == 1) {
$this->SendDebug('Doorbird:', 'Set LastRFID ' . date('d.m.y H:i:s'), 0);
$this->SetValue('LastRFID', date('d.m.y H:i:s'));
} else {
$this->SendDebug('Doorbird:', 'Set LastRFID' . $rfid_id . ' ' . date('d.m.y H:i:s'), 0);
$this->SetValue('LastRFID' . $rfid_id, date('d.m.y H:i:s'));
}
}
}
//EOMMH
Als letztes habe ich dann noch eine STRING Varible meiner Doorbird Instanz hinzugefügt und dort noch den passenden IDENT gesetzt:
IPS_SetIdent(int RFIDVariablenID,"LastRFID");
Ich habe somit den Zeitcode von meinen RFID Chip bekommen.
Leider hab ich nur einen CHIP hier um das zu testen.
@Fonzo
Vielleicht kann man ja RFIDs in die Automatische Installation mit aufnehmen. Aktuell hätte ich das so implementiert, das der Ident dann immer LastRFID und LastRFID.Zahl wäre.
edit:
Zusätzlich braucht es noch diese Einträge:
In protected function FormHead()
//BOMMH
[
'name' => 'relaxationrfid',
'type' => 'NumberSpinner',
'caption' => 'relaxation (s)'], //EOMMH
und in Public function Create():
//BOMMH
$this->RegisterPropertyInteger('relaxationrfid', 10);
//EOMMH
Gruß
Maze