θερμοκρασία και Ενέργεια θερμοσίφωνα.
Περίληψη
Θέλουμε να ελέγχουμε την λειτουργία τουν θερμοσίφωνα για λόγους ασφαλείας με ρελέ καστάνιας και ρελέ φορτίου στα 20 αμπέρ και αισθητηρίου θερμοκρασίας για τον έλεγχο της θερμοκρασίας του νερού. Ο έλεγχος θα γίνεται μέσω του γνωστού για εμάς openhab. Επιπλέον θα αναπτύξουμε κανόνες μέσα στο openhab για να ανοιγοκλείνουμε την παροχή ρεύματος μόλις συμπληρωθεί η θερμοκρασία του νερού καθώς και τον απομακρυσμένο έλεγχό του.
Υλικά και εργαλεία
Συγκεντρώστε τα κάτωθι υλικά:
καλώδια γεφυρώματος
ενα raspberry pi
ένα latching relay η relay καστάνιας 2p 16 amber
Συνδεσμολογίες
To παρακάτω σχεδιάκι ισως βοηθήσει στην συνδεσμολογία των ρελέδων για τον έλεγχο του θερμοσίφωνα. Τα πάντα βρίσκονται μέσα στον ασφαλειοπίνακα εκτος του αισθητηρίου θερμοκρασίας
Βήματα υλοποίησης
Βήμα 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-gpiosudo modprobe w1-therm
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 το οποίο θα δημιουργίσει τον κατάλληλο παλμό για να διεγείρει τον ρελέ καστάνιας και αυτός με την σειρά του θα δώσει πραγματικό ρεύμα στην αντίσταση ισχύος του θερμοσίφωνα.
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 ""
προσθέτουμε στην τελευταία γραμμή
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