# Εικονικός υπολογιστής μονού πίνακα Αντί να αγοράσετε μια συσκευή IoT μαζί με αισθητήρες και ενεργοποιητές, μπορείτε να χρησιμοποιήσετε τον υπολογιστή σας για να προσομοιώσετε το υλικό IoT. Το [έργο CounterFit](https://github.com/CounterFit-IoT/CounterFit) σας επιτρέπει να εκτελείτε μια εφαρμογή τοπικά που προσομοιώνει υλικό IoT, όπως αισθητήρες και ενεργοποιητές, και να έχετε πρόσβαση σε αυτούς μέσω τοπικού κώδικα Python, γραμμένου με τον ίδιο τρόπο όπως θα γράφατε σε ένα Raspberry Pi χρησιμοποιώντας φυσικό υλικό. ## Ρύθμιση Για να χρησιμοποιήσετε το CounterFit, θα χρειαστεί να εγκαταστήσετε δωρεάν λογισμικό στον υπολογιστή σας. ### Εργασία Εγκαταστήστε το απαραίτητο λογισμικό. 1. Εγκαταστήστε την Python. Ανατρέξτε στη [σελίδα λήψεων της Python](https://www.python.org/downloads/) για οδηγίες σχετικά με την εγκατάσταση της τελευταίας έκδοσης της Python. 1. Εγκαταστήστε το Visual Studio Code (VS Code). Αυτός είναι ο επεξεργαστής που θα χρησιμοποιήσετε για να γράψετε τον κώδικα της εικονικής σας συσκευής σε Python. Ανατρέξτε στην [τεκμηρίωση του VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) για οδηγίες σχετικά με την εγκατάσταση του VS Code. > 💁 Είστε ελεύθεροι να χρησιμοποιήσετε οποιοδήποτε IDE ή επεξεργαστή για Python αν έχετε κάποιο προτιμώμενο εργαλείο, αλλά τα μαθήματα θα παρέχουν οδηγίες βασισμένες στη χρήση του VS Code. 1. Εγκαταστήστε την επέκταση Pylance για το VS Code. Αυτή είναι μια επέκταση για το VS Code που παρέχει υποστήριξη για τη γλώσσα Python. Ανατρέξτε στην [τεκμηρίωση της επέκτασης Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) για οδηγίες σχετικά με την εγκατάσταση αυτής της επέκτασης στο VS Code. Οι οδηγίες για την εγκατάσταση και τη ρύθμιση της εφαρμογής CounterFit θα δοθούν τη στιγμή που απαιτείται στις οδηγίες της εργασίας, καθώς εγκαθίσταται ανά έργο. ## Hello world Είναι παραδοσιακό όταν ξεκινάτε με μια νέα γλώσσα προγραμματισμού ή τεχνολογία να δημιουργείτε μια εφαρμογή 'Hello World' - μια μικρή εφαρμογή που εμφανίζει κάτι όπως το κείμενο `"Hello World"` για να δείξει ότι όλα τα εργαλεία έχουν ρυθμιστεί σωστά. Η εφαρμογή Hello World για το εικονικό υλικό IoT θα διασφαλίσει ότι έχετε εγκαταστήσει σωστά την Python και το Visual Studio Code. Θα συνδεθεί επίσης στο CounterFit για τους εικονικούς αισθητήρες και ενεργοποιητές IoT. Δεν θα χρησιμοποιήσει κανένα υλικό, απλώς θα συνδεθεί για να αποδείξει ότι όλα λειτουργούν. Αυτή η εφαρμογή θα βρίσκεται σε έναν φάκελο που ονομάζεται `nightlight` και θα επαναχρησιμοποιηθεί με διαφορετικό κώδικα σε μεταγενέστερα μέρη αυτής της εργασίας για να δημιουργηθεί η εφαρμογή nightlight. ### Ρύθμιση ενός εικονικού περιβάλλοντος Python Ένα από τα ισχυρά χαρακτηριστικά της Python είναι η δυνατότητα εγκατάστασης [πακέτων Pip](https://pypi.org) - αυτά είναι πακέτα κώδικα γραμμένα από άλλους και δημοσιευμένα στο Διαδίκτυο. Μπορείτε να εγκαταστήσετε ένα πακέτο Pip στον υπολογιστή σας με μία εντολή και στη συνέχεια να χρησιμοποιήσετε αυτό το πακέτο στον κώδικά σας. Θα χρησιμοποιήσετε το Pip για να εγκαταστήσετε ένα πακέτο για να επικοινωνήσετε με το CounterFit. Από προεπιλογή, όταν εγκαθιστάτε ένα πακέτο, είναι διαθέσιμο παντού στον υπολογιστή σας, και αυτό μπορεί να οδηγήσει σε προβλήματα με τις εκδόσεις των πακέτων - όπως μια εφαρμογή που εξαρτάται από μια έκδοση ενός πακέτου που δεν λειτουργεί όταν εγκαθιστάτε μια νέα έκδοση για μια διαφορετική εφαρμογή. Για να παρακάμψετε αυτό το πρόβλημα, μπορείτε να χρησιμοποιήσετε ένα [εικονικό περιβάλλον Python](https://docs.python.org/3/library/venv.html), ουσιαστικά ένα αντίγραφο της Python σε έναν αφιερωμένο φάκελο, και όταν εγκαθιστάτε πακέτα Pip, αυτά εγκαθίστανται μόνο σε αυτόν τον φάκελο. > 💁 Αν χρησιμοποιείτε Raspberry Pi, τότε δεν ρυθμίσατε ένα εικονικό περιβάλλον σε αυτή τη συσκευή για να διαχειριστείτε τα πακέτα Pip, αντίθετα χρησιμοποιείτε παγκόσμια πακέτα, καθώς τα πακέτα Grove εγκαθίστανται παγκοσμίως από το σενάριο εγκατάστασης. #### Εργασία - ρύθμιση ενός εικονικού περιβάλλοντος Python Ρυθμίστε ένα εικονικό περιβάλλον Python και εγκαταστήστε τα πακέτα Pip για το CounterFit. 1. Από το τερματικό ή τη γραμμή εντολών σας, εκτελέστε τα παρακάτω σε μια τοποθεσία της επιλογής σας για να δημιουργήσετε και να μεταβείτε σε έναν νέο κατάλογο: ```sh mkdir nightlight cd nightlight ``` 1. Τώρα εκτελέστε τα παρακάτω για να δημιουργήσετε ένα εικονικό περιβάλλον στον φάκελο `.venv`: ```sh python3 -m venv .venv ``` > 💁 Πρέπει να καλέσετε ρητά το `python3` για να δημιουργήσετε το εικονικό περιβάλλον, σε περίπτωση που έχετε εγκατεστημένη την Python 2 εκτός από την Python 3 (την τελευταία έκδοση). Αν έχετε εγκατεστημένη την Python 2, τότε η κλήση του `python` θα χρησιμοποιήσει την Python 2 αντί για την Python 3. 1. Ενεργοποιήστε το εικονικό περιβάλλον: * Στα Windows: * Αν χρησιμοποιείτε το Command Prompt ή το Command Prompt μέσω του Windows Terminal, εκτελέστε: ```cmd .venv\Scripts\activate.bat ``` * Αν χρησιμοποιείτε το PowerShell, εκτελέστε: ```powershell .\.venv\Scripts\Activate.ps1 ``` > Αν λάβετε ένα σφάλμα σχετικά με την απενεργοποίηση εκτέλεσης σεναρίων σε αυτό το σύστημα, θα χρειαστεί να ενεργοποιήσετε την εκτέλεση σεναρίων ορίζοντας μια κατάλληλη πολιτική εκτέλεσης. Μπορείτε να το κάνετε αυτό εκκινώντας το PowerShell ως διαχειριστής και εκτελώντας την παρακάτω εντολή: ```powershell Set-ExecutionPolicy -ExecutionPolicy Unrestricted ``` Εισάγετε `Y` όταν σας ζητηθεί επιβεβαίωση. Στη συνέχεια, επανεκκινήστε το PowerShell και δοκιμάστε ξανά. Μπορείτε να επαναφέρετε αυτήν την πολιτική εκτέλεσης αργότερα, αν χρειαστεί. Μπορείτε να διαβάσετε περισσότερα σχετικά με αυτό στη [σελίδα Πολιτικών Εκτέλεσης στα Microsoft Docs](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?WT.mc_id=academic-17441-jabenn). * Σε macOS ή Linux, εκτελέστε: ```cmd source ./.venv/bin/activate ``` > 💁 Αυτές οι εντολές πρέπει να εκτελούνται από την ίδια τοποθεσία όπου εκτελέσατε την εντολή για να δημιουργήσετε το εικονικό περιβάλλον. Δεν θα χρειαστεί ποτέ να μεταβείτε στον φάκελο `.venv`, θα πρέπει πάντα να εκτελείτε την εντολή ενεργοποίησης και οποιεσδήποτε εντολές για την εγκατάσταση πακέτων ή την εκτέλεση κώδικα από τον φάκελο που βρισκόσασταν όταν δημιουργήσατε το εικονικό περιβάλλον. 1. Μόλις ενεργοποιηθεί το εικονικό περιβάλλον, η προεπιλεγμένη εντολή `python` θα εκτελεί την έκδοση της Python που χρησιμοποιήθηκε για τη δημιουργία του εικονικού περιβάλλοντος. Εκτελέστε τα παρακάτω για να δείτε την έκδοση: ```sh python --version ``` Η έξοδος θα πρέπει να περιέχει τα εξής: ```output (.venv) ➜ nightlight python --version Python 3.9.1 ``` > 💁 Η έκδοση της Python σας μπορεί να είναι διαφορετική - αρκεί να είναι η έκδοση 3.6 ή νεότερη, είστε εντάξει. Αν όχι, διαγράψτε αυτόν τον φάκελο, εγκαταστήστε μια νεότερη έκδοση της Python και δοκιμάστε ξανά. 1. Εκτελέστε τις παρακάτω εντολές για να εγκαταστήσετε τα πακέτα Pip για το CounterFit. Αυτά τα πακέτα περιλαμβάνουν την κύρια εφαρμογή CounterFit καθώς και shims για το υλικό Grove. Αυτά τα shims σας επιτρέπουν να γράφετε κώδικα σαν να προγραμματίζατε χρησιμοποιώντας φυσικούς αισθητήρες και ενεργοποιητές από το οικοσύστημα Grove, αλλά συνδεδεμένους σε εικονικές συσκευές IoT. ```sh pip install CounterFit pip install counterfit-connection pip install counterfit-shims-grove ``` Αυτά τα πακέτα pip θα εγκατασταθούν μόνο στο εικονικό περιβάλλον και δεν θα είναι διαθέσιμα εκτός αυτού. ### Γράψτε τον κώδικα Μόλις το εικονικό περιβάλλον Python είναι έτοιμο, μπορείτε να γράψετε τον κώδικα για την εφαρμογή 'Hello World'. #### Εργασία - γράψτε τον κώδικα Δημιουργήστε μια εφαρμογή Python για να εκτυπώσετε `"Hello World"` στην κονσόλα. 1. Από το τερματικό ή τη γραμμή εντολών σας, εκτελέστε τα παρακάτω μέσα στο εικονικό περιβάλλον για να δημιουργήσετε ένα αρχείο Python που ονομάζεται `app.py`: * Στα Windows εκτελέστε: ```cmd type nul > app.py ``` * Σε macOS ή Linux, εκτελέστε: ```cmd touch app.py ``` 1. Ανοίξτε τον τρέχοντα φάκελο στο VS Code: ```sh code . ``` > 💁 Αν το τερματικό σας επιστρέψει `command not found` σε macOS, σημαίνει ότι το VS Code δεν έχει προστεθεί στο PATH σας. Μπορείτε να προσθέσετε το VS Code στο PATH σας ακολουθώντας τις οδηγίες στην [ενότητα Εκκίνηση από τη γραμμή εντολών της τεκμηρίωσης του VS Code](https://code.visualstudio.com/docs/setup/mac?WT.mc_id=academic-17441-jabenn#_launching-from-the-command-line) και να εκτελέσετε την εντολή μετά. Το VS Code προστίθεται στο PATH από προεπιλογή στα Windows και Linux. 1. Όταν το VS Code εκκινήσει, θα ενεργοποιήσει το εικονικό περιβάλλον Python. Το επιλεγμένο εικονικό περιβάλλον θα εμφανιστεί στη γραμμή κατάστασης στο κάτω μέρος: ![Το VS Code δείχνει το επιλεγμένο εικονικό περιβάλλον](../../../../../translated_images/vscode-virtual-env.8ba42e04c3d533cf677e16cbe5ed9a3b80f62c6964472dc84b6f940800f0909f.el.png) 1. Αν το τερματικό του VS Code είναι ήδη ανοιχτό όταν ξεκινά το VS Code, δεν θα έχει ενεργοποιηθεί το εικονικό περιβάλλον σε αυτό. Το πιο εύκολο πράγμα που μπορείτε να κάνετε είναι να τερματίσετε το τερματικό χρησιμοποιώντας το κουμπί **Kill the active terminal instance**: ![Κουμπί Kill the active terminal instance στο VS Code](../../../../../translated_images/vscode-kill-terminal.1cc4de7c6f25ee08f423f0ead714e61d069fac1eb2089e97b8a7bbcb3d45fe5e.el.png) Μπορείτε να καταλάβετε αν το τερματικό έχει ενεργοποιημένο το εικονικό περιβάλλον, καθώς το όνομα του εικονικού περιβάλλοντος θα είναι πρόθεμα στην προτροπή του τερματικού. Για παράδειγμα, μπορεί να είναι: ```sh (.venv) ➜ nightlight ``` Αν δεν έχετε `.venv` ως πρόθεμα στην προτροπή, το εικονικό περιβάλλον δεν είναι ενεργό στο τερματικό. 1. Εκκινήστε ένα νέο τερματικό στο VS Code επιλέγοντας *Terminal -> New Terminal*, ή πατώντας `` CTRL+` ``. Το νέο τερματικό θα φορτώσει το εικονικό περιβάλλον και η κλήση για την ενεργοποίησή του θα εμφανιστεί στο τερματικό. Η προτροπή θα έχει επίσης το όνομα του εικονικού περιβάλλοντος (`.venv`): ```output ➜ nightlight source .venv/bin/activate (.venv) ➜ nightlight ``` 1. Ανοίξτε το αρχείο `app.py` από τον εξερευνητή του VS Code και προσθέστε τον παρακάτω κώδικα: ```python print('Hello World!') ``` Η συνάρτηση `print` εκτυπώνει ό,τι της δίνεται στην κονσόλα. 1. Από το τερματικό του VS Code, εκτελέστε τα παρακάτω για να εκτελέσετε την εφαρμογή Python: ```sh python app.py ``` Η έξοδος θα περιέχει τα εξής: ```output (.venv) ➜ nightlight python app.py Hello World! ``` 😀 Το πρόγραμμα 'Hello World' σας ήταν επιτυχές! ### Συνδέστε το 'υλικό' Ως δεύτερο βήμα 'Hello World', θα εκτελέσετε την εφαρμογή CounterFit και θα συνδέσετε τον κώδικά σας με αυτήν. Αυτό είναι το εικονικό ισοδύναμο της σύνδεσης κάποιου υλικού IoT σε ένα dev kit. #### Εργασία - συνδέστε το 'υλικό' 1. Από το τερματικό του VS Code, εκκινήστε την εφαρμογή CounterFit με την παρακάτω εντολή: ```sh counterfit ``` Η εφαρμογή θα ξεκινήσει να εκτελείται και θα ανοίξει στον περιηγητή σας: ![Η εφαρμογή Counter Fit εκτελείται σε περιηγητή](../../../../../translated_images/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.el.png) Θα εμφανίζεται ως *Disconnected*, με το LED στην επάνω δεξιά γωνία να είναι σβηστό. 1. Προσθέστε τον παρακάτω κώδικα στην αρχή του `app.py`: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` Αυτός ο κώδικας εισάγει την κλάση `CounterFitConnection` από τη μονάδα `counterfit_connection`, η οποία προέρχεται από το πακέτο pip `counterfit-connection` που εγκαταστήσατε νωρίτερα. Στη συνέχεια, αρχικοποιεί μια σύνδεση με την εφαρμογή CounterFit που εκτελείται στη διεύθυνση `127.0.0.1`, η οποία είναι μια διεύθυνση IP που μπορείτε πάντα να χρησιμοποιείτε για πρόσβαση στον τοπικό σας υπολογιστή (συχνά αναφέρεται ως *localhost*), στη θύρα 5000. > 💁 Αν έχετε άλλες εφαρμογές που εκτελούνται στη θύρα 5000, μπορείτε να αλλάξετε αυτό ενημερώνοντας τη θύρα στον κώδικα και εκτελώντας το CounterFit χρησιμοποιώντας `CounterFit --port `, αντικαθιστώντας το `` με τη θύρα που θέλετε να χρησιμοποιήσετε. 1. Θα χρειαστεί να εκκινήσετε ένα νέο τερματικό στο VS Code επιλέγοντας το κουμπί **Create a new integrated terminal**. Αυτό συμβαίνει επειδή η εφαρμογή CounterFit εκτελείται στο τρέχον τερματικό. ![Κουμπί Create a new integrated terminal στο VS Code](../../../../../translated_images/vscode-new-terminal.77db8fc0f9cd31824b0e49a201beafe4ae4616d6c7339992cb2819e789b3eff9.el.png) 1. Στο νέο αυτό τερματικό, εκτελέστε το αρχείο `app.py` όπως πριν. Η κατάσταση του CounterFit θα αλλάξει σε **Connected** και το LED θα ανάψει. ![Το Counter Fit δείχνει ότι είναι συνδεδεμένο](../../../../../translated_images/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.el.png) > 💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device). 😀 Η σύνδεσή σας με το υλικό ήταν επιτυχής! --- **Αποποίηση ευθύνης**: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.