Show pageOld revisionsBacklinksAdd to bookExport to PDFBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== ESPHOME ====== ===== ESP32 cam ===== * [[https://github.com/esphome/esphome/pull/1905|rtsp into esp32cam progress]] <code bash> #!/bin/sh TOKEN=... PAYLOAD="{\"directive\": {\"header\": {\"namespace\": \"Alexa.Discovery\", \"name\": \"Discover\", \"payloadVersion\": \"3\", \"messageId\": \"8db404f7-f5a1-495e-9a30-3a8af3bf94e0\"}, \"payload\": {\"scope\": {\"type\": \"BearerToken\", \"token\": \"...\"}}}}" curl -q -X POST \ -d "$PAYLOAD" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ http://localhost:8123/api/alexa/smart_home | jq '.event.payload.endpoints[] | select(.displayCategories[0]=="CAMERA")' </code> in esp32 cam this section is missing in "capabilities" <code javascript> { "type": "AlexaInterface", "interface": "Alexa.CameraStreamController", "version": "3", "cameraStreamConfigurations": [ { "protocols": [ "HLS" ], "resolutions": [ { "width": 1280, "height": 720 } ], "authorizationTypes": [ "NONE" ], "videoCodecs": [ "H264" ], "audioCodecs": [ "AAC" ] } ] }, </code> esp32 entry (missing some values) <code javascript> { "displayCategories": [ "CAMERA" ], "cookie": {}, "endpointId": "camera#citofono", "friendlyName": "citofono", "description": "camera.citofono via Home Assistant", "manufacturerName": "Home Assistant", "additionalAttributes": { "manufacturer": "Home Assistant", "model": "camera", "softwareVersion": "2021.6.6", "customIdentifier": "-camera.citofono" }, "capabilities": [ { "type": "AlexaInterface", "interface": "Alexa.EndpointHealth", "version": "3", "properties": { "supported": [ { "name": "connectivity" } ], "proactivelyReported": true, "retrievable": true } }, { "type": "AlexaInterface", "interface": "Alexa", "version": "3" } ] } </code> valid stream camera working in alexa <code javascript> { "displayCategories": [ "CAMERA" ], "cookie": {}, "endpointId": "camera#cancello", "friendlyName": "camera cancello", "description": "camera.cancello via Home Assistant", "manufacturerName": "Home Assistant", "additionalAttributes": { "manufacturer": "Home Assistant", "model": "camera", "softwareVersion": "2021.6.6", "customIdentifier": "-camera.cancello" }, "capabilities": [ { "type": "AlexaInterface", "interface": "Alexa.CameraStreamController", "version": "3", "cameraStreamConfigurations": [ { "protocols": [ "HLS" ], "resolutions": [ { "width": 1280, "height": 720 } ], "authorizationTypes": [ "NONE" ], "videoCodecs": [ "H264" ], "audioCodecs": [ "AAC" ] } ] }, { "type": "AlexaInterface", "interface": "Alexa.EndpointHealth", "version": "3", "properties": { "supported": [ { "name": "connectivity" } ], "proactivelyReported": true, "retrievable": true } }, { "type": "AlexaInterface", "interface": "Alexa", "version": "3" } ] } </code> ===== BLE tracker smartband ===== ==== esphome ==== enable esp32_ble_tracker and a binary sensor on ble_presence <code> esp32_ble_tracker: binary_sensor: - platform: ble_presence mac_address: E8:36:FD:20:E3:54 id: miband_presence_scipio name: "MiBand presence scipio" </code> ==== hass ==== automation directly on sensor created by esphome <code> - alias: cancello trigger: - entity_id: binary_sensor.miband_presence_scipio platform: state to: 'on' for: seconds: 2 - entity_id: binary_sensor.miband_presence_scipio platform: state to: 'off' for: seconds: 2 action: - service: notify.alexa_media data_template: message: > {% if is_state('binary_sensor.miband_presence_scipio', 'on') %} 'Stefano è arrivato' {% else %} 'Stefano è partito' {% endif %} data: type: announce method: all target: - show - Echo </code> example of added binary sensor defined on ble sensor <code> binary_sensor: - platform: template sensors: miband_scipio_sticky: value_template: >- {{is_state('binary_sensor.miband_presence_scipio', 'on')}} delay_off: 60 </code> ===== BLE bluetooth tracker (version 1) ===== hass input_boolean: <code yaml> beacon2_learn: name: learn beacon2 initial: off icon: mdi:mdi-tag-plus beacon2_active: name: beacon2 is recently seen icon: mdi:mdi-account-check beacon2_trigger: name: beacon2 is now detected initial: off icon: mdi:mdi-account-check </code> hass input_text: <code> beacon1: name: BLE beacon1 beacon2: name: BLE beacon2 </code> hass scripts: <code> set_ibeacon: sequence: - condition: template value_template: "{{ ibeacon != '' }}" - service: script.set_beacon1 data_template: ibeacon: "{{ ibeacon }}" - service: script.set_beacon2 data_template: ibeacon: "{{ ibeacon }}" set_beacon2: sequence: - service: script.beacon2_active data_template: ibeacon: "{{ ibeacon }}" - condition: state entity_id: input_boolean.beacon2_learn state: "on" - service: input_text.set_value data_template: entity_id: input_text.beacon2 value: "{{ ibeacon }}" - service: input_boolean.turn_off entity_id: input_boolean.beacon2_learn beacon2_active: sequence: - condition: template value_template: "{{ ibeacon == states('input_text.beacon2') }}" - service: input_boolean.turn_on entity_id: input_boolean.beacon2_trigger - delay: 1 - service: input_boolean.turn_off entity_id: input_boolean.beacon2_trigger </code> hass automations: <code> - alias: "beacon2 is active" trigger: platform: state entity_id: input_sensor.beacon2_trigger to: "on" condition: condition: state entity_id: input_boolean.beacon2_active state: "off" action: - service: input_boolean.turn_on entity_id: input_boolean.beacon2_active - service: notify.alexa_media data: message: "Stefano è arrivato" data: type: announce method: all target: - show - Echo - alias: "beacon2 is not active after last presence" trigger: platform: state entity_id: input_boolean.beacon2_trigger to: "off" for: 140 action: - service: input_boolean.turn_off entity_id: input_boolean.beacon2_active - service: notify.alexa_media data: message: "Stefano è partito" data: type: announce method: all target: - show - Echo </code> panel <code yaml> type: entities entities: - entity: input_boolean.beacon2_learn - entity: input_text.beacon2 - entity: input_boolean.beacon2_trigger - entity: input_boolean.beacon2_active title: Tracker cancello </code> esphome <code yaml> esp32_ble_tracker: on_ble_advertise: - then: - homeassistant.service: service: script.set_ibeacon data: ibeacon: !lambda |- for (auto data : x.get_manufacturer_datas()) { auto message = hexencode(data.data); ESP_LOGD("ble_adv", "manufacturer_data: %s [%d]", message.c_str(), message.size()); if (message.size() >= 73) { /* ibeacon = e2c56db5-dffb-48d2-b060-d0f5a71096e0 */ auto ibeacon = message.substr(6, 2) + message.substr(9, 2) + message.substr(12, 2) + message.substr(15, 2) + '-' + message.substr(18, 2) + message.substr(21, 2) + '-' + message.substr(24, 2) + message.substr(27, 2) + '-' + message.substr(30, 2) + message.substr(33, 2) + '-' + message.substr(36, 2) + message.substr(39, 2) + message.substr(42, 2) + message.substr(45, 2) + message.substr(48, 1); return ibeacon.c_str(); } } return ""; </code> ===== BLE bluetooth tracker (version 2) ===== <code yaml> text_sensor: - platform: template name: "BLE ibeacon" id: template_text esp32_ble_tracker: on_ble_advertise: - then: - lambda: |- for (auto data : x.get_manufacturer_datas()) { auto message = hexencode(data.data); ESP_LOGD("ble_adv", "manufacturer_data: %s [%d]", message.c_str(), message.size()); if (message.size() >= 73) { /* ibeacon = e2c56db5-dffb-48d2-b060-d0f5a71096e0 */ auto ibeacon = message.substr(6, 2) + message.substr(9, 2) + message.substr(12, 2) + message.substr(15, 2) + '-' + message.substr(18, 2) + message.substr(21, 2) + '-' + message.substr(24, 2) + message.substr(27, 2) + '-' + message.substr(30, 2) + message.substr(33, 2) + '-' + message.substr(36, 2) + message.substr(39, 2) + message.substr(42, 2) + message.substr(45, 2) + message.substr(48, 1); id(template_text).publish_state(ibeacon.c_str()); } } </code> ===== BLE bluetooth tracker (deprecated) ===== parameters to change: * uuid: "02.15.E2.C5.6D.B5.DF.FB.48.D2.B0.60.D0.F5.A7.10.96.E0.00.01.00.02.C8 (23)" * name: "scipio cell" <code> binary_sensor: - platform: template device_class: presence name: "scipio cell" id: beacon1 script: - id: ble_off_script mode: restart then: - binary_sensor.template.publish: id: beacon1 state: true - delay: 60s - binary_sensor.template.publish: id: beacon1 state: false esp32_ble_tracker: on_ble_advertise: - then: - lambda: |- for (auto data : x.get_manufacturer_datas()) { if (strcmp(hexencode(data.data).c_str(), "02.15.E2.C5.6D.B5.DF.FB.48.D2.B0.60.D0.F5.A7.10.96.E0.00.01.00.02.C8 (23)") == 0) { ESP_LOGD("ble_adv", "beacon1 found"); id(ble_off_script).execute(); } else { ESP_LOGD("ble_adv", " - %s", hexencode(data.data).c_str()); } } </code> projects/internetofthings/esphome.txt Last modified: 2021/07/06 07:26by scipio