Notification sur smartphone quand un fichier sur PC est modifié

Notification sur smartphone quand un fichier sur PC est modifié - Divers - Programmation

Marsh Posté le 03-11-2018 à 18:32:36    

Bonjour,

 

J'ai un système automatisé qui ajoute une ligne dans un fichier .txt sur un PC (Win7) quand un événement survient.
Mon projet est de recevoir une notification push sur des appareils Android ou Ios pour prévenir de l’événement avec le texte de la dernière ligne.

 

Pouvez vous me proposer des méthodes pour arriver à cela?
Mes faibles compétences en programmation sont "universitaires" et ce n'était pas la spécialité de ma branche!
Du coup j'envisage de creuser du côté du planificateur de tâche de Windows ou à IFTTT. Vous pensez qu'un outil de ce genre peut faire le job?

 

Merci


Message édité par raph 182 le 03-11-2018 à 18:33:08
Reply

Marsh Posté le 03-11-2018 à 18:32:36   

Reply

Marsh Posté le 04-11-2018 à 11:26:21    

Tu peux coupler un script ou programme qui implémente un "file system watcher" (très simple en powershell ou c#) qui va déclencher une action pour lire la dernière ligne du fichier et appeler un webhook sur IFFT (Receive a web request par exemple) pour générer ta notification android/ios

Reply

Marsh Posté le 04-11-2018 à 23:43:02    

Merci de ta réponse,  
 
Du coup je me suis lancé dans le C# en trouvant des extraits de programmes qui circulent sur le net.
 
Bon, j'ai pas encore capté la façon d'articuler cela proprement (namespace, déclaration...) donc ça me renvoi des erreurs mais ma grande question pour l'instant est:  
Comment émettre par Webhook depuis un programme C#?  
 
 

Code :
  1. using System;
  2. using System.IO;
  3. using System.Security.Permissions;
  4. public class Watcher
  5. {
  6.     public static void Main()
  7.     {
  8.     Run();
  9.     }
  10.     [PermissionSet(SecurityAction.Demand, Name="FullTrust" )]
  11.     public static void Run()
  12.     {
  13.         // Create a new FileSystemWatcher and set its properties.
  14.         FileSystemWatcher watcher = new FileSystemWatcher();
  15.         watcher.Path = @"C:\Storage Card MMC\Historique";
  16.        
  17.         /* Watch for changes in LastWrite times */
  18.         watcher.NotifyFilter = NotifyFilters.LastWrite;
  19.        
  20.         // Only watch the text files.
  21.         watcher.Filter = "Historique0.txt";
  22.         // Add event handlers.
  23.         watcher.Changed += new FileSystemEventHandler(OnChanged);
  24.        
  25.         // Begin watching.
  26.         watcher.EnableRaisingEvents = true;
  27.         // Wait for the user to quit the program.
  28.         Console.WriteLine("Pressez \'q\' pour arrêter l'envoi de notifications de pannes" );
  29.         while(Console.Read()!='q');
  30.     }
  31.     // Define the event handlers.
  32.     private static void OnChanged(object source, FileSystemEventArgs e)
  33.     {
  34.     // Specify what is done when a file is changed
  35.        
  36.     public static string ReadLastLine(string path);
  37.      {
  38.         // Récupération de la derniere ligne du fichier
  39.       string dernligne = File.ReadAllLines(@"C:\Storage Card MMC\Historique\Historique0.txt" ).last();
  40.       // Séparation en colonnes
  41.       string[] colonnes = dernligne.Split('\t');
  42.       // Récupération de la 14ème et 15ème colonne (commence à 0)
  43.       string datepanne = colonnes[13];
  44.       string panne = colonnes[14];
  45.      }
  46.     }
  47. }

Reply

Marsh Posté le 05-11-2018 à 00:02:43    

Sur ifft tu crées une recette avec le trigger receive web request https://ifttt.com/maker_webhooks
Puis dans ton code c# tu fais une requêtes http de type post (avec httpclient par exemple ou en legacy HttpWebRequest).
Si tu veux envoyer le contenu de ta ligne tu peux faire un json qui contient value1 comme nom et ton texte en value.
Genre { "value1": "montexte" } (si ton texte contient des caractères réservés faut les escap)

 

Edit : vaut mieux utiliser ReadLines que ReadAllLines si possible


Message édité par Je@nb le 05-11-2018 à 00:03:11
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed