ich habe mein OH 4.1 um einen ESP32 mit BT erweitert und nutze dieses um zuverlässig Präsenz zuhause zu erkennen. Smartphone Erkennung allein reicht nicht immer in allen Fällen aus (Handy leer, WLAN manuell abgestellt aus diversen Gründen etc.)
Habe dies auch erfolgreich mit in einer:
Code: Alles auswählen
Group:Switch:OR(ON, OFF) gPraesenz
Jetzt möchte ich bei den BT iBeacons welche vom ESP32 gescannt werden und den Status dann an den MQTT Broker gesendet werden noch eine "zuletzt online" Funktion nachrüsten.
Dafür wollte ich die Empfangsstärke der iBeacon's nutzen, wenn die nicht mehr upgedatet wird ist klar das der letzte Timestamp dessen auch gleichzeitig das Datum/Uhrzeit von zuletzt online ist...
Jetzt habe ich das Problem das der ESP32 alle 30 Sekunden für jeweils 15 Sekunden scannt und alle gefundenen BT MAC Adressen in ein Topic schreibt:
Code: Alles auswählen
esp32/OMG_ESP32_BLE/BTtoMQTT/undecoded
Code: Alles auswählen
2024-03-06 11:41:59.498 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -80
2024-03-06 11:42:06.005 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -80 to NULL
2024-03-06 11:42:15.530 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -80
2024-03-06 11:42:15.966 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -80 to NULL
2024-03-06 11:42:25.564 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -77
2024-03-06 11:42:25.666 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -77 to NULL
2024-03-06 11:42:41.640 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -81
2024-03-06 11:42:42.358 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -81 to NULL
2024-03-06 11:42:55.670 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -79
2024-03-06 11:42:56.201 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -79 to NULL
2024-03-06 11:43:15.684 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -80
2024-03-06 11:43:17.907 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -80 to NULL
2024-03-06 11:43:27.721 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -79
2024-03-06 11:43:28.236 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -79 to NULL
2024-03-06 11:43:41.770 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from NULL to -81
2024-03-06 11:43:42.205 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Praesenz_Michael_iBeacon_RSSI' changed from -81 to NULL
esp32_ibeacon.things:
Code: Alles auswählen
//###############
Thing mqtt:topic:esp32bridge "ESP32 BLE Bridge" (mqtt:broker:mosquitto) @ "Expert" {
Channels:
Type string : state [stateTopic="esp32/OMG_ESP32_BLE/LWT"]
Type string : installed_version [stateTopic="esp32/OMG_ESP32_BLE/RLStoMQTT", transformationPattern="JSONPATH:$.installed_version"]
Type string : blepresence [stateTopic="esp32/OMG_ESP32_BLE/BTtoMQTT/undecoded"]
Type string : ibeacon_mic_rssi [stateTopic="esp32/OMG_ESP32_BLE/BTtoMQTT/undecoded", transformationPattern="JSONPATH:$..[?(@.id==\"DC:0D:30:16:CF:1A\")].rssi"]
}
Code: Alles auswählen
Switch Switch_Praesenz_Michael_iBeacon "Präsenz Michael iBeacon [MAP(praesenz.map):%s]" <bluetooth> (gPraesenz) {expire="60s,command=OFF"}
Number Praesenz_Michael_iBeacon_RSSI "Präsenz Michael iBeacon RSSI [%d]" <none> {channel="mqtt:topic:esp32bridge:ibeacon_mic_rssi", unit="%"}
//DateTime Praesenz_Michael_iBeacon_Timestamp "Präsenz Michael iBeacon Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]" <time> {channel="mqtt:topic:esp32bridge:ibeacon_mic_rssi" [profile="timestamp-change"]}
Nochmal kurz zusammengefasst was ich möchte: die letzte Empfangsstärke soll als Number erhalten bleiben und dann möchte ich per "{[profile="timestamp-change"]}" ein weiteres Item nutzen um die zuletzt online Funktion umzusetzen
Sorry für den ellenlangen Text aber ansonsten versteht mann evtl nicht was ich genau erreichen möchte und wo es momentan hakt
Grüße
Michael