Textkarte mit anschließendem "Senden" Knopf

HI!

Ich überlege die ganze zeit wie ich eine Karte auf dem Dashboard erstellen könnte un der ich eien beliebigen Text eintrage und diesen dann per “senden” knopf an vorkonfigurierten Kontakt per Sonos TTS ansage wieergeben kann…

Hat einer eine Idee wie man das realisieren könnte?

Vielleicht hilft dir das weiter. https://community.home-assistant.io/t/lovelace-text-input-row/112002/6

1 „Gefällt mir“

Ich habe das so gelöst pro Raum.

PS: Das ist ein bei meiner Frau sehr beliebtes Feature :slight_smile:

Zusammenfassung
type: entities
entities:
  - entity: input_text.sonos_alle_funtext
    name: " "
    secondary_info: none
    card_mod:
      style:
        hui-generic-entity-row $: |
          state-badge {
            display: none; /* Blendet das Icon aus */
          }
          :host {
            --mdc-text-field-fill-color: #13323E; /* Hintergrund des Eingabefelds */
            --mdc-text-field-idle-line-color: white; /* Linie im Normalzustand */
            --mdc-text-field-hover-line-color: grey; /* Linie beim Hover */
            --mdc-theme-primary: red;
            --text-field-padding: 5px;
            --mdc-text-field-ink-color: white;
          }
        ha-textfield $: |
          .mdc-text-field {
            height: 40px !important;
          }
          .mdc-text-field__input {
            align-self: center;
          }
          span#label {
            display: none;
          }
        .: |
          ha-textfield {
            height: 40px;
          }

type: custom:button-card
name: Absenden
icon: mdi:send-circle-outline
layout: icon_name
show_icon: true
show_name: true
styles:
  card:
    - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.66)
    - display: flex
    - align-items: center
    - justify-content: flex-start
    - width: 190px
    - padding: 5px
  icon:
    - width: 38px
    - height: 38px
    - margin-right: 0px
    - margin-left: "-12px"
    - color: "#13323E"
  name:
    - font-size: 20px
    - color: "#13323E"
    - margin-left: "-15px"
tap_action:
  action: perform-action
  perform_action: script.turn_on
  target:
    entity_id: script.om_scr_funtexte_sprechen_2
  data:
    variables:
      target: AllHaveFun
grid_options:
  columns: 5

EDIT:
Diese Einstellungen gebe ich noch mit aber sie werden selten geändert im Alltag. Insbesondere die Alarm-Lautstärke verwenden wir fast nie :wink:

2 „Gefällt mir“

KLasse! Vielen Dank schon mal!

Ist es irgendwie möglich es so einzustellen das nach dem absenden das Textfeld gelöscht wird? Ist lästig es immer manuell zu löschen…

Jetzt ist es bei mir so:

type: vertical-stack
cards:
  - type: entities
    entities:
      - entity: input_text.tts_ansage
        name: Text für Ansage
        secondary_info: none
        card_mod:
          style:
            hui-generic-entity-row $: |
              state-badge {
                display: none; /* Blendet das Icon aus */
              }
                        }
              :host {
                --mdc-text-field-idle-line-color: white; /* Linie im Normalzustand */
                --mdc-text-field-hover-line-color: grey; /* Linie beim Hover */
                --mdc-theme-primary: red;
                --text-field-padding: 5px;
              }
            ha-textfield $: |
              .mdc-text-field {
                height: 40px !important;
              }
              .mdc-text-field__input {
                align-self: center;
              }
              span#label {
                display: none;
              }
            .: |
              ha-textfield {
                height: 40px;
              }
    state_color: true
  - type: custom:button-card
    name: Sprechen
    icon: mdi:bullhorn
    show_name: true
    show_icon: true
    tap_action:
      action: call-service
      service: script.tts_ansage_dominic
      data: {}
    styles:
      card:
        - box-shadow: 0px 0px 0px 0px rgba(0,0,0,0)
        - display: flex
        - align-items: center
        - justify-content: flex-start
        - width: null
        - padding: 5px
      icon:
        - width: 38px
        - height: 38px
        - margin-right:""
        - margin-left: ""
        - color: red
      name:
        - font-size: 20px
        - color: ""
        - margin-left: ""

Gehe hierfür in Dein Script tts_ansage_dominic
und füge diesen Schritt nach der Ansage ein

  - data:
      value: ""
    target:
      entity_id:
        - input_text.tts_ansage
    action: input_text.set_value

Das Löschen Deines Textes wäre dann auch gleich auf dem Dashboard die sichtbare Bestätigung, daß das Script aufgerufen/“durchgeführt” wurde.

Viel Spaß beim Sprechen lassen :slight_smile:

Hmm…irgendwie funktioniert das nicht bei mir.

Muss aber dazu sagen das ich nicht tts sondern chime_tts.say nutze…

Was nutzt du? Wie sieht dein Script aus?

Das ist meiner:

action: chime_tts.say
metadata: {}
data:
  volume_level: 0.6
  announce: true
  message: "\"{{ states('input_text.tts_ansage') }}\""
  value: ""
  entity_id:
    - input_text.tts_ansage
  action: input_text.set_value
target:
  device_id: cc322fc616796f12604392090ecdc18b
enabled: true

Sry, ich hab mich wohl mißverständlich ausgedrückt, nicht im action Teil der Ansage Befehls sondern des Scriptes das die Ansage macht.

alias: tts_ansage_dominic
mode: single
sequence:
  - action: chime_tts.say
    target:
      device_id: cc322fc616796f12604392090ecdc18b
    data:
      volume_level: 0.6
      announce: true
      message: "{{ states('input_text.tts_ansage') }}"
  - delay:
      seconds: 3
  - action: input_text.set_value
    target:
      entity_id: input_text.tts_ansage
    data:
      value: ""

Ah, okay, verstehe.. Aber bekomme eine Fehlermeldung beim speichern.

Irgendwie bin ich n bisschen zu doof für…

Das wird schon.

Dieses Testscript habe ich mal zusammengeklickt und es funktioniert.
Überprüfe vor allem wie Du Deine Boxen zum Sprechen bringst.

sequence:
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.sonos_olaf
      message: das ist ein test
    target:
      entity_id: tts.home_assistant_cloud
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - action: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.sonos_olaf
      message: " {{states('input_text.sonos_olaf_funtext')}} "
    target:
      entity_id: tts.home_assistant_cloud
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - action: input_text.set_value
    metadata: {}
    data:
      value: ""
    target:
      entity_id: input_text.sonos_olaf_funtext
alias: 1_forum_tts
description: ""

Dir mein Originales zu geben, würde nur unnötig verkomplizieren weil ich zentrale Sprechscripte habe, denen per Variablen Texte und andere Attribute mitgegeben werden.
PS: Ich nutze Sonos Boxen.

Jetzt hab ich es!

Hab es auch etwas zusammengewürfelt und für mich etwas angepasst…

2 Sachen Stören meinen Monk aber noch:

  1. Die INFO “Für Handy Wichtig” ja, das ist etwas Nervig…
  2. Wenn ich bei meiner Config ins Textfeld gehe rutscht der Text “ Schreibe hier…” nach oben aber nicht weit genug sodas der geschriebene Text quasi drüber schreibt… Lässt sich das anpassen? Entweder der obere Text etwas höher oder der geschriebene etwas tiefer?

Hier mein soweit fertiger Code:

square: false
type: grid
cards:
  - type: entities
    entities:
      - entity: input_text.tts_ansage
        name: Schreibe hier...
        secondary_info: none
        card_mod:
          style:
            hui-generic-entity-row $: |
              state-badge {
                display: true; /* Blendet das Icon aus */
              }
              :host {
                --mdc-text-field-fill-color: ; /* Hintergrund des Eingabefelds */
                --mdc-text-field-idle-line-color: black; /* Linie im Normalzustand */
                --mdc-text-field-hover-line-color: grey; /* Linie beim Hover */
                --mdc-theme-primary: red !important;
                --text-field-padding: 5px;
                --mdc-text-field-ink-color: ;
              }
            ha-textfield $: |
              .mdc-text-field {
                height: 40px !important;
              }
              .mdc-text-field__input {
                align-self: center;
              }
              span#label {
                display: true;
              }
            .: |
              ha-textfield {
                height: 40px;
              }
    state_color: false
  - type: horizontal-stack
    cards:
      - entity: script.tts_ansage_dominic
        name: Dominic
        icon: hass:send
        show_name: true
        show_icon: true
        size: 70%
        color_type: card
        styles:
          card:
            - height: 60px
            - width: null
            - color: rgba(255, 0, 0, 1)
        type: custom:button-card
        tap_action:
          haptic: success
          action: call-service
          service: script.tts_ansage_dominic
      - entity: script.tts_ansage_papa
        name: Papa
        icon: hass:send
        show_name: true
        show_icon: true
        size: 70%
        color_type: card
        styles:
          card:
            - height: 60px
            - width: null
            - color: rgba(255, 0, 0, 1)
        type: custom:button-card
        tap_action:
          haptic: success
          action: call-service
          service: script.tts_ansage_papa
columns: 1
grid_options:
  columns: full


Der Papa Button brachte ein Lächeln in das Gesicht meiner Frau. :grinning_face:

Ich würde das Hier schreiben einfach weglassen. Ein paar Mal gemacht, ist das ein Selbstläufer.
Man könnte auch einfach eine Überschrift oder Markdown über dem Textfelder platzieren.
Vielleicht könnte man über Card_mod auch noch mehr manipulieren aber ich gestehe, mir ist momentan nicht nach tiefer gehen. Ich bin mitten am Erkunden von Proxmox und migrieren…

:rofl:

Alles gut, denke ich lasse es einfach weg. Dennnoch danke für deine Hilfe! :kissing_heart: