Problème de récupération des éléments du corps du mail

Bonjour,
Maintenant que je fais tourner correctement maillistener, j’ai un problème d’analyse…
Comme plusieurs ici, je suis chez EPS-Homiris.
L’analyse de la mise en service ou de l’arrêt est simple à gérer, car dans l’objet du mail c’est indiqué, et donc facilement récupérable…
Par contre, la mise en « Alarme partielle » n’est stipulé que dans le corps du mail…
J’ai essayé avec les commandes [Texte] et [HTML], mais je n’arrive pas à déceler ce mot…
Vous faites comment ?

1 « J'aime »

Bonjour à tous,
@nhi , @DDEF , @clovis , @PapiGege , @laurent.da-col , @mmourcia
Je crois avoir compris que vous utilisiez ce plugin et que vous étiez aussi chez Homiris…
Comment faites vous ?

Bonjour

Essaye ça :

En déclencheur :
#[Maison][Alarme][Texte]#

Un bloc Si : #[Maison][Alarme][Texte]# matches « /partielle/ » (attention au guillemets “. “)

Ensuite les actions que tu as besoin

Gérard

Salut,

de mon coté j’ai fait

Un virtuel Alarme activée ou non

En relisant je vois que j’aurais pu faire mieux mais bon ca a le mérite de fonctionner

Un équipement maillistener

Il fetche les mails régulièrement (il s’appelle signoepspresence)

Un scénario qui regarde le contenu des emails

Il est déclenché par la réception d’une email

Pour être sur que je sois bien en présence d’une mail d’homiris, je contrôle l’expéditeur.
Ensuite je regarde le sujet et s’il contient le pattern Mise en marche alors c’est que l’alarme est activée et je mets à jour le virtuel et s’il contient le pattern Mise à l alors c’est le contraire.

Exemples d’exploitation du virtuel chez moi

  • Quand l’alarme est en marche, j’éteins toutes les lumières possibles
  • J’ai un capteur de mouvement à la descente d’escalier, lorsqu’il détecte un mouvement ET que l’alarme est en marche, ca veut dire que je dois désactiver l’alarme avant de me balader au RDC sous peine d’en prendre plein les oreilles

Voila, j’espère qie ca t’aidera

Salut
De mémoire, j’avais abandonné la lecture du corps du mail. Et donc, je ne sais plus qui de « Madame » ou « Monsieur » déclenche, tant pis.
Je ne sais pas si la situation a évolué depuis, mais vu ton message, ce n’est toujours pas fonctionnel.
une idée: passer par les sms qu’envoie homiris si tu es équipé GSM
A bientôt

Bonjour,
Je vais essayer…mais j’ai des doutes…

  1. Car le contenu du message est en HTML…
  2. Car j’arrive bien à déclencher mon scénario avec #[Maison][Richard Gmail][Expéditeur]#

Mais avec la condition #[Maison][Richard Gmail][HTML]# matches « /partielle/ » j’obtiens

[2023-05-31 15:32:16][SCENARIO] Start : Scenario lance manuellement.
[2023-05-31 15:32:16][SCENARIO] Exécution du sous-élément de type [condition] : if #[Maison][Richard Gmail][Texte]# matches "/partielle/"  
[2023-05-31 15:32:16][SCENARIO] Evaluation de la condition : [0 matches "/partielle/"] = 0
[2023-05-31 15:32:16][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-05-31 15:32:16][SCENARIO] Fin correcte du scénario

Tandis que la condition #[Maison][Richard Gmail][HTML]# matches « /partielle/ » me renvoie :

[2023-05-31 15:05:30][SCENARIO] -- Start : Scenario lance manuellement.
[2023-05-31 15:05:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Maison][Richard Gmail][HTML]# matches "/partielle/"
[2023-05-31 15:05:30][SCENARIO] Evaluation de la condition : ["

Suivi du contenu du mail, puis :

" matches "/partielle/"] = "

Et une nouvelle fois le contenu du mail, puis :

" matches "/partielle/"
[2023-05-31 15:05:30][SCENARIO] Expression non valide :  "

Et encore le contenu du mail, puis enfin :

" matches "/partielle/"
[2023-05-31 15:05:30][SCENARIO] Fin correcte du scénario

Merci mais mon problème n’est pas là…
C’est de savoir si c’est l’alarme totale ou partielle qui est activée et cette info n’est pas dans l’objet du mail mais dans le corps seulement…

@DDEF

Qu’entends-tu par là ?
On peut sniffer les sms ?
OUi, mon Homiris a une puce GSM

Je te confirme que ça ne fonctionne toujours pas dans le corps du mail:
Texte

Alors que le sujet est OK:

Pour le HTML, ok mais le matches ne marche pas non plus

Pas de solution à part tenter le sms

En fait, sur le site d’Homiris, tu peux recevoir des notifications mail ET sms, et ce je crois même si elle n’est pas équipée GSM. En effet, le GSM sert au lien entre ta maison et Homiris, et eux ensuite t’envoie un SMS si tu le souhaites.
Et là, si Jeedom est équipé d’un Dongle GSM, tu peux recevoir le sms et le traiter, à mon avis là, tu n’auras plus aucun soucis

Tu vas sur homiris, Espace abonnés, Configuration, SIGNO, et là tu gères tes règles et notifications (2 mails et 2 sms max si je ne me trompe)

Oui, je sais pour l’envoi de SMS de la part d’Homiris.
Mais je ne savais pas qu’il existait des Dongle pour capter des sms
Merci pour tes essais et tes explications

Avec plaisir.

Après, tu pourras voir sur le net que faire marcher ces clés « compatibles jeedom », c’est pas gagné, mais c’est un autre sujet, et cela ouvre, quand ça marche, de nouvelles perspectives à la domotique.

PS: il te faudra y intégrer une carte SIM, genre Free à 2€ par mois, si le réseau passe chez toi

Le plugin: https://doc.jeedom.com/fr_FR/plugins/communication/sms/

1 « J'aime »

Pour le moment je vais me contenter de Marche / Arrêt
Je rajoute sur ma longue liste ToDo…:wink:

Si je comprends mieux ton problème, le mail d’homiris contient des double quotes et celles-ci ne sont pas échappées par le plugin.
Jeedom se retrouve avec des fermetures de quotes au mauvais endroit etc.

Si tu es prêt à modifier une ligne de code, je peux t’indiquer un contournement.
Je n’ai pas en tête les effets de bord exacts.

Dans le fichier plugins/maillistener/resources/maillistener.js, au moment où l’on poste le résultat du fetch de mail (vers la ligne 88),

-		json: {"body": mail.text, "html": mail.html},
+		json: {"body": mail.text, "html": mail.html.replace(/[\"]/g, '\\"')},

La c’est juste un replace pour ce cas particulier et j’imagine qu’il existe des fonctions pour échapper tout correctement mais je ne connais pas le js.

Au final, le match répond normalement

3 « J'aime »

Merci pour ta proposition que je viens d’appliquer

request({
		url: encodeURI(apiurl),
		method: 'PUT',
		//json: {"body": mail.text, "html": mail.html},
        json: {"body": mail.text, "html": mail.html.replace(/[\"]/g, '\\"')},
	},
	function (error, response, body) {
		if (!error && response.statusCode == 200) {
			console.log('contact Jeedom avec retour :',response.statusCode);
		}
	});
});

Mais pour moi ça ne change rien… :frowning: J’ai relancé les dépendances et le demon…il faut faire autre chose ?

Non rien de plus, en tout cas je n’ai rien fait de plus de mon coté.
Par contre, si tu relances les dépendances, j’espère que cela ne vient pas écraser les modifications live.

Tu as réenclenché ton alarme pour qu’un nouveau mail soit généré et passe ainsi dans le replace ?

Bonjour,
J’ai vérifié ce matin, les modifications sont toujours présentes et je n’avais pas besoin de relancer car pour les tests je testais sur le mot « Bonjour » présent dans tous les mails Signo :wink:
Par contre je viens de retester l’expression ce matin et …miracle ça marche :slight_smile:
Je vais tester en live sur 24h et je validerai ta solution :wink:
Merci encore pour ton aide :slight_smile:

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.