Envoyer des tweets comme notifications Domotique
Après avoir testé pas mal de solutions de notifications domotique comme pushbullet, notify my android, prowl, ou encore pushalot, aucune de ces solutions ne m’a satisfait. J’ai donc pris le parti de développer quelques scripts PHP autour de twitter qui m’envoient des tweets lorsque nécessaire.
Configuration de twitter
Pour que nous puissions envoyer des tweets via une API php, il faut tout d’abord autoriser votre twitter à être accédé par une application tierce. Allez sur https://apps.twitter.com/, logger vous puis cliquez sur Create New App.
Remplissez les champs et cocher bien la case en bas de l’écran.
Une fois créé, cliquez sur Manage keys and access tokens pour gérer les clés.
Vous avez sur la page les 2 éléments qui nous intéressent le plus : le consumer key et le consumer secret.
Il faut ensuite créer les tokens d’accès. Cliquez en dessous sur Create my access token.
Puis les token s’affichent. Il faudra les recopier dans le code PHP.
Le code source
Pour pouvoir envoyer des tweets sur notre compte twitter, nous allons utiliser la classe Codebird et voici la version que j’utilise : codebird.php
Je me suis créé 2 fonctions pour envoyer des messages et des images. Les images sont celles de mes caméras extérieures !
function sendTweetMessage($message,$consumer_key,$consumer_secret,$token,$secret){ require_once('codebird.php'); \Codebird\Codebird::setConsumerKey($consumer_key, $consumer_secret); $cb = \Codebird\Codebird::getInstance(); $cb->setToken($token, $secret); $params = array( 'status' => $message ); $reply = $cb->statuses_update($params); } function sendTweetImage($message,$urlimage,$consumer_key,$consumer_secret,$token,$secret){ require_once('codebird.php'); \Codebird\Codebird::setConsumerKey($consumer_key, $consumer_secret); $cb = \Codebird\Codebird::getInstance(); $cb->setToken($token, $secret); $params = array( 'status' => $message, 'media[]' => $urlimage ); $reply = $cb->statuses_updateWithMedia($params); }
Ensuite, voici comment j’utilise le code et les fonctions.
1er exemple avec l’envoi d’un snapshot de caméra :
$TWITTER_CONSUMER_KEY = 'xxxxx'; $TWITTER_CONSUMER_SECRET = 'xxxxx'; $TWITTER_TOKEN = 'xxxxx'; $TWITTER_SECRET = 'xxxxx'; $image = "http://192.168.1.102/snapshot.cgi?user=xxxxx&pwd=xxxx&count=0"; $message = date('H:i').' : caméra OUEST'; sendTweetImage($message,$image,$TWITTER_CONSUMER_KEY,$TWITTER_CONSUMER_SECRET,$TWITTER_TOKEN,$TWITTER_SECRET);
Voici le rendu :
2eme exemple avec l’envoi de mon rapport journalier sur les statistiques de la maison :
//récupération dans domoticz et ecodevices des statistiques $temp = getDomoticzData($SERVER,$ID_JARDIN,'Temp'); $maxTemp = getDomoticzData($SERVER,$ID_VARIABLE_TEMP_MAX,'Temp'); $minTemp = getDomoticzData($SERVER,$ID_VARIABLE_TEMP_MIN,'Temp'); $rain = getDomoticzData($SERVER,$ID_PLUVIO,'Rain'); $watercounter = getDomoticzData($SERVER,$ID_WATERCOUNTER,'CounterToday'); $wattcounter = getDomoticzData($SERVER,$ID_EDFTOTAL,'CounterToday'); $color = getEcodeviceData($ECODEVICE,'T1_DEMAIN'); //génération du message $message = date('H:i').' : Tnow : '.$temp.' °C - Tmin : '.$minTemp.' °C - Tmax : '.$maxTemp.' °C - Pluie : '.$rain.' mm - Eau : '.$watercounter.' - Elec : '.$wattcounter.' - Tempo demain : '.$color; //Envoi du message sendTweetMessage($message,$TWITTER_CONSUMER_KEY,$TWITTER_CONSUMER_SECRET,$TWITTER_TOKEN,$TWITTER_SECRET);
voici le rendu :
Conseil
Afin de ne pas polluer votre fil twitter, je vous conseille de créer un compte dédié pour poster vos tweets et de vous abonnez dessus. Rajouter les notifications pour ce compte et le tour est joué ! Vous verrez, à l’usage, vous ne pourrez plus vous en passez !