set sensitivity Xiaomi Aqare vibration sensors

  Home automation

Ik heb een xiaomi aqara vibration sensor op mijn deur bel gong geplakt hier mee kan ik de trilling detecteren en weet of er aangebeld word en via home assistant stuur ik dan een notification naar mijn telefoon. Mijn zigbee network is bereikbaar via een Conbee I/II aangestuurd via  deCONZ/Phoscon de instellings mogelijkheden zijn binnen de interface vrij basic. Maar via de commandline kunnen we de sensors ook benaderen. 

Verbinding maken met de rest api van deCONZ/Phoscon

Ik heb mijn deCONZ/Phoscon niet binnen homeassistant geinstalleerd maar in een aparte container/vm op deze manier kan ik met test HA omgeving ook gebruik maken van alle zigbee devices. Als je dat niet hebt moet je binnen HA even opzoek naar de REST API plugin, zodat je het Ip adres en het port nummer kan achterhalen. waarschijnlijk is het ip adres van je HA machine met port nummer 40850. in mijn geval is het gewoon port 80 ik zal voor de duidelijkheid in de voorbeelden steeds het port nummer ook in de curl config zetten maar dat is voor 80 eigenlijk niet nodig.

als je de juiste poort hebt gevonden kan je proberen te connecten vanaf de command line. gebruik hier voor curl http://ip:port/api je krijgt dan een fout melding terug. zie hier onder

$ curl http://192.168.53.22:80/api
[{"error":{"address":"/","description":"unauthorized user","type":1}}]

je moet een username gebruiken. deze user name kan je achter halen door in de deCONZ/Phoscon op Gateway en dan in het advanced screen op Authenticate app te klikken. de applicatie gaat nu voor 60 sec in allow apps te connect modes. als je binnen die tijd het commando opnieuw runt krijg je een username terug die kan je gebruiken om al je settings te beheren.

$ curl -X POST -d '{"devicetype": "terminal"}' http://192.168.53.22/api
[{"success":{"username":"87C02BCF59"}}]
Sensors uitlezen.

Vervolgens kan je door deze user naam op te nemen in je request info op vragen, dit krijg je te zien in json formaat alles staat op 1 regel hoe meer sensors je hebt hoe onleesbaarder het word. Maar onder Linux kan je ook je output door jq (commandline JSON processor) heen halen.
bv curl http://ip:port/api/username/sensors | jq

curl -X GET  http://192.168.53.22/api/87C02BCF59/sensors |jq 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17965  100 17965    0     0   923k      0 --:--:-- --:--:-- --:--:--  923k
{
  "1": {
    "config": {
      "configured": true,
      "on": true,
      "sunriseoffset": 30,
      "sunsetoffset": -30
    },
    "etag": "0c6d17c40dfbbe8911da4cf3b709dd5c",
    "manufacturername": "Philips",
    "modelid": "PHDL00",
    "name": "Daylight",
    "state": {
      "dark": false,
      "daylight": true,
      "lastupdated": "2022-06-03T04:16:16.143",
      "status": 160,
      "sunrise": "2022-06-03T03:21:59",
      "sunset": "2022-06-03T19:52:23"
    },
    "swversion": "1.0",
    "type": "Daylight",
    "uniqueid": "00:21:2e:ff:ff:06:6b:1e-01"
  },
  "10": {
    "config": {
      "alert": "none",
      "battery": 74,
      "group": "4",
      "on": true,
      "reachable": true
    },
    "ep": 1,
    "etag": "0c1a20473c221e6a94c178ca44820639",
    "lastannounced": "2022-06-03T03:41:26Z",
    "lastseen": "2022-06-03T11:28Z",
    "manufacturername": "IKEA of Sweden",
    "mode": 1,
    "modelid": "TRADFRI on/off switch",
    "name": "TRADFRI on/off switch ",
    "state": {
      "buttonevent": 2002,
      "lastupdated": "2022-06-01T05:53:07.299"
    },
    "swversion": "2.2.010",
    "type": "ZHASwitch",
    "uniqueid": "b4:e3:f9:ff:fe:b2:fb:90-01-1000"
  },
  "11": {

Zoek je sensor op in deze lijst. in mijn geval is het sensor is het id 36
curl http://ip:port/api/username/sensors/36 | jq

curl -X GET  http://192.168.53.22/api/87C02BCF59/sensors/36 |jq 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   543  100   543    0     0  90500      0 --:--:-- --:--:-- --:--:-- 90500
{
  "config": {
    "battery": 100,
    "on": true,
    "pending": [],
    "reachable": true,
    "sensitivity": 10,
    "sensitivitymax": 21,
    "temperature": 2600
  },
  "ep": 1,
  "etag": "f287c4eefb203afe579605677cf91e99",
  "lastannounced": "2022-04-13T14:15:13Z",
  "lastseen": "2022-06-03T11:27Z",
  "manufacturername": "LUMI",
  "modelid": "lumi.vibration.aq1",
  "name": "Vibration Sensor",
  "state": {
    "lastupdated": "2022-06-03T11:27:16.164",
    "orientation": [
      3,
      -76,
      13
    ],
    "tiltangle": 5,
    "vibration": false,
    "vibrationstrength": 5
  },
  "swversion": "20180130",
  "type": "ZHAVibration",
  "uniqueid": "00:15:8d:00:06:7a:0e:3c-01-0101"
}

In de config sectie kan je nu de sensitivity aanpassen waar 1 het gevoeligst is en 21 het minst gevoelig ik het is een kwestie van wat uitproberen wat voor jouw het beste werkt. In bovenstaande vb staat hij op 10 dat werkt niet goed. ik ga hem op 8 zetten.
curl -H ‘Content-Type: application/json’ -X PUT -d ‘{“sensitivity”: 8}’ http://ip:port/api/username/sensors/36/config Als het commando goed is krijg je success terug.

$ curl -H 'Content-Type: application/json' -X PUT -d '{"sensitivity": 8}' http://192.168.53.22/api/87C02BCF59/sensors/36/config
[{"success":{"/sensors/36/config/sensitivity":8}}]