Bonjour,
Bon c’est plus un sujet Arduino, mais vu que c’est en lien avec Jeedom, je tente ici, je pense que ce type de solution de communication peut intéresser des membres de la communauté.
Lors d’un précédent post, je posait la question pour se passer de Jeeduino car non compatible avec Deconz (pb de librairies).
Présentation du sujet:
Je suis donc parti sur une solution avec un ESP01S connecté en série avec l’Arduino.
J’ai mis et configuré ESP EASY dans Jeedom et flashé/config la ESP01S.
J’arrive à envoyé via le plugin ESP EASY de l’info a mon Arduino, sauf que c’est pas formaté comme je le veux.
J’utilise cette cde:
http://xxx.xxx.x.xx/control?cmd=serialsend,testreception2
Voici un exemple de ce que je reçois:
Info lue : 4683974 : Info : WD : Uptime 78 ConnectFailures 0 FreeMem 25720 WiFiStatus 3 ESPeasy internal wifi status: Conn. IP Init
Position de la virgule : -1
Info lue : 4713974 : Info : WD : Uptime 79 ConnectFailures 0 FreeMem 25720 WiFiStatus 3 ESPeasy internal wifi status: Conn. IP Init
Position de la virgule : -1
Info lue : 4731166 : Info : HTTP: serialsend,testreception2testreception2
Position de la virgule : 35
Ce qui m’intéresse ici c’est « testreception2testreception2 », les autres lignes arrivent un peu comme ça régulièrement.
L’idée est de pouvoir extraire l’info « testreception2testreception2 », donc globalement ce qu’il y a après « serialsend, », savez vous s’il y existe une manière de faire dans Arduino (je débute tant bien que mal, je suis déjà content de recevoir en partie ce que j’attends )
Je me disais qu’avec la position de la virgule si >0, prendre en compte que la fin de la String, mais je trouve pas…
Si quelqu’un a une idée, je suis preneur!
Merci d’avance.
Le code de l’Arduino au cas ou:
int RVch1HUp = 13; //Relais volet Chambre 1 Haut Montée
int RVch1HDn = 12; //Relais volet Chambre 1 Haut Descente
//String Infoserie = 0; //Variable ou sera écrit ce qui sera reçu part le port série
void setup() {
// put your setup code here, to run once:
pinMode(RVch1HUp, OUTPUT); //configuration pin13 en sortie
pinMode(RVch1HDn, OUTPUT); //configuration pin12 en sortie
Serial.begin(9600); //démarrage communication série
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()>0){ //on regarde si le buffer a des données
String Infoserie = Serial.readString(); //on recopie les données dans la variable Infoserie
delay(100);
int startofrealinfo = Infoserie.indexOf(',');
Serial.print("Info lue : ");
Serial.println(Infoserie);
Serial.print("Position de la virgule : ");
Serial.println(startofrealinfo);
//while (Serial.available()) Serial.read();
if (Infoserie == "commande 1" ){ //si test est vrai, activation de la sortie pour 1 seconde
Serial.print("Action : ");
Serial.println("OK1");
digitalWrite(RVch1HUp, HIGH);
delay(1000);
digitalWrite(RVch1HUp, LOW);}
else if (Infoserie == "commande2" ){
Serial.print("Action : ");
Serial.println("OK0");
digitalWrite(RVch1HDn, HIGH);
delay(1000);
digitalWrite(RVch1HDn, LOW);
}
}
}