projects:internetofthings:esphome

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:internetofthings:esphome [2021/02/19 18:25] – [BLE bluetooth tracker] scipioprojects:internetofthings:esphome [2021/07/06 07:26] (current) – [ESP32 cam] scipio
Line 1: Line 1:
 ====== ESPHOME ====== ====== 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) ===== ===== BLE bluetooth tracker (version 1) =====
  
-hass+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> <code yaml>
-input_text+type: entities 
-  - ibeacon: +entities
-      name: ibeacon +  - entityinput_boolean.beacon2_learn 
-      initial: not received +  - entity: input_text.beacon2 
-       +  - entityinput_boolean.beacon2_trigger 
-scripts+  - entityinput_boolean.beacon2_active 
-  set_ibeacon: +titleTracker cancello
-    sequence: +
-      service: input_text.set_value +
-        data_template+
-          entity_idinput_text.ibeacon +
-          value"{{ ibeacon }}"+
 </code> </code>
  
  • projects/internetofthings/esphome.1613755552.txt.gz
  • Last modified: 2021/02/19 18:25
  • by scipio