eHouse შენობა ავტომატიზაციის სისტემა – Android პროგრამული უზრუნველყოფა მიიღოს სტატუსის კონტროლერები გავლით UDP

ეთერნეტის სახლის ავტომატიზაციის eHouse საშუალებას გაძლევთ ავტომატურად გაგზავნის სტატუსი broadcastu UDP (User Datagram Protocol) , რომელსაც შეუძლია მიიღოს ყველა მოწყობილობები თქვენი LAN ან WiFi და IP დაკმაყოფილების მდგომარეობა – ნაპოვნია ადგილობრივ ნიღაბი 255 . 255 . 255 . 0 , რომელიც ეთერში off მდგომარეობა IP მისამართები კონტროლერები 192 . 168 . 0 . x . UDP მაუწყებლის გაძლევთ საშუალებას გამორთოთ ჩამოტვირთვა სტატუსის TCP / IP კლიენტის , რაც მოითხოვს კავშირი კონტროლერი . UDP ტელევიზია connectionless ოქმი , ამისთვის გავრცელების მონაცემები და მიუხედავად რაოდენობის მიღების მოწყობილობები არ გამოძახება CPU ან ქსელის ბმულები .
Simple UDP სამაუწყებლო მიღება ფუნქციის სმარტფონებისათვის , პანელები და Android დაფები წარმოდგენილია ქვევით .
ამიტომ უსასრულო loop საფუძველზე ამ ფუნქციის , თქვენ უნდა შექმნათ თემა (თემა) მუშაობის ფონზე , ვაძლევთ მას ყველაზე დაბალი პრიორიტეტი სამუშაო .
წინააღმდეგ შემთხვევაში , აღსრულების ამ ფუნქციის ბლოკირება აღსრულების სხვა საქმიანობის პროგრამა .
კოდის მიღების UDP მაუწყებლის Android პლატფორმის:
საჯარო ბათილად UDP (int პორტის) / / პარამეტრი პორტი შეარჩიო რა ეთერში 6789 – სტატუსი ორობითი კონტროლერი
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
WifiManager wifi = (WifiManager) getSystemService (კონტექსტში . WIFI_SERVICE) ; / / Wifi მენეჯერი
DhcpInfo DHCP = wifi . getDhcpInfo () ; / / დააგროვე ინფორმაციის wifi DHCP
თუ (DHCP == null) / / კიდევ, ნაგულისხმებია გამორთულია თუ DHCP ქსელი eHouse
{/ / No DHCP ან შეცდომა მოწყობილობის
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
სხვაგან / / DHCP
{
სამაუწყებლო = int (DHCP . IPAddress & ; ; DHCP . ქსელის შაბლონი) | ~ DHCP . ქსელის შაბლონი ; / / იყიდება 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 (პორტის) ; / / / Listening on UDP პორტი მონაცემები ნებისმიერი IP
შიგნით ნიღაბი – UDP Socket შექმნათ ინსტანციის ადგილობრივი პორტის ნომერი
}
catch (Exception e)
{
/ / Ehousecommunication . ლ ( ” შეცდომა inet: ოჯახის მისამართი ” + E . getMessage ()) ; ამისთვის ტესტი
}
ვცდილობთ
{
ds . setBroadcast (ნამდვილი) ; / / ჩართვა გაგზავნას სამაუწყებლო გაგზავნა – გადაცემის
ds . setReuseAddress (ნამდვილი) ; / / ჩართვა მრავალჯერადი Socket გამოიყენოთ იგივე IP მისამართი
/ / DS . setSoTimeout (400) ; / / მისაღები შეყოვნება
}
catch (Exception io)
{/ / იგნორირება შეცდომები, მაგრამ ჩვენ დაიცვას განაცხადის და სისტემის შეცდომები
}
/ / * UDP სამაუწყებლო TEST – broadcastu ტესტი UDP ეთერში თქვენი ტელეფონის ან ტაბლეტი – მომავალი ურთიერთობის გამოყენების
/ * სცადეთ
{
DatagramPacket dd = ახალი DatagramPacket ( ” გამარჯობა სიტყვა Android განახლდა ვადა TEST ” . getBytes () , 0 , ” გამარჯობა სიტყვა Android განახლდა ვადა TEST ” . სიგრძე () ,
InetAddress . getByAddress (broadcastadr) , პორტის) ;
ds . გაგზავნის (ჭ) ; / / აგზავნის DatagramPacket
}
catch (Exception e)
{
ehousecommunication . ლ ( ” გადასცემს Datagram პაკეტი შეცდომა: ” + E . getMessage ()) ;
}
* /
MulticastLock მლ = wifi . createMulticastLock ( ” Multicast ჩართულია საკეტი ” ) ;
/ / შექმნა ინსტანციის ბლოკი Multicast და broadcastu
მლ . შეიძინოს () ; / / Multicast საკეტი ჩავრთო UDP სამაუწყებლო მიღება – ეს შეიძლება იყოს ინვალიდი გარკვეული Android სმარტფონებისათვის ამისთვის batery გადარჩენის მიზეზი –
broadcastu UDP მხარდაჭერა ააქტიურებს ტელეფონი თუ იგი ჩაკეტილი და მხოლოდ შეზღუდული შესაძლებლობის მქონე
ხოლო (! ehousecommunication . შეწყვიტოს) / / უსასრულო loop ამისთვის UDP მიღება
{/ / Infinite loop მიღების UDP სტატუსი
DatagramPacket DP = ახალი DatagramPacket (გაგზავნა , გაგზავნა . სიგრძე) ; / / შექმნა UDP Datagram პაკეტი ბუფერული გამოყენებით მონაცემები – იყენებს UDP პაკეტი
ბუფერში შესანახი ” გაგზავნა ”
ვცდილობთ {
ds . მიიღონ (DP) ; / / UDP პაკეტი მიღება eHouse სისტემა – იღებს პაკეტი UDP port of UDP Socket
თუ (DP . getLength ()> ; 0) / / თუ ზომის ნაკვეთების მეტი ნულოვანი – რაღაც მიიღო
{
EhouseTCP . QueryBuff = DP . getData () ; / / მიანიჭეთ UDP სამაუწყებლო recepition querybuffer – ჩაიტვირთება ბუფერული სტატუსი eHouse
/ / DP . setLength (0) ; – პაკეტი ზომა არის ნულის ისე, რომ არ გადაამუშავებს იგივე მონაცემები არაერთხელ
EhouseTCP . QueryReceived () ; / / Decode შეკითხვის მონაცემები მასივები და შეავსოთ მოწყობილობები – decodes სტატუსის კონტროლერები და დატვირთვები განაცხადის მდგომარეობა მაგიდა
}
}
catch (Exception os)
{/ / იგნორირება შეცდომები
/ / Ehousecommunication . ლ ( ” asdfasdfsafsa ” + Os . getMessage ()) ; / / For ტესტი მხოლოდ
}
}
მლ . გამოშვების () ; / / Multicast UDP lock უფასო მისაღებად eHouse განაცხადის – ავრცელებს საკეტი Multicast
ds . დახურვა () ; / / დახურვა Datagram Socket დასასრულს – ხურავს Socket დასასრულს
}
Multicast საკეტი შეიძლება საჭირო ზოგიერთ Android მოწყობილობები .
ლოკალური სამაუწყებლო UDP იმ შემთხვევაში მობილური ტელეფონები შეიძლება შესაძლებელია თუ არა დამოკიდებულია მობილური ტელეფონი firmware .
იგი ასევე შეიძლება მუდმივად გაუქმდება ბატარეის დაზოგვის და უსაფრთხოების მიზნით ან შეამციროს CPU დატვირთვის ქსელში მუშაობა .
(შენიშვნა ბირთვის კონფიგურაცია: CONFIG_IP_MULTICAST არ არის მითითებული) .
გარდა ამისა , ზოგიერთ მოდელს შეიძლება დაბლოკა ადგილობრივი firewall და უნდა გაააქტიუროთ გადამცემი on მოცემული პორტი (default 6789) .
გარეთ მაუწყებლის გამოყენებისას GPRS ინტერნეტ , EDGE , 3G , 4G შეიძლება ჩაკეტილი ან unlocked მიერ ქსელის ოპერატორის . უფრო ხშირად , თუმცა , უნდა ველოდოთ , რომ ეს დაფიქსირდა, რათა მინიმუმამდე გამოყენებას ლინკები .
ზოგიერთ მოდელის მობილური ტელეფონისთვის , პროგრამები განხორციელების სტატუსის კონტროლერები მიღების UDP შეიძლება ძალიან რთული ან განუხორციელებელია . შეიძლება მოითხოვოს გამოყენების სპეციალური firmware niebrandowanego ან სმარტფონი .
გარდა ამისა , ზრუნვა უნდა იქნას მიღებული, როდესაც upgradowaniu firmware და შეამოწმოს, რომ ყველა მახასიათებლები მუშაობენ სათანადოდ გარეთ ყუთი , სხვაგვარად დიაგნოზი შეცდომები ძალიან ძნელი იქნება .
საფუძველზე ზოგიერთი HTC ტელეფონები და შემცველი სხვა პროდუქტები Android ოპერაციული სისტემის ვერსია დაბალია, ვიდრე 2 . 3 . 3 შეინიშნება სულ ბლოკის UDP მიღება broadcastu .
ეს იყო ვერსია Android (2 . 1 – 2 . 3 პერიოდში 01 . 01 . 2010 – 14 . 06 . 2011)
თუ ვერ იღებენ UDP broadcastu ჩამოტვირთოთ და დააყენოთ , ახალი Android ROM ვერსია მინიმუმ 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 პაკეტების .
ისინი ასინქრონული და მოითხოვს კითხულობს იმაზე, თუ რა შეიძლება გამოიწვიოს მონაცემების წაკითხვის შეცდომები , მათი დაკარგვა (shedding) , განსაკუთრებით ნელი აღჭურვილობა , ბმულები , დააკავშიროთ მაღალი დატვირთვის და CPU სახეობა სმარტტელეფონები და ტრაფარეტები .
UDP მდგომარეობა მონაცემები აღჭურვილია in ჯამი, რათა შეამოწმოთ მოქმედების მონაცემები .
სახლის ავტომატიზაციის პროდიუსერი eHouse სახლის ავტომატიზაციის eHouse
eHouse კონტროლერები – სახლის ავტომატიზაციის eHouse