eHouse Σύστημα Αυτοματισμού Κτιρίων – Android λογισμικό για να λάβει το καθεστώς των ελεγκτών μέσω UDP

Ethernet Αυτοματισμού eHouse σας επιτρέπει να στέλνετε αυτόματα ένα καθεστώς broadcastu UDP (User Datagram Protocol) , η οποία μπορεί να λάβει όλες τις συσκευές του τοπικού δικτύου LAN ή WiFi IP και ικανοποιεί την κατάσταση – Βρέθηκε στην τοπική μάσκα 255 . 255 . 255 . 0 , η οποία μεταδίδεται από το καθεστώς τις διευθύνσεις IP των ελεγκτών 192 . 168 . 0 . x . UDP Broadcast σας δίνει τη δυνατότητα να απενεργοποιήσετε την κατάσταση της λήψης του TCP / IP client , η οποία απαιτεί μια σύνδεση με τον ελεγκτή . Μετάδοση UDP είναι ένα πρωτόκολλο χωρίς σύνδεση , για τα δεδομένα διάδοση και ανεξάρτητα από τον αριθμό των συσκευών που λαμβάνουν δεν φορτώσει περισσότερο την CPU ή συνδέσεις δικτύου .
Απλή λειτουργία μετάδοσης UDP υποδοχής με smartphones , πάνελ και Android δισκία φαίνεται παρακάτω .
Είναι επομένως ένα άπειρο βρόχο επί τη βάσει αυτής της λειτουργίας , θα πρέπει να δημιουργήσετε ένα νήμα (thread) που εργάζονται στο παρασκήνιο , δίνοντας το χαμηλότερο έργο προτεραιότητας .
Αλλιώς , η εκτέλεση αυτής της λειτουργίας μπλοκάρει την εκτέλεση άλλων δραστηριοτήτων του προγράμματος .
Ο πηγαίος κώδικας για τη λήψη UDP Broadcast πλατφόρμα Android:
public void udp (int port) / / παράμετρος λιμάνι για να πάρει την προεπιλογή μεταδίδει 6789 – σε δυαδική κατάσταση ελεγκτή
{
byte [] = broadcastadr νέο byte [4] ;
byte [] = localadr νέο byte [4] ;
WifiManager Wi-Fi = (WifiManager) getSystemService (Πλαίσιο . WIFI_SERVICE) ; / / Wifi διευθυντής
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Πάρτε πληροφορίες από wifi dhcp
αν (dhcp == null) / / πάρει προεπιλεγμένη τιμή είναι απενεργοποιημένη όταν το DHCP του δικτύου του eHouse
{/ / Δεν dhcp ή ένα σφάλμα για τη συσκευή
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
άλλο / / DHCP
{
μετάδοσης = int (dhcp . IPAddress & ; ; dhcp . netmask) | ~ dhcp . netmask ; / / Για udp εκπομπή – Αν θέλετε να μεταδίδονται τα δεδομένα σχετικά με τη λειτουργία
ελεγκτής λαμβάνει μόνο το καθεστώς
για (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((μετάδοση> ; > ; k * 8) και ; 0xFF) ;
τοπικές = int (dhcp . IPAddress) ; / / Τοπική διεύθυνση IP dhcp
για (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((τοπική> ; > ; k * 8) και ; 0xFF) ; / / Για τοπική διεύθυνση IP
}
προσπαθώ
{
ds = νέα DatagramSocket (λιμάνι) ; / / / Ακρόαση για udp θύρα δεδομένων από οποιαδήποτε ip
μέσα σε μία μάσκα – udp υποδοχή για να δημιουργήσετε ένα παράδειγμα της τοπικής αριθμό θύρας
}
αλιευμάτων (Εξαίρεση ε)
{
/ / Ehousecommunication . l ( ” Inet Error: να πάρει τη διεύθυνση ” + E . GetMessage ()) ; για δοκιμή
}
προσπαθώ
{
ds . setBroadcast (αλήθεια) ; / / Ενεργοποίηση στείλετε μήνυμα ευρυεκπομπής – για μετάδοση
ds . setReuseAddress (αλήθεια) ; / / Ενεργοποίηση πολλαπλών υποδοχή χρησιμοποιούν την ίδια διεύθυνση IP
/ / Ds . setSoTimeout (400) ; / / Λήψη χρονικού ορίου
}
αλιευμάτων (Εξαίρεση io)
{/ / Αγνοήστε τα λάθη μας, αλλά προστατεύουν από την εφαρμογή του συστήματος και τα λάθη
}
/ / * TEST μετάδοσης UDP – broadcastu δοκιμή udp μεταδίδονται από το τηλέφωνο ή το tablet σας – μελλοντική επικοινωνία με την εφαρμογή του
/ * Δοκιμάστε
{
DatagramPacket dd = DatagramPacket νέα ( ” Hello Word από TEST Android UPD ” . GETBYTES () , 0 , ” Hello Word από TEST Android UPD ” . μήκος () ,
InetAddress . getByAddress (broadcastadr) , λιμάνι) ;
ds . αποστολή (δδ) ; / / Στέλνει ένα DatagramPacket
}
αλιευμάτων (Εξαίρεση ε)
{
ehousecommunication . l ( ” Μετάδοση πακέτων Datagram σφάλμα: ” + E . GetMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast με δυνατότητα κλειδώματος ” ) ;
/ / Δημιουργία παράδειγμα του μπλοκ multicast και broadcastu
ml . ml ; / / Multicast κλειδαριά επιτρέπουν τη λήψη μετάδοσης UDP – Μπορεί να απενεργοποιηθεί Ορισμένες Android smartphones για σκοπούς εξοικονόμησης batery –
broadcastu UDP υποστήριξη ενεργοποιεί το τηλέφωνο, αν είναι κλειδωμένο και μόνο άτομα με ειδικές ανάγκες
ενώ (! ehousecommunication . Τερματισμός) / / άπειρο βρόχο για την υποδοχή UDP
{/ / Άπειρο βρόχο που λαμβάνει udp κατάσταση
DatagramPacket dp = νέα DatagramPacket (μήνυμα , μήνυμα . μήκος) ; / / Δημιουργία ρυθμιστικού πακέτου UDP datagram με τη χρήση των δεδομένων – κάνει χρήση του πακέτου UDP
buffer ” μήνυμα ”
try {
ds . λαμβάνουν (DP) ; / / Λήψη πακέτων UDP από το σύστημα eHouse – λαμβάνει το πακέτο UDP λιμάνι του UDP μια πρίζα
αν (dp . getLength ()> ; 0) / / εάν το μέγεθος των αγροτεμαχίων μεγαλύτερη από το μηδέν – κάτι που λαμβάνονται
{
EhouseTCP . QueryBuff = dp . GetData () ; / / Εκχώρηση udp εκπομπή recepition querybuffer – φορτώνονται εντός του ρυθμιστικού eHouse κατάστασης
/ / Dp . setLength (0) ; – μέγεθος του πακέτου είναι ρυθμισμένη στο μηδέν έτσι ώστε να μην επεξεργάζονται τα ίδια δεδομένα επανειλημμένα
EhouseTCP . QueryReceived () ; / / Αποκωδικοποίηση ερώτημα πίνακες δεδομένων και συμπληρώστε συσκευές – αποκωδικοποιεί το καθεστώς των ελεγκτών φορτίων και ο πίνακας την κατάσταση της αίτησης
}
}
αλιευμάτων (Εξαίρεση os)
{/ / Αγνοήστε τα λάθη
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + Os . GetMessage ()) ; / / Για δοκιμή μόνο
}
}
ml . απελευθέρωσης () ; / / Multicast udp κλειδαριά δωρεάν για λήψη από την εφαρμογή eHouse – απελευθερώνει το κλείδωμα πολλαπλής
ds . close () ; / / Κλείστε την υποδοχή datagram στο τέλος – κλείνει την υποδοχή στο τέλος του
}
Multicast κλειδαριά μπορεί να απαιτείται σε ορισμένες συσκευές Android .
Τοπική UDP Broadcast στην περίπτωση των κινητών τηλεφώνων μπορεί να ενεργοποιηθεί ή όχι, ανάλογα με το κινητό τηλέφωνο firmware .
Μπορεί επίσης να απενεργοποιηθεί μόνιμα για εξοικονόμηση της μπαταρίας και για λόγους ασφαλείας ή να μειωθεί το φορτίο της CPU στο δίκτυο κατά την εργασία .
(Σημειώστε την διαμόρφωση του πυρήνα: CONFIG_IP_MULTICAST δεν έχει οριστεί) .
Εξάλλου , ορισμένα μοντέλα μπορεί να μπλοκαριστεί από ένα τείχος προστασίας και τοπικών πρέπει να ενεργοποιήσετε τη μετάδοση σε ένα συγκεκριμένο λιμάνι (προεπιλογή 6789) .
Έξω Μετάδοση, όταν χρησιμοποιεί το GPRS σύνδεση στο Internet , EDGE , 3G , 4G μπορεί να κλειδωθεί ή να ξεκλειδωθεί με το λειτουργό του δικτύου . Πιο συχνά , ωστόσο , θα πρέπει να αναμένεται , ότι είναι στερεωμένη έτσι ώστε να ελαχιστοποιείται η χρησιμοποίηση του συνδέσμου .
Σε ορισμένα μοντέλα των κινητών τηλεφώνων , Λογισμικό κατάσταση εφαρμογής των ελεγκτών που λαμβάνουν UDP μπορεί να είναι πολύ δύσκολο ή ακόμη και αδύνατο . Μπορεί να απαιτείται η χρήση ειδικών niebrandowanego firmware ή smartphone .
Εξάλλου , πρέπει να ληφθεί μέριμνα, όταν upgradowaniu firmware και ελέγξτε ότι όλα τα χαρακτηριστικά λειτουργούν σωστά έξω από το κουτί , άλλως η διάγνωση των σφαλμάτων θα είναι πολύ δύσκολο .
Με βάση κάποιες HTC τηλέφωνα και άλλα προϊόντα που περιέχουν το λειτουργικό Android έκδοση του συστήματος κάτω από 2 . 3 . 3 Παρατηρήθηκαν συνολικά μπλοκ UDP υποδοχή broadcastu .
Αυτή ήταν η έκδοση του Android (2 . 1 – 2 . 3 της περιόδου των 01 . 01 . 2010 – 14 . 06 . 2011)
Εάν δεν μπορείτε να λάβετε UDP broadcastu κατεβάσετε και να εγκαταστήσετε , Νέα έκδοση ROM του Android τουλάχιστον 2 . 3 . 3 (14 Ιουνίου , 2011) , η οποία ελέγχεται η ορθότητα του φόρτου εργασίας UDP μετάδοση .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – πυρήνα @ and18 – 2 # 1 .
Όχι . 3software . 14 . 405 . 1 .
Για άλλες μάρκες κινητών τηλεφώνων με παρόμοια προβλήματα , κατεβάστε το Firmware Android Rom από τον κατασκευαστή , έκδοση του τουλάχιστον 2 . 3 . 3 .
Σημειώστε, επίσης, τα βασικά χαρακτηριστικά του UDP Πακέτα .
Είναι ασύγχρονη και απαιτούν ανάγνωση σχετικά με το τι μπορεί να προκαλέσει σφάλματα ανάγνωσης δεδομένων , απώλειά τους (απόπτωση) , ειδικά με βραδεία εξοπλισμό , συνδέσεις , συνδυάζουν υψηλό φορτίο και SmartPhones κατοχής CPU και δισκία .
UDP δεδομένα κατάστασης είναι εξοπλισμένο το checksum για να ελέγχετε την εγκυρότητα των δεδομένων .
Αρχική Παραγωγός Αυτοματισμού eHouse Αυτοματισμού eHouse
Ελεγκτές eHouse – Αυτοματισμού eHouse