Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: REST JSON Http (ες) Πρωτόκολλο
- Βήμα 2: Ροή
- Βήμα 3: Πίνακας ελέγχου
- Βήμα 4: Εισαγωγή ροής (έργο, σενάριο, κ.λπ.)
- Βήμα 5: Πώς λειτουργούν όλα μαζί
- Βήμα 6: HTTP POST και GET
- Βήμα 7: Κόμβοι κόμβων
- Βήμα 8: Κόμβος συνάρτησης
- Βήμα 9: JSON Node και Inject Node
- Βήμα 10: Κόμβος κειμένου και κόμβος εντοπισμού σφαλμάτων
- Βήμα 11: Κόμβος γραφήματος
- Βήμα 12: Κόμβος μετρητή και κόμβοι σύνδεσης
- Βήμα 13: Σας ευχαριστούμε που διαβάσατε το My Instructable
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39
Αυτό το διδακτικό θα σας διδάξει πώς να εργάζεστε με το JSON στο node-RED. Θα σας δείξω πώς να ελέγχετε τις δικτυακές πρίζες με τη μεταφορά αρχείων json μέσω http get and post. Και μπορείτε να χρησιμοποιήσετε αυτήν τη γνώση αργότερα για να ελέγξετε οποιαδήποτε συσκευή υποστηρίζει πρωτόκολλο JSON.
Για διδακτικούς σκοπούς θα χρησιμοποιήσω την πρίζα δικτύου NETIO 4All, αλλά μην ανησυχείτε, δεν χρειάζεται να αγοράσετε τίποτα. Το NETIO διαθέτει καταπληκτικά 4All online demo που μπορείτε να χρησιμοποιήσετε.
Προμήθειες
NETIO 4Όλο το δίκτυο powerocket ή 4Όλες οι διαδικτυακές επιδείξεις:
Κόμβος-ΚΟΚΚΙΝΟ
Βήμα 1: REST JSON Http (ες) Πρωτόκολλο
Αυτό το κομμάτι είναι λίγο τεχνικό, αλλά παρακαλώ να με έχετε. Εάν δεν εξήγησα αυτό το μέρος, τότε θα είχατε προβλήματα στην κατανόηση των τιμών στα αρχεία json που θα στείλουμε στον κόμβο-RED.
Ενέργειες που ισχύουν για κάθε έξοδο (ηλεκτρική πρίζα):
Σε όλα τα πρωτόκολλα M2M, οι πρίζες NETIO χρησιμοποιούν τις ίδιες ενέργειες που μπορούν να εφαρμοστούν σε μεμονωμένες εξόδους. Για παράδειγμα, μια ενέργεια εναλλαγής ή σύντομης απενεργοποίησης μπορεί να γραφτεί σε οποιαδήποτε έξοδο.
Ωστόσο, η μεταβλητή Action μπορεί να χρησιμοποιηθεί μόνο για εγγραφή τιμών, δεν μπορεί να χρησιμοποιηθεί για ανάγνωση της τρέχουσας κατάστασης εξόδου.
Αυτές είναι οι ενέργειες που μπορείτε να εφαρμόσετε σε κάθε έξοδο:
0 = Η έξοδος απενεργοποιημένη (Απενεργοποιημένη)
1 = Έξοδος ενεργοποιημένη (Ενεργό)
2 = Η έξοδος απενεργοποιημένη για μικρό χρονικό διάστημα (σύντομη απενεργοποίηση)
3 = Έξοδος ενεργοποιημένη για μικρό χρονικό διάστημα (σύντομη ενεργοποίηση)
4 = Η έξοδος άλλαξε από τη μία κατάσταση στην άλλη (εναλλαγή)
5 = Κατάσταση εξόδου αμετάβλητη (καμία αλλαγή)
6 = Αγνοήθηκε
Παράδειγμα - αρχείο JSON για εναλλαγή του αριθμού εξόδου. 1:
{
"Έξοδος": [{
"ID": 1, "Δράση": 4
}]
}
ID - αυτός ο αριθμός υποδεικνύει ποια έξοδο θα χρησιμοποιήσουμε
Δράση - αυτό το μέρος, είναι η ενέργεια που θα κάνει η έξοδος (π.χ. 1 (Ενεργοποίηση εξόδου))
Βήμα 2: Ροή
Και τώρα το κύριο μέρος. Κάπως έτσι μοιάζει το node-RED περιβάλλον.
Έχουμε εισαγάγει ροή API URL (Το έργο που βλέπετε. Αργότερα θα σας δείξω πώς να εισαγάγετε ροές και αυτό το έργο) Αυτό το έργο αποτελείται από δύο μέρη:
- Ροή NETIO AN30 (JSON REST API)
- Πίνακας ελέγχου (Γραφική διεπαφή με την οποία μπορείτε να χειριστείτε το πρόγραμμά σας)
Βήμα 3: Πίνακας ελέγχου
Κάπως έτσι φαίνεται ο πίνακας ελέγχου στον κόμβο-RED για αυτό το διδακτικό. Μπορείτε να το προσαρμόσετε αν θέλετε να ταιριάζει στο γούστο σας.
Ο πίνακας ελέγχου για αυτό το έργο χωρίζεται σε 4 μέρη:
- Κατάσταση συσκευής - εμφανίζει πληροφορίες συσκευής όπως μοντέλο, διεύθυνση mac ή έκδοση υλικολογισμικού.
- (POST) Έξοδος ελέγχου 1 - Περιέχει 5 κουμπιά που ελέγχουν την έξοδο 1. Κάθε κουμπί εκτελεί διαφορετική ενέργεια
- (GET) O1 - O4 Κατάσταση εξόδου - Αυτό το τμήμα δείχνει την τρέχουσα κατάσταση κάθε εξόδου από τη συσκευή σας.
- Διαχείριση συσκευής - Σε αυτό το μέρος μπορείτε να βρείτε όλα τα είδη γραφημάτων και μετρητών που εμφανίζουν τις τρέχουσες μετρημένες τιμές από τη συσκευή NETIO 4Aall
Βήμα 4: Εισαγωγή ροής (έργο, σενάριο, κ.λπ.)
Στο μενού (δεξιά επάνω γωνία) επιλέξτε Εισαγωγή και, στη συνέχεια, Πρόχειρο.
Στη συνέχεια, αντιγράψτε το παρακάτω κείμενο στο υποδεικνυόμενο πεδίο και κάντε κλικ στην επιλογή Εισαγωγή.
Εγκατάσταση κόμβων που λείπουν
Οι κόμβοι φορτώνονται στην επιλεγμένη ροή. Είναι πιθανό να εμφανιστεί ένα μήνυμα σφάλματος με μια λίστα κόμβων που εισάγονται αλλά δεν είναι ακόμη εγκατεστημένοι στο Node-RED. Σε αυτήν την περίπτωση, οι κόμβοι που λείπουν πρέπει να εγκατασταθούν.
Εάν λείπουν κόμβοι, επιλέξτε Διαχείριση παλέτας στο μενού, κάντε κλικ στην επιλογή Εγκατάσταση και βρείτε και εγκαταστήστε τους κόμβους που σας λείπουν.
Εισαγωγή κειμένου:
[{"id": "56b9510c.98c6f", "type": "tab", "label": "NETIO AN30 (REST JSON)", "disabled": false, "info": ""}, {"id ":" 6a66b637.da1558 "," type ":" http request "," z ":" 56b9510c.98c6f "," name ":" HTTP Request (POST) "," method ":" POST "," ret ": "txt", "url": "https://netio-4All.netio-products.com:8080/netio.json", "tls": "", "x": 430, "y": 100, "καλώδια":
Βήμα 5: Πώς λειτουργούν όλα μαζί
Η ροή χωρίζεται βασικά σε δύο μέρη: POST και GET.
ΑΝΑΡΤΗΣΗ: Γράφοντας στο O1
- Πέντε κουμπιά που δημιουργήθηκαν στον Πίνακα ελέγχου στη ροή εμφανίζονται στον Πίνακα ελέγχου.
- Αφού κάνετε κλικ στο κουμπί Έξοδος 1 = ON στον Πίνακα ελέγχου, το ωφέλιμο φορτίο ορίζεται στο αρχείο netio.json που καθορίζει την έξοδο και τη δράση (ορίζεται για καθένα από τα κουμπιά).
- Το μπλοκ Αιτήματος HTTP (POST) στέλνει το αρχείο netio.json ως αίτημα σε μια διεύθυνση IP.
- Η απάντηση του διακομιστή (κατάσταση) επιστρέφεται ως έξοδος.
- Το μπλοκ Msg.payload εμφανίζει το αποτέλεσμα από αίτημα HTTP (POST).
GET: Ανάγνωση από O1 - O4
- Το μπλοκ 1 δευτερολέπτου επανάληψης ενεργοποιεί, με διάστημα ενός δευτερολέπτου, το μπλοκ HTTP Request (GET), το οποίο με τη σειρά του στέλνει το netio.json ως αίτημα GET και επιστρέφει ένα πλήρες αρχείο JSON με την κατάσταση υποδοχής όπως λαμβάνεται από τον διακομιστή.
- Το μπλοκ JSON Parse μετατρέπει το αρχείο JSON από το μπλοκ HTTP Request (GET) σε αντικείμενο JSON, έτσι ώστε να είναι δυνατή η επεξεργασία των ιδιοτήτων στο αρχείο JSON.
- Το μπλοκ συνάρτησης λαμβάνει μεμονωμένα τμήματα του αντικειμένου JSON και τα μετατρέπει σε ιδιότητες ενός αντικειμένου msg για μεταγενέστερη χρήση.
- Το μπλοκ τρέχον γραφήματος ορίζει msg.payload στην ιδιότητα msg. TotalCurrent του αντικειμένου msg, επειδή το επόμενο μπλοκ Τρέχον γράφημα (συσκευή) μπορεί να εμφανίσει μόνο την τιμή msg.payload.
- Στη συνέχεια ακολουθούν διάφοροι κόμβοι εξόδου για να εμφανιστούν οι επιλεγμένες ιδιότητες του αντικειμένου msg, όπως έχουν ληφθεί από το αντικείμενο JSON, στον Πίνακα ελέγχου.
Το αντικείμενο msg και το msg.payload
Για μια απλή και συνοπτική εξήγηση, δείτε εδώ:
www.steves-internet-guide.com/node-red-mess…
Βήμα 6: HTTP POST και GET
Αίτημα HTTP (POST)
Αυτός ο κόμβος στέλνει ένα αρχείο εντολής netio.json ως αίτημα HTTP (POST) προκειμένου να ελέγξει τη συσκευή NETIO 4All.
Αίτημα HTTP (GET)
Αυτός ο κόμβος στέλνει ένα αίτημα HTTP (GET) και επιστρέφει την απάντηση κατάστασης.
Η προγεμισμένη διεύθυνση δείχνει προς το διαδικτυακό demo NETIO 4All, όπου μπορείτε να δοκιμάσετε τη σύνδεση χωρίς να έχετε μια συσκευή NETIO στο γραφείο σας.
netio-4all.netio-products.com
Μπορείτε να ορίσετε τη δική σας διεύθυνση IP σε αυτούς τους κόμβους. Ωστόσο, η IP πρέπει να αλλάξει τόσο στους κόμβους αιτήματος HTTP, POST όσο και στο GET.
Βήμα 7: Κόμβοι κόμβων
Κάνοντας κλικ στον κόμβο κουμπιού δημιουργείται ένα μήνυμα που περιέχει ένα αρχείο netio.json (Δεξιά εικόνα) το οποίο στη συνέχεια αποστέλλεται μέσω του κόμβου http post στην έξυπνη πρίζα netio.
Βήμα 8: Κόμβος συνάρτησης
Ένας κόμβος συνάρτησης είναι ένας ειδικός κόμβος που επιτρέπει τη σύνταξη μιας προσαρμοσμένης συνάρτησης JavaScript.
Σε αυτό το εκπαιδευτικό, η συνάρτηση επιλέγει τιμές από το αναλυμένο αρχείο JSON (τώρα αντικείμενο JSON) και τις εκχωρεί στις ιδιότητες του αντικειμένου msg.
Ο κώδικας χωρίζεται σε τέσσερις ενότητες:
- Εκχώρηση τιμών από το αντικείμενο JSON στις μεμονωμένες ιδιότητες του αντικειμένου msg
-
Σφάλμα χειρισμού σε περίπτωση που η πρίζα δικτύου δεν υποστηρίζει καθολικές μετρήσεις
Εάν η πρίζα δικτύου δεν υποστηρίζει τη μέτρηση των καθολικών τιμών, το Node-RED θα εμφανίζει σφάλματα επειδή αυτή η λειτουργία δεν θα βρει την αντίστοιχη ιδιότητα, π.χ. msg.payload. GlobalMeasure. Voltage, αφού δεν θα υπάρχει στο αντικείμενο JSON. Σε αυτήν την περίπτωση, η ιδιότητα του αντικειμένου msg, π.χ. msg. Voltage, έχει οριστεί σε 0 και το σφάλμα έχει καταγραφεί.
- Εκχώρηση τιμών κατάστασης εξόδου
- Ρύθμιση των χρωμάτων των εμφανιζόμενων τιμών κατάστασης εξόδου σύμφωνα με τις καταστάσεις εξόδου
Βήμα 9: JSON Node και Inject Node
Κόμβος JSON
Ο κόμβος JSON αναλύει το αρχείο JSON και το μετατρέπει σε αντικείμενο JSON.
Ως απάντηση από τον διακομιστή στο αίτημα GET, ο κόμβος αίτησης HTTP επιστρέφει ένα αρχείο JSON που περιέχει την τρέχουσα κατάσταση της συσκευής NETIO 4x, αλλά είναι απλώς ένα αρχείο κειμένου, οπότε για να λειτουργήσει με τα δεδομένα, το αρχείο JSON χρειάζεται να αναλυθεί σε ένα αντικείμενο JSON.
Έγχυση κόμβου
Κάθε δευτερόλεπτο, αυτός ο κόμβος ενεργοποιεί τον κόμβο αίτησης HTTP που στέλνει ένα αίτημα GET.
Ως αποτέλεσμα, οι τιμές στον Πίνακα ελέγχου ενημερώνονται με περίοδο ενός δευτερολέπτου
Βήμα 10: Κόμβος κειμένου και κόμβος εντοπισμού σφαλμάτων
Κόμβος κειμένου
Εμφανίζει ένα πεδίο κειμένου στον Πίνακα ελέγχου. Σε αυτό το διδακτικό, οι κόμβοι κειμένου εμφανίζουν το ρεύμα, την τάση, το μοντέλο, την έκδοση υλικολογισμικού ή την έκδοση JSON.
Η Ετικέτα εμφανίζεται στον Πίνακα ελέγχου και το Όνομα είναι το όνομα κόμβου που εμφανίζεται στη ροή στο Node-RED.
Κόμβος εντοπισμού σφαλμάτων
Εμφανίζει τη φόρτωση msg.payload.
Βήμα 11: Κόμβος γραφήματος
Αυτός ο κόμβος σχεδιάζει το τρέχον γράφημα στον Πίνακα ελέγχου σύμφωνα με την τιμή του ωφέλιμου φορτίου.
Αυτός ο κόμβος μπορεί να σχεδιάσει γραφήματα μόνο σύμφωνα με την τιμή του ωφέλιμου φορτίου.
Για το λόγο αυτό, χρησιμοποιείται ένας κόμβος συνάρτησης για να ορίσετε το msg.payload στην τιμή που πρέπει να εμφανιστεί.
msg.payload = msg. TotalCurrent;
Βήμα 12: Κόμβος μετρητή και κόμβοι σύνδεσης
Κόμβος μετρητή
Αυτός ο κόμβος προσθέτει ένα widget μετρητή στον Πίνακα ελέγχου.
Σε αυτό το διδακτικό, κάθε μετρητής απεικονίζει μια ιδιότητα του αντικειμένου msg: τάση [V], curent [A], συχνότητα [Hz] και ο συνολικός συντελεστής πραγματικής ισχύος (TPF).
Σύνδεσμοι κόμβοι
Σύνδεση και σύνδεση κόμβων λειτουργούν σαν σήραγγα. Το msg.payload φτάνει στον σύνδεσμο στον κόμβο και εξέρχεται από τον κόμβο του συνδέσμου έξω.
Το χρησιμοποίησα για να κάνω τη ροή λίγο πιο καθαρή και ευανάγνωστη.
Βήμα 13: Σας ευχαριστούμε που διαβάσατε το My Instructable
Ελπίζω να απολαύσατε το διδακτικό μου και να μάθατε κάτι νέο.
Αυτή η εκπαιδευτική είναι μόνο συντομευμένη έκδοση διαφορετικού οδηγού που έφτιαξα
Ο αρχικός οδηγός είναι μακρύτερος και πολύ πιο λεπτομερής και γενικά καλύτερα δομημένος. Αν δεν καταλάβατε κάτι ή πιστεύετε ότι μου έλειψε ή δεν εξήγησα αρκετά, τότε σίγουρα θα το βρείτε εκεί.
Σας υπόσχομαι ότι δεν θα απογοητευτείτε
Πρωτότυπο:
Επίσης υπάρχουν παρόμοιοι οδηγοί για διάφορες χρήσεις του κόμβου-RED, οπότε αν σας ενδιαφέρει μη διστάσετε να εξερευνήσετε:
Εργασία με το REST URL API στο node-RED
www.netio-products.com/en/application-notes/an29-node-red-example-of-url-api-communication-with-netio-4x
Εργασία με REST XML σε κόμβο-RED
www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communication-with-netio-4x
Εργασία με TCP/Modbus στο node-RED
Έρχεται πολύ σύντομα:)
Συνιστάται:
Πώς να αναπτύξετε μια εφαρμογή Node.js στο Heroku: 3 βήματα
Πώς να αναπτύξετε μια εφαρμογή Node.js στο Heroku: Δείτε πώς ανέπτυξα την εφαρμογή NodeJS στο Heroku χρησιμοποιώντας έναν δωρεάν λογαριασμό. Απλώς κάντε κλικ στους συνδέσμους για να κατεβάσετε τα απαραίτητα λογισμικά: Λογισμικό που χρησιμοποιείται: VSCode (ή οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου της επιλογής σας) HerokuCLIGit
Πώς να συνδέσετε το Raspberry Pi στο Cloud χρησιμοποιώντας το Node.js: 7 βήματα
Πώς να συνδέσετε το Raspberry Pi στο Cloud χρησιμοποιώντας το Node.js: Αυτό το σεμινάριο είναι χρήσιμο για όποιον θέλει να συνδέσει ένα Raspberry Pi στο cloud, ειδικά στην πλατφόρμα AskSensors IoT, χρησιμοποιώντας το Node.js. Δεν έχετε Raspberry Pi; Εάν δεν διαθέτετε αυτήν τη στιγμή ένα Raspberry Pi, θα σας συστήσω να πάρετε ένα Raspberry
Πώς να μετακινηθείτε στο TEXT στο I2C 0.91 "128X32 OLED DISPLAY: 6 βήματα
Πώς να μετακινηθείτε στο TEXT σε I2C 0.91 "128X32 OLED DISPLAY: Σε αυτό το σεμινάριο θα μάθουμε πώς να μετακινείτε το TEXT στο I2C 0.91" 128X32 OLED DISPLAY χρησιμοποιώντας λογισμικό Arduino και Visuino. Δείτε το βίντεο
Πώς να ανεβάσετε παιχνίδια στο Arduboy και 500 παιχνίδια στο Flash-cart: 8 βήματα
Πώς να ανεβάσετε παιχνίδια στο Arduboy και 500 παιχνίδια στο Flash-cart: Έφτιαξα ένα σπιτικό Arduboy με σειριακή μνήμη Flash που μπορεί να αποθηκεύσει έως και 500 παιχνίδια για να παίζετε στο δρόμο. Ελπίζω να μοιραστώ πώς να φορτώσετε παιχνίδια σε αυτό, συμπεριλαμβανομένου του τρόπου αποθήκευσης παιχνιδιών στη σειριακή μνήμη flash και να δημιουργήσετε το δικό σας ενοποιημένο πακέτο παιχνιδιών
Πώς να εργαστείτε με Arduino και διαφορετικά RGB Leds: 3 βήματα
Πώς να εργαστείτε με Arduino και διαφορετικά RGB Leds: Το Arduino είναι μια εκπληκτική μικρή συσκευή. Αλλά μια από τις πιο χρησιμοποιούμενες εφαρμογές για αυτήν την ισχυρή μικρή συσκευή είναι συχνά να αναβοσβήνει ή να αναβοσβήνει ένα LED. Αυτό το σεμινάριο θα σας δείξει τρεις τρόπους εργασίας με RGB Leds και Arduino. Ο πρώτος τρόπος είναι να χρησιμοποιήσετε ένα απλό