So, alles gemacht. Es werden alle Devices gefunden, das ist es also nicht. Es gibt aber 2 Sachen:
1) stateformat:. Wenn ich das "attr stateformat room/rooms" setze, ist der Internal STATE "STATE flurLE / flurLE,schlafLE", damit wird das device als absent erkannt.
Das kann ich ändern, aber schöner wäre es, wenn der batteryLevel unabhängig vom stateformat gesetz würde.
2) Timing:
Schau Dir mal im Logfile die Zeilen 2019.12.04 20:59:00" ünd "2019.12.04 20:59:01" unter dem list vom Presence_Vater_iPhone_BT an.
Man sieht, das der erste Presence_Vater_Orange_collect und der 2-te Presence_GTag_Black_collect gefunden werden, das gatttool liefert für beide "4b" zurück.
Danach, also 3 Sekunden später, also ab Zeile "2019.12.04 20:59:04", werden die nächsten GTags (RED/White/Gast) gefunden, aber das gattool liefert nur noch "connect error" oder "no route to host" zurück.
Da stimmt irgendwas mit dem gattool Timing nicht, oder?? Das geht dem gattool wohl zu schnell :-)
2019.12.04 20:59:00 4: Sub BleTagBattery_Run (myBleTagBattery) - start blocking call
2019.12.04 20:59:00 5: Sub BleTagBattery_stateRequest (myBleTagBattery) - state request called
2019.12.04 20:59:00 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_Vater_Orange_collect
2019.12.04 20:59:00 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device name: Gigaset G-tag
2019.12.04 20:59:00 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device address: ME:IN:EM:AC:AD:DR
2019.12.04 20:59:00 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - tag already saved in hash
2019.12.04 20:59:01 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: handle: 0x001b value: 4b
2019.12.04 20:59:01 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - processing gatttool response: 4b
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - processing gatttool response for device Presence_Vater_Orange_collect. batteryLevel: 75
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_Vater_iPhone_BT
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device not present.
Internals:
ADDRESS ME:IN:EM:AC:AD:DR
DEF lan-bluetooth ME:IN:EM:AC:AD:DR 127.0.0.1:5222 60 60
DeviceName 127.0.0.1:5222
FUUID tada
INTERVAL_NORMAL 60
INTERVAL_PRESENT 60
MODE lan-bluetooth
NAME Presence_Vater_iPhone_BT
NOTIFYDEV global
NR 2621
NTFY_ORDER 50-Presence_Vater_iPhone_BT
STATE maybe absent /
TYPE PRESENCE
READINGS:
2019-12-04 20:48:49 absentSince 2019-12-04 20:48:49
2019-12-04 20:28:16 command_accepted yes
2019-12-04 20:57:03 device_name iPhoneXL
2019-12-04 20:48:49 lastAbsent 04.12.2019 20:48:49
2019-12-04 20:57:03 lastPresent 04.12.2019 20:57:03
2019-12-04 20:58:11 lastabsent 2019-12-04 20:52:01
2019-12-04 20:58:11 lastpresent 2019-12-04 20:58:11
2019-12-04 20:28:08 model lan-bluetooth
2019-12-04 20:58:11 presence maybe absent
2019-12-04 20:53:14 presentSince 2019-12-04 20:53:14
2019-12-04 20:58:11 room
2019-12-04 20:58:11 rooms
2019-12-04 20:58:11 rssi
2019-12-04 20:58:11 state maybe absent
2019-12-04 20:53:14 status present
helper:
ABSENT_COUNT 1
CURRENT_STATE present
CURRENT_TIMEOUT normal
Attributes:
absenceThreshold 3
alias iPhoneXL_BT
event-on-change-reading status,state
group PRESENCE,SERVER
room Favourites,Presence
sortby 0390
stateFormat state / rooms
timestamp-on-change-reading status
userReadings status:(present|absent) { ReadingsVal($name,"state","nA") eq "present" ? "present" : "absent" },
absentSince:status:.absent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"absentSince","nA")}},
presentSince:status:.present {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"presentSince","nA")}},
lastpresent {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastpresent","nA")}},
lastabsent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastabsent","nA")}},
lastPresent:present {ReadingsTimestamp($name,"state","") =~ /^(\d+)-(\d+)-(\d+)\s(\d+:\d+:\d+)$/;; "$3.$2.$1 $4"},
lastAbsent:absent {ReadingsTimestamp($name,"state","") =~ /^(\d+)-(\d+)-(\d+)\s(\d+:\d+:\d+)$/;; "$3.$2.$1 $4"}
verbose 0
webCmd statusRequest
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_GTag_Black_collect
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device name: Gigaset G-tag
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device address: ME:IN:EM:AC:AD:DR
2019.12.04 20:59:01 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with public
2019.12.04 20:59:04 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: handle: 0x001b value: 4b
2019.12.04 20:59:04 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - processing gatttool response: 4b
2019.12.04 20:59:04 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - processing gatttool response for device Presence_GTag_Black_collect. batteryLevel: 75
2019.12.04 20:59:04 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_GTag_RED_collect
2019.12.04 20:59:04 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device name: Gigaset G-tag
2019.12.04 20:59:04 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device address: ME:IN:EM:AC:AD:DR
2019.12.04 20:59:04 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with public
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: connect error: Software caused connection abort (103)
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - invalid gatttool response
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with random
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: connect: No route to host (113)
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - invalid gatttool response
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - tag not supported
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - processing gatttool response for device Presence_GTag_RED_collect. batteryLevel:
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_GTag_White_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device name: Gigaset G-tag
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device address: ME:IN:EM:AC:AD:DR
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with public
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: connect: No route to host (113)
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - invalid gatttool response
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with random
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: connect: No route to host (113)
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - invalid gatttool response
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - tag not supported
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - processing gatttool response for device Presence_GTag_White_collect. batteryLevel:
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_Gast_Orange_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device name: Gigaset G-tag
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device address: ME:IN:EM:AC:AD:DR
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with public
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: connect: No route to host (113)
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - invalid gatttool response
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - try to connect with random
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - call gatttool char read loop: 0, result: connect: No route to host (113)
2019.12.04 20:59:05 4: Sub BleTagBattery_readSensorValue (myBleTagBattery) - invalid gatttool response
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - tag not supported
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - processing gatttool response for device Presence_Gast_Orange_collect. batteryLevel:
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_Gast_iBTon_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device not present.
Internals:
ADDRESS ME:IN:EM:AC:AD:DR
DEF lan-bluetooth ME:IN:EM:AC:AD:DR 127.0.0.1:5222 60 60
DeviceName 127.0.0.1:5222
FUUID tada
INTERVAL_NORMAL 60
INTERVAL_PRESENT 60
MODE lan-bluetooth
NAME Presence_Gast_iBTon_collect
NOTIFYDEV global
NR 2717
NTFY_ORDER 50-Presence_Gast_iBTon_collect
STATE disabled /
TYPE PRESENCE
READINGS:
2019-06-07 00:20:16 absentSince 2019-06-07 00:20:16
2019-11-02 18:00:54 command_accepted yes
2019-08-04 08:55:37 device_name iPhone
2019-12-04 20:28:14 lastabsent 2019-12-04 20:28:14
2019-12-04 20:28:14 lastpresent 2019-08-04 08:56:09
2019-12-04 20:28:08 model lan-bluetooth
2019-08-04 08:57:23 presence absent
2019-06-07 00:14:22 presentSince 2019-06-07 00:14:22
2019-11-02 18:00:02 room
2019-11-02 18:00:02 rooms
2019-11-02 18:00:02 rssi
2019-12-04 20:28:14 state disabled
2019-11-02 16:09:31 status absent
helper:
ABSENT_COUNT 1
DISABLED 1
PRESENT_COUNT 0
Attributes:
absenceThreshold 2
disable 1
event-on-change-reading presence,state
group PRESENCE
room Presence
sortby 049
stateFormat state / rooms
timestamp-on-change-reading presence
userReadings status:(present|absent) { ReadingsVal($name,"state","nA") eq 'present' ? "present" : "absent" },
absentSince:status:.absent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"absentSince","nA")}},
presentSince:status:.present {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"presentSince","nA")}},
lastpresent {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastpresent","nA")}},
lastabsent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastabsent","nA")}}
verbose 0
webCmd statusRequest
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_Mutter_Green_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device not present.
Internals:
ADDRESS ME:IN:EM:AC:AD:DR
DEF lan-bluetooth ME:IN:EM:AC:AD:DR 127.0.0.1:5222 60 60
DeviceName 127.0.0.1:5222
FUUID tada
INTERVAL_NORMAL 60
INTERVAL_PRESENT 60
MODE lan-bluetooth
NAME Presence_Mutter_Green_collect
NOTIFYDEV global
NR 2687
NTFY_ORDER 50-Presence_Mutter_Green_collect
STATE absent /
TYPE PRESENCE
READINGS:
2019-05-24 23:31:11 BatterieWechsel 20.05.2019 (1 Jahr, last 05.05.2018)
2019-12-02 07:11:35 absentSince 2019-12-02 07:11:35
2019-12-01 23:22:48 battery ok
2019-12-01 23:22:48 batteryLevel 75
2019-12-04 20:28:16 command_accepted yes
2019-12-02 07:09:52 daemon lepresenced V0.9
2019-12-02 07:09:52 device_name Gigaset G-tag
2019-12-04 20:58:38 lastabsent 2019-12-04 20:58:38
2019-12-04 20:58:38 lastpresent 2019-12-02 07:09:52
2019-12-04 20:28:08 model lan-bluetooth
2019-12-04 20:58:38 presence absent
2019-12-01 18:34:42 presentSince 2019-12-01 18:34:42
2019-12-04 20:58:38 room
2019-12-04 20:58:38 rooms
2019-12-04 20:58:38 rssi
2019-12-02 07:09:52 rssi_flurLE -89
2019-12-02 07:09:45 rssi_schlafLE -75
2019-12-02 07:09:50 rssi_wohnLE -82
2019-12-02 07:09:33 rssi_zeroLE -73
2019-12-04 20:58:38 state absent
2019-12-02 07:11:35 status absent
helper:
ABSENT_COUNT 1
CURRENT_TIMEOUT normal
Attributes:
absenceThreshold 2
event-on-change-reading battery,batteryLevel,status,state
group PRESENCE
room Presence
sortby 063
stateFormat state room / rooms
timestamp-on-change-reading status
userReadings status:(present|absent) { ReadingsVal($name,"state","nA") eq 'present' ? "present" : "absent" },
absentSince:status:.absent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"absentSince","nA")}},
presentSince:status:.present {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"presentSince","nA")}},
lastpresent {if (ReadingsVal($name,"state","nA") eq "present") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastpresent","nA")}},
lastabsent {if (ReadingsVal($name,"state","nA") eq "absent") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastabsent","nA")}}
verbose 0
webCmd statusRequest
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device found. device: Presence_Mutter_iBTon_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingRun (myBleTagBattery) - device not present.
Internals:
ADDRESS ME:IN:EM:AC:AD:DR
DEF lan-bluetooth ME:IN:EM:AC:AD:DR 127.0.0.1:5222 60 60
DeviceName 127.0.0.1:5222
FUUID toda
INTERVAL_NORMAL 60
INTERVAL_PRESENT 60
MODE lan-bluetooth
NAME Presence_Mutter_iBTon_collect
NOTIFYDEV global
NR 2684
NTFY_ORDER 50-Presence_Mutter_iBTon_collect
STATE absent /
TYPE PRESENCE
READINGS:
2019-12-02 07:11:19 absentSince 2019-12-02 07:11:19
2019-12-04 20:28:16 command_accepted yes
2019-12-02 07:08:20 device_name iPhone7
2019-12-04 20:58:59 lastabsent 2019-12-04 20:58:59
2019-12-04 20:58:59 lastpresent 2019-12-02 07:10:07
2019-12-04 20:28:08 model lan-bluetooth
2019-12-04 20:58:59 presence absent
2019-12-02 06:28:11 presentSince 2019-12-02 06:28:11
2019-12-04 20:58:59 room
2019-12-04 20:58:59 rooms
2019-12-04 20:58:59 rssi
2019-12-04 20:58:59 state absent
2019-12-02 07:11:19 status absent
helper:
ABSENT_COUNT 2
CURRENT_TIMEOUT normal
Attributes:
absenceThreshold 3
event-on-change-reading status,state
genericDeviceType OccupancySensor
group PRESENCE
room Presence
sortby 060
stateFormat state / rooms
timestamp-on-change-reading status
userReadings status:(present|absent) { ReadingsVal($name,"state","nA") eq "present" ? "present" : "absent" },
absentSince:status:.absent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"absentSince","nA")}},
presentSince:status:.present {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name,"status","nA")} else {ReadingsVal($name,"presentSince","nA")}},
lastpresent {if (ReadingsVal($name,"status","nA") eq "present") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastpresent","nA")}},
lastabsent {if (ReadingsVal($name,"status","nA") eq "absent") {ReadingsTimestamp($name, "state", "nA")} else {ReadingsVal($name,"lastabsent","nA")}}
verbose 0
webCmd statusRequest
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingDone (myBleTagBattery) - set readings batteryLevel and battery of device: Presence_Vater_Orange_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingDone (myBleTagBattery) - setting saved into hash: public
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingDone (myBleTagBattery) - set readings batteryLevel and battery of device: Presence_GTag_Black_collect
2019.12.04 20:59:05 4: Sub BleTagBattery_BlockingDone (myBleTagBattery) - done