Arduino + Ethernet Shield + Tweet Library: проблема

Тема в разделе "Arduino & Shields", создана пользователем BabushkaCCCP, 29 мар 2012.

  1. BabushkaCCCP

    BabushkaCCCP Нуб

    Всем привет! Прошу прощения за нубский вопрос.

    Замыслил я шутейный проект на Arduino uno + Ethernet Shield. А именно: захотелось мне, чтобы мой кот постил в твиттер при каждом проходе мимо датчика.

    Выглядеть всё это безобразие должно было вот так
    [​IMG]

    Программку составил нехитрую используя библиотеку Tweet Library for Arduino

    Код (Text):

    //Myawa Go Home - каждый проход кота вблизи датчика движения сопровождается твитом
    //Используется библиотека http://arduino-tweet.appspot.com/
    //Как это выглядит - http://dl.dropbox.com/u/4580665/ardu_scheeme.png

    #if defined(ARDUINO) && ARDUINO > 18   // Arduino 0019 or later
    #include <SPI.h>
    #endif
    #include <Ethernet.h>
    //#include <EthernetDNS.h>  Only needed in Arduino 0022 or earlier
    #include <Twitter.h>

    byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x1D, 0xD0 }; //Мой MAC-адрес
    byte ip[] = { 192, 168, 1, 16 }; //Мой IP-адрес
    Twitter twitter("<<<Token>>>"); //Токен котиного твиттера
    char b1[] = "Пойду, гляну, что в гостиной творится. И обратно..."; //Твит
    void setup()
    {
      delay(10000);
      Ethernet.begin(mac, ip);
      Serial.begin(9600);
      pinMode(8, INPUT); // На 8 контакт посажен датчик перемещения, который выдаёт 1 либо 0 при проходе кота
    }
    void tweet(char msg[])
    {
      Serial.println("connecting ...");
      if (twitter.post(msg))
      {
        int status = twitter.wait(&Serial);
        if (status == 200)
        {
          Serial.println("OK.");
        } else
        {
          Serial.print("failed : code ");
          Serial.println(status);
        }
      } else
      {
          Serial.println("connection failed.");
      }
    }
    void loop()
    {
      if (digitalRead(8)==HIGH)  //Если на 8 контакт идёт +5V, постим твит и ждём
      {    tweet(b1);    delay(20000);  }
    }
     
    Проблема в следующем: Твиттер блокирует повторный постинг одного и того же статуса. Решение - каким-то образом модифицировать твит, например, добавить в него DateTime. Знаю, что даже готовая библиотека такая существует, но, вот, с программированием - затык. Не знаю как это сделать.

    Собственно, люди добрые, помогите!
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Можно как-то так:

    char status[140];
    sprintf(status, "Пойду, гляну, что в гостинной творится. И обратно... (прошло %d сек.)", millis() / 1000);