|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "70e5a428b607cd5a9a4f422c2a4df03d",
|
|
|
"translation_date": "2025-08-27T22:07:45+00:00",
|
|
|
"source_file": "2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md",
|
|
|
"language_code": "el"
|
|
|
}
|
|
|
-->
|
|
|
# Μέτρηση θερμοκρασίας - Εικονικό IoT Υλικό
|
|
|
|
|
|
Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν αισθητήρα θερμοκρασίας στη εικονική IoT συσκευή σας.
|
|
|
|
|
|
## Εικονικό Υλικό
|
|
|
|
|
|
Η εικονική IoT συσκευή θα χρησιμοποιήσει έναν προσομοιωμένο αισθητήρα Grove Digital Υγρασίας και Θερμοκρασίας. Αυτό διατηρεί το εργαστήριο ίδιο με τη χρήση ενός Raspberry Pi με έναν φυσικό αισθητήρα Grove DHT11.
|
|
|
|
|
|
Ο αισθητήρας συνδυάζει έναν **αισθητήρα θερμοκρασίας** με έναν **αισθητήρα υγρασίας**, αλλά σε αυτό το εργαστήριο ενδιαφέρεστε μόνο για το τμήμα του αισθητήρα θερμοκρασίας. Σε μια φυσική IoT συσκευή, ο αισθητήρας θερμοκρασίας θα ήταν ένας [θεμίστορας](https://wikipedia.org/wiki/Thermistor) που μετρά τη θερμοκρασία ανιχνεύοντας μια αλλαγή στην αντίσταση καθώς αλλάζει η θερμοκρασία. Οι αισθητήρες θερμοκρασίας είναι συνήθως ψηφιακοί αισθητήρες που εσωτερικά μετατρέπουν την μετρημένη αντίσταση σε θερμοκρασία σε βαθμούς Κελσίου (ή Κέλβιν, ή Φαρενάιτ).
|
|
|
|
|
|
### Προσθήκη αισθητήρων στο CounterFit
|
|
|
|
|
|
Για να χρησιμοποιήσετε έναν εικονικό αισθητήρα υγρασίας και θερμοκρασίας, πρέπει να προσθέσετε τους δύο αισθητήρες στην εφαρμογή CounterFit.
|
|
|
|
|
|
#### Εργασία - προσθήκη αισθητήρων στο CounterFit
|
|
|
|
|
|
Προσθέστε τους αισθητήρες υγρασίας και θερμοκρασίας στην εφαρμογή CounterFit.
|
|
|
|
|
|
1. Δημιουργήστε μια νέα εφαρμογή Python στον υπολογιστή σας σε έναν φάκελο που ονομάζεται `temperature-sensor` με ένα μόνο αρχείο που ονομάζεται `app.py` και ένα εικονικό περιβάλλον Python, και προσθέστε τα πακέτα pip του CounterFit.
|
|
|
|
|
|
> ⚠️ Μπορείτε να ανατρέξετε [στις οδηγίες για τη δημιουργία και ρύθμιση ενός CounterFit Python project στο μάθημα 1 αν χρειαστεί](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md).
|
|
|
|
|
|
1. Εγκαταστήστε ένα επιπλέον πακέτο Pip για την εγκατάσταση ενός CounterFit shim για τον αισθητήρα DHT11. Βεβαιωθείτε ότι το εγκαθιστάτε από ένα τερματικό με ενεργοποιημένο το εικονικό περιβάλλον.
|
|
|
|
|
|
```sh
|
|
|
pip install counterfit-shims-seeed-python-dht
|
|
|
```
|
|
|
|
|
|
1. Βεβαιωθείτε ότι η εφαρμογή web του CounterFit είναι σε λειτουργία.
|
|
|
|
|
|
1. Δημιουργήστε έναν αισθητήρα υγρασίας:
|
|
|
|
|
|
1. Στο πλαίσιο *Create sensor* στο τμήμα *Sensors*, ανοίξτε το πλαίσιο *Sensor type* και επιλέξτε *Humidity*.
|
|
|
|
|
|
1. Αφήστε τις *Units* ρυθμισμένες σε *Percentage*.
|
|
|
|
|
|
1. Βεβαιωθείτε ότι το *Pin* είναι ρυθμισμένο στο *5*.
|
|
|
|
|
|
1. Επιλέξτε το κουμπί **Add** για να δημιουργήσετε τον αισθητήρα υγρασίας στο Pin 5.
|
|
|
|
|
|

|
|
|
|
|
|
Ο αισθητήρας υγρασίας θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων.
|
|
|
|
|
|

|
|
|
|
|
|
1. Δημιουργήστε έναν αισθητήρα θερμοκρασίας:
|
|
|
|
|
|
1. Στο πλαίσιο *Create sensor* στο τμήμα *Sensors*, ανοίξτε το πλαίσιο *Sensor type* και επιλέξτε *Temperature*.
|
|
|
|
|
|
1. Αφήστε τις *Units* ρυθμισμένες σε *Celsius*.
|
|
|
|
|
|
1. Βεβαιωθείτε ότι το *Pin* είναι ρυθμισμένο στο *6*.
|
|
|
|
|
|
1. Επιλέξτε το κουμπί **Add** για να δημιουργήσετε τον αισθητήρα θερμοκρασίας στο Pin 6.
|
|
|
|
|
|

|
|
|
|
|
|
Ο αισθητήρας θερμοκρασίας θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων.
|
|
|
|
|
|

|
|
|
|
|
|
## Προγραμματισμός της εφαρμογής αισθητήρα θερμοκρασίας
|
|
|
|
|
|
Η εφαρμογή αισθητήρα θερμοκρασίας μπορεί τώρα να προγραμματιστεί χρησιμοποιώντας τους αισθητήρες του CounterFit.
|
|
|
|
|
|
### Εργασία - προγραμματισμός της εφαρμογής αισθητήρα θερμοκρασίας
|
|
|
|
|
|
Προγραμματίστε την εφαρμογή αισθητήρα θερμοκρασίας.
|
|
|
|
|
|
1. Βεβαιωθείτε ότι η εφαρμογή `temperature-sensor` είναι ανοιχτή στο VS Code.
|
|
|
|
|
|
1. Ανοίξτε το αρχείο `app.py`.
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα στην κορυφή του `app.py` για να συνδέσετε την εφαρμογή στο CounterFit:
|
|
|
|
|
|
```python
|
|
|
from counterfit_connection import CounterFitConnection
|
|
|
CounterFitConnection.init('127.0.0.1', 5000)
|
|
|
```
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα στο αρχείο `app.py` για να εισάγετε τις απαιτούμενες βιβλιοθήκες:
|
|
|
|
|
|
```python
|
|
|
import time
|
|
|
from counterfit_shims_seeed_python_dht import DHT
|
|
|
```
|
|
|
|
|
|
Η δήλωση `from seeed_dht import DHT` εισάγει την κλάση `DHT` για την αλληλεπίδραση με έναν εικονικό αισθητήρα θερμοκρασίας Grove χρησιμοποιώντας ένα shim από το module `counterfit_shims_seeed_python_dht`.
|
|
|
|
|
|
1. Προσθέστε τον παρακάτω κώδικα μετά τον παραπάνω κώδικα για να δημιουργήσετε μια παρουσία της κλάσης που διαχειρίζεται τον εικονικό αισθητήρα υγρασίας και θερμοκρασίας:
|
|
|
|
|
|
```python
|
|
|
sensor = DHT("11", 5)
|
|
|
```
|
|
|
|
|
|
Αυτό δηλώνει μια παρουσία της κλάσης `DHT` που διαχειρίζεται τον εικονικό **D**igital **H**umidity και **T**emperature αισθητήρα. Η πρώτη παράμετρος λέει στον κώδικα ότι ο αισθητήρας που χρησιμοποιείται είναι ένας εικονικός αισθητήρας *DHT11*. Η δεύτερη παράμετρος λέει στον κώδικα ότι ο αισθητήρας είναι συνδεδεμένος στη θύρα `5`.
|
|
|
|
|
|
> 💁 Το CounterFit προσομοιώνει αυτόν τον συνδυασμένο αισθητήρα υγρασίας και θερμοκρασίας συνδέοντας σε 2 αισθητήρες, έναν αισθητήρα υγρασίας στο pin που δίνεται όταν δημιουργείται η κλάση `DHT`, και έναν αισθητήρα θερμοκρασίας που λειτουργεί στο επόμενο pin. Αν ο αισθητήρας υγρασίας είναι στο pin 5, το shim αναμένει ότι ο αισθητήρας θερμοκρασίας θα είναι στο pin 6.
|
|
|
|
|
|
1. Προσθέστε έναν άπειρο βρόχο μετά τον παραπάνω κώδικα για να ελέγχετε την τιμή του αισθητήρα θερμοκρασίας και να την εκτυπώνετε στην κονσόλα:
|
|
|
|
|
|
```python
|
|
|
while True:
|
|
|
_, temp = sensor.read()
|
|
|
print(f'Temperature {temp}°C')
|
|
|
```
|
|
|
|
|
|
Η κλήση στο `sensor.read()` επιστρέφει ένα tuple με υγρασία και θερμοκρασία. Χρειάζεστε μόνο την τιμή της θερμοκρασίας, οπότε η υγρασία αγνοείται. Η τιμή της θερμοκρασίας στη συνέχεια εκτυπώνεται στην κονσόλα.
|
|
|
|
|
|
1. Προσθέστε μια μικρή παύση δέκα δευτερολέπτων στο τέλος του `loop`, καθώς τα επίπεδα θερμοκρασίας δεν χρειάζεται να ελέγχονται συνεχώς. Μια παύση μειώνει την κατανάλωση ενέργειας της συσκευής.
|
|
|
|
|
|
```python
|
|
|
time.sleep(10)
|
|
|
```
|
|
|
|
|
|
1. Από το τερματικό του VS Code με ενεργοποιημένο το εικονικό περιβάλλον, εκτελέστε το παρακάτω για να εκτελέσετε την εφαρμογή Python:
|
|
|
|
|
|
```sh
|
|
|
python app.py
|
|
|
```
|
|
|
|
|
|
1. Από την εφαρμογή CounterFit, αλλάξτε την τιμή του αισθητήρα θερμοκρασίας που θα διαβαστεί από την εφαρμογή. Μπορείτε να το κάνετε με δύο τρόπους:
|
|
|
|
|
|
* Εισάγετε έναν αριθμό στο πλαίσιο *Value* για τον αισθητήρα θερμοκρασίας και στη συνέχεια επιλέξτε το κουμπί **Set**. Ο αριθμός που εισάγετε θα είναι η τιμή που επιστρέφει ο αισθητήρας.
|
|
|
|
|
|
* Επιλέξτε το πλαίσιο *Random* και εισάγετε μια *Min* και *Max* τιμή, στη συνέχεια επιλέξτε το κουμπί **Set**. Κάθε φορά που ο αισθητήρας διαβάζει μια τιμή, θα διαβάζει έναν τυχαίο αριθμό μεταξύ *Min* και *Max*.
|
|
|
|
|
|
Θα πρέπει να βλέπετε τις τιμές που ορίσατε να εμφανίζονται στην κονσόλα. Αλλάξτε την *Value* ή τις ρυθμίσεις *Random* για να δείτε την αλλαγή της τιμής.
|
|
|
|
|
|
```output
|
|
|
(.venv) ➜ temperature-sensor python app.py
|
|
|
Temperature 28.25°C
|
|
|
Temperature 30.71°C
|
|
|
Temperature 25.17°C
|
|
|
```
|
|
|
|
|
|
> 💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device).
|
|
|
|
|
|
😀 Το πρόγραμμα του αισθητήρα θερμοκρασίας σας ήταν επιτυχές!
|
|
|
|
|
|
---
|
|
|
|
|
|
**Αποποίηση ευθύνης**:
|
|
|
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική μετάφραση από ανθρώπους. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης. |