Αστέρια ΑνενεργάΑστέρια ΑνενεργάΑστέρια ΑνενεργάΑστέρια ΑνενεργάΑστέρια Ανενεργά
 

Υπό ανάπτυξη

Θα δημιουργίσουμε μια μονάδα με arduino και βασικά αισθητήρια

1) θερμοκρασίας

2) Υγρασίας

3) Ανίχνευση φωτεινότητας

4) Ανίχνευση κίνισης

5) είσοδο για μαγνητική επαφή πόρτας

6) είσοδο για μαγνητική επαφή παραθύρου

7) rele για έλεγχο φωτισμού του δωματίου

8) IR για έλεγχο του air-condition

Η πλακέτα του arduino θα επικοινωνεί μέσω LAN  με πρωτόκολλο MQTT

H κατασκευή θα υλοποιηθεί στις τεχνικές οδηγίες και μετά θα παρουσιαστεί

 

Απαραίτητα υλικά

 

 

Συνδεσμολογίες

Εδώ είναι η εικόνα με το pir sensor. Σύνδεση στην ακίδα 9  στην ψηφιακή είσοδο του arduino και όχι στην 4 όπως δείχνει η φωτογραφία.

/kgiannaras/images/software/pir sensore.zip

pir sensore bs

Στην παρακάτω εικόνα φαίνεται η σύνδεση του αισθητηρίου ρεύματος. Σύνδεση στην ακίδα Α2

 /kgiannaras/images/software/carent sensore.zip

carent sensore 1

Στην επόμενη εικόνα έχουμε βάλει ένα  led για να αναβοσβήνει όταν συνδέεται με τον broker mosquitto.

users.sch.gr/kgiannaras/images/software/led mqtt.zip

led mqtt

Στην επόμενη εικόνα έχουμε το ψηφιακό αισθητήριο DHT11. Ειναι διπλό αισθητήριο δηλαδή μπορεί να μετράει θερμοκρασία και υγρασία του δωματίου. Σύνδεση στην ακίδα 2

users.sch.gr/kgiannaras/images/software/dht sensore.zip

dht sensore bb

Αμέσως μετά έχουμε δύο μαγνητικές επαφές από τις οποίες θέλουμε να μαθαίνουμε εάν είναι ανοικτό το παράθυρο και το ρολό των παραθύρων. Συνδεσιμότητες στις ακίδες 8 και 10

users.sch.gr/kgiannaras/images/software/contacts Sketch.zip

contacts

 Επόμενη εικόνα έχουμε τον πομπό Ir led συνδεδεμένος στην ακίδα 3 για να ελέγχουμε το κλιματιστικό

users.sch.gr/kgiannaras/images/software/ir led.zip

IR bb

Αμέσως μετά μια φωτοαντίσταση για την μέτρηση της φωτεινότητας στο δωμάτιο. Η μετρούμενη αναλογική τάση που προκύπτει συνδέεται στην αναλογική είσοδο Α4

users.sch.gr/kgiannaras/images/software/foto resistance arduino.zip

foto resistance arduino.jpg bb

 Τέλος 4 ρελέδες είναι απαραίτητοι στις ακίδες 4, 5, 6, και 7 για να ελέγχουμε τα ρολά το φωτισμό του ταβανιού και τα φώτα νυκτός

users.sch.gr/kgiannaras/images/software/fritzing relay.zip

fritzing relay

 

 

 

arduino ακολουθούμε αυτή την συνδεσμολογία

/* MQTT topic addressing
node = 52

device ID:
1 = 5212 = current sensor for lights
2 = 5222 = Light sensor
3 = 5231 = ultrasonic
4 = 5242 = pir
5 = 5252 = sound    // δεν χρησιμοποιείται στο πρόγραμμα
6 = 5262 = Temperature_F
  = 5263 = Humidity
7 = 5271 = flame    // δεν χρησιμοποιείται στο πρόγραμμα
8 = 5281 = gas      // δεν χρησιμοποιείται στο πρόγραμμα
9 = 5292 = contact ρολλών
5293 = contact παραθύρου
10 = 52** = ir
11 = **** = mqtt led
Pins του arduino
A4 = light sensor      //αναλογική είσοδος
A2 = current sensor for lights //αναλογική είσοδος
 2 = DHT11 sensor   //ψηφιακή είσοδος αφορά τον αισθητήρα θερμοκρασίας-υγρασίας
 # = water leak    // Δεν χρησιμοποιείται
 3 = IR sensor   // ψηφιακή έξοδος οδηγεί το led υπερύθρων
 # = sound
 # = flame
 # = gas
 # = ultrasonic
 4 = rele1      // ψηφιακή έξοδος οδηγεί το
 5 = rele2     // ψηφιακή έξοδος οδηγεί το
 6 = rele3    // ψηφιακή έξοδος οδηγεί το
 7 = rele4    // ψηφιακή έξοδος οδηγεί το
 8 = contact  //ψηφιακή είσοδος μαγνητική επαφή στα ηλεκτρικά ρολά
 9 = PIR sensor    // ψηφιακή είσοδος αφορά τον αισθητήρα κίνισης
10 = contact //ψηφιακή είσοδος επαφή για έλεγχο παραθύρου
13 = ενδεικτικό led για mosquitto

Εντολές - μυνήματα που έρχονται από τον mosquitto με κωδικούς τους παρακάτω αριθμούς, όταν αυτοί ληφθούν από τον arduino μας αυτός θα εκτελεί τα παρακάτω:

  client.subscribe("5232");    //5232 = topic για τα φώτα οροφής
  client.subscribe("5233");   //5233 = topic για τα ρολά του παραθύρου
  client.subscribe("5234");   //5234 = topic θα ενεργοποιεί το λαμπάκι νυκτός
  client.subscribe("5235");   //5235 = topic ir led θα ενεργοποιεί το κλιματιστικό

 

 

Openhab

Ενημερώνουμε αρχείο με τα items

 
/* active groups */
Group:Contact:OR(OPEN, CLOSED) Shutters "Open shutters [%d)]" <contact>

 

//Δημιουργία δωματίου sf_childrens_room στο δεύτερο πάτωμα second_flore
Group 
   sf_childrens_room  "Παιδικό δωμάτιο"    <child1>    (second_flore)    

//Δημιουργία μεταβλητής sf_childrens_room_temp για την ένδειξη της θερμοκρασίας η οποία θα ενημερώνετε μέσω mqtt πρωτοκόλλου
Number
sf_childrens_room_temp  "Θερμοκρασία δωματίου [%.1f °C]"  <temperature>  (sf_childrens_room)    { mqtt="<[mymosquitto:5262:state:default]" }

//Δημιουργία μεταβλητής sf_childrens_room_humidity για την ένδειξη της υγρασίας η οποία θα ενημερώνετε μέσω mqtt πρωτοκόλλου
Number
sf_childrens_room_humidity "Υγρασία δωματίου [%.1f %%]" <temperature>   (sf_childrens_room)   { mqtt="<[mymosquitto:5263:state:default]" }

//κατάσταση της μαγνητικής επαφής παραθύρου η οποία θα ενημερώνετε μέσω mqtt πρωτοκόλλου
Number
  sf_childrens_room_window  "επαφή παραθύρου [%.1f]"  (sf_childrens_room)  { mqtt="<[mymosquitto:5292:state:default]" }

Contact child_window_contact  "επαφή  παιδικού παραθύρου [MAP(en.map):%s]"    (sf_childrens_room)    

Rollershutter
   sf_childrens_shutter    "Ρολά παραθύρου"    (sf_childrens_room,Shutters)     { mqtt=">[mymosquitto:5233:command:UP:1],>[mymosquitto:5233:command:DOWN:0]" }

// Διακόπτης που ανάβει τα φώτα οροφής και στέλνει την εντολή στον arduino μέσω mqtt broker
Switch
 
   sf_childrens_room_light   "Φώτα οροφής"  (sf_childrens_room)     { mqtt=">[mymosquitto:5232:command:ON:1],>[mymosquitto:5232:command:OFF:0]" }

//ενεργοποιεί τα φώτα νυκτός με mqtt στον arduino
Switch
    sf_childrens_room_night_light    "Φώτα νυκτός"    (sf_childrens_room)        { mqtt=">[mymosquitto:5234:command:ON:1],>[mymosquitto:5234:command:OFF:0]" }

//μεταβλητή τύπου number δέχεται από arduino το επίπεδο της φωτεινότητας του δωματείου μέσω mqtt broker
Number
sf_childrens_room_lumin_mqtt    "Αισθητήρας φωτεινότητας [%.1f]"    (sf_childrens_room)   { mqtt="<[mymosquitto:5222:state:default]" }

//ένδειξη της κατάστασης φωτεισμού
Number
sf_childrens_room_lumin_icon    "Κατάσταση φωτισμού στο δωμάτιο"    <light>

//Δέχεται την ανίχνευση κίνησης μέσω mqtt broker από arduino
Number
    sf_childrens_room_pir_mqtt    "Αισθητήρας κίνισης [%.1f]"    (sf_childrens_room)        { mqtt="<[mymosquitto:5242:state:default]" }

//καταγράφει την ημερομηνία και ώρα ανίχνευσης κίνησης
DateTime
sf_childrens_room_pir_time    "Ημερομηνία ανίχνευσης κίνισης [%1$tA, %1$td/%1$tm, %1$tI:%1$tM %1$tp]"

//ενργοποιείται όταν ληφθεί κίνηση μέσα στο δωμάτιο
Switch
sf_childrens_room_pir_alm_sta    "Κατάσταση κίνισης εντός δωματίου" (sf_childrens_room)

//ενεργοποιεί την καταγραφή της κίνησης
Switch
sf_childrens_room_pir_alm_enb    "Ενεργοποίηση Καταγραφής κινίσεων" (sf_childrens_room)

//ενεργοποιεί το αυτόματο άναμμα φώτων όταν υπάρχει κίνηση

Switch  sf_childrens_room_pir_switch    "Αυτόματη ενεργοποίηση φωτισμού"   (sf_childrens_room)

//γκρουπ για τις ρυθμίσεις του δωματίου
Group
  sf_childrens_room_setings    "Ρυθμίσεις"    <child1>    (sf_childrens_room)    

//επιτρέπει όταν σκοτεινιάζει στο δωμάτιο να ανάβουν τα φώτα νυκτός

Switch
  sf_ayto_night_light_switch    "Αυτόματη ενεργοποίηση νυχτερινού φωτισμού"   (sf_childrens_room)    

//επιτρέπει αποστολή mail όταν είναι ο διακόπτης της ενεργοποίησης του συναγερμού ΟΝ εφόσον ανοίξει το ρολό του παραθύρου
Switch
   sf_reed_switch_alarm    "email μαγνητικής επαφής παραθύρου" (sf_childrens_room)    

//επιτρέπει αποστολή mail όταν είναι ο διακόπτης της ενεργοποίησης του συναγερμού ΟΝ και ο διακόπτης καταγραφής ΟΝ και εφόσον καταγραφεί κίνιση από το radar

Switch
   sf_radar_switch    "email  radar" (sf_childrens_room)    

//επιτρέπει αυτόματο άνοιγμα ρολών το πρωί και αυτόματο κλείσιμο το βράδυ
Switch
sf_rollershutter_switch    "Αυτόματη ενεργοποίηση ρολών" (sf_childrens_room)

//ενεργοποιεί τηλεόραση αργότερα το aircondition   
Switch SF_TV_ON_OFF    "TV"  (sf_childrens_room)  { mqtt=">[mymosquitto:5235:command:ON:1],>[mymosquitto:5235:command:OFF:0]" }

 //κατάσταση της μαγνητικής επαφής ρολών η οποία θα ενημερώνετε μέσω mqtt πρωτοκόλλου      
Number    sf_childrens_room_shutter "επαφή ρολών [%.1f]"    (sf_childrens_room)  { mqtt="<[mymosquitto:5293:state:default]" }

Contact
    sf_childs_room_shutter "επαφή ρολών παιδικού [MAP(en.map):%s]"    (sf_childrens_room)
 
// Επιτρέπει αποτολή email για τα ρολλά όταν έχουμε συναγερμό
Switch
sf_childrens_room_reed_switch_shutter "Αποστολή email μαγνητικής επαφής ρολών"    (sf_childrens_room)  

//Ένδειξη τιμής κατανάλωσης ρεύματος  
Number    sf_childrens_room_light_amber    "Κατανάλωση ρεύματος (amber) [%.2f A]"   <energy>    (sf_childrens_room)        { mqtt="<[mymosquitto:2873:state:default]" }

String    test_voice    "φωνητικη_εντολη"    (sf_childrens_room)

 

 

Ενημερώνουμε το αρχείο με τα rules

//εμφανίζει την κατάσταση της επαφής των ρολών
rule
"convert children shutter"
when
Item sf_childrens_room_shutter received update
then
if(sf_childrens_room_shutter.state < 15)
{
sf_childs_room_shutter
.state = CLOSED
}
else
{
sf_childs_room_shutter
.state = OPEN
}
end
 //εμφανίζει την κατάσταση της επαφής του παραθύρου   
rule "convert children window"
    when
        Item sf_childrens_room_window received update
    then
         if(sf_childrens_room_window.state < 15)
        {
         child_window_contact.state = CLOSED     
         }
    else
        {
        child_window_contact.state = OPEN
        }
    end
//όταν ανοίξει το παράθυρο του δωματίου αποστέλει email
rule "mail window contact"
     when
         Item child_window_contact received update
    then
       if(sf_reed_switch_alarm.state, ON)
       {
           if(child_window_contact.state, open)
           {
         sendMail("Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.", "rola anixta", "tora"
           }
       }
    end

//ανάβει σβήνει την κατάσταση φωτισμού του δωματίου ανάλογα με την υπάρχουσα τιμή της φωτεινότητας που έχει το δωμάτιο και ανιχνεύεται από τον αισθητήρα φωτός του arduino    
rule "childrens room lumin"
    when
        Item sf_childrens_room_lumin_mqtt received update
    then
        if(sf_childrens_room_lumin_mqtt.state < 300)
        {
            sendCommand(sf_childrens_room_lumin_icon, 0)
         }
     else
         {
            sendCommand(sf_childrens_room_lumin_icon, 1)
        }
    end
//ανοιγοκλείνει τα φώτα νυκτός αν υπάρχει σκοτάδι ή φως στο δωμάτιο και είναι στις ρυθμίσεις ενεργοποιημένος αυτός ο αυτοματισμός     
rule "night lights otomation on-off"
    when
           Item sf_childrens_room_lumin_mqtt received update
    then
       if(sf_ayto_night_light_switch.state == ON)
        {
            if(sf_childrens_room_lumin_mqtt.state < 100)
        {
            sendCommand(sf_childrens_room_night_light, ON)
          }
        else
            {
            sendCommand(sf_childrens_room_night_light, OFF)
            }
         }
   end  
//ενεργοποιεί την κατάσταση κίνισης όταν ενημερωθεί απο τον αισθητήρα κίνησης του arduino  
rule "pir threshold"
    when
        Item sf_childrens_room_pir_mqtt received update
    then
        if(sf_childrens_room_pir_alm_enb.state == ON)
         {
        sendCommand(sf_childrens_room_pir_alm_sta, ON)
         }
    end

        

//ενημερώνει την ημερομηνία ανίχνευσης κίνισης και αποστέλει email εάν έχει ενεργοποιηθεί και ο διακόπτης μέσα στις ρυθμίσεις 
rule "pir responce"
    when
        Item sf_childrens_room_pir_alm_sta changed from OFF to ON
    then
if(sf_enable_alarm.state == ON)
{
if(sf_radar_switch == ON)
{
  sendMail("Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.", "ανίχνευση κίνισης", "Τα αισθητήρια ανίχνευσαν κίνιση μέσα στο παιδικό δωμάτιο!!!")
 postUpdate(sf_childrens_room_pir_time, new DateTimeType())
}       
}
    end


//Ανάβουν τα φώτα οροφής αυτόματα όταν κινιθεί κάποιος στο δωμάτιο εφόσον ενεργοποιηθεί και ο διακόπτης στις ρυθμίσεις    
rule " pir lights otomation"
    when
        Item sf_childrens_room_pir_mqtt received update
    then
        if(sf_childrens_room_pir_switch.state == ON)
         {
            sendCommand(sf_childrens_room_light, ON)
         }
     end
//ανοίγει τα ρολά στις 9 κάθε πρωί εφόσον έχει ενεργοποιηθεί ο διακόπτης ενεργοποίηση ρολών στις ρυθμίσεις του δωματίου 
            rule "auto roller shutter on"
    when   
         Time cron "0 00 09 * * ?"
    then
              sendCommand(sf_childrens_shutter, UP)
     end

         
        

//κλείνει τα ρολά στις 6 κάθε απόγευμα εφόσον έχει ενεργοποιηθεί ο διακόπτης ενεργοποίηση ρολών στις ρυθμίσεις του δωματίου     
    rule "auto roller shutter off"
    when   
          Time cron "0 30 20 * * ?"
    then
         sendCommand(sf_childrens_shutter, DOWN)
    end
        

 

 

 

*

 

 

 

 

 

 

 

 

Προσθήκη νέου σχολίου


Κωδικός ασφαλείας
Ανανέωση