🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Arduino: Sensordaten Twittern

Posted on 13. März 20183. Mai 2023 by Stefan Draeger

Meilenstein 5 – Sensordaten als Twitternachricht bereitstellen

US5.1 – Erstellen einer TwitterApp

Aufgabe: Bevor man einen Tweet aus PHP (oder einer anderen Programmiersprache) absenden kann, muss man erst eine TwitterApp erzeugen.

Zum Erzeugen der TwitterApp wird zuerst ein gültiger TwitterAccount benötigt.
Nachdem nun die Seite https://apps.twitter.com/ geöffnet wurde, wird die Schaltfläche „Create Application“ betätigt.

Es wird nun eine neue Seite geladen, wo man die Metadaten zur App eingeben muss. Diese sind:

  • Name,
  • Beschreibung
  • Webseite

und man muss den Datenschutzbestimmungen zustimmen.

Wenn diese Daten alle eingeben wurde, so kann mit der Schaltfläche „Create your Twitter application“ die Anwendung erzeugt werden.

Es wurde nun auch schon der „Consumer Key (API Key)“ sowie der „Consumer Secret“ erstellt. Für die Verwendung der Twitter API benötigen wir jedoch noch den „Access Token“ sowie den „Access Token Secret“ die erzeugen wir durch das Betätigen der Schaltfläche „Create my access token“

Es wird nun der „Access Token“ sowie der „Access Token Secret“ angezeigt.

Ich habe diese App wieder gelöscht daher sind diese Keys nicht mehr gültig 🙂

Damit haben wir nun die Daten für die Verwendung der Twitter API.

US5.1 – Sensordaten sollen nach dem erfolgreichen Speichern in der Datenbank als Twitternachricht gepusht werden.

Aufgabe: Nach dem erfolgreichen Speichern in der Datenbank soll eine Twitternachricht generiert und gepusht werden. Dabei ist darauf zu achten dass, das Zeitlimit für das Versenden von Nachrichten nicht überschritten wird.

Gemäß der Twitter Limits liegt das maximum an Direktnachrichten pro Tag bei 1000 Stck bei Tweets sind es 2400 Stck.

Was ist der Unterschied zwischen Direknachricht & Tweet?

Eine Direktnachricht ist nicht öffentlich und kann zwischen einer und mehreren Personen ausgetauscht werden. (siehe „Über Direktnachrichten„) Ein Tweet ist eine Statusmeldung, welche öffentlich gepusht wird, diese kann von jedem angemeldeten (und nicht geblockten) Benutzer gelesen werden. (siehe „Was ist ein Tweet?“)

PHP API für das Versenden von Tweets

Für dieses Projekt habe ich nach einer schlanken und einfachen Lösung gesucht einen Tweet zu pushen. Bei der Google Suche ist mir dabei die Bibliothek von J7mbo aufgefallen, in den nächsten Schritten werde ich erläutern wie ich diese in das Projekt eingebunden und verwendet habe. (Link https://github.com/J7mbo/twitter-api-php)

Einbinden der Bibliothek

Die Bibliothekt von J7mbo ist genau eine PHP Datei welche von GitHub geladen und in dem Projektverzeichnisses abgelegt wird.
Diese wird dann mit

require ('TwitterAPIExchange.php');

eingebunden.

Absenden eines Tweets

Ich habe mir die Datei „twitter.php“ erstellt und dort meine Funktionen für die API hinterlegt, somit habe ich alle Fachlichenanforderungen klar getrennt.

Zum Erstellen einer Twitter Nachricht verwende ich die Parameter welche mit der UserStorie 3.2 abgesendet werden.

function generateTwitterMessage($data){
 $message = "";
 foreach ($data as &$value) {
        $message .="Sensor = ";
        $message .= $value['sensor_desc'];
        $message .=" | Wert = ";
        $message .= $value['sensor_value'];
        $message .= "\r\n";
 }
 $message .="gemessen am ";
 $message .= date("d.m.Y H:i", time());//$value['sensor_timestamp']);   
 return $message;
}

In diesem Code verwende ich den Unix Timestamp vom Server, da der NodeMCU noch nicht über eine RTC verfügt und somit nicht die aktuellen Zeitstempel liefert.

Hier nun die Funktion zum senden eines Tweets:

//Sendet einen Twitter Tweet mit dem Text aus der Variable $message.
function sendTweet($message){
  $settings = array(
    'oauth_access_token' => "xyz",
    'oauth_access_token_secret' => "xyz",
    'consumer_key' => "xyz",
    'consumer_secret' => "xyz"
  );
  
  $url = 'https://api.twitter.com/1.1/statuses/update.json'; 
  $requestMethod = 'POST';
  $postfields = array(
         'status' => $message ); 
         
  $twitter = new TwitterAPIExchange($settings);
  echo $twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();
}

Es ist darauf zu achten, dass die Nachricht sich zur vorherigen unterscheiden muss oder aber min. 12h dazwischen liegen. Ist dieses nicht so wird dieses durch die Fehlermeldung {„errors“:[{„code“:187,“message“:“Status is a duplicate.“}]} von der Twitter API quittiert.

Wurde eine Nachricht erfolgreich verschickt so sollte diese dann wie folgt aussehen:

Twitter Nachricht vom NodeMCU
Twitter Nachricht vom NodeMCU

Download

Das gesamte, fertige Projekt gibt es nun hier zum Download.

Arduino: Sensordaten TwitternHerunterladen
Pages: 1 2 3 4 5

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb