Firebase kullanarak esp32 üzerinde lm35 okutmsk

Başlatan bbs2006, 30 Ocak 2022, 02:08:11

bbs2006

Merhaba
Firebase kullanarak esp32  baglı lm35 sıcsklık degerini okutmak istiyorum.arduino ideden yazdım .bir türlü derleyemedim.

hata mesajı 
 no matching function for call to 'FirebaseESP32::pushString(const char [23], float&)'



ilyas KAYA

https://randomnerdtutorials.com/esp32-firebase-realtime-database/

Burayı bir incele istersen. Kütüphane ekli mi ? Float değişkeni tanımlama yöntemi biraz farklı sanırım.


 Firebase.pushFloat("/Temp",celsius;

Firebase.pushString ("/Temp",santigrat);

Kullanmalısınız diye de başka bir forumda yazmışlar

bbs2006


94onur94

pushString fonksiyonu parametre olarak string alır. Senin gönderdiğin sicaklik değişkeni float türünde. String(sicaklik) komutu ile float türünü string türüne çevirebilirsin.

Firebase.pushString("/Esp32-iot/Temperature", String(sicaklik));

bbs2006

Merhaba

//#include <Esp32WifiManager.h>
#include <FirebaseESP32.h>
#include <WiFi.h>
//#include <WiFiAP.h>
//#include <WiFiClient.h>
#include <MQ135.h>

#define FIREBASE_HOST ""      
#define FIREBASE_AUTH ""         //Database secret 
//#define WIFI_SSID "esp"
//#define WIFI_PASSWORD "12345"
#define WIFI_SSID ""
#define WIFI_PASSWORD "p5MTaUXg"




int lamba= 21;         //Evin lambasının bağlı olduğu röle_1 için pin
int elektrik= 18;      //Evin elektriklerini açmak-kapatmak için bağlanmış röle_2 için pin 
int sicaklikPin = 14;  //Evin sıcaklığını ölçmek için kullanılan LM35 için kullanılan pin.
int fan  = 23;         //Evi havalandırmak için bağlanacak olan fan için pin.
int gaz = 15;          //Evin hava kalitesini ölçmek için kullanılan analog pin.
int hareket = 22;      //Evde hareketi alglayacak olan sensör
int analogDeger;
int sicaklikLed= 1;

FirebaseData firebaseData;
FirebaseData lambaData;
FirebaseData elektrikData;
FirebaseData sicaklik;
FirebaseData fanData;
FirebaseData gazData;
FirebaseData hareketData;



FirebaseJson json;
String path="/Esp32-iot";
void setup() {
  // put your setup code here, to run once:


  pinMode(lamba,OUTPUT);
  pinMode(elektrik,OUTPUT);
  pinMode(sicaklikPin,OUTPUT);
  pinMode(fan,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(hareket,INPUT);
Serial.begin(115200);
 
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print(".");
    delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();

  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.reconnectWiFi(true);
}
void sicaklikOkuma(){
    analogDeger=analogRead(sicaklikPin);
    float milivolt=(analogDeger/4095)*3300;   // Milivolt cinsinden gerilim değeri hesaplanıyor.
    float sicaklik= milivolt / 10 ;           // Her  santigrat derecede10 Mvolt gerilim üretmektedir. 
   Firebase.RTDB.getFloat(&FirebaseData,"/Esp32-iot/sicaklik"));
  // Firebase.pushString("/Esp32-iot/Temperature", sicaklik);
   //Firebase.pushString("/Esp32-iot", String(sicaklik));
  // Firebase.setFloat("temp", sicaklik);
  
 // digitalWrite(sicaklikLed1, Firebase.getInt("running"));
  Serial.print("Current Temperature in Degree Celsius =   ");
  Serial.println(sicaklik);

  
}

void loop() {
  // put your main code here, to run repeatedly:

sicaklikOkuma();
if (Firebase.getString(lambaData, "/Esp32-iot/lamba")){            // Lambaları aç ve kapamaya ait yazılım.
    Serial.println(lambaData.stringData());
    if (lambaData.stringData() == "1") {
    digitalWrite(lamba, HIGH);
    }
  else if (lambaData.stringData() == "0"){
    digitalWrite(lamba, LOW);
    }
  }
  delay(50);

if (Firebase.getString(elektrikData, "/Esp32-iot/elektrik")){       //Elektrikleri aç ve kapamaya ait yazılım.
    Serial.println(elektrikData.stringData());
    if (elektrikData.stringData() == "1") {
    digitalWrite(elektrik, HIGH);
    }
  else if (elektrikData.stringData() == "0"){
    digitalWrite(elektrik, LOW);
    }
  }
  delay(50);

if (Firebase.getString(fanData, "/Esp32-iot/fan")){                 // fan  aç ve kapamaya ait yazılım.
    Serial.println(fanData.stringData());
    if (fanData.stringData() == "1") {
    digitalWrite(fan, HIGH);
    }
  else if (fanData.stringData() == "0"){
    digitalWrite(fan, LOW);
    }
  }
  delay(50);
}

Hatalar

C:\Users\Behd\Desktop\iot projeleri\Esp32-iot-1\Esp32-iot-1.ino: In function 'void sicaklikOkuma()':
Esp32-iot-1:71:40: error: expected primary-expression before ',' token
    Firebase.RTDB.getFloat(&FirebaseData,"/Esp32-iot/sicaklik"));
                                        ^
"WiFi.h" için birden fazla library bulundu
Kullanılıyor: C:\Users\Behd\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Kullanılmıyor: C:\Users\Behd\Documents\Arduino\libraries\WiFiNINA
exit status 1
expected primary-expression before ',' token



Baktım bir sonuca varamadım. acaba hata nerden kaynaklanıyor. bir bakabilr misiniz





bbs2006

Merhaba
Yaptıgım uygulamada  esp32 firebase veri gönderiyor. sıcaklık, gaz ve  true ve veya false.  Ancak firebas den sadece sıcaklık değeri mit app inventorde yaptığım uygulamaya geliyor. gaz değeri ve hareket olan 1 veya 0 değeri gelmiyor. Acaba nerde hata yapıyorum. bir bakabilir misiniz.




const int lamba= 21;          //Evin lambasının bağlı olduğu röle_1 için pin
const int elektrik= 18;        //Evin elektriklerini açmak-kapatmak için bağlanmış röle_2 için pin 
const float sicaklikPin = 14;  //Evin sıcaklığını ölçmek için kullanılan LM35 için kullanılan pin.
const int fan  = 23;          //Evi havalandırmak için bağlanacak olan fan için pin.
const int gaz = 15;            //Evin hava kalitesini ölçmek için kullanılan analog pin.
const boolean hareket = 22;        //Evde hareketi alglayacak olan sensör
int analogDeger;
const int sicaklikLed= 1;
int sensorDeger;
int buzerPin;
int krmzLed;                      //  Gaz durumunda Yanar Alarm verir. 
int yesilLed;                    //  Gaz  seviyesi normal durumda  yanar.
int okunanDeger=0;                // Motion sensör için
int motionLed;                    // hareket algılandığında yanacak.

void setup() {
 
  pinMode(lamba,OUTPUT);
  pinMode(elektrik,OUTPUT);
  pinMode(sicaklikPin,OUTPUT);
  pinMode(fan,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(hareket,INPUT);
  pinMode(krmzLed,OUTPUT);
  pinMode(yesilLed,OUTPUT);
  pinMode(gaz,INPUT);
  pinMode(motionLed,OUTPUT);                    
Serial.begin(115200);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}

void sicakDeger(){
          
    analogDeger=analogRead(sicaklikPin);
    float milivolt=(analogDeger/4095)*3300;                  // Milivolt cinsinden gerilim değeri hesaplanıyor.
    float sicaklik= milivolt / 10 ;                          // Her  santigrat derecede10 mvolt gerilim üretmektedir. 
    Firebase.setFloat("/Esp32-iot/sicaklik",random(10,70));
 if (Firebase.failed()) {
      Serial.print("Sicaklik failed:");
      Serial.println(Firebase.error());  
      return;}
delay(1000);      
Serial.print("Sıcaklık Degeri..........:");
Serial.println(random(10,70));
//Serial.println(Firebase.getFloat("sicaklik"));    //Firebase okunan deger yazdırılıyor.
}

void gazDeger(){
    sensorDeger=analogRead(gaz);
    sensorDeger=random(50,1000);
    Serial.print("Gazın  Degeri..............:");
    Serial.println(sensorDeger);
    
    Firebase.setInt("/Esp32-iot/gaz",sensorDeger);
//  Serial.print("Gazın  Degeri..........:");
//  Serial.println(sensorDeger);
    if (Firebase.failed()) {
      Serial.print("Sicaklik failed:");
      Serial.println(Firebase.error());  
      return;}
delay(500);    
  if (sensorDeger > 600) { 
    
    digitalWrite(yesilLed, LOW);
    digitalWrite(buzerPin, HIGH);
    digitalWrite(krmzLed, HIGH);
    Serial.print("Gazın Durumu..............:");
    Serial.println("Alarm");
    delay(500);                    // wait 2000ms
  }

  else {
    digitalWrite(yesilLed, HIGH);
    digitalWrite(krmzLed, LOW);
    digitalWrite(buzerPin, LOW);
    Serial.print("Gazın Durumu..............:");
    Serial.println("Normal");
    delay(500);                                                            
} }
void Hareket(){
    okunanDeger=digitalRead(hareket);
    okunanDeger=1;
    Serial.print("Hareket sensöründen Okunan deger.....:");
    Serial.println(okunanDeger);
 if(okunanDeger==1){
    Firebase.setBool("/Esp32-iot/hareket",1);
    digitalWrite(motionLed,HIGH);
    digitalWrite(buzerPin,HIGH);
    Serial.println("Hareket Algılandı..............:");}
 else{
    Firebase.setBool("/Esp32-iot/hareket",0);
    digitalWrite(motionLed,LOW);
    digitalWrite(buzerPin,HIGH);
 }
 }

void loop() {
sicakDeger();
gazDeger();
Hareket();
//.............................................................
//  Evin Lambalarını Yakıp Smdürmeye ait  Yazılım.
//  Şubat 2022 
//.............................................................

String LambaDurumu=Firebase.getString("/Esp32-iot/lamba");    // Lambaları aç ve kapamaya ait yazılım.
      Serial.print("Lamba Durumu..............:");
      Serial.println(Firebase.getString("/Esp32-iot/lamba"));
                                                              
  if (LambaDurumu == "1") {
    digitalWrite(lamba, HIGH);
    }
  else if (LambaDurumu == "0"){
    digitalWrite(lamba, LOW);
    }
  delay(50);

//.............................................................
//  Evin Elektriğini  Açıp Kapamaya  ait  Yazılım.
//  Şubat 2022 
//.............................................................

String ElektrikDurumu=Firebase.getString("/Esp32-iot/elektrik");    // Lambaları aç ve kapamaya ait yazılım.
      Serial.print("Elektrik Durumu...........:");
      Serial.println(Firebase.getString("/Esp32-iot/elektrik"));
                                                              
  if (ElektrikDurumu == "1") {
    digitalWrite(elektrik, HIGH);
    }
  else if (ElektrikDurumu == "0"){
    digitalWrite(elektrik, LOW);
    }
  delay(50);

//.............................................................
//  Evin Fanı'nı  Açıp Kapamaya  ait  Yazılım.
//  Şubat 2022 
//.............................................................

String FanDurumu=Firebase.getString("/Esp32-iot/fan");    // Lambaları aç ve kapamaya ait yazılım.
      Serial.print("Fan  Durumu..............:");
      Serial.println(Firebase.getString("/Esp32-iot/fan"));
                                                              
  if (FanDurumu == "1") {
    digitalWrite(fan, HIGH);
    }
  else if (FanDurumu == "0"){
    digitalWrite(fan, LOW);
    }
  delay(50);


}

SB7

#6
void gazDeger(){
    sensorDeger=analogRead(gaz);
    sensorDeger=random(50,1000);

void Hareket(){
    okunanDeger=digitalRead(hareket);
    okunanDeger=1;

Kodunuzda anlayamadığım 2 yer oldu;
-Gaz değerini analog olarak okuyorsanız ve bir sensörden veri alabiliyorsanız neden random sayı üretip sensör değerine atama yaptınız?
-Hareket sensörünüzden 1/0 bilgisi almak istiyorsanız neden okunan değere 1 değeri atadınız?

Bu haliyle hareket sensörünüzle sürekli 1 değeri okuyup gaz sensörünüzle de ortamda gaz varmış/yokmuş gibi rastgele değerler almanız beklenir(sensörden bağımsız).
-SB7

bbs2006

Önceklikle teşekkğr ederim.elimde sensör bulunmadıgından dolayı bu şkilde yazdım.(firebase veri gidip gitmediğine bskmak için).  Hareket semsörüde aynı şekilde.cep tel.uygulamasında görmek için.