Σημείωση από τον Εκδότη:
Αυτό το άρθρο είναι το Μέρος 5 μιας σειράς.
Ακολουθεί ένας σύντομος πίνακας περιεχομένων για όλα τα άρθρα:
- Μέρος 1: Εισαγωγή
- Μέρος 2: Χρονοδιακόπτες
- Μέρος 3: Αυτόματο Σύστημα Αναπλήρωσης (ATK)
- Μέρος 4: Παρακολούθηση Κατανάλωσης Ρεύματος
- Μέρος 5: Εικονικές Έξοδοι
- Μέρος 6: Συναγερμοί
- Μέρος 7: Κύκλοι Σίτισης
- Μέρος 8: Σεληνιακό Πρόγραμμα και Ρυθμίσεις Φωτισμού (Συμπέρασμα)
Όλα τα άρθρα αυτής της σειράς, γραμμένα από τον ίδιο συγγραφέα, ήταν αρχικά μέρος διαφόρων παρουσιάσεων που έγιναν σε ένα τοπικό σύλλογο ενυδρείων σχετικά με τον προγραμματισμό του Neptune Apex Controller. Το άρθρο αναδημοσιεύεται με άδεια του συγγραφέα.
Εικονικές Έξοδοι (Virtual Outputs)
Μέχρι στιγμής, σε αυτή τη σειρά έχουμε επικεντρωθεί κυρίως στον προγραμματισμό εξόδων που ενεργοποιούν ή απενεργοποιούν συσκευές συνδεδεμένες στις Energy Bars. Αυτές οι έξοδοι είναι φυσικές, δηλαδή πρόκειται για ηλεκτρικές πρίζες στις οποίες είναι συνδεδεμένα καλώδια ρεύματος.
Οι εικονικές έξοδοι (Virtual Outputs) είναι φανταστικές έξοδοι που μπορούμε να χρησιμοποιήσουμε για να δημιουργήσουμε πιο περίπλοκο προγραμματισμό από ό,τι θα ήταν δυνατό με τις κανονικές εντολές του Apex.
Οι εικονικές έξοδοι μπορούν να χρησιμοποιηθούν για διάφορους λόγους, όπως:
- Δημιουργία ενός κεντρικού διακόπτη ενεργοποίησης/απενεργοποίησης για τον εύκολο έλεγχο πολλαπλών συσκευών με ένα μόνο κλικ.
- Ενισχυμένος έλεγχος των συναγερμών (alarms).
- Έλεγχος συνθηκών “ΑΝ συμβαίνει αυτό ΚΑΙ αυτό”, ώστε να εφαρμοστεί το αποτέλεσμα της σύγκρισης στον προγραμματισμό μιας φυσικής εξόδου.
- Αυτοματοποίηση των κύκλων σίτισης (Feed Modes).
- Προσαρμογή των προγραμμάτων φωτισμού.
Αυτή δεν είναι μια πλήρης λίστα, καθώς μπορείτε να είστε δημιουργικοί στη χρήση των εικονικών εξόδων.
Δημιουργία εικονικής εξόδου
Οι εικονικές έξοδοι δημιουργούνται από την οθόνη των εξόδων (Outputs Screen):
Κάντε κλικ στο εικονίδιο “Advanced” (γρανάζι) στην κορυφή του πίνακα Fusion, για να αναπτύξετε τη λίστα με τα εικονίδια.

Κάντε κλικ στο εικονίδιο “Outputs”.

Κάντε κλικ στο εικονίδιο “Add/Delete” (γρανάζι) στην πάνω δεξιά γωνία και επιλέξτε “Add a virtual output”.

Δώστε ένα περιγραφικό όνομα στην έξοδο.
- Όριο χαρακτήρων: 12
- Πρέπει να είναι μοναδικό (να μην επαναλαμβάνεται σε άλλες εξόδους, εισόδους ή ονόματα μονάδων).

Το Fusion θα εμφανίσει ένα νέο πλακίδιο που μπορεί να προστεθεί στον πίνακα ελέγχου.
Κάντε κλικ στο εικονίδιο του λουκέτου για να μεταβείτε στην οθόνη Unused Tiles.

Σύρετε την έξοδο στον πίνακα ελέγχου και κλείστε την οθόνη.

Κάντε κλικ στο γρανάζι της νέας εξόδου για να την ρυθμίσετε.

Ενεργοποιήστε την επιλογή “Log”, ώστε να έχετε ένα ιστορικό κάθε φορά που η έξοδος ενεργοποιείται ή απενεργοποιείται.

Οι νέες εικονικές έξοδοι δημιουργούνται πάντα με μία μόνο γραμμή κώδικα:
Set OFF
Από εδώ και πέρα, μπορείτε να τις διαμορφώσετε όπως επιθυμείτε. Παρακάτω θα δούμε μερικά παραδείγματα χρήσης.
Κεντρικός διακόπτης On/Off για συντήρηση
Κατά τη διάρκεια σημαντικών εργασιών συντήρησης στο sump, όπως:
- Καθαρισμός αντλίας επιστροφής
- Άδειασμα και καθαρισμός sump
…συνήθως απενεργοποιώ πολλές συσκευές, όπως:
- Αντλία επιστροφής
- Skimmer
- Θερμαντήρες (x2)
- Αντλία refugium
- Αυτόματο συμπλήρωμα (ATO)
- Αντλίες δοσομέτρησης (x2)
- Αντλίες αυτόματης αλλαγής νερού (x2)
- Κυκλοφορητής sump
- UV sterilizer
Αντί να κάνω κλικ σε 12 διαφορετικά πλακίδια στο Fusion, απλά ενεργοποιώ την εικονική έξοδο “Maintenance”, και όλες οι συσκευές απενεργοποιούνται αυτόματα μέσω του παρακάτω κώδικα:
Αντλία Επιστροφής:
Fallback ON
Set 100
If LkCrpt CLOSED Then OFF
If LkSump CLOSED Then OFF
If SMP_Lo OPEN Then OFF
If Output Maintenance = ON Then OFF
If FeedA 000 Then 1
If FeedB 000 Then 1
Θερμαντήρες:
Fallback OFF
If Tmp < 78.0 Then ON
If Tmp > 78.0 Then OFF
If Output Maintenance = ON Then OFF
Defer 001:00 Then ON
Defer 000:15 Then OFF
Η εικονική έξοδος “Maintenance” δεν εκτελεί κανένα πρόγραμμα από μόνη της, απλά χρησιμοποιείται ως διακόπτης ON/OFF. Η μόνη ενέργεια που απαιτείται από εσάς είναι να μετακινήσετε τον slider στο ON για να ξεκινήσει η συντήρηση:

Όταν η συντήρηση ολοκληρωθεί, μετακινήστε τον slider πίσω στο OFF:

Εικονικές Έξοδοι (Virtual Outputs) – Συνέχεια
Επειδή αυτή η έξοδος δεν περιέχει κάποιον προγραμματισμό, προτιμώ να την αφήνω πάντα σε χειροκίνητη κατάσταση OFF αντί για AUTO, ακόμα και αν σε αυτό το συγκεκριμένο παράδειγμα δεν έχει πρακτική διαφορά.
Ο λόγος είναι ότι είναι ευκολότερο να δω με μια ματιά ότι ο διακόπτης βρίσκεται στη θέση OFF, παρά να τον αφήσω στη θέση AUTO και να χρειάζεται να κοιτάξω προσεκτικά πάνω από τον διακόπτη για να δω αν γράφει “On” ή “Off” με μικρότερη γραμματοσειρά.
Αυτός ο κεντρικός διακόπτης On/Off είναι η πιο απλή χρήση των εικονικών εξόδων. Τώρα, ας δούμε κάποια παραδείγματα που απαιτούν περισσότερο προγραμματισμό.
Προηγμένος έλεγχος συναγερμών (Alarms) με εικονικές εξόδους
Οι εικονικές έξοδοι παρέχουν έναν τρόπο για να ενεργοποιήσουμε ειδοποιήσεις για συγκεκριμένες καταστάσεις, πέρα από τις απλές εντολές “If this then ON” στον προγραμματισμό του Email Alarm output.
Παράδειγμα:
Θέλω να λαμβάνω ειδοποίηση αν το ATO δεν έχει λειτουργήσει για πάνω από 2 ώρες.
Κανονικά, το ATO μου λειτουργεί κάθε 30 λεπτά λόγω εξάτμισης. Αν έχω προσθέσει λίγο παραπάνω νερό, ίσως περάσουν 60-90 λεπτά χωρίς να ενεργοποιηθεί.
Αλλά ποτέ δεν πρέπει να περάσουν 2 ώρες χωρίς να γεμίσει!
Γι’ αυτό χρησιμοποιώ μια εικονική έξοδο “Alert_ATO” για να το παρακολουθεί:
Set OFF
If ATK_LO OPEN Then ON
Defer 120:00 Then ON
Στην έξοδο Email_Alarm, προσθέτω αυτή τη γραμμή:
If Output Alert_ATO = ON Then ON
Πώς λειτουργεί:
- Ο αισθητήρας ATK_LO ελέγχει τη στάθμη στο sump.
- Αν το ATO αντλεί νερό, ο αισθητήρας κλείνει (CLOSED) και ο χρονοδιακόπτης μηδενίζεται.
- Αν ο αισθητήρας παραμείνει ανοιχτός (OPEN) για 2 ώρες, η εικονική έξοδος Alert_ATO ενεργοποιείται και η ειδοποίηση αποστέλλεται.
Μη-κρίσιμες ειδοποιήσεις που απενεργοποιούνται αυτόματα
Μερικές φορές, κάποιοι συναγερμοί δεν είναι τόσο κρίσιμοι και δεν θέλουμε να μας ξυπνήσουν στις 2 π.μ..
Σε τέτοιες περιπτώσεις, μπορούμε να χρησιμοποιήσουμε μια εικονική έξοδο, ώστε ο συναγερμός να ενεργοποιηθεί μία φορά και μετά να απενεργοποιηθεί μόνος του, ώστε να μην επαναλαμβάνεται κάθε ώρα.
Παράδειγμα:
Ο συναγερμός μου μόλις μου έστειλε ειδοποίηση ότι η δοσομετρική αντλία 2-part είναι χαμηλή! 🛑
Έτσι, είναι τέλεια στιγμή για να σας δείξω ένα παράδειγμα μη-κρίσιμου συναγερμού!

Προγραμματισμός μιας ειδοποίησης μίας φοράς (“One-time Alert”)
Δημιουργώ μια εικονική έξοδο Alert_2Part για να ελέγχει τις στάθμες αλκαλικότητας και ασβεστίου:
Set OFF
If ALK_LO OPEN Then ON
If CAL_LO OPEN Then ON
If Time 23:00 To 07:00 Then OFF
Defer 001:00 Then ON
When On > 010:00 Then OFF
Πώς λειτουργεί:
- Αν η στάθμη αλκαλικότητας (ALK_LO) ή ασβεστίου (CAL_LO) είναι χαμηλή, η έξοδος ενεργοποιείται.
- Αν είναι μεταξύ 11 μ.μ. – 7 π.μ., η ειδοποίηση δεν στέλνεται, για να μην με ξυπνήσει.
- Ο συναγερμός καθυστερείται 1 λεπτό με
Defer 001:00, για να αποφύγουμε ψευδείς ειδοποιήσεις. - Οταν ενεργοποιηθεί, παραμένει ενεργός για 10 λεπτά και μετά απενεργοποιείται μόνος του με το When On > 010:00 Then OFF.
Στην έξοδο Email_Alarm, προσθέτω:
If Output Alert_2Part = ON Then ON

Παράδειγμα σύγκρισης OR και επόμενη σύγκριση AND
Το παραπάνω παράδειγμα αποτελεί σύγκριση OR:
✔️ Αν η στάθμη αλκαλικότητας (ALK_LO) είναι χαμηλή
✔️ Ή αν η στάθμη ασβεστίου (CAL_LO) είναι χαμηλή
👉 Τότε ενεργοποίησε την ειδοποίηση.
Στο επόμενο παράδειγμα, θα σας δείξω μια σύγκριση AND.
Χρήση του “Defer Timer” για την αποφυγή ψευδών συναγερμών
Όπως αναφέραμε στο tutorial για τους Timers, η εντολή Defer βοηθά στην αποφυγή ψευδών ειδοποιήσεων.
Πώς;
💧 Μικρά κύματα στην επιφάνεια του υγρού μπορούν να προκαλέσουν λανθασμένη ανίχνευση από τον οπτικό αισθητήρα.
⚠️ Αν χτυπήσω κατά λάθος το δοχείο όταν η στάθμη είναι κοντά στον αισθητήρα, μπορεί να τον ενεργοποιήσει προσωρινά.
Για να το αποτρέψω, χρησιμοποιώ “Defer 001:00”.
Τι κάνει η εντολή “Defer 001:00”;
⏳ Ο αισθητήρας πρέπει να ανιχνεύσει χαμηλή στάθμη για τουλάχιστον 1 συνεχόμενο λεπτό πριν ενεργοποιήσει την έξοδο.
📌 Επιπλέον, εάν η ώρα είναι μεταξύ 11 μ.μ. και 7 π.μ., η ειδοποίηση δεν θα σταλεί.
Δεν θέλω να με ξυπνήσει μια μη κρίσιμη ειδοποίηση! 😴
Στον κώδικα της εξόδου Email_Alarm, προσθέτω αυτή τη γραμμή:
If Output Alert_2Part = ON Then ON
Αποφυγή επαναλαμβανόμενων ειδοποιήσεων κάθε ώρα
⚠️ Δεν θέλω να λαμβάνω ειδοποιήσεις κάθε ώρα για το ίδιο πρόβλημα.
Για να το αποφύγω, χρησιμοποιώ την εντολή “When”:
When On > 010:00 Then OFF
🛑 Τι κάνει αυτή η εντολή;
- Όταν η εικονική έξοδος παραμείνει ενεργοποιημένη για πάνω από 10 λεπτά, μετακινεί τον διακόπτη στη θέση OFF.
- Έτσι, διακόπτεται η ειδοποίηση Email_Alert.
- Δεν θα σταλούν ξανά ειδοποιήσεις μέχρι να διορθωθεί το πρόβλημα και να επαναφέρω την έξοδο σε AUTO.

Τελικό βήμα: Επαναφορά της ειδοποίησης
🛠️ Όταν τελειώσω αυτή την τεκμηρίωση, θα ξαναγεμίσω τα δοχεία 2-part και θα επαναφέρω την έξοδο “Alert_2Part” σε AUTO.
📌 Με αυτόν τον τρόπο, το σύστημα θα είναι έτοιμο για την επόμενη φορά που θα πέσει η στάθμη! 💡
Συνθήκες “AND” με εικονικές εξόδους
Μερικές φορές, θέλουμε μια έξοδο να ενεργοποιείται μόνο αν ισχύουν δύο ή περισσότερες συνθήκες ταυτόχρονα.
Αυτό ονομάζεται “AND σύγκριση”.
Παράδειγμα: Σεληνιακός φωτισμός μόνο αν η σελήνη είναι ορατή & ο κύριος φωτισμός είναι κλειστός
Set OFF
If Moon 000/000 Then ON
If Time 07:00 to 21:00 Then OFF
Πώς λειτουργεί:
- Το Apex γνωρίζει πότε η σελήνη είναι πάνω από τον ορίζοντα.
- Αν είναι ορατή, η έξοδος
vMoonενεργοποιείται. - Αν είναι ημέρα (07:00-21:00), η έξοδος
vMoonαπενεργοποιείται. - Αυτό σημαίνει ότι η έξοδος είναι ON μόνο αν η σελήνη είναι πάνω ΚΑΙ η ώρα είναι μεταξύ 9 μ.μ. – 7 π.μ. 🌙
Στην έξοδο του φωτιστικού Radion, προσθέτω:
If Output vMoon = ON Then Moonlight
Αυτό ενεργοποιεί το σεληνιακό πρόγραμμα φωτισμού μόνο όταν υπάρχει ορατή σελήνη τη νύχτα.
(Θα καλύψουμε λεπτομερώς το Σεληνιακό Πρόγραμμα και τα Lighting Profiles σε επόμενο άρθρο).
Συμπέρασμα
Οι εικονικές έξοδοι είναι εξαιρετικά χρήσιμες για αυτοματισμούς και προηγμένο προγραμματισμό στο Apex!
Μπορούν να χρησιμοποιηθούν για:
✅ Απλοποίηση της διαχείρισης συσκευών
✅ Έξυπνο προγραμματισμό ειδοποιήσεων (Alarms)
✅ Έλεγχο πολλαπλών συνθηκών (AND / OR Logic)
✅ Αυτοματοποιήσεις φωτισμού, ATO, δοσομέτρησης και πολλά άλλα!
Ελπίζω αυτή η εξήγηση να σας βοηθήσει να δημιουργήσετε κάποιους έξυπνους αυτοματισμούς για το σύστημά σας!
Στο επόμενο άρθρο, θα δούμε λεπτομέρειες για τους Συναγερμούς (Alarms).
Μείνετε συντονισμένοι! 🚀
Προφίλ Συγγραφέα: @SuncrestReef
Ο John Halsey είναι χομπίστας υφάλων και διατηρεί ένα Red Sea Reefer XL 425.
Έχει πάνω από ένα χρόνο εμπειρίας στο reefing και έχει αυτοματοποιήσει πλήρως το ενυδρείο του χρησιμοποιώντας ένα εκτεταμένο σύστημα Neptune Apex.

7 thoughts on “Neptune Apex: Μαθήματα Προγραμματισμού, Μέρος 5 – Εικονικές Έξοδοι (Virtual Outputs)”