Filtrer les numéros de teléphone

Bonjour, j'ai fait un projet domotique avec un arduino uno et un module GSM 800l. Tout fonctionne correctement. Je cherche maintenant à faire en sorte que l'arduino soit commandé qu'avec mon numéro de téléphone et non le numéro de téléphone de tout le monde (point de vu sécurité). Car si quelqu'un arrive à récupérer le numéro de l'arduino et fait un #A0, il ouvre les volets roulants ou pire encore, un #b1 la porte du garage ^^ Donc, qui pourrait m'aiguiller sur le bout de programme à faire ? Merci

bonjour, sans code difficile de donner une réponse, meme si j'en ai une. smsCallee de la lib gogprs

Voila le code :wink:
merci

domotique.txt (7.26 KB)

AT+CTM renvoi le numéro de l'appelant sms

infobarquee: AT+CTM renvoi le numéro de l'appelant sms

Donc si je comprends bien je récupère at+ctm que je stock dans une variable et après j'utilise un if ?

par exemple

bzhsurfing: Donc si je comprends bien je récupère at+ctm que je stock dans une variable et après j'utilise un if ?

Exactement.

Merci pour vos réponse donc le code devrait être comme ça ?

while(sim900.read) { if(SendATcommand("AT+CTM")==mon numéro) else { sim900bis // autorise la lecture des caractères entrants sur le port série } }

la démarche a l’air bonne en tout cas.

un petit coup de pouce parce que la je suis complètement perdu :confused:
quand je le compile " expected’while’ before SMSOK

//***************************************************
// FILTRAGE DES SMS ENTRANTS
//***************************************************

if(SIM900.available() >0)
{
SIM900.print(“AT+CTM?”)==+336*********;

do
{
SMSOK;
}

//**************************************************************
//GESTION DES VOLETS ROULANTS SELON LE SMS (#v…) + CONFIRMATION D’ACTION
//**************************************************************

if SMSOK; >>>>>>>>>>>>>>>>>>>> problème de compil ici !

inchar=SIM900.read();
if (inchar==’#’)
{
delay(10);

inchar=SIM900.read();
if (inchar==‘v’)
{
delay(10);
inchar=SIM900.read();
if (inchar==‘0’)
{

digitalWrite(vcuisined, HIGH);
delay(1000);
digitalWrite(vcuisinem, LOW);
delay(4000);
digitalWrite(vsejourd, HIGH);
delay(1000);
digitalWrite(vsejourm, LOW);
delay(4000);
digitalWrite(vsalond, HIGH);
delay(1000);
digitalWrite(vsalonm, LOW);
delay(4000);
digitalWrite(vchambred, HIGH);
delay(1000);
digitalWrite(vchambrem, LOW);

Tu ne peut pas utiliser de "do" comme ça il faut toujours utiliser la condition "do" "while" mais dans ton code je voit nulle part ou c'est nécessaire.

J'ai des problème pour déclarer mes variables : je voudrais que remoteNumber soit le numéro qui est stocké dans une variable et après comparer cette variable au numéro de mon tél.

if(SIM900.available() > 0) { SIM900.print("AT+CTM?=\"remoteNumber\"\r"); } if ("remoteNumber"== +33********); { SMSOK; }

//************************************************************************* // GESTION DES VOLETS ROULANTS SELON LE SMS (#v...) + CONFIRMATION D'ACTION //*************************************************************************

if(SMSOK) { if(SIM900.available() > 0) { inchar=SIM900.read(); if (inchar=='#')

SUITE DU PROGRAMME

Je ne connais pas la lib en question, mais je suppose que quand tu envoies ta commande "AT.." il faut ensuite une autre fonction pour lire la réponse. Après quoi, elle arrivera dans une chaine de caractères et il faudra la comparer à ton numéro.