rdmtc / RedMatic-HomeKit

HAP-Nodejs based Node-RED nodes to create (bridged) HomeKit Accessories
Apache License 2.0
61 stars 22 forks source link

Unterstützung für HmIP-DLD #328

Open julembke opened 3 years ago

julembke commented 3 years ago

Bitte den neuen Türschlossantrieb unterstützen

ptweety commented 3 years ago

Du kannst dir in der Zwischenzeit ein Beispiel am hm-sec-key (Keymatic) nehmen und ein universal accessory erstellen, welches die richtigen Services und Characteristics beinhaltet.

Da finden sich solche Einträge für:

/**
 * Service "Lock Mechanism"
 */
export class LockMechanism extends Service {

  public static readonly UUID: string = "00000045-0000-1000-8000-0026BB765291";

  constructor(displayName?: string, subtype?: string) {
    super(displayName, LockMechanism.UUID, subtype);

    // Required Characteristics
    this.addCharacteristic(Characteristic.LockCurrentState);
    this.addCharacteristic(Characteristic.LockTargetState);

    // Optional Characteristics
    this.addOptionalCharacteristic(Characteristic.Name);
  }
}
Service.LockMechanism = LockMechanism;

/**
 * Characteristic "Lock Current State"
 */
export class LockCurrentState extends Characteristic {

  public static readonly UUID: string = "0000001D-0000-1000-8000-0026BB765291";

  public static readonly UNSECURED = 0;
  public static readonly SECURED = 1;
  public static readonly JAMMED = 2;
  public static readonly UNKNOWN = 3;

  constructor() {
    super("Lock Current State", LockCurrentState.UUID, {
      format: Formats.UINT8,
      perms: [Perms.NOTIFY, Perms.PAIRED_READ],
      minValue: 0,
      maxValue: 3,
      minStep: 1,
      validValues: [0, 1, 2, 3],
    });
    this.value = this.getDefaultValue();
  }
}
Characteristic.LockCurrentState = LockCurrentState;

/**
 * Characteristic "Lock Target State"
 */
export class LockTargetState extends Characteristic {

  public static readonly UUID: string = "0000001E-0000-1000-8000-0026BB765291";

  public static readonly UNSECURED = 0;
  public static readonly SECURED = 1;

  constructor() {
    super("Lock Target State", LockTargetState.UUID, {
      format: Formats.UINT8,
      perms: [Perms.NOTIFY, Perms.PAIRED_READ, Perms.PAIRED_WRITE],
      minValue: 0,
      maxValue: 1,
      minStep: 1,
      validValues: [0, 1],
    });
    this.value = this.getDefaultValue();
  }
}
Characteristic.LockTargetState = LockTargetState;

/**
 * Service "Battery"
 */
export class Battery extends Service {

  public static readonly UUID: string = "00000096-0000-1000-8000-0026BB765291";

  constructor(displayName?: string, subtype?: string) {
    super(displayName, Battery.UUID, subtype);

    // Required Characteristics
    this.addCharacteristic(Characteristic.StatusLowBattery);

    // Optional Characteristics
    this.addOptionalCharacteristic(Characteristic.BatteryLevel);
    this.addOptionalCharacteristic(Characteristic.ChargingState);
    this.addOptionalCharacteristic(Characteristic.Name);
  }
}
// noinspection JSDeprecatedSymbols
Service.BatteryService = Battery;
Service.Battery = Battery;

/**
 * Characteristic "Status Low Battery"
 */
export class StatusLowBattery extends Characteristic {

  public static readonly UUID: string = "00000079-0000-1000-8000-0026BB765291";

  public static readonly BATTERY_LEVEL_NORMAL = 0;
  public static readonly BATTERY_LEVEL_LOW = 1;

  constructor() {
    super("Status Low Battery", StatusLowBattery.UUID, {
      format: Formats.UINT8,
      perms: [Perms.NOTIFY, Perms.PAIRED_READ],
      minValue: 0,
      maxValue: 1,
      minStep: 1,
      validValues: [0, 1],
    });
    this.value = this.getDefaultValue();
  }
}
Characteristic.StatusLowBattery = StatusLowBattery;

/**
 * Characteristic "Battery Level"
 */
export class BatteryLevel extends Characteristic {

  public static readonly UUID: string = "00000068-0000-1000-8000-0026BB765291";

  constructor() {
    super("Battery Level", BatteryLevel.UUID, {
      format: Formats.UINT8,
      perms: [Perms.NOTIFY, Perms.PAIRED_READ],
      unit: Units.PERCENTAGE,
      minValue: 0,
      maxValue: 100,
      minStep: 1,
    });
    this.value = this.getDefaultValue();
  }
}
Characteristic.BatteryLevel = BatteryLevel;

/**
 * Characteristic "Charging State"
 */
export class ChargingState extends Characteristic {

  public static readonly UUID: string = "0000008F-0000-1000-8000-0026BB765291";

  public static readonly NOT_CHARGING = 0;
  public static readonly CHARGING = 1;
  public static readonly NOT_CHARGEABLE = 2;

  constructor() {
    super("Charging State", ChargingState.UUID, {
      format: Formats.UINT8,
      perms: [Perms.NOTIFY, Perms.PAIRED_READ],
      minValue: 0,
      maxValue: 2,
      minStep: 1,
      validValues: [0, 1, 2],
    });
    this.value = this.getDefaultValue();
  }
}
Characteristic.ChargingState = ChargingState;
ghost commented 3 years ago

Ich habe versucht es so zu lösen, aber wenn ich ehrlich bin habe ich keine Ahnung wie das gehen soll. Ich glaube das mit der Inject Node habe ich soweit. Besteht die Möglichkeit das jemand hilft bzw. auf ein Text verlinkt wo ich mir das herleiten kann?

ptweety commented 3 years ago

Eine Umsetzung (zum selber klicken) kann so aussehen:

[{"id":"198102ff.16c11d","type":"redmatic-homekit-universal","z":"f48abf30.643098","bridgeConfig":"","name":"Haustüre","services":[{"subtype":"0","service":"LockMechanism","name":"Schloss"},{"subtype":"1","service":"BatteryService","name":"Batterie"}],"x":820,"y":640,"wires":[["22c96617.e825b2"]]},{"id":"acfc7d0d.146d58","type":"inject","z":"f48abf30.643098","name":"UNSECURED LockTargetState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"0/LockTargetState","payload":"0","payloadType":"num","x":390,"y":920,"wires":[["ac70638a.dbdc9"]]},{"id":"e93cf4f3.b5cb08","type":"inject","z":"f48abf30.643098","name":"NORMAL StatusLowBattery","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"1/StatusLowBattery","payload":"0","payloadType":"num","x":880,"y":760,"wires":[["bb82ff23.85b358"]]},{"id":"4ae33d59.c0c29c","type":"inject","z":"f48abf30.643098","name":"100% BatteryLevel","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"1/BatteryLevel","payload":"100","payloadType":"num","x":850,"y":840,"wires":[["45595487.6dbbf4"]]},{"id":"25ec528.e1c61ae","type":"inject","z":"f48abf30.643098","name":"NOT_CHARGEABLE ChargingState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"1/ChargingState","payload":"2","payloadType":"num","x":900,"y":960,"wires":[["be326ca4.264e8"]]},{"id":"850edbb9.a759e","type":"inject","z":"f48abf30.643098","name":"UNSECURED LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"0/LockCurrentState","payload":"0","payloadType":"num","x":390,"y":640,"wires":[["824d0d7f.e71bc"]]},{"id":"22c96617.e825b2","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":970,"y":640,"wires":[]},{"id":"35fbfa58.da6b8e","type":"inject","z":"f48abf30.643098","name":"SECURED LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockCurrentState","payload":"1","payloadType":"num","x":380,"y":680,"wires":[["824d0d7f.e71bc"]]},{"id":"b52bd6d2.60ee4","type":"inject","z":"f48abf30.643098","name":"JAMMED LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockCurrentState","payload":"2","payloadType":"num","x":380,"y":720,"wires":[["824d0d7f.e71bc"]]},{"id":"f0d27e22.720d8","type":"inject","z":"f48abf30.643098","name":"UNKNOWN LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockCurrentState","payload":"3","payloadType":"num","x":380,"y":760,"wires":[["824d0d7f.e71bc"]]},{"id":"9990f3a.1d1211","type":"inject","z":"f48abf30.643098","name":"SECURED LockTargetState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockTargetState","payload":"1","payloadType":"num","x":380,"y":960,"wires":[["ac70638a.dbdc9"]]},{"id":"905a288d.97d958","type":"inject","z":"f48abf30.643098","name":"LOW StatusLowBattery","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"1/StatusLowBattery","payload":"1","payloadType":"num","x":860,"y":800,"wires":[["bb82ff23.85b358"]]},{"id":"a12bdb8f.b0d14","type":"inject","z":"f48abf30.643098","name":"CHARGING ChargingState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"1/ChargingState","payload":"1","payloadType":"num","x":870,"y":920,"wires":[["be326ca4.264e8"]]},{"id":"df0e3dfc.f66dd8","type":"inject","z":"f48abf30.643098","name":"NOT_CHARGING ChargingState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"1/ChargingState","payload":"0","payloadType":"num","x":900,"y":880,"wires":[["be326ca4.264e8"]]},{"id":"a25d63bd.41f6d8","type":"link in","z":"f48abf30.643098","name":"","links":["824d0d7f.e71bc","ac70638a.dbdc9","bb82ff23.85b358","45595487.6dbbf4","be326ca4.264e8"],"x":695,"y":640,"wires":[["198102ff.16c11d"]]},{"id":"45595487.6dbbf4","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":995,"y":840,"wires":[]},{"id":"be326ca4.264e8","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":1115,"y":920,"wires":[]},{"id":"bb82ff23.85b358","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":1055,"y":780,"wires":[]},{"id":"ac70638a.dbdc9","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":575,"y":940,"wires":[]},{"id":"824d0d7f.e71bc","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":575,"y":700,"wires":[]},{"id":"4ab2a7aa.eee6a","type":"comment","z":"f48abf30.643098","name":"Ist-Zustand","info":"","x":330,"y":600,"wires":[]},{"id":"7cca2a28.8d7824","type":"comment","z":"f48abf30.643098","name":"Soll-Zustand","info":"","x":330,"y":880,"wires":[]},{"id":"89c21a66.0f1b68","type":"comment","z":"f48abf30.643098","name":"Batterie-Kram","info":"","x":830,"y":720,"wires":[]}]
Bildschirmfoto 2021-04-12 um 11 13 39
ghost commented 3 years ago

Vielen Dank für die große Mühe. So hätte ich das niemals getan. Mal sehen ob ich die Verbindung jetzt zu Homematic hinbekomme

EDIT: Ich habe es geschafft das Homematic den Status an Homematic weitergibt, aber andersherum hapert es. Ich bin zu beschränkt in der Change Node den passenden Tonic zu definieren.

AdlerCentauri commented 3 years ago

Warum kommt von @hobbyquaker kein Kommentar dazu? Oder wird das ganze hier nicht mehr gepflegt? Eine Stellungnahme dazu wäre mal gut damit man weiß wo man dran ist, danke.

AdlerCentauri commented 3 years ago

Ich werde zu Hap wechseln. Finde es nicht cool @hobbyquaker garnichts dazu zu sagen ob da was kommt oder nicht oder ob das ganze hier tot ist oder nicht. Egal ob das ganze hier kostenlos und ein freiwilliges Projekt ist, antworten kann man trotzdem damit die Benutzer wissen woran sie sind. Ist ja nicht nur hier so das keine Antworten kommen, es gibt Themen hier die schon alt sind und auch die Benutzer haben keine Antwort bekommen.

HookHM commented 3 years ago

Nu bleib doch mal locker @AdlerCentauri vielleicht ist Sebastian auch krank oder so

ptweety commented 3 years ago

@beckentosch kannst du mal über einen debug node alle Events vom DLD bei Bedienung über WebUI oder direkt am Gerät ausgeben lassen? Dann helfe ich dir beim zusammen bauen.

ghost commented 3 years ago

@ptweety So ich habe mal endlich Zeit gefunden das ganze zu machen. Über die WebUI kann ich entriegeln, verriegeln und öffnen. Ich habe den Datapoint LOCK_STATE genommen.

Wenn ich verriegle passiert folgendes:

verriegeln

Wenn ich entriegle folgendes:

entriegeln

Bei öffnen kommt keine neue Meldung. Dies wäre für mich aber mit der wichtigste damit ich ohne Schlüssel Joggen gehen kann :-D

Folgende Datapoints gibt es:

datapoint

Vielen vielen Dank schonmal für deine Hilfe

ptweety commented 3 years ago

Kannst du das nochmal wiederholen, nur ohne Einschränkung auf LOCK_STATE, damit alle Ereignisse sichtbar sind?

ptweety commented 3 years ago

Uff, vielleicht so (CCU auswählen und Interface auf HmIP-RF setzen):

[{"id":"ad8c1e62.442e4","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":950,"y":1680,"wires":[]},{"id":"861458c5.cfd3d8","type":"ccu-rpc-event","z":"f48abf30.643098","name":"","iface":"","ccuConfig":"","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"HmIP-DLD","deviceTypeRx":"str","channel":"","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","channelIndex":"","channelIndexRx":"str","datapoint":"","datapointRx":"str","change":false,"working":false,"cache":false,"topic":"${CCU}/${Interface}/${channelName}/${datapoint}","x":750,"y":1680,"wires":[["ad8c1e62.442e4"]]}]
ghost commented 3 years ago

Verriegeln:

21.4.2021, 11:20:09node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 2 21.4.2021, 11:20:09node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:20:09node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:20:09node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 2 21.4.2021, 11:20:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 0 21.4.2021, 11:20:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:20:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:20:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 2 21.4.2021, 11:20:17node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 1 21.4.2021, 11:20:17node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 0 21.4.2021, 11:20:17node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:20:17node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 3

ghost commented 3 years ago

Entriegeln:

21.4.2021, 11:22:28node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 1 21.4.2021, 11:22:28node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 0 21.4.2021, 11:22:29node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:22:29node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 1 21.4.2021, 11:22:30node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 0 21.4.2021, 11:22:30node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:22:30node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:22:30node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 1 21.4.2021, 11:22:37node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 2 21.4.2021, 11:22:37node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:22:37node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:22:37node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 3

ghost commented 3 years ago

Öffnen:

21.4.2021, 11:23:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 2 21.4.2021, 11:23:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:23:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:23:11node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 1 21.4.2021, 11:23:12node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 2 21.4.2021, 11:23:12node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:23:12node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:23:12node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 1 21.4.2021, 11:23:14node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/LOCK_STATE : msg.payload : number 2 21.4.2021, 11:23:14node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/SECTION : msg.payload : number 3 21.4.2021, 11:23:14node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/PROCESS : msg.payload : number 0 21.4.2021, 11:23:15node: 771ac910.1ac38 localhost/HmIP-RF/windfang_tuerschloss:1/ACTIVITY_STATE : msg.payload : number 3

ptweety commented 3 years ago

Ok, ich hatte jetzt vermutet, dass da noch Ereignisse zu LOCK_TARGET_LEVEL kommen. So müssen wir uns wohl mit den Werten von LOCK_STATE behelfen.

Ich würde auf jeweils zwei Events schauen:

Beim entriegeln:

Beim verriegeln:

Wie das dann mit dem öffnen geht, da habe ich derzeit keine Idee. Vielleicht muss da noch ein weiterer Service hinzugefügt werden ...

Und an welchen Kanal man die Events aus HomeKit sendet, dass musst du leider auch selber erforschen.

[{"id":"198102ff.16c11d","type":"redmatic-homekit-universal","z":"f48abf30.643098","bridgeConfig":"2572ba91.8a53ce","name":"Haustüre","services":[{"subtype":"0","service":"LockMechanism","name":"Schloss"},{"subtype":"1","service":"BatteryService","name":"Batterie"}],"x":820,"y":680,"wires":[["22c96617.e825b2","ec0845b2.24c2d"]]},{"id":"acfc7d0d.146d58","type":"inject","z":"f48abf30.643098","name":"UNSECURED LockTargetState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"0/LockTargetState","payload":"0","payloadType":"num","x":390,"y":1020,"wires":[["ac70638a.dbdc9"]]},{"id":"e93cf4f3.b5cb08","type":"inject","z":"f48abf30.643098","name":"NORMAL StatusLowBattery","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"1/StatusLowBattery","payload":"0","payloadType":"num","x":880,"y":820,"wires":[["bb82ff23.85b358"]]},{"id":"4ae33d59.c0c29c","type":"inject","z":"f48abf30.643098","name":"100% BatteryLevel","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"1/BatteryLevel","payload":"100","payloadType":"num","x":850,"y":900,"wires":[["45595487.6dbbf4"]]},{"id":"25ec528.e1c61ae","type":"inject","z":"f48abf30.643098","name":"NOT_CHARGEABLE ChargingState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"1/ChargingState","payload":"2","payloadType":"num","x":900,"y":1020,"wires":[["be326ca4.264e8"]]},{"id":"850edbb9.a759e","type":"inject","z":"f48abf30.643098","name":"UNSECURED LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"0/LockCurrentState","payload":"0","payloadType":"num","x":390,"y":820,"wires":[["824d0d7f.e71bc"]]},{"id":"22c96617.e825b2","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":990,"y":640,"wires":[]},{"id":"35fbfa58.da6b8e","type":"inject","z":"f48abf30.643098","name":"SECURED LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockCurrentState","payload":"1","payloadType":"num","x":380,"y":860,"wires":[["824d0d7f.e71bc"]]},{"id":"b52bd6d2.60ee4","type":"inject","z":"f48abf30.643098","name":"JAMMED LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockCurrentState","payload":"2","payloadType":"num","x":380,"y":900,"wires":[["824d0d7f.e71bc"]]},{"id":"f0d27e22.720d8","type":"inject","z":"f48abf30.643098","name":"UNKNOWN LockCurrentState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockCurrentState","payload":"3","payloadType":"num","x":380,"y":940,"wires":[["824d0d7f.e71bc"]]},{"id":"9990f3a.1d1211","type":"inject","z":"f48abf30.643098","name":"SECURED LockTargetState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"0/LockTargetState","payload":"1","payloadType":"num","x":380,"y":1060,"wires":[["ac70638a.dbdc9"]]},{"id":"905a288d.97d958","type":"inject","z":"f48abf30.643098","name":"LOW StatusLowBattery","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"1/StatusLowBattery","payload":"1","payloadType":"num","x":860,"y":860,"wires":[["bb82ff23.85b358"]]},{"id":"a12bdb8f.b0d14","type":"inject","z":"f48abf30.643098","name":"CHARGING ChargingState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"4","topic":"1/ChargingState","payload":"1","payloadType":"num","x":870,"y":980,"wires":[["be326ca4.264e8"]]},{"id":"df0e3dfc.f66dd8","type":"inject","z":"f48abf30.643098","name":"NOT_CHARGING ChargingState","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"4","topic":"1/ChargingState","payload":"0","payloadType":"num","x":900,"y":940,"wires":[["be326ca4.264e8"]]},{"id":"a25d63bd.41f6d8","type":"link in","z":"f48abf30.643098","name":"","links":["824d0d7f.e71bc","ac70638a.dbdc9","bb82ff23.85b358","45595487.6dbbf4","be326ca4.264e8","cce7a993.e0d298","ef30876a.7dfa4"],"x":695,"y":680,"wires":[["198102ff.16c11d"]]},{"id":"45595487.6dbbf4","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":995,"y":900,"wires":[]},{"id":"be326ca4.264e8","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":1115,"y":980,"wires":[]},{"id":"bb82ff23.85b358","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":1055,"y":840,"wires":[]},{"id":"ac70638a.dbdc9","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":575,"y":1040,"wires":[]},{"id":"824d0d7f.e71bc","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":575,"y":880,"wires":[]},{"id":"4ab2a7aa.eee6a","type":"comment","z":"f48abf30.643098","name":"Ist-Zustand","info":"","x":330,"y":780,"wires":[]},{"id":"7cca2a28.8d7824","type":"comment","z":"f48abf30.643098","name":"Soll-Zustand","info":"","x":330,"y":980,"wires":[]},{"id":"89c21a66.0f1b68","type":"comment","z":"f48abf30.643098","name":"Batterie-Kram","info":"","x":830,"y":780,"wires":[]},{"id":"4873dba7.09d67c","type":"ccu-rpc-event","z":"f48abf30.643098","name":"LOW_BAT","iface":"","ccuConfig":"","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"HmIP-DLD","deviceTypeRx":"str","channel":"","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","channelIndex":"","channelIndexRx":"str","datapoint":"LOW_BAT","datapointRx":"str","change":false,"working":false,"cache":false,"topic":"${CCU}/${Interface}/${channelName}/${datapoint}","x":360,"y":1180,"wires":[["3f7209f2.1c48a6","c6e5f8aa.e7447","e90d4efb.31f71"]]},{"id":"3f7209f2.1c48a6","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":630,"y":1180,"wires":[]},{"id":"7ef3da8e.3e6c3c","type":"inject","z":"f48abf30.643098","name":"LOW_BAT false","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"iface","v":"HmIP-RF","vt":"str"},{"p":"deviceType","v":"HmIP-DLD","vt":"str"},{"p":"channelType","v":"MAINTENANCE_BAT_BL","vt":"str"},{"p":"channelIndex","v":"0","vt":"num"},{"p":"datapoint","v":"LOW_BAT","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"HmIP-DLD ... :0/LOW_BAT","payload":"false","payloadType":"bool","x":340,"y":1220,"wires":[["e90d4efb.31f71","c6e5f8aa.e7447"]]},{"id":"cf9afd29.b9a05","type":"inject","z":"f48abf30.643098","name":"LOW_BAT true","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"iface","v":"HmIP-RF","vt":"str"},{"p":"deviceType","v":"HmIP-DLD","vt":"str"},{"p":"channelType","v":"MAINTENANCE_BAT_BL","vt":"str"},{"p":"channelIndex","v":"0","vt":"num"},{"p":"datapoint","v":"LOW_BAT","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"HmIP-DLD ... :0/LOW_BAT","payload":"true","payloadType":"bool","x":340,"y":1260,"wires":[["e90d4efb.31f71","c6e5f8aa.e7447"]]},{"id":"c3216169.d94f7","type":"inject","z":"f48abf30.643098","name":"LOCK_STATE Locked -> Unknown","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"iface","v":"HmIP-RF","vt":"str"},{"p":"deviceType","v":"HmIP-DLD","vt":"str"},{"p":"channelType","v":"DOOR_LOCK_STATE_TRANSMITTER","vt":"str"},{"p":"channelIndex","v":"1","vt":"num"},{"p":"datapoint","v":"LOCK_STATE","vt":"str"},{"p":"valuePrevious","v":"1","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"HmIP-DLD ... :1/LOCK_STATE","payload":"0","payloadType":"num","x":400,"y":1480,"wires":[["e9eba4ae.cbc108"]]},{"id":"48738b9e.82d27c","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":870,"y":1260,"wires":[]},{"id":"e90d4efb.31f71","type":"change","z":"f48abf30.643098","name":"BatteryLevel","rules":[{"t":"set","p":"topic","pt":"msg","to":"1/BatteryLevel","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$.payload ? 0 : 100","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":1260,"wires":[["cce7a993.e0d298","48738b9e.82d27c"]]},{"id":"c6e5f8aa.e7447","type":"change","z":"f48abf30.643098","name":"StatusLowBattery","rules":[{"t":"set","p":"topic","pt":"msg","to":"1/StatusLowBattery","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$.payload ? 1 : 0","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":1220,"wires":[["48738b9e.82d27c","cce7a993.e0d298"]]},{"id":"cce7a993.e0d298","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":835,"y":1220,"wires":[]},{"id":"76aee21b.2ba384","type":"ccu-set-value","z":"f48abf30.643098","name":"","iface":"","ccuConfig":"","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"HmIP-DLD","deviceTypeRx":"str","channel":"","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","channelIndex":"","channelIndexRx":"str","datapoint":"","datapointRx":"str","force":false,"x":1220,"y":680,"wires":[]},{"id":"f2d60233.f8a03","type":"comment","z":"f48abf30.643098","name":"HomeKit","info":"","x":820,"y":640,"wires":[]},{"id":"579b2526.abb324","type":"ccu-rpc-event","z":"f48abf30.643098","name":"LOCK_STATE","iface":"","ccuConfig":"","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"HmIP-DLD","deviceTypeRx":"str","channel":"","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","channelIndex":"","channelIndexRx":"str","datapoint":"LOCK_STATE","datapointRx":"str","change":false,"working":false,"cache":false,"topic":"${CCU}/${Interface}/${channelName}/${datapoint}","x":470,"y":1360,"wires":[["ce22b560.d98598","e9eba4ae.cbc108"]]},{"id":"9c254380.616e28","type":"inject","z":"f48abf30.643098","name":"LOCK_STATE Unknown -> Unlocked","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"iface","v":"HmIP-RF","vt":"str"},{"p":"deviceType","v":"HmIP-DLD","vt":"str"},{"p":"channelType","v":"DOOR_LOCK_STATE_TRANSMITTER","vt":"str"},{"p":"channelIndex","v":"1","vt":"num"},{"p":"datapoint","v":"LOCK_STATE","vt":"str"},{"p":"valuePrevious","v":"0","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"HmIP-DLD ... :1/LOCK_STATE","payload":"2","payloadType":"num","x":400,"y":1520,"wires":[["e9eba4ae.cbc108"]]},{"id":"9cf577b0.433dd8","type":"inject","z":"f48abf30.643098","name":"LOCK_STATE Unknown -> Locked","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"iface","v":"HmIP-RF","vt":"str"},{"p":"deviceType","v":"HmIP-DLD","vt":"str"},{"p":"channelType","v":"DOOR_LOCK_STATE_TRANSMITTER","vt":"str"},{"p":"channelIndex","v":"1","vt":"num"},{"p":"datapoint","v":"LOCK_STATE","vt":"str"},{"p":"valuePrevious","v":"0","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"HmIP-DLD ... :1/LOCK_STATE","payload":"1","payloadType":"num","x":400,"y":1440,"wires":[["e9eba4ae.cbc108"]]},{"id":"b9843382.ccee48","type":"inject","z":"f48abf30.643098","name":"LOCK_STATE Unlocked -> Unknown","props":[{"p":"topic","vt":"str"},{"p":"payload"},{"p":"iface","v":"HmIP-RF","vt":"str"},{"p":"deviceType","v":"HmIP-DLD","vt":"str"},{"p":"channelType","v":"DOOR_LOCK_STATE_TRANSMITTER","vt":"str"},{"p":"channelIndex","v":"1","vt":"num"},{"p":"datapoint","v":"LOCK_STATE","vt":"str"},{"p":"valuePrevious","v":"2","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"HmIP-DLD ... :1/LOCK_STATE","payload":"0","payloadType":"num","x":400,"y":1400,"wires":[["e9eba4ae.cbc108"]]},{"id":"ef30876a.7dfa4","type":"link out","z":"f48abf30.643098","name":"","links":["a25d63bd.41f6d8"],"x":835,"y":1400,"wires":[]},{"id":"ce22b560.d98598","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":670,"y":1360,"wires":[]},{"id":"e9eba4ae.cbc108","type":"function","z":"f48abf30.643098","name":"Lock*State","func":"const topics = [ '0/LockTargetState', '0/LockCurrentState' ];\n\nvar ret = { topic: '', payload: 0 };\n\nnode.status({fill:'blue',shape:'dot',text: msg.valuePrevious+' -> '+msg.payload});\n\nswitch (msg.payload) {\n  case 0:\n    ret.topic = topics[0];\n    if (msg.valuePrevious === 2) ret.payload = 1;\n    break;\n  case 1:\n    ret.topic = topics[1];\n    if (msg.valuePrevious === 0) ret.payload = 1;\n    break;\n  case 2:\n    ret.topic = topics[1];\n    break;\n  default:\n    node.status({});\n}\n\nreturn ret","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":1400,"wires":[["eac6be20.f6b9d8","ef30876a.7dfa4"]]},{"id":"eac6be20.f6b9d8","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":870,"y":1440,"wires":[]},{"id":"ec0845b2.24c2d","type":"switch","z":"f48abf30.643098","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":990,"y":680,"wires":[[],[]],"outputLabels":["UNSECURED","SECURED"]},{"id":"2572ba91.8a53ce","type":"redmatic-homekit-bridge","name":"NodeRed Bridge","username":"CC:22:3D:E3:CE:C6","pincode":"031-45-154","port":"51826"}]
AdlerCentauri commented 3 years ago

Installiert euch HAP https://github.com/thkl/hap-homematic

Da sind alle Geräte inkl. der neuen KeyMatic drin und müsst nicht selber basteln. Auch die Benutzerberechtigung wird hier in HomeKit unterstützt. Allgemein ist HAP hier im längen vorne was die Einrichtung usw. angeht.

https://www.youtube.com/watch?v=rDqo296dNhA

https://www.verdrahtet.info/2020/05/02/homekit-und-homematic-einfach-wie-nie/

ghost commented 3 years ago

@ptweety Erstmal vielen Dank für deine ausführliche Hilfe und vor allem für die genommene Zeit. Ich versuche mal mit meinen Laien Kenntnissen es hinzubekommen

AdlerCentauri commented 3 years ago

@beckentosch nimm HAP, da brauchst Du keine Kenntnisse.

ghost commented 3 years ago

@AdlerCentauri Naja NodeRed ist schon sehr mächtig und bevorzuge ich eigentlich auch. Damit kriege ich zum Beispiel auch Systemvariablen in HomeKit.

AdlerCentauri commented 3 years ago

@beckentosch Geht mit HAP auch alles.

Bildschirmfoto 2021-04-21 um 14 21 13 Bildschirmfoto 2021-04-21 um 14 19 07
ptweety commented 3 years ago

@AdlerCentauri du magst schon recht haben, wenn

AdlerCentauri commented 3 years ago

Ja, das mag auch sein. Aber das der Herr @hobbyquaker sich hier nicht zu Wort meldet und man hier selber anfangen muss zu basteln finde ich schon nicht korrekt.

ptweety commented 3 years ago

Nunja, deine etwas angespannte Attitüde zur Idee von Open Source hast du schon klar gemacht. Jeder ist hier eingeladen - im Rahmen der eigenen Möglichkeiten - einen Beitrag zu leisten. Als gebastelt würde ich das nicht bezeichnen ...

ghost commented 3 years ago

@AdlerCentauri Zumal ich die neue HmIP-DLD nicht finde in HAP

fphBS commented 3 years ago

@ptweety erst mal vielen Dank für dieses großartige Projekt, ich habe viel Freude damit! Nun zu meiner Frage, habt ihr grundsätzlich vor HmIP-DLD als Home Kit Accessory Node zu unterstützen? Wenn ja, könnt ihr etwas zum Zeitplan sagen? Ich würde mich auch gerne als Tester anbieten oder mich an der Anschaffung der Hardware beteiligen.

Viele Grüße, Florian

fphBS commented 2 years ago

@ptweety gibt es bereits Neuigkeiten zur Integration von HMIP DLD?

ptweety commented 2 years ago

Sorry, ich entwickelte hier keine Integration für den DLD, sondern half nur bei einem Workaround. Ersteres fällt mir auch Mangels des Gerätes schwer.

fphBS commented 2 years ago

@ptweety Danke für deine Antwort! Wem könnte ich denn ansprechen bzw. wer kann mir Auskunft zu den Plänen geben? Ich kann leider nichts zum Code dieses Projekts beitragen, bin aber gerne bereit mich an den Anschaffungskosten für das HMIP DLD zu beteiligen.