Переход на Twitter API 1.1

Нет ответов
milannist
Offline
Зарегистрирован: 15.05.2014

Кто может помочь исправить данный шаблон, а то с обновлением Twitter API 1.1 он уже не реализуется.

/*
 
 Этот скетч показывает как подключиться к Twitter с помощью Ethernet
 шилда, получить ответ в формате XML и найти в нём текст последнего
 опубликованного твита. Искать в XML ответе будем строку вида
 Hello Cruel World. Если последний твит будет таким - подадим
 напряжение на Pin D2 => светодиод загорится, если текст твита
 другой, светодиод гореть не будет
 
 */
 
#include <SPI.h>
#include <Ethernet.h>
 
// Введите MAC-адрес и IP-адрес вашего контроллера
// IP-адрес должен соответствовать вашей локальной сети
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress ip(191,11,1,1); //<<< IP-АДРЕС ВВОДИТЬ СЮДА!!!
 
// инициализации экземпляра библиотеки:
EthernetClient client;
// задержка между запросами
const int requestInterval = 60000;
// URL сервера, которому будем отправлять запросы
char serverName[] = "api.twitter.com";
// сделан ли запрос после подключения
boolean requested;
// время в милисекундах с последнего подключения к серверу
long lastAttemptTime = 0;
 
// строка для сохранения текста с сервера
String currentLine = "";
// строка для хранения твита
String tweet = "";
// переменная хранит состояние: читаете ли твит сейчас
boolean readingTweet = false;
 
void setup() {
 
  pinMode(2, OUTPUT);
 
  // резервируем место для строки:
  currentLine.reserve(256);
  tweet.reserve(150);
 
  // инициализация последовательного порта:
  Serial.begin(9600);
  // попытка подключения с DHCP:
  if (!Ethernet.begin(mac)) {
    // если DHCP-сервер отсутствует в сети,
    // подключаемся с заданным нами IP-адресом:
    Ethernet.begin(mac, ip);
  }
  // подключаемся к Twitter:
  connectToServer();
}
 
void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // считываем полученные байты:
      char inChar = client.read();
 
      // добавляем полученные байты в конец строки:
      currentLine += inChar;
 
      // если получен символ новой строки, очищаем переменную:
      if (inChar == '\n') {
        currentLine = "";
      }
      // если текущая строка заканчивается символами , значит
      // сейчас будет следовать непосредственно текст твита:
      if ( currentLine.endsWith("")) {
        // начало чтения твита. Очищаем переменную tweet:
        readingTweet = true;
        tweet = "";
      }
      // если сейчас происходит считывание байтов твита,
      // добавляем их в строковую переменную tweet:
      if (readingTweet) {
        if (inChar != '<') {
          tweet += inChar;
        }
        else {
          // если был получен символ "<",
          // значит мы достигли конца твита:
           readingTweet = false;
           Serial.println(tweet);
           if(tweet == ">Hello Cruel World"){
           digitalWrite(2, HIGH);
           Serial.println("LED ON!");
          }
          if(tweet != ">Hello Cruel World"){
           digitalWrite(2, LOW);
           Serial.println("LED OFF!");
          }
 
          // отключаемся от сервера:
          client.stop();
        }
      }
    }
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // если мы в данный момент не подключены к серверу
    // и прошло 2 минуты с момента последнего подключения, пробуем
    // подключится снова и прочитать последний опубликованный твит:
    connectToServer();
  }
}
 
// функция подключения к серверу Twitter:
void connectToServer() {
 
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
  // Создаем GET HTTP-запрос к твиттеру:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=RandyMcTester&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();
  }
  // записываем в переменную время текущей попытки соединения:
  lastAttemptTime = millis();
}