Рис. 14.8. Параметры Xi veli API key и Feed ID
В этом разделе вы найдете Feed ID (первый параметр) и Xively API key (второй параметр) для вставки в код программы. Далее приведены строки, которые нужно обновить соответствующими значениями.
Замените MAC-адрес:
// MAC-адрес вашего адаптера Ethernet
byte mac[] = { 0xDE, 0xAD, 0xВЕ, 0xEF, 0xFE, 0xED };
Замените Xively API Кеу своим значением:
// Ваш Xively API key
char xivelyKey[] = "YOUR_XIVELY_API_KEY";
Замените Feed ID (15552 в примере) своим значением:
// Feed ID
XivelyFeed feed(15552, datastreams, 1 /* номер потока */);
В листинге 14.3 приведен полный код программы.
Листинг 14.3. Загрузка потока данных в Xively - xively.ino
#include
#include
#include
#include
// MAC-адрес Ethernet-адаптера
byte mac[] = { 0x90, 0xА2, 0xDA, 0x00, 0x4A, 0xE0 };
- 321 -
// Ваш Xively АР! key
char xivelyKey[] = "qkjXSloUKqbCG-hqh3fw4WisdvOSAKx4ZXZYSWhGUWdxcz0g";
// Аналоговый контакт для подключения датчика
int sensorPin = 2;
// Строка для идентификаторов потока
char sensorId[] = "sensor_reading";
XivelyDatastrearn datastrearns[] = {
XivelyDatastrearn(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
};
// Feed ID
XivelyFeed feed(1242622121, datastrearns, 1 /* number of datastrearns */);
EthernetClient client;
XivelyClient xivelyclient(client);
void setup()
{
// Запуск последовательного порта
Serial.begin(9600);
Serial.println("Starting single datastrearn upload to Xively... ");
Serial.println();
while (Ethernet.begin(rnac) != 1)
{
Serial.println("Error getting IP address via DHCP, trying again... ");
delay(15000);
}
}
void loop()
{
int sensorValue = analogRead(sensorPin);
datastrearns[OJ.setFloat(sensorValue);
Serial.print("Read sensor value ");
Serial.println(datastrearns[O).getFloat());
Serial.println("Uploading it to Xively");
int ret = xivelyclient.put(feed, xivelyKey);
Serial.print("xivelyclient.put returned ");
Serial.println(ret);
Serial.println();
delay(15000);
}
Загрузите программу в плату Arduino, и все будет готово к передаче данных. При первом подключении Arduino сервер Xively автоматически добавляет выдачу данных на веб-странице, открытой вами ранее.
В программе вы создаете объект, который содержит всю информацию о вашем потоке. Данные представлены в виде массива datastrearns [], содержащего имя дат
- 322 -
чика и тип значений (в данном случае float). Объект XivelyFeed содержит идентификатор потока, информацию о потоке данных и количестве потоков данных, которые находятся в массиве.
Отображение данных на веб-странице
Данные будут передаваться сразу после загрузки программы в плату Arduino. Если вы не видите возвращенный статус "200" в мониторе последовательного порта, то, вероятно, ошиблись при копировании параметров Xively API key или Feed ID. Проверьте эти значения и повторите попытку. Если все работает, вернитесь на сайт Xively, поток данных sensor_reading теперь должен автоматически обновляться каждые 15 с. Нажмите на ссылку sensor_reading, и вы увидите график значений, поступающих от фоторезистора. Через некоторое время график может выглядеть примерно так, как показано на рис. 14.9. Вот и все, что нужно сделать. Плата Arduino будет продолжать отправлять данные и обновлять информацию на сервере
Рис. 14.9. Отображение значений фоторезистора на сайте Xively
14.4.2. Добавление компонентов в поток
Один датчик, отображающий поток в Xively, это здорово, но может вы хотите добавить больше датчиков? К счастью, это сделать очень легко. Помимо фоторезистора, установим на плате Arduino датчик температуры. Можно добавить любой другой датчик, включая цифровые датчики I 2C и SPI.
- 323 -
Добавление аналогового датчика температуры добавим простой аналоговый датчик температуры ТМР36 (см. главу 3), подсоединив его к аналоговому контакту 3, как показано на рис. 14.10.
Рис. 14.10. Добавление аналогового датчика температуры ТМР36
Добавление показаний датчика в поток
Теперь нужно вставить данные от нового датчика в поток данных, отправляемых на сервер Xively. По сути, в коде программы нужно просто прибавить дополнительный поток данных везде, где указан первый поток данных. Вы также можете переименовать потоки с идентификаторами datastream на более понятные, например light_reading и temp_reading. Код листинга 14.4 похож на предыдущий, но теперь у нас два потока данных. Параметры Xively API key, Feed ID и MAC-адрес такие же, как в предыдущей программе.
Листинг 14.4. Загрузка потока данных в Xively от нескоьких датчиков - xively2.ino
#include
#include
#include
#include
- 324 -
// MAC-адрес вашего адаптера Ethernet
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4A, 0xE0 };
// Your Xively key to let you upload data
Читать дальше