Πριν λίγο καιρό είχα συνομιλία με κάποιο συνάδελφο σχετικά με τη σωστή θερμοκρασία και υγρασία ενός  computer room και για το πως θα μπορούσα να κάνω monitoring τα δεδομένα αυτά από όπου και αν βρίσκομαι. Η αλήθεια είναι πως η ιδανική θερμοκρασία ενός data room είναι το άλφα και το ωμέγα αν θες να έχεις εάν σωστό και πλήρως λειτουργικό data room.

Το σκέφτηκα καλά το σκέφτηκα πολύ και αποφάσισα να φτιάξω μια λύση που θα προσπεράσει  αυτό ακριβώς το πρόβλημα. Δηλαδή μια συσκευή που θα μπορεί να μου δείχνει τη θερμοκρασία και υγρασία του data room εκείνη τη στιγμή και φυσικά να μπορώ να δω τις μετρήσεις απο οποιαδήποτε συσκεύη μου οποιαδήποτε στιγμή της ημέρας.

Για να μπορέσουμε λοιπόν να φτιάξουμε τον δικό μας cloud  μετρητή θερμοκρασίας/υγρασίας θα χρειαστούμε τα παρακάτω.



1.Arduino UNO Development Board

Με τη χρήση του συγκεκριμένου Development Board και του αισθητήρα που θα δούμε παρακάτω θα μπορέσουμε να διαβάσουμε τη θερμοκρασία και την υγρασία του χώρου.







2. Arduino Ethernet shield


Το Ethernet shield θα δώσει δυνατότητα σύνδεσης στο internet για το Arduino UNO ώστε να μπορέσουμε να στείλουμε δεδομένα στο thinger.io. Υπάρχει η δυνατότητα σύνδεσης και μέσω Wi-Fi αν επιλέξουμε κάποιο Wi-Fi enable shield.





3. DHT22 sensor
Ο αισθητήρας DHT22 αποτελεί την εξέλιξη του DHT11. Είναι ένας οικονομικός αισθητήρας μέτρησης θερμοκρασίας/υγρασίας και το εύρος λειτουργίας του είναι μεταξύ 3V και 5V. Μπορεί να μετρήσει θερμοκρασία από -40 έως 80 βαθμούς κελσίου και η ακρίβεια του είναι στους 0,5 βαθμούς(+/-).





4.Thinger.io

Η πλατφόρμα που θα χρησιμοποιήσουμε για να δώσουμε cloud connectivity endpoints στο Arduino μας. Αν και η υπηρεσία είναι premium σου δίνει τη δυνατότητα να κάνεις free account για δοκιμή.




Συνδέουμε το Arduino Ethernet shield στο Arduino UNO, για το DHT22 θα χρειαστούμε 3 από τα 4 pin.



Συμφωνα με το παραπανω σχεδιαγραμα συνδεουμε το pin1 στο 3v του Arduino Board, Το pin2 στο digital pin2 και το 4 στο GND pin του arduino board.

Πριν φορτώσουμε το πρόγραμμα στο Arduino θα πρέπει να δημιουργήσουμε ένα account στο thinger.io τα στοιχεία σύνδεσης θα τα χρειαστούμε για τη σύνδεση του Arduino board με την υπηρεσία. Εκεί δημιουργούμε μια νέα συσκευή(menu>devices) κρατάμε το device id και το device credentials.

Τέλος στην επιλογή Data Bucket δημιουργούμε ένα structure μεταβλητής ώστε να ανεβούν οι μετρήσεις από το Arduino UNO στη σελίδα.






Παρακάτω ακολουθεί  ο κώδικας που πρέπει να γίνει upload στο Arduino Board. Μεγάλη προσοχή στο USERNAME θα πρέπει να συμπληρώσουμε το username του account που δημιουργήσαμε στο thinger.io. Στο Device_id συμπληρώνουμε το όνομα που δημιουργήσαμε ποιο πάνω και στο PASSWORD βάζουμε το credential id της συσκευής. Επίσης αλλάζουμε και τα ip address σύμφωνα με αυτό του δικτύου μας.


// Arduino Server Room Climate Control
// Dimitris Soutas

#include <SPI.h>
#include <Ethernet.h>
#include <ThingerEthernet.h>
#include <DHT.h>

// DHT Sensor Setup

//Constants
#define DHTPIN 2     // DHT 22  (AM2302) -  pin connected to digital pin2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

//Variables
float hum;  //Stores humidity value
float temp; //Stores temperature value

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  

// the dns server ip
IPAddress dnServer(192, 168, 31, 1);
// the router's gateway address:
IPAddress gateway(192, 168, 31, 1);
// the subnet:
IPAddress subnet(255, 255, 255, 0);

//the IP address is dependent on your network
IPAddress ip(192, 168, 31, 18);


ThingerEthernet thing("USERNAME", "DEVICE_ID", "PASSWORD"); //Your credential

void setup() {

Serial.begin(9600);
// start the Ethernet connection and the server:
// initialize the ethernet device
  Ethernet.begin(mac, ip, dnServer, gateway, subnet);
  //print out the IP address
  Serial.print("IP = ");
  Serial.println(Ethernet.localIP());
  dht.begin();

  //start thing api dht22
  thing["dht22"] >> [](pson& out){
    out["temperature"] = dht.readTemperature();
    out["humidity"] = dht.readHumidity();
  };  
}
unsigned long lastCheck = 0;
void loop() {
  thing.handle();
}   
    

Αν όλα πάνε καλά μετά το compile/upload  το Arduino Board θα μιλήσει με το thinger.io και θα στέλνει μετρήσεις θερμοκρασίας και υγρασίας επίσης το device που δημιουργήσαμε θα  είναι σε state connected.
Αυτό σημαίνει ότι θα αρχίζει να ανεβάζει δεδομένα στη πλατφόρμα.


Με βάση τα δεδομένα αυτά μπορούμε να φτιάξουμε ένα dashboard επιλέγοντας την αντίστοιχη επιλογή από το μενού και να φτιάξουμε μία πολύ όμορφη σελίδα που θα είναι προσβάσιμη από παντού.



Στο επόμενο post θα επιστρέψουμε στο κόσμο του home assistant και θα δούμε πως θα συνδέσουμε bluetooth συσκευές στο έξυπνο σπίτι μας. Για οποιοδήποτε σχόλιο η απορία περιμένω τα σχόλια σας.