9/09/2016

ขนาดภาพของกล้องวงจรปิด DVR

ขนาดภาพของกล้องวงจรปิด DVR
960H เทียบ 720P เทียบกับความละเอียด 1080P
กล้องอะนาล็อกและกล้อง ดิจิตอลทั้งสองร่วมอยู่ในตลาดปัจจุบัน กับการพัฒนาอย่างรวดเร็วของเทคโนโลยีใหม่ ๆ กล้องทั้งสองกลายเป็นราคาที่ไม่แพง 960H, 720P 1080P และมีความละเอียดที่แตกต่างกันสำหรับกล้องรักษาความปลอดภัย วันนี้เราจะไปให้ข้อมูลบางอย่างง่ายเกี่ยวกับความละเอียดที่แตกต่างกันเหล่า นี้
960H มติ

960H แรกได้รับการแนะนำโดย Sony คอร์ปอเรชั่นซึ่งได้รับการครอบงำในด้านการเฝ้าระวังวิดีโออะนาล็อกมานานหลาย ทศวรรษ โซนี่เชี่ยวชาญในการออกแบบและการผลิตเซ็นเซอร์รับภาพ CCD และประมวลผลสัญญาณภาพ (ISP) วันที่กลับไป 2009 บริษัท ฯ เปิดตัว "Effio" ชุด ISP และ 960H เซ็นเซอร์รับภาพ CCD ขึ้นอยู่กับ "Effio" ISP และ 960H CCD, กล้องอนาล็อกสามารถส่งมอบกว่ามติ 650TVL ปีที่ผ่านมา บริษัท ได้รับการปล่อยตัว Effio-V และ Effio-ประมวลผลสัญญาณภาพใหม่ที่ช่วยให้กล้องเพื่อส่งมอบกว่า 700TVL ละเอียดแนวนอน

ละเอียดภาพแนวนอนแสดงถึงระดับของรายละเอียดในแนวนอนของวิดีโอ จำนวนมากแสดงให้เห็นวิดีโอความละเอียดสูง

ที่ คุณรู้ว่าการบันทึกวิดีโออุปกรณ์ต้องมีการจับภาพหน้า - กล้องรักษาความปลอดภัยและอุปกรณ์บันทึก การติดตั้งระบบเฝ้าระวัง 960H วิดีโอคุณต้องใช้ 700TVL กล้องอนาล็อกและ 960H DVRs DVRs 960H สามารถให้ผู้ใช้สามารถบันทึกวิดีโอที่มีความละเอียด 960x480 (NSTC) / 960x582 (PAL)
720P มติ

720P จะเรียกว่าครึ่ง HD มันเป็นหนึ่งในมาตรฐานการแพร่ภาพ HDTV และความละเอียด 720P มีความละเอียด 1280x720 เมื่อเทียบกับความละเอียด 960H ละเอียด 720P คือการเพิ่มขึ้นในจำนวนของพิกเซลเกือบ 50% ซึ่งส่งผลให้คุณภาพของภาพที่เพิ่มขึ้นอย่างมีนัยสำคัญ อะนาล็อกในวันนี้เทคโนโลยี HD เช่น HD-CVI, HD-TVI พวกเขานำมาใช้โปรเกรสซีฟสแกนเซ็นเซอร์รับภาพแบบ CMOS ความละเอียดในการส่งมอบ 720P ความละเอียด 720P สามารถแสดงใน 16: 9 อุปกรณ์ HDTV หน้าจอกว้าง
1080P มติ

1080P เป็นอีกหนึ่งมาตรฐาน HDTV กระจายเสียงซึ่งเรียกว่าความละเอียดสูงเต็มรูปแบบ (HD) 1080P มีความละเอียดของ 1920x1080 (2.1MP) โดยมีอัตราส่วนของ 16 นี้: 9 1080P ความละเอียดของภาพเป็นครั้งที่สองมีขนาดใหญ่กว่า 960H และเป็นหนึ่งในช่วงเวลาที่มีขนาดใหญ่กว่าความละเอียด 720P

สั้น, หมู่มาตรฐานที่แตกต่างกันเหล่านี้ 1080P เป็นความละเอียดสูงสุด เราขอแนะนำให้ผู้ใช้ที่จะซื้อความละเอียด 1080P อนาล็อก / กล้อง IP ซึ่งช่วยให้คุณสามารถจับภาพความคมชัดสูงและเหมาะสมกับอุปกรณ์ HDTV ของคุณ

 http://th.hkvstar.com/technology-news/9 ... ution.html


ขนาดภาพของเครื่องบันทึกระบบอนาล็อกในปัจจุบันจะมีมาตรฐานดังนี้ครับ 960H(WD1), D1(Frame), 4CIF, 2CIF, CIF และ QCIF
มีรายละเอียดเรียงตามขนาดของภาพดังนี้
ขนาดของภาพที่ได้จากเครื่องบันทึกระบบ 960H (WD1) : 960(H) x 576(V)
ขนาดของภาพที่ได้จากเครื่องบันทึกระบบ D1 (Frame) : 720(H) x 576(V)
ขนาดของภาพที่ได้จากเครื่องบันทึกระบบ 4CIF หรือ HD1 : 704(H) x 576(V)
ขนาดของภาพที่ได้จากเครื่องบันทึกระบบ 2CIF : 704(H) x 288(V)
ขนาดของภาพที่ได้จากเครื่องบันทึกระบบ CIF : 352(H) x 288(V)

http://www.compluscenter.com/articles/4 ... 8%A3?.html



Raspberry PI :: Raspberry PI Fix IP

Raspberry PI :: Raspberry PI Fix IP
1. Run Command
  1. nano /etc/network/interfaces

2. Example Fix IP
  1. auto eth0
  2. allow-hotplug eth0
  3. #iface eth0 inet manual
  4. iface eth0 inet static
  5. #your static IP
  6. address 192.168.0.3
  7. #your gateway IP
  8. gateway 192.168.0.2
  9. netmask 255.255.255.0
  10. #your network address "family"
  11. network 192.168.0.2
  12. broadcast 192.168.0.255

3. Restart Service
  1. /etc/init.d/networking restart

http://elinux.org/RPi_Setting_up_a_static_IP_in_Debian

Python :: python send email gmail One User recipient.

Python :: python send email gmail One User recipient.
1. Code
  1. import smtplib
  2.  
  3. fromaddr = 'fromuser@gmail.com'
  4. toaddrs  = 'touser@gmail.com'
  5. msg = 'There was a terrible error that occured and I wanted you to know!'
  6.  
  7.  
  8. # Credentials (if needed)
  9. username = 'username'
  10. password = 'password'
  11.  
  12. # The actual mail send
  13. server = smtplib.SMTP('smtp.gmail.com:587')
  14. server.starttls()
  15. server.login(username,password)
  16. server.sendmail(fromaddr, toaddrs, msg)
  17. server.quit()

Example :: https://www.nixtutor.com/linux/send-mai ... th-python/

Python :: python send email gmail multiple recipients.

Python :: python send email gmail multiple recipients.
1. Create file sendmail.py
2. Insert Code
  1. #!/usr/bin/python
  2. import smtplib
  3. from smtplib import SMTP
  4.  
  5. recipients = ['suwit.jph@gmail.com', 'suwit_jph@hotmail.co.th']
  6.  
  7. def send_email (message, status):
  8.     fromaddr = 'scivalve.suwit@gmail.com'
  9.     server = SMTP('smtp.gmail.com:587')
  10.     server.ehlo()
  11.     server.starttls()
  12.     server.ehlo()
  13.     server.login('scivalve.suwit@gmail.com', 'password')
  14.     server.sendmail(fromaddr, recipients, 'Subject: %s\r\n%s' % (status, message))
  15.     server.quit()
  16.  
  17. send_email("Test","Test send mail")
  18.  
  19.  

3. Test Run Command.
  1. ./sendmail.py

Example : http://stackoverflow.com/questions/2050 ... -addresses

Python :: Python + Piface เช็คอุหภูมิปิดเปิดแอร์ Auto

Python :: Python + Piface เช็คอุณหภูมิปิดเปิดแอร์ Auto
1. ติดตั้ง OS
2. ติดตั้ง Python
  1. sudo apt-get install python{,3}-pifacedigitalio

3. ติดตั้ง library สำหรับ Run python เช็คอุณหภูมิ https://learn.adafruit.com/dht-humidity ... ll-updated
  1. cd Adafruit_Python_DHT
  1. sudo apt-get update
  1. sudo apt-get install build-essential python-dev python-openssl
  1. sudo python setup.py instal
l
4. สร้างไฟล์ checkair.py ด้วยคำสั่ง
  1. nano checkair.py

ใส่ code
  1.                                                                                               
  2. #!/usr/bin/python
  3. #### Check temperature Adafruit_DHT 22 23 #######
  4. import sys
  5.  
  6. import Adafruit_DHT
  7.  
  8. # Parse command line parameters.
  9. # Use This.
  10. #sensor_args = { '11': Adafruit_DHT.DHT11,
  11. #                                '22': Adafruit_DHT.DHT22,
  12. #                                '2302': Adafruit_DHT.AM2302 }
  13. #if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
  14. #        sensor = sensor_args[sys.argv[1]]
  15. #        pin = sys.argv[2]
  16. #else:
  17. #        print 'usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#'
  18. #        print 'example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4'
  19. #        sys.exit(1)
  20.  
  21. # Try to grab a sensor reading.  Use the read_retry method which will retry up
  22. # to 15 times to get a sensor reading (waiting 2 seconds between each retry).
  23. #humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
  24. humidity, temperature = Adafruit_DHT.read_retry(22, 23)
  25.  
  26.  
  27. # Un-comment the line below to convert the temperature to Fahrenheit.
  28. # temperature = temperature * 9/5.0 + 32
  29.  
  30. # Note that sometimes you won't get a reading and
  31. # the results will be null (because Linux can't
  32. # guarantee the timing of calls to read the sensor).  
  33. # If this happens try again!
  34. if humidity is not None and temperature is not None:
  35.         print 'Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity)
  36. else:
  37.         print 'Failed to get reading. Try again!'
  38.         sys.exit(1)
  39.  
  40. #### Opne and Close Relay By Piface  #####
  41.  
  42. import pifacedigitalio
  43. pf = pifacedigitalio.PiFaceDigital()
  44.  
  45. #pf.leds[1].turn_on()
  46. #pf.leds[2].turn_on()
  47. #pf.leds[3].turn_on()
  48. #pf.leds[4].turn_on()
  49. #pf.leds[5].turn_on()
  50. #pf.leds[6].turn_on()
  51. #pf.leds[7].turn_on()
  52. #### ON #####
  53. import smtplib
  54.  
  55. if temperature > 27:
  56.         pf.relays[1].turn_on()
  57.         pf.relays[0].turn_on()
  58.  
  59.         from smtplib import SMTP
  60.  
  61.         recipients = ['suwit.jph@gmail.com', '"komkid@gmail.com', 'nontiwaza@gmail.com']
  62.  
  63.         def send_email (message, status):
  64.                 fromaddr = 'mail'
  65.                 server = SMTP('smtp.gmail.com:587')
  66.                 server.ehlo()
  67.                 server.starttls()
  68.                 server.ehlo()
  69.                 server.login('mail', 'password')
  70.                 server.sendmail(fromaddr, recipients, 'Subject: %s\r\n%s' % (status, message))
  71.                 server.quit()
  72.  
  73.         send_email("High temp alert! in Server Room A. " '{0:0.1f}*C'.format(temperature), "High temp alert! Turn ON relays.")
  74. else:
  75.         pf.relays[0].turn_off()
  76.         pf.relays[1].turn_off()
  77.  
  78.         #from smtplib import SMTP
  79.  
  80.         #recipients = ['suwit.jph@gmail.com', '"komkid@gmail.com', 'nontiwaza@gmail.com']
  81.  
  82.         #def send_email (message, status):
  83.         #        fromaddr = 'mail'
  84.         #        server = SMTP('smtp.gmail.com:587')
  85.         #        server.ehlo()
  86.         #        server.starttls()
  87.         #        server.ehlo()
  88.         #        server.login('mail', 'password')
  89.         #        server.sendmail(fromaddr, recipients, 'Subject: %s\r\n%s' % (status, message))
  90.         #        server.quit()
  91.         #send_email("Temp alert! in Server Room A. " '{0:0.1f}*C'.format(temperature), "Temp alert! Turn OFF Relays.")
  92.  
  93. pf.deinit_board()
  94.  
  95.  

5. Run ไฟล์ py ด้วยคำสั่ง
  1. ./checkair.py 22 23

6. ตั้งให้ Run ตามเวลาใน crontab
  1. crontab -e

เพิ่มเวลาที่ต้องการให้ run เข้าไป
*/5 * * * * ./checkair.py 22 23

การต่อ วงจร ตามรูป

Intranet Local Error : Can not connect!Access denied for user 'www-data'@'localhost' (using password: NO)

Intranet Local Error : Can not connect!Access denied for user 'www-data'@'localhost' (using password: NO)

แก้โดย
  1. service mysql stop
  1. mysqld_safe --skip-grant-tables &
  1. /etc/init.d/apache2 restart

Axapta : Mandatory Dimension ความหมาย

Axapta : Mandatory Dimension ความหมาย

Help.
This field determines how Dimension should be validated in connection with posting. For a list of validation options, select the square arrow. The choices include:

Optional - it is optional to enter a department, and no check of value is performed when posting. The value specified in the account is proposed for posting in, for example, journals.
To be filled in - Axapta verifies that Dimension has been completed in connection with posting. The value is not checked.
Table - Axapta verifies that Dimension has been completed in connection with posting, and that the value corresponds with the value specified in the ledger account.
List - Axapta verifies that Dimension has been completed with one of the values defined in Dimension or the selection on the ledger account in connection with posting.
Fixed - the dimension selected on the ledger account will always be used during posting.
Default - for all transactions without any value set, the value stated on the ledger account will be used. The value specified on the account is automatically completed in journal lines, but can be changed before posting

###############################################
Optional : จะใส่หรือไม่ใส่ Dimension ก็สามารถ Post ได้

To be filled in : ต้องใส่ Dimension ถึงจะ Post ผ่านถ้าไม่ใส่จะ Post ไม่ผ่าน ตามรูป

 ช่อง SelectTable จะมีแสดงทั้งหมด ตามรูป
เลือก Dimension ไม่ตรงกับที่ผูกไว้กับบัญชีก็สามารถ Post ได้

Table : ต้องใส่ Dimension ให้ตรงกับที่ผูกไว้กับบัญชีถึงจะ Post ผ่าน ถ้าไม่ใส่หรือใส่ไม่ตรงจะ Post ไม่ผ่าน
List : ช่องที่เลือก Dimension จะมี Selecttable มาให้ เฉพาะ ที่ผูกอยู่กับบัญชีนั้น แต่สามารถเลือก All เพื่อเลือกอย่างอื่นได้ แต่ถ้าต้องเลือก Dimension เอง ถ้าไม่เลือกก็ Post ไม่ผ่าน ตามรูป

 และต้องเลือกให้ตรงกับ Dimension ถ้าเลือกไม่ตรงเวลา Post จะมี Error ต้องเลือกให้ตรงถึงจะ Post ผ่าน
Fixed : ช่องที่เลือก Dimension จะมี Selecttable มาให้ เฉพาะ ที่ผูกอยู่กับบัญชีนั้น แต่สามารถเลือก All เพื่อเลือกอย่างอื่นได้ ถ้าไม่เลือกก็ Post ผ่าน แต่ ข้อมูล Dimension ที่จะใช้งานต่อ Table อื่นจะไม่มี ตามรูป

Default : ไม่ต้องเลือกค่า Dimension ของเอกสารเช่น PO แต่เมื่อ Post แล้ว Dimension ที่ Table อื่นที่จำเป็นต้องใช้งานจะถูก Set Auto ตามบัญชีที่ Set ไว้ และสามารถเปลี่ยนแปลงได้ก่อนโพสต์



โทรผ่าน IP ด้วยโปรแกรม CSipSimple (Android) ON SCI

โทรผ่าน IP ด้วยโปรแกรม CSipSimple (Android) ON SCI
โทรผ่าน IP ด้วยโปรแกรม CSipSimple (Android)
IPhone ใช้ Zoiper SIP
Windows Phone ใช้ Zoiper

Android : CSipSimple
1. ติดตั้ง โปรแกรม CSipSimple ใน Playstore
2. ต่อ WIFI Emp ใน SCI
3. เปิดโปรแกรม กด OK แล้วตั้งค่า
- Account name : ใส่เบอร์โทรตามเบอร์ภายในของบริษัท
- User : ใส่เบอร์โทรตามเบอร์ภายในของบริษัท
- Server : ใส่ 192.168.0.249 Zip phone
- Password : ใส่เบอร์โทรตามเบอร์ภายในของบริษัท
ตามรูป
4. กด Save
5. ถ้า Register ผ่าน จะขึ้นตามรูป
6. กดเบอร์ตามเบอร์ภายในแล้วโทรได้เลย
IPhone : Zoiper
1. ติดตั้งโปรแกรมจาก App Store ค้นหาชื่อ Zoiper SIP
2. เปิดโปรแกรม Zoiper SIP กด Settings ตรงมุมขวาด้านล่าง ตามรูป
3. กด Accounts
4. กดเครื่องหมาย + มุมขวาบน เพื่อ Add เบอร์
5. กด Yes
6. กด Manual configuration
7. กด SIP account
8. คีย์ข้อมูล Server ใน SIP OPTIONS
- Account name : ใส่เบอร์โทรตามเบอร์ภายในของบริษัท
- Domain : ใส่ 192.168.0.249
- User name : ใส่เบอร์โทรตามเบอร์ภายในของบริษัท
- Password : ใส่เบอร์โทรตามเบอร์ภายในของบริษัท

กดปุ่ม register ด้านบน ตามรูป
10. ทดลองโทรกดเบอร์ภายใน ถ้าทำถูกต้องจะมีเบอร์ที่เราลงทะเบียนข้างบนและมี Ready ตัวสีเขียว ตามรูป












Crontab : Ubuntu Crontab Set

Crontab : Ubuntu Crontab Set
  1. crontab -e
รูปแบบของคำสั่ง crontab มีทั้งหมด 6 fields ดังนี้
1 = minute มีค่า 0 - 59 เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงนาทีที่กำหนด
2 = hour มีค่า 0 - 23 เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงชั่วโมงที่กำหนด
3 = day มีค่า 1 - 31 เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงวันที่กำหนด
4 = month มีค่า 1 - 12 เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงเดือนที่กำหนด
5 = weekday มีค่า 0 - 6 วันขะงแต่ละสัปดาห์ มีค่าดังนี้ (อาทิตย์ = 0, จันทร์ = 1, อังคาร = 2, พุธ = 3, พฤหัส = 4, ศุกร์ = 5 ,เสาร์ = 6 )
6 = command คำสั่ง เราสามารถกำหนดคำสั่งได้มากมาย รวมทั้ง script ต่าง ๆ ตามที่เราต้องการ

โดยสามารถจำเป็นรูปแบบง่ายได้ดังนี้

Python :: Python Check Speed Internet get Data for USE. PHP

Python :: Python Check Speed Internet get Data for USE.
1. Install follow This. http://porpramarn.blogspot.com/2016/09/python-python-check-speed-internet-on.html
2. Create File nettest.py
  1. nano nettest.py

3. Insert This Code.
  1. #!/usr/bin/python
  2. import os
  3. import sys
  4. import csv
  5. import datetime
  6. import time
  7. #import twitter
  8.  
  9. def test():
  10.  
  11.         #run speedtest-cli
  12.         print 'running test'
  13.         # /usr/bin/speedtest-cli
  14.         a = os.popen("python /usr/bin/speedtest-cli --simple").read()
  15.         # a = os.popen("python /home/pi/speedtest/speedtest-cli --simple").read()
  16.         print 'ran'
  17.         #split the 3 line result (ping,down,up)
  18.         lines = a.split('\n')
  19.         print a
  20.         ts = time.time()
  21.         date =datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
  22.         #if speedtest could not connect set the speeds to 0
  23.         if "Cannot" in a:
  24.                 p = 100
  25.                 d = 0
  26.                 u = 0
  27.         #extract the values for ping down and up values
  28.         else:
  29.                 p = lines[0][6:11]
  30.                 d = lines[1][10:14]
  31.                 u = lines[2][8:12]
  32.         print date,p, d, u
  33.         #save the data to file for local network plotting
  34.         # out_file = open('/var/www/assets/data.csv', 'a')
  35.         out_file = open('/home/pi/data.csv', 'a')
  36.  
  37.         writer = csv.writer(out_file)
  38.         writer.writerow((ts*1000,p,d,u))
  39.         out_file.close()
  40.         return
  41.  
  42. if __name__ == '__main__':
  43.         test()
  44.         print 'completed'
  45.  

4. Run python
  1. python nettest.py

Data
1454725814235.995,23.64,39.1,21.6

5. Use file data.csv Or Insert to database.

http://pastebin.com/WMEh802V

######################################################################
ติดตั้ง phpmyadmin เพิ่มต่อเพื่อดึงข้อมูลเข้า database เก็บไว้ใช้งานต่อไป
ติดตั้ง
  1. sudo apt-get install apache2
  1. sudo apt-get install mysql-server
  1. sudo apt-get install php5
  1. sudo apt-get install phpmyadmin


1. สร้าง ไฟล์ net-check.php ที่ var/www/
  1. nano /var/www/nano net-check.php

2. เพิ่มคนสำหรับ Check Speed Net ที่ Python และส่งเมล์เตือนเมื่อ Speed ได้ต่ำกว่ากำหนด Code
  1. <?php
  2. // Read Data From DHT22
  3. $strDateTime = date("Y-m-d H:i:s");
  4. //$strDhtData = exec("/usr/local/bin/Adafruit_DHT 22 23");
  5.  
  6. $command = escapeshellcmd('/home/pi/nettest.py');
  7. $output = shell_exec($command);
  8. //echo $output;
  9.  
  10. list($date, $time, $ping, $download, $upload) = explode(" ", $output);
  11.  
  12. echo $date.",".$time.",".$ping.",".$download.",".$upload;
  13.  
  14.         $fp = fopen('/var/www/data-net.txt', 'a+');
  15.         fwrite($fp, "Date = $, {$output}");
  16.         fclose($fp);
  17.  
  18.         if(floatval($download) < 50){
  19.                 $strToPost = "\nFrom Raspberry : Date = {$date} {$time} : Ping = {$ping} : Download = {$download} : Upload = {$upload} \n";
  20.                 //echo $strToPost;
  21. $ret = mail("komkid@gmail.com,suwit.jph@gmail.com,nontiwaza@gmail.com", "Internet Test Speed is low. Please Check Internet Connection.", $strToPost, "From: SCI Raspberry\n");
  22.                 //$ret = mail("suwit.jph@gmail.com","Internet Test Speed is low. Please Check Internet Connection.", $strToPost, "From: SCI Raspberry\n");
  23.                 if($ret)
  24.                         echo "OK {$output}";
  25.                 else
  26.                         echo "Failed!";
  27.         }
  28.  
  29. ?>
  30.  
  31.  


3. Chmod file pytho เพื่อให้ php สามารถ run ได้
  1. chmod +x nettest.py
ทดลอง Run ผ่าน Terminal แล้วดูผล
  1. /usr/bin/php /var/www/net-check.php

4. ตั้งเวลาให้ Run ทุก 1 ชั่วโมง โดยใช้คำสั่ง
  1. crontab -e

และเพิ่ม
  1. #Check Internet Every 1 Hours
  2. 0 * * * * /usr/bin/php /var/www/temp-alert.php

http://pastebin.com/WMEh802V

Python :: Python Check Speed Internet On Ubuntu Or PI

Python :: Python Check Speed Internet On Ubuntu Or PI

http://ubuntuserverguide.com/2014/01/ho ... erver.html

Installing speedtest-cli Using pip command:

1. install pip with the following command:
  1. sudo apt-get install python-pip


2. Once pip installed, now install speedtest-cli by using pip command:
  1. sudo pip install speedtest-cli


3. Installing speedtest-cli Manually. To installing speedtest-cli in manually method you need to download the latest speedtest-cli python script from github:


4. make speedtest_cli.py executable
  1. sudo chmod a+rx speedtest_cli.py


5. Move speedtest_cli.py to directory /usr/bin
  1. sudo mv speedtest_cli.py /usr/bin/speedtest-cli


Test Connection Speed using Speedtest-cli. It is easy to check internet speed with speedtest-cli. Just type command speedtest-cli without any arguments.
  1. speedtest-cli 
  1. speedtest-cli --share

For a list of servers Speedtest.net available worldwide, use “–list” option. An ordered list of servers is displayed Speedtest.net (geographically nearest first).
  1. speedtest-cli --list
OR
  1. speedtest-cli --list | grep Thailand
 
  1. speedtest-cli --server 4347


More information about speedtest-cli, type:
  1. speedtest-cli --help

Raspberry PI :: Control Relay ปิดเปิด หน่วงเวลา

Raspberry PI :: Control Relay ปิดเปิด หน่วงเวลา
ที่มา http://rpihome.blogspot.com/2015/01/using-whatsapp-for-home-automation_23.html
ตัวอย่าง


1. ติดตั้ง Python
  1. apt-get install python

2. สร้างไฟล์ สำหรับ Run python
  1. nano relay.py

3. ใส่ Code
  1. import RPi.GPIO as GPIO
  2. import time
  3. # blinking function
  4. def blink(pin):
  5.         GPIO.output(pin,GPIO.HIGH)
  6.         time.sleep(8)  ## เวลาหน่วงเปิด
  7.         GPIO.output(pin,GPIO.LOW)
  8.         time.sleep(1)  ## เวลาหน่วงปิด
  9.         return
  10. # to use Raspberry Pi board pin numbers
  11. GPIO.setmode(GPIO.BOARD)
  12. # set up GPIO output channel
  13. GPIO.setup(12, GPIO.OUT)  ## ขา GPIO ที่ต่อ
  14. # blink GPIO17 50 times
  15. for i in range(0,  1):    ## จำนวนรอบที่จะให้ run
  16.         blink(12)   ## ขา GPIO ที่ต่อ
  17. GPIO.cleanup()
  18.  
  19.  

4. ทดลอง Run ด้วยคำสั่ง
  1. python relay.py


### นำไปใช้งานต่อ ตั่งเวลาปิดเปิด ด้วย Crontap ####
1. ติดตั้ง apache2 แต่ถ้าไม่ต้องการเรียกใช้งานผ่าน PHP ก็ให้ตั้งใน Crotab ตรง ๆ เลยก็ได้ไม่ต้องทำข้อ 1 - 3
  1. sudo apt-get install apache2

2. สร้างไฟล์ ที่ www bell-warn.php ด้วยคำสั่ง
  1. nano /var/www/bell-warn.php


3. เพิ่ม Code ในไฟล์ bell-warn.php
  1.  
  2. <?php
  3. // Read Data From  Python
  4. $command = escapeshellcmd('python /home/pi/relay.py');
  5. $output = shell_exec($command);
  6. //echo $output;
  7. ?>
  8.  


4. สร้าง Crontab ให้ Run ตามเวลาที่ต้องการ ด้วยคำสั่ง
  1. crontab -e

เพิ่มเวลาที่ต้องการ ให้เตือนเข้าไป

  1. # Time Normal #
  2. 0 0 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  3. 30 0 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  4. 30 5 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  5. 0 6 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  6. 50 7 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  7. 0 8 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  8. 20 10 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  9. 0 12 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  10. 50 12 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  11. 0 13 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  12. 40 17 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  13. 0 18 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  14. 0 21 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  15.  
  16. # Time Test #
  17. #28 13 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  18. #29 13 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  19. #30 13 * * 1-6 /usr/bin/php /var/www/bell-warn.php
  20.  
  21.  
  22. # Time Holiday #
  23.  
  24. 0 0 * * 7 /usr/bin/php /var/www/bell-warn.php
  25. 30 0 * * 7 /usr/bin/php /var/www/bell-warn.php
  26. 30 5 * * 7 /usr/bin/php /var/www/bell-warn.php
  27. 0 6 * * 7 /usr/bin/php /var/www/bell-warn.php
  28. 50 7 * * 7 /usr/bin/php /var/www/bell-warn.php
  29. 0 8 * * 7 /usr/bin/php /var/www/bell-warn.php
  30. 20 10 * * 7 /usr/bin/php /var/www/bell-warn.php
  31. 0 12 * * 7 /usr/bin/php /var/www/bell-warn.php
  32. 50 12 * * 7 /usr/bin/php /var/www/bell-warn.php
  33. 0 13 * * 7 /usr/bin/php /var/www/bell-warn.php
  34. 0 17 * * 7 /usr/bin/php /var/www/bell-warn.php
  35. 0 18 * * 7 /usr/bin/php /var/www/bell-warn.php


หรือ เรียกใช้ python ตรง ๆ เลยก็ได้ถ้าไม่ต้องการใช้ apache
  1. # Time Normall #
  2. 0 0 * * 1-6 python /home/pi/relay.py
  3. 30 0 * * 1-6 python /home/pi/relay.py
  4. 30 5 * * 1-6 python /home/pi/relay.py
  5. 0 6 * * 1-6 python /home/pi/relay.py
  6. 50 7 * * 1-6 python /home/pi/relay.py
  7. 0 8 * * 1-6 python /home/pi/relay.py
  8. 20 10 * * 1-6 python /home/pi/relay.py
  9. 0 12 * * 1-6 python /home/pi/relay.py
  10. 50 12 * * 1-6 python /home/pi/relay.py
  11. 0 13 * * 1-6 python /home/pi/relay.py
  12. 40 17 * * 1-6 python /home/pi/relay.py
  13. 0 18 * * 1-6 python /home/pi/relay.py
  14. 0 21 * * 1-6 python /home/pi/relay.py
  15.  
  16. # Time Test #
  17. 44 13 * * 1-6 python /home/pi/relay.py
  18. 45 13 * * 1-6 python /home/pi/relay.py
  19. 46 13 * * 1-6 python /home/pi/relay.py
  20.  
  21.  
  22. # Time Holiday #
  23.  
  24. 0 0 * * 7 python /home/pi/relay.py
  25. 30 0 * * 7 python /home/pi/relay.py
  26. 30 5 * * 7 python /home/pi/relay.py
  27. 0 6 * * 7 python /home/pi/relay.py
  28. 50 7 * * 7 python /home/pi/relay.py
  29. 0 8 * * 7 python /home/pi/relay.py
  30. 20 10 * * 7 python /home/pi/relay.py
  31. 0 12 * * 7 python /home/pi/relay.py
  32. 50 12 * * 7 python /home/pi/relay.py
  33. 0 13 * * 7 python /home/pi/relay.py
  34. 0 17 * * 7 python /home/pi/relay.py
  35. 0 18 * * 7 python /home/pi/relay.py
  36.  



5. รอเวลาสั่งเมื่อถึงเวลา Relay จะดังตามเวลาที่ตั้งไว้
6. ตั้งค่าเวลาของ Raspberry PI ให้ตรง โดยทำตาม Blogs

Zimbra Server External Install BIND9 for Network Address Translator (NAT 1-1)

Zimbra Server External Install BIND9 for Network Address Translator (NAT 1-1)
1. Install bind9
  1. sudo apt-get install bind9

2. ทำการแก้ไขไฟล์ /etc/bind/named.conf.options และแก้บรรทัด forwarders โดยให้ใส่ไอพี DNS ของเราลงไป และใส่ zone ของโดเมนเราลงไป
  1. nano /etc/bind/named.conf.options

ใส่ข้อมูล
  1. options {
  2.         directory "/var/cache/bind";
  3.  
  4.         // If there is a firewall between you and nameservers you want
  5.         // to talk to, you may need to fix the firewall to allow multiple
  6.         // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
  7.  
  8.         // If your ISP provided one or more IP addresses for stable
  9.         // nameservers, you probably want to use them as forwarders.
  10.         // Uncomment the following block, and insert the addresses replacing
  11.         // the all-0's placeholder.
  12.  
  13.          forwarders {
  14.                 8.8.8.8;
  15.          };
  16.  
  17.         //========================================================================
  18.         // If BIND logs error messages about the root key being expired,
  19.         // you will need to update your keys.  See https://www.isc.org/bind-keys
  20.         //========================================================================
  21.         dnssec-validation auto;
  22.  
  23.         auth-nxdomain no;    # conform to RFC1035
  24.         listen-on-v6 { any; };
  25. };
  26.  
  27. zone "zimbra.komkid.net" {
  28.         type master;
  29.         file "db.zimbra.komkid.net";
  30. };


3. สร้างไฟล์ /var/cache/bind/db.zimbra.komkid.net โดยให้ชื่อไฟล์ตรงกับบรรทัด file ใน zone ที่เราเพิ่งสร้าง
  1. nano /var/cache/bind/db.zimbra.komkid.net

ใส่ Code
  1. $ttl 38400
  2. @       IN      SOA     zimbra.komkid.net. zimbra.komkid.net. (
  3.                         2011091202
  4.                         10800
  5.                         3600
  6.                         604800
  7.                         38400 )
  8.         IN      NS      ns1.zimbra.komkid.net.
  9.         IN      NS      ns2.zimbra.komkid.net.
  10.         IN      A       192.168.2.111
  11.         IN      MX      10 zimbra.komkid.net.
  12.  
  13. @       A       192.168.2.111
  14. ns1     A       192.168.2.111
  15. ns2     A       192.168.2.111
  16. webmail A       192.168.2.111
  17.  


4. แก้ไขไฟล์ /etc/resolv.conf
  1. nano /etc/resolv.conf

ใส่ข้อมูล
  1. search  zimbra.komkid.net
  2. nameserver 127.0.0.1
  3.  
  4. ##ใส่เพื่อให้ออก Internet ได้
  5. nameserver 203.113.127.199
  6. nameserver 203.113.24.199
  7. nameserver 8.8.8.8
  8. nameserver 8.8.4.8


5. restart bind9
  1. sudo /etc/init.d/bind9 restart


6. ทดสอบด้วยการใช้คำสั่ง dig ซึ่งควรจะได้ผลลัพธ์กลับมาตามตัวอย่าง
  1. dig zimbra.komkid.net mx

จะต้องได้ผลแบบนี้
  1. ; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> zimbra.komkid.net mx
  2. ;; global options: +cmd
  3. ;; Got answer:
  4. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22673
  5. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4
  6.  
  7. ;; OPT PSEUDOSECTION:
  8. ; EDNS: version: 0, flags:; udp: 4096
  9. ;; QUESTION SECTION:
  10. ;zimbra.komkid.net.     IN  MX
  11.  
  12. ;; ANSWER SECTION:
  13. zimbra.komkid.net.  38400   IN  MX  10 zimbra.komkid.net.
  14.  
  15. ;; AUTHORITY SECTION:
  16. zimbra.komkid.net.  38400   IN  NS  ns2.zimbra.komkid.net.
  17. zimbra.komkid.net.  38400   IN  NS  ns1.zimbra.komkid.net.
  18.  
  19. ;; ADDITIONAL SECTION:
  20. zimbra.komkid.net.  38400   IN  A   192.168.2.111
  21. ns1.zimbra.komkid.net.  38400   IN  A   192.168.2.111
  22. ns2.zimbra.komkid.net.  38400   IN  A   192.168.2.111
  23.  
  24. ;; Query time: 1 msec
  25. ;; SERVER: 127.0.0.1#53(127.0.0.1)
  26. ;; WHEN: Thu Feb 04 10:56:53 ICT 2016
  27. ;; MSG SIZE  rcvd: 146
  28.  


เพิ่มเติม http://www.wingfoss.in.th/content/how-t ... -on-ubuntu (ไม่ผ่านตรงใส่ชื่อ domain ต้องใส่เต็ม)
ผ่าน ทำตามนี้ใส่ชื่อ Domain เต็ม http://tusar-work-experience-2013.blogs ... -post.html

Firewall Zimbra External Server NAT 1:1 pfsense firewall

Firewall Zimbra NAT 1:1 pfsense firewall

1. สร้าง Virtual IP ที่ Firewall ---> Virtual IPs New ขึ้นมาใหม่ ตามรูป


จะได้

ดูตัวอย่าง
https://www.youtube.com/watch?v=5lMRA1ntgz8

2. ไปที่ NAT เข้าไปที่ Firewall ---> NAT เลือก Tab 1:1 New NAT ใหม่ขึ้นมา ตามรูป

จะได้
3. สร้าง Rules ให้ Wan สามารถเข้าจาก Wan มาได้ ผ่าน Port อะไรบ้าง หรือทดลองให้ผ่านทั้งหมดก็ได้ any


 

เปลี่ยน IP Zimbra Server

เปลี่ยน IP Zimbra Server เช่นเปลี่ยนจาก 203.113.114.242 เป็น 192.168.2.111

1) su - zimbra
2) zmcontrol stop
3) Editing /etc/hosts
4) Editing
  1. nano /etc/network/interfaces
changing the old IP address to the new one in there.
  1. auto eth0
  2. iface eth0 inet static
  3.         address                 192.168.2.111
  4.         broadcast               192.168.2.255
  5.         network                 192.168.2.0
  6.         netmask                 255.255.255.0
  7.         gateway                 192.168.2.2
  8.  
  9.         dns-nameservers         203.113.127.199
  10.         dns-nameservers         203.113.24.199
  11.         dns-nameservers         8.8.8.8
  12.         dns-nameservers         8.8.4.4
  13.  
  14.         #address                203.113.114.242
  15.         #broadcast              203.113.114.247
  16.         #network                203.113.114.240
  17.         #netmask                255.255.255.248
  18.         #gateway                203.113.114.241

5) service network restart (no need to restart server i think)
*Some time service zmcontrol start automatic. Not do stap 6 - 7.
6) su - zimbra
7) zmcontrol start

https://community.zimbra.com/collaborat ... /t/1135082

เพิ่มเติมต้องเข้าไปแก้ IP ในหน้า Admin ด้วย โดย
1. เข้าไปที่ Admin ----> Configure ----> Servers คลิกขวา Edit ตามรูป
2. ไปที่ MTA ตรง ช่อง MTATrasted Network ให้แก้จาก IP เดิมเช่น จาก 203.113.114.242 เป็น 192.168.2.111

เปลี่ยน IP Mikrotik

เปลี่ยน IP Mikrotik ต้องเปลี่ยน 2 ที่คือ
1. ที่ Quick Set ตรง Staic จากเดิม IP : 203.113.114.242 เปลี่ยนเป็น 192.168.4.1 ตามรูป
2. ไปที่ menu IP --> Addresses และดับเบิลคลิก เลือก IP ที่เป็น WAN1 II-internet (ether1) IP:203.113.114.242/29
แล้วใส่ IP ใหม่เข้าไป 192.168.4.1/24

How do I delete a user profile on a Windows 7 machine that is part of a domain?

How do I delete a user profile on a Windows 7 machine that is part of a domain?
เมื่อ Windows 7 Log in แล้วเป็น Tmp User พอ Reboot ข้อมูลหน้าจอหาย

1. You can do it with the User Profiles dialog in System Properties:

- Log in as different user (with admin privileges) than you want to delete
- Open Properties for Computer
- Advanced system settings (on the left side)
- Settings for User Profiles (in the middle)
- Select the profile you want to delete and click the delete button
2.To clear user local profile via registry:

- Press on Start > Run >Regedit
- Navigate to the following registry key :“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList”
- Under ProfileList navigate to binary key’s like this: S-1-5-21-3656904587-1668747452-4095529-500
- On the right side under ProfileImagePath you'll see the profile path.
- Chose the one with the desired user and delete the long registry key like: “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList”

http://superuser.com/questions/63017/how-do-i-delete-a-user-profile-on-a-windows-7-machine-that-is-part-of-a-domain

Windows 8 Tips - Completely Shut Down เปิดฝา notebook แล้วเครื่อง

Windows 8 Tips - Completely Shut Down เปิดฝา notebook แล้วเครื่องติดเอง แต่ถ้าไม่ต้องการให้ติดทำอย่างไร
 สำหรับคนที่อัพเกรดโน้ตบุ๊คเป็น Windows 8 เรียบร้อยแล้วได้สังเกตกันหรือเปล่าครับว่าเมื่อ shutdown แล้วเปิดอีกครั้งมันจะบูตไวมาก และเครื่องจะเปิดขึ้นอัตโนมัติเมื่อเปิดฝาโน้ตบุ๊คขึ้นมา ถ้าใครที่ไม่ได้ใช้โน้ตบุ๊คทุกวันเนี่ย จะมีปัญหาว่าพอจะเปิดใช้อีกทีแบตหมด!

เอ๊ะ แบตมันหมดได้ยังไงนะก็ในเมื่อเรา shutdown ไปแล้ว?
นั่น เป็นเพราะว่าใน Windows 8 เมื่อเราสั่ง shutdown เครื่อง นั้นค่า default ของมันคือ hybrid shutdown ซึ่งระบบก็จะเก็บข้อมูลต่าง ๆ เช่น OS kernel, driver เก็บไว้ในฮาร์ดดิสก์ เมื่อเริ่มใช้งาน Windows 8 จะโหลดข้อมูลจาก hibernation file ขึ้นมา ทำให้เปิดเครื่องได้เร็วขึ้นนั่นเอง
จะเห็นได้ว่า ความเร็วของ fast startup นั้นเร็วกว่า cold boot (เริ่ม OS ใหม่ แบบเดียวกับ restart) มาก
แต่การทำแบบนี้ไม่เหมาะกับการปิดเครื่องนาน ๆ เพราะว่ายังมีการใช้พลังงานอยู่ ถ้าทิ้งไว้ 1 สัปดาห์ แบตอาจจะหมดเกลี้ยงได้เลย

มา ดูกันครับว่ามีวิธีการอย่างไรบ้างที่จะ shutdown แบบไม่ใช้งาน fast startup ซึ่งถ้าเปิดเครื่องอีกครั้งก็จะเป็น cold boot นั่นเอง ตามนี้ครับ

1. กดปุ่ม Windows + I จะมี Settings charm ขึ้นมาทางด้านขวา
2. คลิก Power
3. กดปุ่ม Shift ค้างไว้แล้วคลิก Shut down
ซึ่งเราสามารถทำใช้วิธีนี้กับหน้าจอที่ป้อน password ได้เช่นเดียวกัน
แต่วิธีนี้เหมาะสำหรับคนที่ต้องการ completely shut down เป็นบางครั้ง เช่น พักร้อน หรือวันหยุดสุดสัปดาห์

แต่ เราสามารถปิดฟังก์ชั่น fast startup ไปถาวรเลยก็ได้เหมือนกัน (ซึ่งสำหรับคนที่ใช้เครื่องเป็นประจำไม่แนะนำครับ เพราะว่าบูตเครื่องช้ากว่ากันพอสมควรเลย) โดยทำดังนี้

1. กดปุ่ม Windows + W จะเป็นการ Search หาในหมวด Settings
2. พิมพ์คำว่า "Power"
3. เลือก Power Options

 4. ที่หน้าต่าง Power Options คลิกที่ "Choose what closing the lid does"
5. คลิก "Change settings that are currently unavailable
6. ในส่วนของ Shutdown settings เอา "Turn on fast startup (recommended)" ออก



 เพียงเท่านี้ทุกครั้งที่กด Shut down ก็จะเป็นการ Shut down เครื่องแบบที่ปิดสนิท และไม่กินแบตระหว่างที่ปิดเครื่องด้วย แต่ข้อเสียคือบูตเข้า Windows ช้า

ดังนั้นขอแนะนำว่าให้เปิดฟังก์ ชั่นนี้ไว้จะดีกว่า ถ้าเมื่อไหร่ที่คาดว่าจะไม่ได้กลับมาเปิดเครื่องอีกนานก็ค่อยกด Shift + Shut down แทน มีแค่เรื่องแบตที่จะถูกกินไปเรื่อย ๆ เท่านั้น เรื่องประสิทธิภาพในการใช้งานไม่ต่างกัน แต่สามารถบูตเครื่องได้ไว ทำให้เริ่มทำงานได้เร็วขึ้น

ที่มา http://obnetarena.blogspot.com/2013/02/windows-8-tips-completely-shut-down.html