Duyuru

Çöküş
Henüz duyuru yok

io.adafruit sitesinden veri alma

Çöküş
X
 
  • Filtrele
  • Zaman
  • Göster
Hepsini Sil
yeni mesajlar

  • io.adafruit sitesinden veri alma

    İyi günler,

    Projemde io.adafruit.com sitesine kullanıcı verilerini aktarmaya ve daha sonra siteden verileri almaya çalışıyorum.

    Verileri aktarabildim fakat verileri geri alamıyorum. Aktardığım veriler siteye girdiğimde gözüküyor ama verileri Deneyap mini kartı ile geri almak istediğimde boşluk değeri geri döndürüyor. Feed'i bir butona atadığımda ise butona atadığım verileri alabiliyorum. Kullandığım kütüphaneler : Adafruit_MQTT.h ve Adafruit_MQTT_Client.h

  • #2
    Aslı edak tarafından gönderilmiş Mesajı göster
    İyi günler,

    Projemde io.adafruit.com sitesine kullanıcı verilerini aktarmaya ve daha sonra siteden verileri almaya çalışıyorum.

    Verileri aktarabildim fakat verileri geri alamıyorum. Aktardığım veriler siteye girdiğimde gözüküyor ama verileri Deneyap mini kartı ile geri almak istediğimde boşluk değeri geri döndürüyor. Feed'i bir butona atadığımda ise butona atadığım verileri alabiliyorum. Kullandığım kütüphaneler : Adafruit_MQTT.h ve Adafruit_MQTT_Client.h
    Kodunuzu paylaşırsanız bakalım.

    Yorum Yap


    • #3
      Aslı do4us tarafından gönderilmiş Mesajı göster

      Kodunuzu paylaşırsanız bakalım.
      Kod aşağıdaki gibidir. Siteden veri alabilmek için değiştirilmesi gereken yerler yorum satırları ile belirtilmiştir.

      Kod:
      #include <Keypad.h>
      #include "WiFi.h"
      #include <Adafruit_MQTT.h>
      #include <Adafruit_MQTT_Client.h>
      //Aşağıdaki değerler çalıştırılan kodda bulunmaktadır.
      #define WLAN_SSID       ""
      #define WLAN_PASS       ""
      #define AIO_SERVER      "io.adafruit.com"
      #define AIO_SERVERPORT  1883
      #define AIO_USERNAME    ""
      #define AIO_KEY         ""
      WiFiClient client;
      Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
      Adafruit_MQTT_Publish aclik_sabah = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/aclik.sabah");
      Adafruit_MQTT_Publish aclik_ogle = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/aclik.ogle");
      Adafruit_MQTT_Publish aclik_aksam = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/aclik.aksam");
      Adafruit_MQTT_Publish tokluk_sabah = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/tokluk.sabah");
      Adafruit_MQTT_Publish tokluk_ogle = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/tokluk.ogle");
      Adafruit_MQTT_Publish tokluk_aksam = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/tokluk.aksam");
      Adafruit_MQTT_Publish tokluk_saat10 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/tokluk.gece");
      Adafruit_MQTT_Publish toklukOrt_deger = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/toklukOrt");
      Adafruit_MQTT_Publish aclikOrt_deger = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/aclikOrt");
      void MQTT_connect() {
        int8_t ret;
        if (mqtt.connected())
        {
          return;
        }
        Serial.print("Bulut sistemine baglaniliyor... ");
        uint8_t count = 3;
        while ((ret = mqtt.connect()) != 0)
        {
          Serial.println(mqtt.connectErrorString(ret));
          Serial.println("3 saniye icinde tekrar baglanti denemesi gerceklesecek...");
          mqtt.disconnect();
          delay(5000);
          count = count - 1 ;
          if (count == 0)
          {
            esp_restart();
          }
        }
        Serial.println("Bulut sistemine baglanildi!");
      }
      int durum[7] = {0,0,0,0,0,0,0};
      int aclikDegerler[3];
      int toklukDegerler[4];
      int deger;
      const int satir = 4;
      const int sutun = 3;
      String number = "";
      char tuslar[satir][sutun] = {
      {'1','2','3'},
      {'4','5','6'},
      {'7','8','9'},
      {'*','0','#'}
      };
      byte satir_pinleri[satir] = {D2, D3, MO, MI};
      byte sutun_pinleri[sutun] = {MC, D9, D10};
      Keypad keypad = Keypad(makeKeymap(tuslar), satir_pinleri, sutun_pinleri, satir, sutun);
      void setup() {
        Serial.begin(115200);
        Serial.print(WLAN_SSID);
       Serial.println(" kablosuz agina baglaniliyor");
       WiFi.begin(WLAN_SSID, WLAN_PASS);
       while (WiFi.status() != WL_CONNECTED)
       {
         delay(500);
         Serial.print(".");
       }
       Serial.println();
       Serial.println("Kablosuz aga baglanildi!");
       Serial.print("IP adresi: ");
       Serial.println(WiFi.localIP());
      }
      void loop() {
        MQTT_connect();
        char key = keypad.getKey();
        if (key){
          if(key == '#'){
            if(number != ""){
              Serial.print("Gönderildi.");
              for(int i = 0; i<7; i++){
                Serial.print(i);
                Serial.println(durum[i]);
                if(durum[i] == 0){
                  durum[i] = 1;
                  deger = number.toInt();
                  if(i == 0){
                    aclik_sabah.publish(deger);
                    aclikDegerler[0] = deger;
                  }
                  else if(i == 1){
                    tokluk_sabah.publish(deger);
                    toklukDegerler[0] = deger;
                  }
                  else if(i == 2){
                    aclik_ogle.publish(deger);
                    aclikDegerler[1] = deger;
                  }
                  else if(i == 3){
                    tokluk_ogle.publish(deger);
                    toklukDegerler[1] = deger;
                  }
                  else if(i == 4){
                    aclik_aksam.publish(deger);
                    aclikDegerler[2] = deger;
                  }
                  else if(i == 5){
                    tokluk_aksam.publish(deger);
                    toklukDegerler[2] = deger;
                  }
                  else if(i == 6){
                    tokluk_saat10.publish(deger);
                    toklukDegerler[3] = deger;
                  }
                  number = "";
                  break;
                }
              }
              if(durum[6] == 1){
                  for(int j = 0; j<7;j++){
                    durum[j] = 0;
                  }
                  //Burada daha önceden girilen değerler girildiğinde kaydedildiği diziden alınıyor.
                  //Değerler girilirken herhangi bir güç kesintisinde değerler kaybolur.
                  //Bu durumun önüne geçmek için verileri io.adafruit.com sitesinden almak gerekiyor.
                  int aclikOrt = (aclikDegerler[0]+aclikDegerler[1]+aclikDegerler[2])/3;
                  int toklukOrt = (toklukDegerler[0] + toklukDegerler[1] + toklukDegerler[2] + toklukDegerler[3])/4;
                  Serial.println(aclikOrt);
                  Serial.println(toklukOrt);
                  toklukOrt_deger.publish(toklukOrt);
                  aclikOrt_deger.publish(aclikOrt);
                }
            }
          }
          else{
            number += key;
          }
        }
      }

      Yorum Yap


      • #4
        Daha önce yayınladığım bir veriyi geri okumaya çalıştığım bir uygulama olmadı. Biraz araştırma yaptığımda aşağıdaki yöntemin işene yarayabileceğini düşündüm.

        Publish edilen verilerinden (toklukOrt, aclikOrt vb.) hangilerini Adafruit IO platformundan öğrenmek istiyorsan öncelikle bir tanımlama yapmak gerekiyor. Yeni değişkenler tanımladıktan sonra (toklukOrt_deger_backlog ve aclikOrt_deger_backlog) aşağıdaki gibi Adafruit_MQTT_Subscribe sınıfı içerisinde tanımlama yapıyorum.

        Kod:
        Adafruit_MQTT_Subscribe toklukOrt_deger_backlog = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/toklukOrt");
        Adafruit_MQTT_Subscribe aclikOrt_deger_backlog = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/aclikOrt");
        İstediğin yerde kullanmak için "mqtt.subscribe" fonksiyonunu algoritmanın içinde uygun gördüğün şekilde kullanman yeterli olucaktır.

        Kod:
        mqtt.subscribe(&toklukOrt_deger_backlog);
        mqtt.subscribe(&aclikOrt_deger_backlog);
        Ayrıca Adafruit IO için başka bir kütüphane buldum. Hem dili daha sade hem de örnekleri daha anlaşılır ve çeşitlidir. Bundan da yararlanabilirsiniz.

        Yorum Yap


        • #5
          Bir de verilerinizi eş zamanlı olarak EEPROM'a da kaydederseniz; kablosuz veri iletişiminiz kaybolduğunda da verilerinize ulaşırsınız.

          Yorum Yap

          Hazırlanıyor...
          X