salut
avec mon code je commande une led
a la réception d'une trame xpl (schema lighting.basic)
emission de la trame
lighting.basic
{
command=on
device=8
}
n
réception de la trame moniteur serie
lighting.basic
{
command=on
device=8
}
n
je recupere la deuxieme lettre de la premiere ligne du block (le n pour on (on allume) ) le f pour off (on on éteint)
voila pour une led
je voudrai savoir comment je fais pour recuperer la valeur de la deuxieme ligne (device=8)
le but est de commander plusieurs led avec la meme commande juste changer device=
if (value == 'n8')
{
digitalWrite(8,HIGH);
}
if (value == 'f8')
{
digitalWrite(8,LOW);
}
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>#include "xPL.h"
xPL xpl;
char value; // creation de value
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0D, 0xF0, 0xF5 };
IPAddress ip(192, 168, 0, 177);
IPAddress broadcast(192, 168, 0, 255);
EthernetUDP Udp;void SendUdPMessage(char *buffer)
{
Udp.beginPacket(broadcast, xpl.udp_port);
Udp.write(buffer);
Udp.endPacket();
}void AfterParseAction(xPL_Message * message)
{
if (xpl.TargetIsMe(message))
{
if (message->IsSchema_P(PSTR("lighting"), PSTR("basic")))
{
Serial.println(PSTR("is lighting.basic"));}
}
// show message
Serial.println(message->toString());
// quand on receptionne un message, on sauvegarde la 'value'
// de la commande (1) le deuxieme caractere n pour on f pour off
value = message->command->value[1];}
void setup()
{
Serial.begin(115200);
Ethernet.begin(mac,ip);
Udp.begin(xpl.udp_port);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);xpl.SendExternal = &SendUdPMessage; // pointer to the send callback
xpl.AfterParseAction = &AfterParseAction; // pointer to a post parsing action callback
xpl.SetSource_P(PSTR("xpl"), PSTR("arduino"), PSTR("test")); // parameters for hearbeat message}
void loop()
{
xpl.Process(); // heartbeat managementint packetSize = Udp.parsePacket();
if(packetSize)
{
char xPLMessageBuff[XPL_MESSAGE_BUFFER_MAX];// read the packet into packetBufffer
Udp.read(xPLMessageBuff, XPL_MESSAGE_BUFFER_MAX);// parse message
xpl.ParseInputMessage(xPLMessageBuff);Serial.println(value);
if (value == 'n')
{digitalWrite(8,HIGH);
}
if (value == 'f')
{digitalWrite(8,LOW);
}{
}
{
}
}
}
merci