Partage
  • Partager sur Facebook
  • Partager sur Twitter

The Thing Network en PHP en utilisant Webhook

    22 mars 2024 à 11:33:15

    Bonjour, sur mon cloud The Things Network, j'ai les données de mes capteurs de température, d'humidité et de pression.
    Je dois coder sur CodeIgniter en PHP en utilisant des Webhooks et une API.
    Je dois récupérer les données de mes capteurs puis les afficher sur ma page.
    Je ne sais pas comment faire. Si quelqu'un a des idées, je suis preneur.
    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2024 à 9:25:34

      Bonjour

      Tu dois developper un api ou communiquer avec une api ?

      Je suppose que tu communique avec l'api de The Things Network. Renseigne toi sur les requetes http, tu devras en pour recuperer et/ou envoyer des informations sur l'api de TTN(The Thins Network).

      Les webhooks c'est pour surveiller en temps reel les changements sur les donnees, tu vas definir une adresse chez TTN pour cela et dans ton code cette url devra toujours etre "en ecoute"(je pense a un while(true){...}). A chaque fois que tu recevras des donnees a toi de voir ce que tu feras avec.

      Pour afficher les donnees sur ta page tu devras utiliser tes fonctions/classes qui communiquent avec l'api puis envoyer les donnees a ton fichier html directement au chargement et/ou avec le js(si tu veux les donnees en temps reel).

       C'est peut-etre vague mais prend un point de depart et dis nous si tu bloques.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        25 mars 2024 à 8:33:04

        Je dois moi même créer l'API (RESTful) sur CodeIgniter.

        Je me demande pour récupérer les données, j'ai fait deux codages différents

        Codage 1 :

        defined('BASEPATH') OR exit('Aucun accès direct aux scripts est autorisé');
        
        class WebhookController extends CI_Controller {
        
            public function index()
            {
                // Récupérer les données JSON envoyées par le webhook
                $json_data = file_get_contents('php://input');
                
                // Convertir les données JSON en un tableau PHP
                $data = json_decode($json_data, true);
                
                // Charger la vue et passer les données JSON à la vue
                $this->load->view('webhook_view', array('json_data' => $data));
            }
        }




        Codage 2 :

        class InsererDonnees extends ResourceController
        {
            protected $modelName = 'App\Models\MinsererDonnees'; // Correction du nom du modèle
            protected $model;
            protected $format = 'json';
        
            // Fonction pour récupérer les données
            public function index()
            {
                // Récupère les données JSON envoyées par la requête
                $donnéesRequête = file_get_contents('php://input');
        
                // Vérifie si des données ont été reçues
                if ($donnéesRequête !== false) {
                    // Répond à la demande avec un message de succès et les données reçues
                    return $this->response->setJSON([
                        'succès' => true,
                        'message' => 'Données reçues avec succès',
                        'données' => json_decode($donnéesRequête, true)
                    ])->setStatusCode(200);
                } else {
                    // Répond à la demande avec un message d'erreur si aucune donnée n'a été reçue
                    return $this->response->setJSON([
                        'succès' => false,
                        'message' => 'Erreur lors de la récupération des données de la requête'
                    ])->setStatusCode(400);
                }
            }
        }



        -
        Edité par Anonyme 25 mars 2024 à 8:57:22

        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2024 à 19:45:49

          Bonjour,  dans ton code je vois des accents sur tes noms de variables, c'est flagrant:ninja:.

          Quand tu fais l'api c'est pour faire des traitements et envoyer des reponses en fonction de ce que tu recois(enn GET, POST, etc.). Dans le code fourni, le file_get_contents('php://input') me fait direct penser aux webhooks(donc tu veux commencer par la ?).

          Tu n'as pas une verification a faire sur la methode($_SERVER['REQUEST_METHOD']) ? Sinon je plus fan de ton "Codage 2", je crois pas qu'un webhook soit censé afficher une vue.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            27 mars 2024 à 9:31:14

            Après modification du codage
            J'obtiens une page blanche avec rien dessus en utilisant posteman je n'obtiens aucune donnée reçue.
            Dans la console de mon cloud The Thing Network, je n'ai plus d'erreur.
            Code :
            <?php
            
            namespace App\Controllers\Api;
            
            use CodeIgniter\RESTful\ResourceController;
            use App\Models\Mdonnee;
            
            class InsererDonnees extends ResourceController
            {
                protected $modelName = 'App\Models\Mdonnee';
                protected $model;
                protected $format = 'json';
            
                public function index()
                {
                }
            
                public function create()
                {
                    $donnees = file_get_contents('php://input');
            
                    header('content-type:application/json');
            
                    // Traiter les données du webhook
                    $donnees = json_decode($donnees);
            
                    // Vérifier si des données ont été reçues
                    if (empty($donnees))
                        exit('Aucune donnée reçue.');
                }
            }
            • Partager sur Facebook
            • Partager sur Twitter

            The Thing Network en PHP en utilisant Webhook

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown