Pour qu'un périphérique ou un script (application) puisse accéder au compte utilisateur owncloud, il faut lui générer un mot de passe. Depuis le compte utilisateur, menu Paramètres, dans le panneau gauche sélectionner le l'option Sécurité. Dans la section Mots de passe d'applications saisir un nom pour le test et cliquer sur le bouton Créer un nouveau mot de passe d'application, copier le mot de passe et valider. Une nouvelle entrée autorise l'application a se connecter.
Le script de test ci-dessous est une copie de celui mis à disposition sur le git de l'application sensorlogger https://github.com/alexstocker/sensorlogger/blob/master/tests/curl/post.php
<?php $url = 'http://owncloud.loc/index.php/apps/sensorlogger/api/v1/createlog/'; $humidity = mt_rand (1.00*10, 99.99*10) / 10; $temperature = mt_rand (-9.00*10, 49.99*10) / 10; $array = array("deviceId" => "666666-fe8c-11e6-bc64-92361f002671", "temperature" => $temperature, "humidity" => $humidity, "date" => date('Y-m-d H:i:s')); $data_json = json_encode($array); $username = 'test'; $token = 'HTFQO-WCNSR-UDEVJ-EPLYE'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $token); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if($response === false){ echo('Error: ' . curl_error($ch)); } else{ echo('Operation successful'); } curl_close($ch); ?>
Modifier les valeurs des variables $url, $username et $token pour les faire correspondre au paramètres de l'instance.
Pour que le script puisse s’exécuter, installer php et le module curl:
$ sudo apt-get install php php-curl
Lancer le script manuellement:
Si tout fonctionne normalement, le script retourne le message Operation Successful. Sous le compte utilisateur, sélectionner l'application Sensorlogger, puis dans le panneau gauche l'option List
Exécuter régulièrement le script via un cron, ici toutes les minutes:
# m h dom mon dow command * * * * * php /home/yoann/bin/post.php