Πώς να εργαστείτε με το JSON στο Node-RED: 13 βήματα
Πώς να εργαστείτε με το JSON στο Node-RED: 13 βήματα
Anonim
Πώς να εργαστείτε με το JSON στο Node-RED
Πώς να εργαστείτε με το JSON στο Node-RED

Αυτό το διδακτικό θα σας διδάξει πώς να εργάζεστε με το JSON στο node-RED. Θα σας δείξω πώς να ελέγχετε τις δικτυακές πρίζες με τη μεταφορά αρχείων json μέσω http get and post. Και μπορείτε να χρησιμοποιήσετε αυτήν τη γνώση αργότερα για να ελέγξετε οποιαδήποτε συσκευή υποστηρίζει πρωτόκολλο JSON.

Για διδακτικούς σκοπούς θα χρησιμοποιήσω την πρίζα δικτύου NETIO 4All, αλλά μην ανησυχείτε, δεν χρειάζεται να αγοράσετε τίποτα. Το NETIO διαθέτει καταπληκτικά 4All online demo που μπορείτε να χρησιμοποιήσετε.

Προμήθειες

NETIO 4Όλο το δίκτυο powerocket ή 4Όλες οι διαδικτυακές επιδείξεις:

Κόμβος-ΚΟΚΚΙΝΟ

Βήμα 1: REST JSON Http (ες) Πρωτόκολλο

REST JSON Πρωτόκολλο HTTP
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 (Το έργο που βλέπετε. Αργότερα θα σας δείξω πώς να εισαγάγετε ροές και αυτό το έργο) Αυτό το έργο αποτελείται από δύο μέρη:

  1. Ροή NETIO AN30 (JSON REST API)
  2. Πίνακας ελέγχου (Γραφική διεπαφή με την οποία μπορείτε να χειριστείτε το πρόγραμμά σας)

Βήμα 3: Πίνακας ελέγχου

Ταμπλό
Ταμπλό

Κάπως έτσι φαίνεται ο πίνακας ελέγχου στον κόμβο-RED για αυτό το διδακτικό. Μπορείτε να το προσαρμόσετε αν θέλετε να ταιριάζει στο γούστο σας.

Ο πίνακας ελέγχου για αυτό το έργο χωρίζεται σε 4 μέρη:

  1. Κατάσταση συσκευής - εμφανίζει πληροφορίες συσκευής όπως μοντέλο, διεύθυνση mac ή έκδοση υλικολογισμικού.
  2. (POST) Έξοδος ελέγχου 1 - Περιέχει 5 κουμπιά που ελέγχουν την έξοδο 1. Κάθε κουμπί εκτελεί διαφορετική ενέργεια
  3. (GET) O1 - O4 Κατάσταση εξόδου - Αυτό το τμήμα δείχνει την τρέχουσα κατάσταση κάθε εξόδου από τη συσκευή σας.
  4. Διαχείριση συσκευής - Σε αυτό το μέρος μπορείτε να βρείτε όλα τα είδη γραφημάτων και μετρητών που εμφανίζουν τις τρέχουσες μετρημένες τιμές από τη συσκευή 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 και GET
HTTP POST και GET
HTTP POST και GET
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.

Ο κώδικας χωρίζεται σε τέσσερις ενότητες:

  1. Εκχώρηση τιμών από το αντικείμενο JSON στις μεμονωμένες ιδιότητες του αντικειμένου msg
  2. Σφάλμα χειρισμού σε περίπτωση που η πρίζα δικτύου δεν υποστηρίζει καθολικές μετρήσεις

    Εάν η πρίζα δικτύου δεν υποστηρίζει τη μέτρηση των καθολικών τιμών, το Node-RED θα εμφανίζει σφάλματα επειδή αυτή η λειτουργία δεν θα βρει την αντίστοιχη ιδιότητα, π.χ. msg.payload. GlobalMeasure. Voltage, αφού δεν θα υπάρχει στο αντικείμενο JSON. Σε αυτήν την περίπτωση, η ιδιότητα του αντικειμένου msg, π.χ. msg. Voltage, έχει οριστεί σε 0 και το σφάλμα έχει καταγραφεί.

  3. Εκχώρηση τιμών κατάστασης εξόδου
  4. Ρύθμιση των χρωμάτων των εμφανιζόμενων τιμών κατάστασης εξόδου σύμφωνα με τις καταστάσεις εξόδου

Βήμα 9: JSON Node και Inject Node

JSON Node και Inject Node
JSON Node και Inject Node
JSON Node και Inject Node
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

Έρχεται πολύ σύντομα:)

Συνιστάται: