Me revoila ! Bon j'ai du chercher mais j'ai fini par réussir ! Depuis 19h30 je ne comprenais pas pourquoi en envoyant 3 données, le serveur ne traitait que la première... et pour être franc je ne comprends toujours pas pourquoi l'envoi de 3 données dans la même fonction pose problème bref. J'ai triché mais ca fonctionne ! Il reste juste un souci a régler pour les téls non rooté (comme moi), la fermeture de termux une fois fini... (exit ne le ferme pas vraiment)
C'EST PARTIE POUR LE TUTO !!! MAIS !!!! Avant tout !!! Faites un gros bisou a Dimlos et Endercraft !!!!! Sans eux j'en serais encore a sucer mon pouce !!!!
Donc ! En premier, le serveur, pour moi c'est en pyton. Du coup... on installe python (googlez et prenez l'exécutable pour Windows) et un éditeur de code. Perso j'utilise quelque chose de léger, "Notepad++" Une fois que c'est fait, on lance "Notepad++" ou tout autres éditeur de code prenant le langage python et on copie/colle le code ci dessous qu'on sauvegarde en Python ".py" (ne prenez pas les #///// c'est juste pour délimiter) :
Python:
#///////////////////////////////////////
import socket
def receive_data_from_phone():
host = '0.0.0.0'
port = 1234
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
data1 = ""
data2 = ""
data3 = ""
data_count = 0
while True:
conn, addr = s.accept()
data = conn.recv(1024).decode()
conn.close()
# Sauvegarde des données dans les variables appropriées
if data_count == 0:
data1 = data
data_count += 1
elif data_count == 1:
data2 = data
data_count += 1
elif data_count == 2:
data3 = data
data_count += 1
# Une fois les trois données reçues, affichage et réinitialisation du compteur
if data_count == 3:
print("Donnée 1 :", data1)
print("Donnée 2 :", data2)
print("Donnée 3 :", data3)
data_count = 0
receive_data_from_phone()
#///////////////////////////////////////
Il attend de recevoir les 3 données avant de les afficher (moins d'une seconde une fois la notif reçue). Dans l'ordre suivant :
Application (suivant si vous utilisez discord, sms, ou autres)
Expediteur
Message
Concernant Macrodroid.
Il faut installer termux depuis le site officiel F-Droid (ou installer leur appli, c'est pas dégueu) et non par google play !!! TRES IMPORTANT !!! Ensuite, installez le plugin termux:tasker (certaines versions ne l'acceptent pas, d'ou la nécéssité de ne pas prendre la version google play)
Lancez termux et installez python avec les lignes suivantes (une par une):
pkg upgrade
pkg install python
print("Hello, World") #Si Hello, World s'affiche... on est bon !
Creez votre macro, déclencheur, "Notification reçue", selectionnez l'appli et toutes les notifications (je n'ai testé que sur Discord pour le moment, mais ca doit être semblable pour la plupart dont les sms).
Ensuite créez trois variables (En bas, "variables locales", "+", Le nom que vous voulez mais faut s'en souvenir, type de variable = chaine), une pour l'appli (pratique si vous voulez utiliser ce programme pour plusieurs appli/sms, vous saurez d'ou ca provient) une pour l'expediteur (c'est mieux de savoir de qui ca vient) et une pour le message (Wé c'est un peu le but).
Laissez macrodroid de coté pour le moment.
Ensuite, le script.py qui doit se trouver dans .termux/tasker du téléphone (OBLIGATOIRE) avec les lignes suivantes dans termux:
cd ~/.termux/tasker/
nano nomduscript.py
Puis copiez/collez le code ci dessous ou réécrivez le. Une fois fini : touche de la fenêtre "ctrl" + x pour sauvegarder et fermer, acceptez les modifications et le nom si c'est celui que vous voulez.
Python:
#/////////////////////////////////////////
#!/bin/env python
import socket
import sys
from signal import signal, SIGPIPE, SIG_DFL #Annule les erreurs PIPE... ce qui arrivait de temps en temps
signal(SIGPIPE, SIG_DFL)
def send():
data1=sys.argv[1]
host = 'IP de votre serveur'
port = 1234
s.socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.sendall(data1.encode())
s.close
send2()
def send2():
data2=sys.argv[2]
host = 'IP de votre serveur'
port = 1234
s.socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.sendall(data2.encode())
s.close
send3()
def send3():
data3=sys.argv[3]
host = 'IP de votre serveur'
port = 1234
s.socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.sendall(data3.encode())
s.close
send()
#///////////////////////////////////
EDIT: Remplacez "IPde votre serveur" par l'ip de votre ordinateur"
Pour une raison que j'ignore, si vous ne faites qu'une fonction pour envoyer les 3 données, le serveur n'en recoit qu'une... Voila pourquoi il y a trois fonctions.
Ensuite, retournez sur Macrodroid, dans votre macro, "Actions", "+", catégorie "Variables" (En bas), définir une variable, puis a chacune de vos trois variables, vous la selectionnez et selectionnez une valeur grace a l'icone a droite de "valeur" mais pas n'importe laquelle !!!
Les valeurs de chaque variable !
Pour l'appli "{not_app_name}" AVEC LES GUILLEMETS POUR TOUTES LES VALEURS !!! IMPORTANT !!
pour l'expediteur "{not_title}"
pour le message "{notification}"
Les guillemets sont importantes car si le nom de l'appli ou l'expéditeur a un espace, il passe en valeur suivante...
Ensuite on ajoute une dernière "Actions" en dessous de nos petites variables, catégorie "Applications", en bas tasker/plugin Locale, termux:tasker, termux.
Configuration, tres simple, dans excutable, le nom du script fait avec termux. nomduscript.py, dans arguments (remplacez les noms par les noms de vos variables) :
[lv=Application]
[lv=Expediteur]
[lv=Message]
Ce n'est pas un "i" majuscule mais bien un "L" minuscule suivit d'un "v". Je ne sais pas si la casse est importante, dans le doute mettez EXACTEMENT le même nom a chaque argument et l'un en dessous de l'autre. On sauvegarde et on revient en arrière.
Ensuite ! ET DANS CETTE ORDRE ! On va dans le dossier de notre script.py sur le serveur (Votre ordinateur), clique droit dans le dossier (sans rien selectionner) et on ouvre powershell ou cmd (Terminal). Et on lance le serveur avec la ligne "Python Nomduscript.py" (sans les guillemets). Le curseur passe a la ligne et attend. Le serveur est pret. (Si vous êtes a l'aise avec python, modifiez le code serveur pour en faire ce que vous voulez des résultats des notifications). Et maintenant, activez votre macro dans Macrodroid. Testez !
Fini !
Bonus !!!!
Si, comme moi vous voulez faire ca sur votre tél principal qui vous suit partout ! Vous pouvez ajouter 2 conditions qui éviterons a votre tél de faire tout ca si vous n'êtes pas chez vous ! La première est d'ajouter la condition "si vous êtes connecté au wifi SSID "TaMaisonàToi" ca évitera a votre tél de le faire pour rien. La seconde condition qui peut être intéressante, c'est un autre "SI"... "Si" le ping de votre tél arrive a joindre votre serveur ! (IP de votre ordinateur) Parce que si il est éteint... ca marche moins bien ! Donc deux petites "clause if", l'un pour "connectivité"/ "SSID" et l'autre pour un "Request HTTP". Je n'ai pas la procédure exacte (Il est 3h30 chui HS mais comme promis, je partage) mais ce n'est pas très compliqué et google n'est jamais loin.
GENERIQUE DE FIN
Il n'y a pas d'interface autre que le Terminal dans ce que je donne, le tuto est déjà bien long... faut pas déconner
Je tiens a préciser que j'ai commencer a coder il y a 4 mois environ... donc oui il peut LARGEMENT être optimisé. Faites vous plaisir et partagez !
Pensez TOUJOURS a lancer le serveur avant TOUTES choses !
Je tiens a nouveau a remercier Dimlos et Endercraft sans qui tout ca ne serait pas là ! DES DIEUX BORDEL !!! DES DIEUX !!!!! Si vous modifiez et partager, s'il vous plait, citez ces deux âmes charitables ! Moi ca ne sert a rien, j'ai fait qu'écouter (mais y a fallut m'expliquer longtemps)
J'espère que ca servira a d'autres, prenez du kiffe !!!! Et si y a une erreur ou un souci, j'essayerais d'aider comme je peux !