INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Datum in Tweet hinzufügen
04.10.2015, 15:31 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2015 15:34 von Klaus(i).)
Beitrag #9
RE: Datum in Tweet hinzufügen
(04.10.2015 15:09)drimrim schrieb:  hmm wie kann ich dem Shield sagen, dass er keinen Tweet senden soll wenn der Sensor noch im Wasser ist?
Indem Du dir merkst, wenn bereits eine Nachricht verschickt wurde.
Ich habe das mal in deinen Code rein gemacht (msgSent).
Code:
int SensPin= 7;

#include <SPI.h> // nötig in Arduino 0019 oder später
#include <Ethernet.h>
#include <Twitter.h>


// Ethernet Shield Einstellungen
byte mac[] = { 'meine Mac' };

// falls man die IP Adresse  nicht spezifiziert, wird DHCP benutzt(nur in Arduino 1.0 oder später).
byte ip[] = { 192, 168, 2, 0 };

// Token zum Tweeten
Twitter twitter("token");

// Nachricht zum Posten
char msg[] = "Wassereinbruch";
boolean msgSent = false;

void setup() {
Serial.begin(9600);
pinMode(SensPin,INPUT);
digitalWrite(SensPin, HIGH);
}

void loop() {

if ((digitalRead(SensPin) == LOW) && (msgSent == false))

{

    Ethernet.begin(mac, ip);
  // oder DHCP, damit die IP-Adresse automatisch konfiguriert wird.
  // Ethernet.begin(mac);
  
  Serial.println("connecting ...");
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
      msgSent = true;
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
    
    }
else
  {
    msgSent = false; //zurücksetzen, wenn Sensor wieder trocken
  }
}

Gruß, Klaus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.10.2015, 17:19
Beitrag #10
RE: Datum in Tweet hinzufügen
Das Datum kannst du durch die Funktion "strcat" mit deinem Text zusammenfügen.

Du muss zuvor das Datum in ein Char Array wandeln.

Beispiel:

char msg[] = "Wassereinbruch";
char Datum[] = "04.10.2015";

strcat(msg, Datum);

Das char msg wird dann in deinem Sketch weiter verwendet.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 16:47
Beitrag #11
RE: Datum in Tweet hinzufügen
(04.10.2015 17:19)hotsystems schrieb:  Das Datum kannst du durch die Funktion "strcat" mit deinem Text zusammenfügen.

Du muss zuvor das Datum in ein Char Array wandeln.

Beispiel:

char msg[] = "Wassereinbruch";
char Datum[] = "04.10.2015";

strcat(msg, Datum);

Das char msg wird dann in deinem Sketch weiter verwendet.

wird das Datum immer selbst aktualisiert?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 16:57
Beitrag #12
RE: Datum in Tweet hinzufügen
(05.10.2015 16:47)drimrim schrieb:  wird das Datum immer selbst aktualisiert?

Nein, mein Code ist nur ein Beispiel.
Du must das Datum, welches du schon hast, wie du ja schreibst, mit einfügen. Ich kann leider nicht in deinem Sketch sehen, wo du das Datum her bekommst.

Dann muss das Datum entsprechend bearbeitet (wie geschrieben) werden.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 17:25
Beitrag #13
RE: Datum in Tweet hinzufügen
ich habe mir mal die Time Library geholt und diesen Sketch gefunden:

Code:
/*
* Time_NTP.pde
* Example showing time sync to NTP time source
*
* This sketch uses the Ethernet library
*/

#include <Time.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <SPI.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// NTP Servers:
IPAddress timeServer(132, 163, 4, 101); // time-a.timefreq.bldrdoc.gov
// IPAddress timeServer(132, 163, 4, 102); // time-b.timefreq.bldrdoc.gov
// IPAddress timeServer(132, 163, 4, 103); // time-c.timefreq.bldrdoc.gov


const int timeZone = 1;     // Central European Time
//const int timeZone = -5;  // Eastern Standard Time (USA)
//const int timeZone = -4;  // Eastern Daylight Time (USA)
//const int timeZone = -8;  // Pacific Standard Time (USA)
//const int timeZone = -7;  // Pacific Daylight Time (USA)


EthernetUDP Udp;
unsigned int localPort = 8888;  // local port to listen for UDP packets

void setup()
{
  Serial.begin(9600);
  while (!Serial) ; // Needed for Leonardo only
  delay(250);
  Serial.println("TimeNTP Example");
  if (Ethernet.begin(mac) == 0) {
    // no point in carrying on, so do nothing forevermore:
    while (1) {
      Serial.println("Failed to configure Ethernet using DHCP");
      delay(10000);
    }
  }
  Serial.print("IP number assigned by DHCP is ");
  Serial.println(Ethernet.localIP());
  Udp.begin(localPort);
  Serial.println("waiting for sync");
  setSyncProvider(getNtpTime);
}

time_t prevDisplay = 0; // when the digital clock was displayed

void loop()
{  
  if (timeStatus() != timeNotSet) {
    if (now() != prevDisplay) { //update the display only if time has changed
      prevDisplay = now();
      digitalClockDisplay();  
    }
  }
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year());
  Serial.println();
}

void printDigits(int digits){
  // utility for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

/*-------- NTP code ----------*/

const int NTP_PACKET_SIZE = 48; // NTP time is in the first 48 bytes of message
byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming & outgoing packets

time_t getNtpTime()
{
  while (Udp.parsePacket() > 0) ; // discard any previously received packets
  Serial.println("Transmit NTP Request");
  sendNTPpacket(timeServer);
  uint32_t beginWait = millis();
  while (millis() - beginWait < 1500) {
    int size = Udp.parsePacket();
    if (size >= NTP_PACKET_SIZE) {
      Serial.println("Receive NTP Response");
      Udp.read(packetBuffer, NTP_PACKET_SIZE);  // read packet into the buffer
      unsigned long secsSince1900;
      // convert four bytes starting at location 40 to a long integer
      secsSince1900 =  (unsigned long)packetBuffer[40] << 24;
      secsSince1900 |= (unsigned long)packetBuffer[41] << 16;
      secsSince1900 |= (unsigned long)packetBuffer[42] << 8;
      secsSince1900 |= (unsigned long)packetBuffer[43];
      return secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR;
    }
  }
  Serial.println("No NTP Response :-(");
  return 0; // return 0 if unable to get the time
}

// send an NTP request to the time server at the given address
void sendNTPpacket(IPAddress &address)
{
  // set all bytes in the buffer to 0
  memset(packetBuffer, 0, NTP_PACKET_SIZE);
  // Initialize values needed to form NTP request
  // (see URL above for details on the packets)
  packetBuffer[0] = 0b11100011;   // LI, Version, Mode
  packetBuffer[1] = 0;     // Stratum, or type of clock
  packetBuffer[2] = 6;     // Polling Interval
  packetBuffer[3] = 0xEC;  // Peer Clock Precision
  // 8 bytes of zero for Root Delay & Root Dispersion
  packetBuffer[12]  = 49;
  packetBuffer[13]  = 0x4E;
  packetBuffer[14]  = 49;
  packetBuffer[15]  = 52;
  // all NTP fields have been given values, now
  // you can send a packet requesting a timestamp:                
  Udp.beginPacket(address, 123); //NTP requests are to port 123
  Udp.write(packetBuffer, NTP_PACKET_SIZE);
  Udp.endPacket();
}

könnte das nützlich für mich sein? habe mit NTP null Erfahrung.

Gruß, drimrim[/quote]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 17:37 (Dieser Beitrag wurde zuletzt bearbeitet: 05.10.2015 17:38 von hotsystems.)
Beitrag #14
RE: Datum in Tweet hinzufügen
Ja, dann kannst du die Zeit/Datum nutzen, wenn du die aus dieser Funktion:

Code:
void digitalClockDisplay(){
   // digital clock display of the time
   Serial.print(hour());
   printDigits(minute());
   printDigits(second());
   Serial.print(" ");
   Serial.print(day());
   Serial.print(" ");
   Serial.print(month());
   Serial.print(" ");
   Serial.print(year());
   Serial.println();
}

zusammensetzt und anschließend in ein Char Array konvertierst. Danach mit meinem vorherigen Beispiel zusammensetzen.

Du solltest obigen Sketch für sich testen, ob du die Zeit + Datum auch so empfängst und verwenden kannst.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 17:44 (Dieser Beitrag wurde zuletzt bearbeitet: 05.10.2015 17:59 von drimrim.)
Beitrag #15
RE: Datum in Tweet hinzufügen
(04.10.2015 15:31)Klaus(i) schrieb:  
(04.10.2015 15:09)drimrim schrieb:  hmm wie kann ich dem Shield sagen, dass er keinen Tweet senden soll wenn der Sensor noch im Wasser ist?
Indem Du dir merkst, wenn bereits eine Nachricht verschickt wurde.
Ich habe das mal in deinen Code rein gemacht (msgSent).
Code:
int SensPin= 7;

#include <SPI.h> // nötig in Arduino 0019 oder später
#include <Ethernet.h>
#include <Twitter.h>


// Ethernet Shield Einstellungen
byte mac[] = { 'meine Mac' };

// falls man die IP Adresse  nicht spezifiziert, wird DHCP benutzt(nur in Arduino 1.0 oder später).
byte ip[] = { 192, 168, 2, 0 };

// Token zum Tweeten
Twitter twitter("token");

// Nachricht zum Posten
char msg[] = "Wassereinbruch";
boolean msgSent = false;

void setup() {
Serial.begin(9600);
pinMode(SensPin,INPUT);
digitalWrite(SensPin, HIGH);
}

void loop() {

if ((digitalRead(SensPin) == LOW) && (msgSent == false))

{

    Ethernet.begin(mac, ip);
  // oder DHCP, damit die IP-Adresse automatisch konfiguriert wird.
  // Ethernet.begin(mac);
  
  Serial.println("connecting ...");
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
      msgSent = true;
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
    
    }
else
  {
    msgSent = false; //zurücksetzen, wenn Sensor wieder trocken
  }
}

Gruß, Klaus
hab das jetzt eingefügt aber es hat sich nichts geändert.UndecidedUndecided

MfG

drimrim

(05.10.2015 17:37)hotsystems schrieb:  Ja, dann kannst du die Zeit/Datum nutzen, wenn du die aus dieser Funktion:

Code:
void digitalClockDisplay(){
   // digital clock display of the time
   Serial.print(hour());
   printDigits(minute());
   printDigits(second());
   Serial.print(" ");
   Serial.print(day());
   Serial.print(" ");
   Serial.print(month());
   Serial.print(" ");
   Serial.print(year());
   Serial.println();
}


zusammensetzt und anschließend in ein Char Array konvertierst. Danach mit meinem vorherigen Beispiel zusammensetzen.

Du solltest obigen Sketch für sich testen, ob du die Zeit + Datum auch so empfängst und verwenden kannst.

habe den obigen Code für sich getestet und die Fehlermeldungen überschlagen sichBig Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 18:43
Beitrag #16
RE: Datum in Tweet hinzufügen
Ich meinte den Sketch, den du herunter geladen hast, um zu testen, ob Datum und Zeit auch richtig angezeigt werden. Ich meinte nicht mein herausgezogenes Beispiel, welches sich nur um die Darstellung des Datums/Zeit kümmert.
Um solche komplexe Funktionen zu erstellen, muss zuvor jede einzelne Funktion für sich getestet werden. Erst recht wen du den Code nicht selbst erstellt hast.
Erst wenn alles einzeln funktioniert, kannst du die einzelnen Funktionen zusammen setzen und die komplette Funktion prüfen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste