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

θερμοκρασία και Ενέργεια θερμοσίφωνα.

 Περίληψη

Θέλουμε να ελέγχουμε την λειτουργία τουν θερμοσίφωνα για λόγους ασφαλείας με ρελέ καστάνιας και ρελέ φορτίου στα 20 αμπέρ και αισθητηρίου θερμοκρασίας για τον έλεγχο της θερμοκρασίας του νερού. Ο έλεγχος θα γίνεται μέσω του γνωστού για εμάς openhab. Επιπλέον θα αναπτύξουμε κανόνες μέσα στο openhab για να ανοιγοκλείνουμε την παροχή ρεύματος μόλις συμπληρωθεί η θερμοκρασία του νερού καθώς και τον  απομακρυσμένο έλεγχό του.

Υλικά και εργαλεία

  Συγκεντρώστε τα κάτωθι υλικά:

  • DS18B20 αισθητήρας θερμοκρασίας θερμοσίφωνα [2.6€]
  • καλώδια γεφυρώματος

    female famale jumper wires

     ενα raspberry pi

  • AC contactor Ρελέ φορτίου Χ2  220v 20A 2NO
  • ES220 1

    ένα latching relay  η relay καστάνιας 2p 16 amber

    400x400 4a98eeba e7bb 4d7e 8739 8a79fc6419b9.JPG

                                        

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

    To παρακάτω σχεδιάκι ισως βοηθήσει στην συνδεσμολογία των ρελέδων για τον έλεγχο του θερμοσίφωνα. Τα πάντα βρίσκονται μέσα στον ασφαλειοπίνακα εκτος του αισθητηρίου θερμοκρασίας

    sxedio 2 boiler  

     Βήματα υλοποίησης

    Βήμα 1:

    Έχουμε εγκαταστήσει λειτουργικό και openhab

    Βήμα 2:

    Έχουμε τοποθετήσει το raspberry στον ασφαλειοπίνακα

    Βήμα 3:

    Έχουμε εκτελέσει όλες τις εντολές για την εγκατάσταση του αισθητήρα θερμοκρασίας σύμφωνα με αυτό το άρθρο http://users.sch.gr/kgiannaras/raspberry-pi/metrisi-thermokrasias-me-to-aisthitirio-ds18b20.html

    μόνο στην περίπτωση αλλαγής στην ακίδα επικοινωνίας ακολουθούμε τις παρακάτω οδηγίες

    Διαβάζουμε το άρθρο για την μέτρηση θερμοκρασίας με το αδιάβροχο αισθητήριο DS18B20 1-Wire.

    1-Wire on RPi

    Το λειτουργικό υποστηρίζει τους συγκεκριμένους τύπους αισθητήρων 1-Wire βέβαια υπάρχει παρουσίαση πως ρυθμίζεται ο αισθητήρας θερμοκρασίας και εδώ: DS18B20 temperature sensing

    Από αρχικές ρυθμίσεις η ακίδα, GPIO4 (pin 7) χρησιμοποιείται για 1-Wire στο Raspberry Pi. Σε περίπτωση που δεν μπορεί να χρησιμοποιειθεί αυτή η ακίδα μπορούμε να την αλλάξουμε.

    Στην έκδοση B+ μπορούμε εύκολα να ορίσουμε την ακίδα για παράδειγμα την GPIO26 (pin 37) μιας και διαθέτει περισσότερα GPIO. Υπάρχουν σχόλια comment στο διαδίκτυο, που εξηγούν πως αλλάζεις το πιν του 1-Wire.

    Βήμα 4:

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

    Βήμα 5:

    Προχωράμε σε ενημέρωση λογισμικού

    Λογισμικό Software

    Χειροκίνητη ενεργοποίηση για τη μέτρηση θερμοκρασίας απαιτούν τις επόμενες εντολές:

    sudo modprobe w1-gpio
    

    sudo modprobe w1-therm

     

    Εάν ο αισθητήρας ανιχνευθεί θα πάρει την κωδική ονομασία 28-0004314f8aff ή με παραπλήσιο όνομα. Το αρχείο ενημερώνεται από δεδομένα και εμείς μπορούμε να τα διαβάσουμε βλέποντας το περιεχόμενο του αρχείου "w1_slave" που βρίσκεται στο φάκελο του αισθητήρα:
    cd 28-0004314f8aff
    cat w1_slave

    80 01 55 00 7f ff 0c 10 5a : crc=5a YES

    80 01 55 00 7f ff 0c 10 5a t=24000

    Tα δεδομένα  περιέχουν και  CRC έλεγχο. Αν όλα είναι εντάξει βλέπουμε τα παρακάτω και στην περίπτωση t=24000, εννοεί 24°C. Αν δεν υπάρχει αισθητήρας έχουμε ανάλογα αποτελέσματα:

    cat w1_slave

    00 00 00 00 00 00 00 00 00 : crc=00 NO

    80 01 55 00 7f ff 0c 10 5a t=0

    Πρωτότυπο παράδειγμα  Adafruit's tutorial.

    Οι δυνατότητες του script είναι να εκτελείται χωρίς την βοήθεια της python γράφοντας "./temp.py" αντί "python temp.py"). Όταν κληθεί το script το ID (ονομασία) του αισθητήρα θερμοκρασίας διαβάζεται σαν μια απλή μεταβλητή κάτι που βολεύει αν χρησιμοποιήσουμε πολλαπλούς αισθητήρες. Όταν καλούμε το script  περιμένει να διαβάσει την θερμοκρασία και μετά βγαίνει από το πρόγραμμα του script κάτι πολύ χρήσιμο για το openHAB. Αν χρειάζονται οι μετρήσεις σε βαθμούς Κελσίου διαγράφουμε τον κώδικα του υπολογισμού για Φαρενάιτ. Πληκτρολογούμε τις κάτωθι εντολές για να δούμε την αύξηση της θερμοκρασίας εφόσον την έχουμε αλλάξει με άμμεσο τρόπο χρησιμοποιώντας ένα σεσουάρ μαλλιών, και εφόσον έχουμε δει το όνομα του φακέλου του αισθητήρα μας το οποίο το πληκτρολογούμε όπως φαίνετε πιο κάτω.
    ./temp.py 28-0004314f8aff

    22.810

    ξανά ./temp.py 28-0004314f8aff

    30.062

    Το επόμενο βήμα είναι  να πάρουμε τα δεδομένα της θερμοκρασίας και ενέργειας μέσα στο πρόγραμμα του openhab.

    Στην αρχή ενεργοποιούσαμε το θερμοσίφωνα με εντολή σε κάποιο gpio. Μετά την τοποθέτηση του ρελέ καστάνιας στον ασφαλειοπίνακα μπήκε και ένα μπουτόν για να ανοιγοκλείνει την παροχή ρεύματος οπότε για πρακτικούς λόγους πρέπει να δημιουργήσουμε και ένα ηλεκτρικό παλμό για να προσωμειώνει το μπουτόν του πίνακα. Έτσι όταν δοθεί εντολή από το openhab ενεργοποιεί τον διακόπτη boiler_on_off που δίνει εντολή στον sf_boiler_switch που αυτός θα δώσει εντολή στο λειτουργικό σύστημα να εκτελέσει το python αρχείο boiler_on_off.py το οποίο θα δημιουργίσει τον κατάλληλο παλμό για να διεγείρει τον ρελέ καστάνιας και αυτός με την σειρά του θα δώσει πραγματικό ρεύμα στην αντίσταση ισχύος του θερμοσίφωνα.

     
    Στο raspberry τώρα ανοίγουμε το lx terminal και πληκτρολογούμε τα ακόλουθα.

    OPENHAB

    sudo nano /opt/openhab/configurations/items/demo.items

     προσθέτουμε στην τελευταία γραμμή

    //Δημιουργία δεύτερου ορόφου
    Group
      second_flore "" <attic> (All)

    //Δημιουργία παταριού για την υποστήριξη του θερμοσίφωνα
    Group
    loft "" <attic> (second_flore)

    //
    μεταβλητή για την απεικόνιση της θερμοκρασίας με εκτέλεση python αρχείο
    Number
    boiler_temp  "Θερμοκρασία νερού [%.1f °C]"  <temperature> (loft,item_boiler_chart) {exec="<[/home/pi/temp.py 28-000006894b3c : 5000:REGEX((.*?))]"}

    //δείχνει την ηλεκτρική κατάσταση του θερμοσίφωνα  
    Switch  sf_boiler_power_status  "Κατάσταση λειτουργίας"   (loft)

    //δίνει εντολή να ανάψει ο θερμοσίφωνας
    Switch
    boiler_on_off "Ενεργοποίηση θερμοσίφωνα" (loft) { gpio="pin:21" }

    //δίνει παλμό στο ρελέ του πίνακα για να ανάψει ο θερμοσίφωνας
    Switch
    sf_boiler_switch  "" (loft)   { exec=" ON:/home/pi/boiler_on_off.py" }

    //αυτόματο σβήσιμο παροχής ρεύματος
    Switch
    boiler_auto_off   ""     <light> (loft)

    //συνεχόμενη συντήρηση θερμοκρασίας νερού του θερμοσίφωνα
    Switch
    boiler_auto_manual ""    <Light> (loft)

    //ρυθμίσεις για την καταγραφή της θερμοκρασίας σε χάρτη απεικόνισης
    Group
    boiler_chart "" (loft)
    Number
        boiler_chart_period    ""
     

     
          sudo nano /opt/openhab/configurations/rules/demo.rules

    προσθέτουμε στην τελευταία γραμμή

     rule "temperature automation"
    when
          Item item_boiler_auto_manual changed from OFF to ON
     then
           sendCommand(item_boiler_auto_off, OFF)
      if (boiler_temp.state < 37)
           {
               sendCommand( boiler_on_off, ON)
           }
       else if (boiler_temp.state > 37)
           {
                   sendCommand( boiler_on_off, OFF)
           }
    end

     

    rule "temperature automation 2"
       when
             Item item_boiler_auto_manual changed from ON to OFF
       then
               sendCommand( boiler_on_off, OFF)
       end
      

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


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