Store Arduino data to Firebase database [Howto]
The last few weeks I was playing with Firebase mostly because I wanted to get familiar with this technology. So at some point I thought that it will be a great idea to connect Arduino with Firebase. Imagine that you have a simple temperature sensor that measures the boiler’s water temperature every few minutes and you want to keep a history log of it in order to make some adjustments to thermostat. If you also want those measurements to be available online so you will be able to access them at any time then each sensor reading has to be stored somewhere.
One great way that I was also using for that kind of things is Xively. Originally it was Pachube , then Cosm and now Xively. I hope the guys don’t decide to change the name again! With Xively client for arduino you simply connect to their Api and you send them the readings. Its fast, its simple and they also have a free plan. But there are a few things that might not work for you. One of them is the limit of readings that you can store, at the moment in free plan you can have up to 3 months history. Another thing is that you can’t send data every 1 sec, so its impossible to store almost real time readings. And last but not least you need to consider that you are storing YOUR data in a database that you do not have control.
So what are the alternatives? Having your own sql database server is an overkill, not only because of the cost but also for maintenance reasons. For such simple projects you don’t have to spend a fortune. So here is where Firebase comes. The Firebase guys lets you connect to your own firebase database and do all the CRUD operations through simple calls to their api. You can visit their website and they will give you a 100mb database free. Which is enough to store at least a years readings. This is what I thought but quickly I came up with a huge problem. Firebase uses only HTTPS for security reasons and my Arduino Uno’s microprocessor don’t have enough power for that. In this link you can read what a member of firebase team says about the ssl support. The idea to bypass this issue is to proxy the requests through a server that can speak ssl. In order to achieve this I used the Firebase PHP library that you can find here. Think of it like this Arduino->Php website->Firebase. Once the data are in Firebase then you reatrive them in many different ways. Let’s start building our project and you will see how all the parts connect together.
First the hardware part. In my case I used the popular DS1820 temperature sensor. By connecting it to my Arduino Uno I was getting the room temperature readings. I also had to use an Ethernet shield. I had a spare W5100 so I made a small stack: Arduino Uno-Ethernet Sheild W5100-Prototyping Sheild. The circuit diagram is this:
And here is mine with all the parts connected:
Next step is to create your free firebase database in http://www.firebase.com. Then log into the database and go at the last menu item “Secrets”. From there you will get your secret token. Write it down as we will need it later. So now we have the hardware and the database ready. If you dont already have a domain, or sub domain go get one from your favorite registar and host the Firebase php library file in one of the thousand hosting providers that offer free plans. Personally I have a windows azure account so I just went there and created a new website.
Then by ftp I uploaded the firebaseLib.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
<?php /** * Firebase PHP Client Library * * @author Tamas Kalman <[email protected]> * @link https://www.firebase.com/docs/rest-api.html * */ /** * Firebase PHP Class * * @author Tamas Kalman <[email protected]> * @link https://www.firebase.com/docs/rest-api.html * */ class Firebase { private $_baseURI; private $_timeout; private $_token; /** * Constructor * * @param String $baseURI Base URI * * @return void */ function __construct($baseURI = '', $token = '') { if (!extension_loaded('curl')) { trigger_error('Extension CURL is not loaded.', E_USER_ERROR); } $this->setBaseURI($baseURI); $this->setTimeOut(10); $this->setToken($token); } /** * Sets Token * * @param String $token Token * * @return void */ public function setToken($token) { $this->_token = $token; } /** * Sets Base URI, ex: http://yourcompany.firebase.com/youruser * * @param String $baseURI Base URI * * @return void */ public function setBaseURI($baseURI) { $baseURI .= (substr($baseURI, -1) == '/' ? '' : '/'); $this->_baseURI = $baseURI; } /** * Returns with the normalized JSON absolute path * * @param String $path to data */ private function _getJsonPath($path) { $url = $this->_baseURI; $path = ltrim($path, '/'); $auth = ($this->_token == '') ? '' : '?auth=' . $this->_token; return $url . $path . '.json' . $auth; } /** * Sets REST call timeout in seconds * * @param Integer $seconds Seconds to timeout * * @return void */ public function setTimeOut($seconds) { $this->_timeout = $seconds; } /** * Writing data into Firebase with a PUT request * HTTP 200: Ok * * @param String $path Path * @param Mixed $data Data * * @return Array Response */ public function set($path, $data) { return $this->_writeData($path, $data, 'PUT'); } /** * Pushing data into Firebase with a POST request * HTTP 200: Ok * * @param String $path Path * @param Mixed $data Data * * @return Array Response */ public function push($path, $data) { return $this->_writeData($path, $data, 'POST'); } /** * Updating data into Firebase with a PATH request * HTTP 200: Ok * * @param String $path Path * @param Mixed $data Data * * @return Array Response */ public function update($path, $data) { return $this->_writeData($path, $data, 'PATCH'); } /** * Reading data from Firebase * HTTP 200: Ok * * @param String $path Path * * @return Array Response */ public function get($path) { try { $ch = $this->_getCurlHandler($path, 'GET'); $return = curl_exec($ch); curl_close($ch); } catch (Exception $e) { $return = null; } return $return; } /** * Deletes data from Firebase * HTTP 204: Ok * * @param type $path Path * * @return Array Response */ public function delete($path) { try { $ch = $this->_getCurlHandler($path, 'DELETE'); $return = curl_exec($ch); curl_close($ch); } catch (Exception $e) { $return = null; } return $return; } /** * Returns with Initialized CURL Handler * * @param String $mode Mode * * @return CURL Curl Handler */ private function _getCurlHandler($path, $mode) { $url = $this->_getJsonPath($path); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $this->_timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->_timeout); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $mode); return $ch; } private function _writeData($path, $data, $method = 'PUT') { $jsonData = json_encode($data); $header = array( 'Content-Type: application/json', 'Content-Length: ' . strlen($jsonData) ); try { $ch = $this->_getCurlHandler($path, $method); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); $return = curl_exec($ch); curl_close($ch); } catch (Exception $e) { $return = null; } return $return; } } |
And now the most importand file that you also have to upload to your hosting directory. Its the file that will respond to Arduino requests. I named it firebaseTest.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php require_once 'firebaseLib.php'; // --- This is your Firebase URL $url = 'https://xxxxxx.firebaseio.com/'; // --- Use your token from Firebase here $token = 'xxxxxxxxxxxxxxx'; // --- Here is your parameter from the http GET $arduino_data = $_GET['arduino_data']; // --- $arduino_data_post = $_POST['name']; // --- Set up your Firebase url structure here $firebasePath = '/'; /// --- Making calls $fb = new fireBase($url, $token); $response = $fb->push($firebasePath, $arduino_data); sleep(2); |
So now if you do a manual request to http://www.yourdomain.com/firbaseTest.php?arduino_data=21.00 the value 21.00 should be stored in your firebase database. And you should see it straight away. Pretty cool ah? Now the only thing that is left is to make the Arduino send the actually readings. So instead of the dummy “21.00” that we put manually before we will have the real temp readings. The arduino code is this one:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
#include <SPI.h> #include <Ethernet.h> #include <OneWire.h> int DS18S20_Pin = 2; OneWire ds(DS18S20_Pin); // on digital pin 2 // Enter a MAC address for your controller below. // Newer Ethernet shields have a MAC address printed on a sticker on the shield byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; char serverName[] = "ardufirebase.azurewebsites.net"; // name address of your domain // Set the static IP address to use if the DHCP fails to assign IPAddress ip(192,168,0,177); int serverPort = 80; EthernetClient client; int totalCount = 0; char pageAdd[64]; char tempString[] = "00.00"; // set this to the number of milliseconds delay // this is 5 seconds #define delayMillis 5000UL unsigned long thisMillis = 0; unsigned long lastMillis = 0; void setup() { Serial.begin(9600); // disable SD SPI pinMode(4,OUTPUT); digitalWrite(4,HIGH); // Start ethernet Serial.println(F("Starting ethernet...")); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // no point in carrying on, so do nothing forevermore: // try to congifure using IP address instead of DHCP: Ethernet.begin(mac, ip); } digitalWrite(10,HIGH); Serial.println(Ethernet.localIP()); delay(2000); Serial.println(F("Ready")); } void loop() { thisMillis = millis(); if(thisMillis - lastMillis > delayMillis) { lastMillis = thisMillis; float temperature = getTemp(); Serial.println(ftoa(tempString,temperature,2)); sprintf(pageAdd,"/firebaseTest.php?arduino_data=%s",ftoa(tempString,temperature,2)); if(!getPage(serverName,serverPort,pageAdd)) Serial.print(F("Fail ")); else Serial.print(F("Pass ")); totalCount++; Serial.println(totalCount,DEC); } } byte getPage(char *ipBuf,int thisPort, char *page) { int inChar; char outBuf[128]; Serial.print(F("connecting...")); if(client.connect(ipBuf,thisPort)) { Serial.println(F("connected")); sprintf(outBuf,"GET %s HTTP/1.1",page); client.println(outBuf); sprintf(outBuf,"Host: %s",serverName); client.println(outBuf); client.println(F("Connection: close\r\n")); } else { Serial.println(F("failed")); return 0; } // connectLoop controls the hardware fail timeout int connectLoop = 0; while(client.connected()) { while(client.available()) { inChar = client.read(); Serial.write(inChar); // set connectLoop to zero if a packet arrives connectLoop = 0; } connectLoop++; // if more than 10000 milliseconds since the last packet if(connectLoop > 10000) { // then close the connection from this end. Serial.println(); Serial.println(F("Timeout")); client.stop(); } // this is a delay for the connectLoop timing delay(1); } Serial.println(); Serial.println(F("disconnecting.")); // close client end client.stop(); return 1; } float getTemp(){ //returns the temperature from one DS18S20 in DEG Celsius byte data[12]; byte addr[8]; if ( !ds.search(addr)) { //no more sensors on chain, reset search ds.reset_search(); return -1000; } if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.println("CRC is not valid!"); return -1000; } if ( addr[0] != 0x10 && addr[0] != 0x28) { Serial.print("Device is not recognized"); return -1000; } ds.reset(); ds.select(addr); ds.write(0x44,1); // start conversion, with parasite power on at the end byte present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for (int i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } ds.reset_search(); byte MSB = data[1]; byte LSB = data[0]; float tempRead = ((MSB << 8) | LSB); //using two's compliment float TemperatureSum = tempRead / 16; return TemperatureSum; } char *ftoa(char *a, double f, int precision) { long p[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000}; char *ret = a; long heiltal = (long)f; itoa(heiltal, a, 10); while (*a != '\0') a++; *a++ = '.'; long desimal = abs((long)((f - heiltal) * p[precision])); itoa(desimal, a, 10); return ret; } |
The above code is not that complicated as it may look. I used parts of the web client example code from arduino.cc. So in a few words what we are doing is we are making a request and we pass the current temperature reading. As you can see i set it to do the request every 5 seconds. The most difficult part for me was to convert the float value in string. If I didn’t do this I was getting an error message.
If all went well then you are almost ready. Your arduino is probably uploading the readings and you probably see your database filling. Here is a video from mine:
Now that you have a database full of readings you can use them as you like. Me, because this was only a small test project I created a simple html file and with some javascript and a jquery chart plugin I am just showing the current temperature from my room and a graph of it.
The index.html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<html> <head> <script type='text/javascript' src='https://cdn.firebase.com/js/client/1.0.6/firebase.js'></script> <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script> <script type="text/javascript" src="http://people.iola.dk/olau/flot/jquery.flot.js"></script> <script src="controller.js"></script> <link rel="stylesheet" type="text/css" href="bootstrap.min.css" /> </head> <body> <div style="width:800px; margin:0 auto;"> <div><h1 id='tempMsg' style='display:none;width:550px; margin:0 auto;margin-top: 50px;'>Current temp: <span id="currTemp"></span>°C</h1></div> <div id="chart1" style="width:600px;height:300px;"></div> </div> </body> <footer></footer> </html> |
And the javascript file (controller.js)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$(document).ready(function() { var tempsArray = []; var tArray = []; var sessionArray = []; var currTemp = ''; var dataRef = new Firebase('https://arduino-test.firebaseio.com'); dataRef.on('value', function(snapshot) { var t = snapshot.val(); var count = 0; for (var key in t) { if (t.hasOwnProperty(key)) { var dt = []; dt[0] = count; dt[1] = parseFloat(t[key]); tempsArray = []; tempsArray.push(dt); tArray = []; tArray.push(dt[1]); count++; } } sessionArray.push(tempsArray[0]) //console.log(tempsArray) $.plot($("#chart1"), [ sessionArray ]); currTemp = tempsArray[0][1].toString(); $('#tempMsg').show(); $("#currTemp").text(currTemp); }); }); |
Probably for your convenience you might want to upload also those to your hosting directory.
I hope you enjoyed this small project as I did. You can see the temperature in my room live in this link: http://ardufirebase.azurewebsites.net/
Special thanks to my colleague Fabrizio for his valuable help!
Thanks for reading
Awesome project!
I’m making a project with Arduino and a Telit GPRS board, I want to datalog in Firebase but I’m having problems, I cannot use external libs to make http requests because I have to follow the GPRS AT commands syntax. Do you think is possible to have a workaround for SSL protocol (it’s a f.. BIG certificate)? I hope that your experience can give me a big hand!
Thank you !
You are AWESOME. This is the most useful and workable example project I’ve found so far for sending Arduino data to cloud. One more thing. I’ve sending data using WiFI shield and following code worked. Hope it will be useful for you.
Cheers!
String request = “GET “;//
request.concat(WEBPAGE);
request.concat(tempC);
request.concat(” HTTP/1.0\r\n”);
request.concat(“Host: “);
request.concat(WEBSITE);
request.concat(“\r\n\r\n”);
Serial.println(request);
//now send data
Adafruit_CC3000_Client www = cc3000.connectTCP(ip, 80);
if (www.connected()) {
Serial.println(F(“successfully connected!”));
http://www.println(request);
} else {
Serial.println(F(“Connection failed”));
return;
}
Forgot to put my site which collects my home temperature. Thanks again!
http://dsignhome.netau.net/measure_temparature/
Very nice Damith! Well done 🙂
Hi Damith, can you send your all codes that using wifi? By the way, your link does not work.
Hello, i´m working on a similar project and i need to store values on a previously defined table in firebase, i noticed that this one generates new ones with random names. How can i just update an existing one?
Greate tutorial,
But I think this don’t make sense because you are doing pooling for your server and you aren’t using the benefits o firebase through websocket or server events.
Hi Jefferson,
Yes you are right, back in 2014 when I wrote this tutorial I didn’t have the knowledge to do it in a different way.
Hi,
Why didn’t you use the REST APIs for accessing firebase ? I am trying out that and having some issue.
Hi Yatin,
Please see below.
“Firebase uses only HTTPS for security reasons and my Arduino Uno’s microprocessor don’t have enough power for that. In this link you can read what a member of firebase team says about the ssl support.”
Would you mind making a video tutorial from scratch, i am not new to firebase, but i am new to arduino… Would be great 🙂
I have no idea on how to
Then by ftp I uploaded the firebaseLib.php:
Hi,
You need to use an ftp client like ‘Filezilla’ in order to upload the file to your web server
Did you use filezilla to upload the file to Azure?
Did you use filezilla to upload the file to Azure? How can i use Azure? By the way, thanks for that tutorial.
Yes I used filezilla but it wont make a difference if you use a different ftp client. For azure go to https://azure.microsoft.com and create an account.
Hi there,
Thank you very much for your tutorial, I am working on a similar project too.
I am having trouble finding my token from firebase. Where can I find it?
Thank you in advance.
In firebase admin console. Few months ago they changed it so not sure where exactly you can find it now. It shouldn’t be hard though.
Hi,
I am unbale to find the token.
Do you have any idea, how can I find it now?
1. Click on the settings/cog wheel icon next to your project name at the top of the new Firebase Console
2. Click Project settings
3. Click on the Service Accounts tab
4. Click on Database Secrets
5. Hover over the non-displayed secret and click Show
hello admin, i’m very confuse with our tutorial, but i only want to connect my arduino ethrnet shield with firebase, i followed your tutorial, but until now cannot, please help me 🙁
You need to write what have you done so far, where you are getting an error and what error. Otherwise I can’t help you.
your arduino code i uploaded in my firebasse, but not working, what false step?
Hi abedze,
I am struggling to understand what exactly is your problem. You need to explain at which point you stuck. In the article I don’t say anywhere that you have to upload arduino code to firebase. Firebase is for storing the data, nothing else. Please go through the article again. I understand that the process is quite complex but is the only way I found. Maybe you will need to look into using a raspberry pi which has the power for https calls.
Hey, do you know any link or script to send data from a raspberry pi which has the Arduino sensor data getting collected on it? I am currently using pyserial to view the data. But I want to upload it to firebase. A link or some code would help.
If the data is in raspberry then you can communicate with Firebase from there. Raspberry has the power to make https requests unlike arduino. In a small project I am working on I used nodejs to make the requests. I am reading arduino data with this https://www.npmjs.com/package/serialport
What exactly goes into the firebase path? Could you please give me an example or is it something like … $firebasepath = ‘firebase.database().ref() ???
Does the path go exactly into the single quotes –>> ‘firebase.database().ref()’ . And I tried this before hosting my website by simply calling the url on a web browser and inputing a value for arduino_data but it failed to update….is it really necessary to host your website first?
Hey I have the firebaseTest.php and firebaseLib.php hosted on a server but when I go to run http://www.yourdomain.com/firbaseTest.php?arduino_data=21.00 the value 21.00 doesn’t appear in the firebase database. I dont seem to be getting any errors in the console do you know what the issue could be please?
I had the baseURI linkint to the project instead of the database, thanks 🙂
I am following this tutorial. When I am sending data manually through get method url, it is storing data in firebase with a new unique id every time. Help me to modify the code.
Note:-line in firebaseTest.php I modified, $firebasePath = ‘/UID/demo’;
So its creating unique id under “demo” for every manual test.
Is there any modification to be done for not creating any unique id under “demo” path.
Thanks in advance.
Even I tried changing push method to update method, still not working
This is how firebase works. It creates a unique id for every record
Replace line 14 with this line of code :
$response = $fb->set($firebasePath, $arduino_data);
hey admin ,, your code make value always in random name at firebase ,,
how if i want to place the value in same name at firebase ?
You need to think of your db structure. Mine here was just for demoing. It would be better to create a child for each day
hi, im having problem with this code, when i run the code, i get this error
Class ‘fireBase’ not found in firebaseTest.php line 13
Thank you so much for your tutorial. It works perfectly. But I have a question, how can I get the data from Firebase to Arduino?
how can I if I want to push 2 or more data ?
Hello, I know it is an old post.
I have done all the steps but I do not receive any answer.
First I have realized that you were wrong in “So now if you do a manual request to http://www.yourdomain.com/firbaseTest.php?arduino_data=21.00” it should be “firebaseTest.php” instead of “firbaseTest.php” I corrected this, but I do not receive nothing from my server. I have checked I have php installed correctly on my server with phpinfo.php (https://mediatemple.net/community/products/dv/204643880/how-can-i-create-a-phpinfo.php-page)
Hello, I know it is an old post.
I have done all the steps but I do not receive any answer.
First I have realized that you were wrong in “So now if you do a manual request to http://www.yourdomain.com/firbaseTest.php?arduino_data=21.00” it should be “firebaseTest.php” instead of “firbaseTest.php” I corrected this, but I do not receive nothing from my server. I have checked I have php installed correctly on my server with phpinfo.php (https://mediatemple.net/community/products/dv/204643880/how-can-i-create-a-phpinfo.php-page).
I have tried it with POSTMAN (Chrome extension), doing a POST to http://www.mywebsite.net/firebaseTest.php?arduino_data=21.00
I have forgotten saying I have download the firebaseLib.php (maybe it is a new version and that it could be why it does not work). I installed firebaseInstance.php and I tried with your Arduino code receiving:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 22 Jun 2017 11:12:26 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: http://www.smartsens.net/firebaseTest.php?arduino_data=21.3
301 Moved Permanently
301 Moved Permanently
nginx
yo baje una version de firebaseLib.php nueva que no funciona porque la class Firebase no existe, usen la version de firebaseLib que muestra el que hico este post, esa si funciona!!!
How to do the reverse thing?that is how to get data from the firebase to arduino and have a logic to compare the data with a value?
I had a doubt, you are sending your sensor data to firebase, but is there a way I can get data from firebase to my arduino
How to use same code to receive data from firebase to arduino??
lo mismo estoy intentando hacer
Thanks fro this tutorial.i just want to ask do I have to make any changes to firebaseLib.php file?
Nope
Hi there,
Thank you very much for your tutorial,
if i want to use a “obstacle avoiding sensor” and want to send a binary value like 0 or 1 to the database, what should i do?
I am making a project where I check the water level and if it’s low the arduino uno using the Ethernet shield send notification to android app through firebase. However client.connect() function doesn’t work for https://fcm.googleapis.com as it uses https. So what should I do.
I want to upload image from nodemcu to firebase-store.Is that possible or not?
Hola, pude implemantar esta solucion para guardar datos en firebase !! y Funciona!!!
Como puedo hacer para guardas etiquetas tambien y que no las genere automaticamente el firebase?
how to connect it using esp-01
Actually, i want to update my values in firebase database.. So i have created website on 000webhost and i have upload firebaseLib.php and firebaseTest.php and i used update inside of push but i am fail .. Even i am fail to push data .. Can u tell me “$fb = new fireBase($url, $token);” where this call goes??
sir I had successfully connect my devices in the firebase using those files
but I have a problem actually or a month
I can’t send the data of 3 arduino devices simultaneously in the firebase
do you know the solution? I am using I web server for those 3 devices and same library
but these devices has ID for them to post data on a specific field in the firebase
what should I do to simultaneously update the data of 3 devices on their each specific field in firebase?
Does it possible to connect to firebase if i am using bluetooth module instead of the ethernet?
Hi friend. You are the best, your tutorial was great, but I have difficulties with websites. I created a windows azure account, I thought this task would be easy, but I ran into difficulties there. Would it be too much to ask you to do a tutorial on how to host this website on azure? If you do that I would be immensely grateful.
Dear
Any idea how I can read the Firebase data in my Arduino, using the example logic, but the data read operation