RedMatic-HomeKit icon indicating copy to clipboard operation
RedMatic-HomeKit copied to clipboard

Unterstützung für HmIP-DLD

Open julembke opened this issue 4 years ago • 28 comments

Bitte den neuen Türschlossantrieb unterstützen

julembke avatar Mar 24 '21 13:03 julembke

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.LockMechanism
    • Characteristic.LockCurrentState
    • Characteristic.LockTargetState
  • Service.BatteryService
    • Characteristic.StatusLowBattery
    • Characteristic.BatteryLevel
    • Characteristic.ChargingState
/**
 * 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;

ptweety avatar Mar 25 '21 13:03 ptweety

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?

ghost avatar Apr 12 '21 08:04 ghost

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

ptweety avatar Apr 12 '21 09:04 ptweety

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.

ghost avatar Apr 12 '21 15:04 ghost

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 avatar Apr 13 '21 18:04 AdlerCentauri

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.

AdlerCentauri avatar Apr 14 '21 16:04 AdlerCentauri

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

HookHM avatar Apr 14 '21 16:04 HookHM

@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.

ptweety avatar Apr 14 '21 18:04 ptweety

@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

ghost avatar Apr 21 '21 08:04 ghost

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

ptweety avatar Apr 21 '21 09:04 ptweety

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"]]}]

ptweety avatar Apr 21 '21 09:04 ptweety

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 avatar Apr 21 '21 09:04 ghost

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 avatar Apr 21 '21 09:04 ghost

Ö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

ghost avatar Apr 21 '21 09:04 ghost

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:

  • Wenn für LOCK_STATE der payload = 0 (unknown) und valuePrevious = 1 (locked), dann sende an HomeKit den LockTargetState mit payload = 0 (unsecured)
  • Wenn für LOCK_STATE der payload = 2 (unlocked) und valuePrevious = 0 (unknown), dann sende an HomeKit den LockCurrentState mit payload = 0 (unsecured)

Beim verriegeln:

  • Wenn für LOCK_STATE der payload = 0 (unknown) und valuePrevious = 2 (unlocked), dann sende an HomeKit den LockTargetState mit payload = 1 (secured)
  • Wenn für LOCK_STATE der payload = 1 (locked) und valuePrevious = 0 (unknown), dann sende an HomeKit den LockCurrentState mit payload = 1 (secured)

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"}]

ptweety avatar Apr 21 '21 11:04 ptweety

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/

AdlerCentauri avatar Apr 21 '21 12:04 AdlerCentauri

@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

ghost avatar Apr 21 '21 12:04 ghost

@beckentosch nimm HAP, da brauchst Du keine Kenntnisse.

AdlerCentauri avatar Apr 21 '21 12:04 AdlerCentauri

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

ghost avatar Apr 21 '21 12:04 ghost

@beckentosch Geht mit HAP auch alles.

Bildschirmfoto 2021-04-21 um 14 21 13 Bildschirmfoto 2021-04-21 um 14 19 07

AdlerCentauri avatar Apr 21 '21 12:04 AdlerCentauri

@AdlerCentauri du magst schon recht haben, wenn

  • man seine Logik-Schicht in der CCU hat
  • keine CCU-fremden Gerätschaften in HomeKit reinbekommen will
  • das alles auf der CCU installieren will (CCU connection und redmatic-homekit geht auch auf separater nodered Instanz)

ptweety avatar Apr 21 '21 12:04 ptweety

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.

AdlerCentauri avatar Apr 21 '21 12:04 AdlerCentauri

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 ...

ptweety avatar Apr 21 '21 12:04 ptweety

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

ghost avatar Apr 21 '21 12:04 ghost

@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 avatar May 01 '21 09:05 fphBS

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

fphBS avatar Nov 09 '21 08:11 fphBS

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.

ptweety avatar Nov 09 '21 08:11 ptweety

@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.

fphBS avatar Nov 09 '21 09:11 fphBS