Mon problème
Bonjour,
Aujourd’hui, grâce à l’application mobile home assistant, je me suis rendu compte que certaines informations pouvaient être extraites d’un téléphone Android (pas sur iPhone apparemment).
Dans mon exemple, j’utilise le sensor : sensor.telephone_jh_active_notification_count
En allant chercher les attributs d’état, voici la liste qui sort :
Attributs d'état
`
android.appInfo_io.homeassistant.companion.android_-561227077: ApplicationInfo{240984e io.homeassistant.companion.android}
android.appInfo_tunein.player_2131428862: ApplicationInfo{e3ccd6f tunein.player}
android.bigText_io.homeassistant.companion.android_-561227077: *mon adresse en clair*, France (~12.407m)
android.compactActions_tunein.player_2131428862:
- 2
- 3
android.infoText_io.homeassistant.companion.android_-561227077: "null"
android.infoText_tunein.player_2131428862: "null"
android.largeIcon_io.homeassistant.companion.android_-561227077: "null"
android.largeIcon_tunein.player_2131428862: Icon(typ=BITMAP size=168x168)
android.mediaSession_tunein.player_2131428862: android.media.session.MediaSession$Token@4ada0bd
android.progressIndeterminate_io.homeassistant.companion.android_-561227077: false
android.progressIndeterminate_tunein.player_2131428862: false
android.progressMax_io.homeassistant.companion.android_-561227077: 0
android.progressMax_tunein.player_2131428862: 0
android.progress_io.homeassistant.companion.android_-561227077: 0
android.progress_tunein.player_2131428862: 0
android.reduced.images_io.homeassistant.companion.android_-561227077: true
android.reduced.images_tunein.player_2131428862: true
android.remoteInputHistory_io.homeassistant.companion.android_-561227077: "null"
android.remoteInputHistory_tunein.player_2131428862: "null"
android.showChronometer_io.homeassistant.companion.android_-561227077: false
android.showChronometer_tunein.player_2131428862: false
android.showWhen_io.homeassistant.companion.android_-561227077: true
android.showWhen_tunein.player_2131428862: false
android.subText_io.homeassistant.companion.android_-561227077: "null"
android.subText_tunein.player_2131428862: "null"
android.template_io.homeassistant.companion.android_-561227077: android.app.Notification$BigTextStyle
android.template_tunein.player_2131428862: android.app.Notification$MediaStyle
android.text_io.homeassistant.companion.android_-561227077: *mon adresse en clair*, France (~12.407m)
android.text_tunein.player_2131428862: Le Son Pop-Rock
android.title_io.homeassistant.companion.android_-561227077: Mode haute précision (GPS) activé
android.title_tunein.player_2131428862: RTL2
androidx.core.app.extra.COMPAT_TEMPLATE_io.homeassistant.companion.android_-561227077: androidx.core.app.NotificationCompat$BigTextStyle
io.homeassistant.companion.android_-561227077_category: service
io.homeassistant.companion.android_-561227077_channel_id: High accuracy location
io.homeassistant.companion.android_-561227077_group_id: "null"
io.homeassistant.companion.android_-561227077_is_clearable: false
io.homeassistant.companion.android_-561227077_is_ongoing: true
io.homeassistant.companion.android_-561227077_post_time: 1702297827957
tunein.player_2131428862_category: transport
tunein.player_2131428862_channel_id: tunein.player
tunein.player_2131428862_group_id: "null"
tunein.player_2131428862_is_clearable: true
tunein.player_2131428862_is_ongoing: false
tunein.player_2131428862_post_time: 1702279809784
unit_of_measurement: notifications
icon: mdi:bell-ring
friendly_name: Téléphone JH Active notification count
android.appInfo_com.google.android.apps.messaging_2: ApplicationInfo{d118677 com.google.android.apps.messaging}
android.conversationUnreadMessageCount_com.google.android.apps.messaging_2: 0
android.hiddenConversationTitle_com.google.android.apps.messaging_2: "null"
android.infoText_com.google.android.apps.messaging_2: "null"
android.isGroupConversation_com.google.android.apps.messaging_2: false
android.largeIcon_com.google.android.apps.messaging_2: "null"
android.messages_com.google.android.apps.messaging_2:
- "{extras={}, text=test 33, time=1702297815593}"
- >-
{extras={}, sender_person=android.app.Person@ff2ff0fc, sender=Julien
H., text=test 33, time=1702297814800}
android.messagingStyleUser_com.google.android.apps.messaging_2: >-
{key=null, uri=null, icon={string1=null, obj=android.graphics.Bitmap@3dd34d,
int1=0, int2=0, type=1}, name=Vous, isBot=false, isImportant=false}
android.messagingUser_com.google.android.apps.messaging_2: android.app.Person@4cdcc60c
android.people.list_com.google.android.apps.messaging_2:
- android.app.Person@59aa158e
android.progressIndeterminate_com.google.android.apps.messaging_2: false
android.progressMax_com.google.android.apps.messaging_2: 0
android.progress_com.google.android.apps.messaging_2: 0
android.reduced.images_com.google.android.apps.messaging_2: true
android.remoteInputHistory_com.google.android.apps.messaging_2: "null"
android.selfDisplayName_com.google.android.apps.messaging_2: Vous
android.showChronometer_com.google.android.apps.messaging_2: false
android.showWhen_com.google.android.apps.messaging_2: true
android.subText_com.google.android.apps.messaging_2: "null"
android.support.v4.app.extra.COMPAT_TEMPLATE_com.google.android.apps.messaging_2: androidx.core.app.NotificationCompat$MessagingStyle
android.template_com.google.android.apps.messaging_2: android.app.Notification$MessagingStyle
android.text_com.google.android.apps.messaging_2: test 33
android.title_com.google.android.apps.messaging_2: Julien H.
android.wearable.EXTENSIONS_com.google.android.apps.messaging_2: >-
{actions=[android.app.Notification$Action@f0e1313,
android.app.Notification$Action@6801950,
android.app.Notification$Action@215749]}
com.google.android.apps.messaging_2_category: msg
com.google.android.apps.messaging_2_channel_id: bugle_default_channel
com.google.android.apps.messaging_2_group_id: com.google.android.apps.messaging:incoming_message_group_key
com.google.android.apps.messaging_2_is_clearable: true
com.google.android.apps.messaging_2_is_ongoing: false
com.google.android.apps.messaging_2_post_time: 1702297816015
extra_im_notification_conversation_id_com.google.android.apps.messaging_2: "130"
extra_im_notification_earliest_timestamp_com.google.android.apps.messaging_2: 1702297814800
extra_im_notification_latest_timestamp_com.google.android.apps.messaging_2: 1702297814800
extra_im_notification_message_ids_com.google.android.apps.messaging_2:
- "20640"
- "20641"
`
On peut remarquer que toutes mes notifications ainsi que les détails s’affichent ici.
En partant de ce constat, j’ai isolé tout ce qui contient « messaging_2
»
Partie notification SMS par "messaging_2"
android.appInfo_com.google.android.apps.messaging_2: ApplicationInfo{d118677 com.google.android.apps.messaging}
android.conversationUnreadMessageCount_com.google.android.apps.messaging_2: 0
android.hiddenConversationTitle_com.google.android.apps.messaging_2: "null"
android.infoText_com.google.android.apps.messaging_2: "null"
android.isGroupConversation_com.google.android.apps.messaging_2: false
android.largeIcon_com.google.android.apps.messaging_2: "null"
android.messages_com.google.android.apps.messaging_2:
- "{extras={}, text=test 33, time=1702297815593}"
- >-
{extras={}, sender_person=android.app.Person@ff2ff0fc, sender=Julien
H., text=test 33, time=1702297814800}
android.messagingStyleUser_com.google.android.apps.messaging_2: >-
{key=null, uri=null, icon={string1=null, obj=android.graphics.Bitmap@3dd34d,
int1=0, int2=0, type=1}, name=Vous, isBot=false, isImportant=false}
android.messagingUser_com.google.android.apps.messaging_2: android.app.Person@4cdcc60c
android.people.list_com.google.android.apps.messaging_2:
- android.app.Person@59aa158e
android.progressIndeterminate_com.google.android.apps.messaging_2: false
android.progressMax_com.google.android.apps.messaging_2: 0
android.progress_com.google.android.apps.messaging_2: 0
android.reduced.images_com.google.android.apps.messaging_2: true
android.remoteInputHistory_com.google.android.apps.messaging_2: "null"
android.selfDisplayName_com.google.android.apps.messaging_2: Vous
android.showChronometer_com.google.android.apps.messaging_2: false
android.showWhen_com.google.android.apps.messaging_2: true
android.subText_com.google.android.apps.messaging_2: "null"
android.support.v4.app.extra.COMPAT_TEMPLATE_com.google.android.apps.messaging_2: androidx.core.app.NotificationCompat$MessagingStyle
android.template_com.google.android.apps.messaging_2: android.app.Notification$MessagingStyle
android.text_com.google.android.apps.messaging_2: test 33
android.title_com.google.android.apps.messaging_2: Julien H.
android.wearable.EXTENSIONS_com.google.android.apps.messaging_2: >-
{actions=[android.app.Notification$Action@f0e1313,
android.app.Notification$Action@6801950,
android.app.Notification$Action@215749]}
com.google.android.apps.messaging_2_category: msg
com.google.android.apps.messaging_2_channel_id: bugle_default_channel
com.google.android.apps.messaging_2_group_id: com.google.android.apps.messaging:incoming_message_group_key
com.google.android.apps.messaging_2_is_clearable: true
com.google.android.apps.messaging_2_is_ongoing: false
com.google.android.apps.messaging_2_post_time: 1702297816015
extra_im_notification_conversation_id_com.google.android.apps.messaging_2: "130"
extra_im_notification_earliest_timestamp_com.google.android.apps.messaging_2: 1702297814800
extra_im_notification_latest_timestamp_com.google.android.apps.messaging_2: 1702297814800
extra_im_notification_message_ids_com.google.android.apps.messaging_2:
- "20640"
- "20641"`
On peut se rendre que nous avons tout un tas d’informations :
Résumé
- Expéditeur (Sender): Julien H.
- Message: test 33
- Date et heure: Le timestamp associé à la notification est 1702297814800
- Style de messagerie (Messaging Style): Il s’agit d’une notification de style de messagerie, utilisant la classe
android.app.Notification.MessagingStyle
, ce qui indique une conversation de type messagerie. - Destinataire : Le destinataire de la notification est identifié comme « Vous ».
- Groupe de personnes (People): Il y a une liste de personnes associées à la conversation, et dans ce cas, une seule personne est répertoriée : Julien H. Ce qui est logique, puisque je me suis envoyé un message à moi-même et je n’avais aucun autre sms dans mes notifications.
- Canal de notification (Notification Channel): Le canal de notification est défini comme « bugle_default_channel ».
- ID de groupe de conversation (Conversation Group ID): L’ID du groupe de conversation est « com.google.android.apps.messaging:incoming_message_group_key ».
- ID de conversation (Conversation ID): L’ID de la conversation est « 130 ».
- ID de message (Message IDs): Il y a deux ID de message associés à cette notification : « 20640 » et « 20641 ».
- Réduction des images (Reduced Images): Les images réduites sont activées pour cette notification.
- D’autres détails (Wearable Extensions, Actions, etc.) : Il y a des extensions pour les montres connectées, des actions spécifiques, etc.
Pour commencer par faire simple, j’ai essayé d’extraire les informations qui m’intéressent afin de les placer dans une automatisation qui m’informe par telegram lors de l’affichage d’une notification sur mon téléphone concernant un SMS entrant.
J’ai commencé par me faire un script :
Script
sms_jh_notification_script:
sequence:
- service: notify.telegram_maison
data_template:
message: >
Julien vient de recevoir un SMS (script)
De : {{ state_attr('sensor.telephone_jh_active_notification_count', 'android.title_com.google.android.apps.messaging_2')}}
Le : {{ (state_attr('sensor.telephone_jh_active_notification_count', 'com.google.android.apps.messaging_2_post_time') / 1000) | timestamp_custom('%d/%m/%Y à %H:%M:%S') }}
Message : {{ state_attr('sensor.telephone_jh_active_notification_count', 'android.text_com.google.android.apps.messaging_2') }}
Puis une automatisation :
Automatisation
alias: Test SMS JH ++messages V2
description: Notification SMS JH
trigger:
- platform: state
entity_id: sensor.telephone_jh_active_notification_count
condition:
- condition: template
value_template: >
{{
trigger.from_state.attributes['android.messages_com.google.android.apps.messaging_2']
!=
trigger.to_state.attributes['android.messages_com.google.android.apps.messaging_2']
}}
action:
- service: script.turn_on
target:
entity_id: script.sms_jh_notification_script
data: {}
`
Le résultat sur Telegram :
On voit que la notif est simple, mais que toutes les informations sont bien présentes.
Mais cette partie là n’est en fait que le début des problèmes.
Rappelez vous que ces informations viennent seulement de l’affichage des notification. Et le soucis, est que si je n’efface pas la notification de mon téléphone, je reçois la notif telegram en boucle.
D’où le
condition:
- condition: template
value_template: >
{{
trigger.from_state.attributes['android.messages_com.google.android.apps.messaging_2']
!=
trigger.to_state.attributes['android.messages_com.google.android.apps.messaging_2']
}}
recommandé par chat GPT, mais qui évidement, ne fonctionne pas.
C’est là que je viens vous demander de l’aide.
Mes compétence sont trop limitées pour pouvoir étudier et essayer des façons de faire différentes.
L’avantage, c’est qu’en partant du principe que l’on peut contourner les notifications, on peut afficher sur nos systèmes non pas seulement les SMS, mais également, mails, WhatsApp, Snapchat, appel reçu, manqué, etc, etc…
Merci à vous de m’avoir lu.
Ma configuration
System Information
version | core-2023.12.1 |
---|---|
installation_type | Home Assistant OS |
dev | false |
hassio | true |
docker | true |
user | root |
virtualenv | false |
python_version | 3.11.6 |
os_name | Linux |
os_version | 6.1.63-haos |
arch | x86_64 |
timezone | Europe/Paris |
config_dir | /config |
Home Assistant Community Store
GitHub API | ok |
---|---|
GitHub Content | ok |
GitHub Web | ok |
GitHub API Calls Remaining | 5000 |
Installed Version | 1.33.0 |
Stage | running |
Available Repositories | 1364 |
Downloaded Repositories | 71 |
AccuWeather
can_reach_server | ok |
---|---|
remaining_requests | 23 |
Home Assistant Cloud
logged_in | true |
---|---|
subscription_expiration | 30 décembre 2023 à 01:00 |
relayer_connected | true |
relayer_region | eu-central-1 |
remote_enabled | true |
remote_connected | true |
alexa_enabled | false |
google_enabled | true |
remote_server | eu-central-1-8.ui.nabu.casa |
certificate_status | ready |
instance_id | 48f989b30efa4b67b2d220f6d4737050 |
can_reach_cert_server | ok |
can_reach_cloud_auth | ok |
can_reach_cloud | ok |
Home Assistant Supervisor
host_os | Home Assistant OS 11.2 |
---|---|
update_channel | stable |
supervisor_version | supervisor-2023.11.6 |
agent_version | 1.6.0 |
docker_version | 24.0.7 |
disk_total | 219.4 GB |
disk_used | 17.2 GB |
healthy | true |
supported | true |
board | generic-x86-64 |
supervisor_api | ok |
version_api | ok |
installed_addons | File editor (5.7.0), Duck DNS (1.15.0), Samba share (12.2.0), Home Assistant Google Drive Backup (0.112.1), Spotify Connect (0.12.6), FTP (4.7.3), Mosquitto broker (6.4.0), Zigbee2MQTT (1.34.0-1), Xiaomi Mi Scale (0.3.6), Frigate (Full Access) (0.12.1), Studio Code Server (5.14.2) |
Dashboards
dashboards | 13 |
---|---|
resources | 45 |
views | 85 |
mode | storage |
Recorder
oldest_recorder_run | 4 décembre 2023 à 03:12 |
---|---|
current_recorder_run | 10 décembre 2023 à 23:44 |
estimated_db_size | 780.84 MiB |
database_engine | sqlite |
database_version | 3.41.2 |
Spotify
api_endpoint_reachable | ok |
---|
Xiaomi Miot Auto
component_version | 0.7.13 |
---|---|
can_reach_server | ok |
can_reach_spec | ok |
logged_accounts | 1 |
total_devices | 14 |