วันอังคารที่ 20 กุมภาพันธ์ พ.ศ. 2561

Automatic host availability and discovery check PhPim

1.) Configure the parameters for pinging

Set the time parameters for status under Administration > IPAM settings (Ping status intervals), phpipam will set host as down/up based on this values. Also, set the proper icmp parameters and paths.

2.) Select which networks to check

subnet scan selection
Now you have to select which subnets should scan for statuses for configured hosts. 

Go to edit subnet and check “Check hosts status”. This will tell the cron script to check the status of hosts inside this subnet. “Discover new hosts” will try to find new hosts for this subnet and will automatically add them to phpipam database.

3.) Add cron script

I suggest checking it per 15 minutes:
*/15 * * * * sudo /usr/bin/php /home/admin/web/study.rmutl.ac.th/public_html/functions/scripts/discoveryCheck.php
*/15 * * * * sudo /usr/bin/php /home/admin/web/study.rmutl.ac.th/public_html/functions/scripts/pingCheck.php
Change the paths according to your installation of course 🙂

@@@@ On vestacp @@@@

วันจันทร์ที่ 19 กุมภาพันธ์ พ.ศ. 2561

vestacp backup 1 file

You just need to edit file 
/usr/local/vesta/data/users/admin/user.conf (or any other user you want to fix)
Look for BACKUPS="?" line to adjust how many backups will be kept.


/usr/local/vesta/data/users/editbyuser/user.conf 

แบ่ง IP

https://subnettingpractice.com/vlsm.html

QR CODE สวยๆ

https://www.unitag.io/qrcode

ได้เคยเขียน แนะนำเกี่ยวกับเว็บไซต์ที่ใช้สำหรับสร้าง QR Code สวย ๆ มาแล้ว 2 ครั้ง ซึ่งแต่ละครั้งก็ห่างกันพอสมควร จน บางเว็บไซตื ที่ได้แนะนำปิดการใช้ฟรีเปลี่ยนมาเก็บตังค์แทน ทำให้เสียอารมณ์ ไปกันไม่มากก็น้อย ไม่เป็นไร ครับ ตามหลักการของผู้เขียน คือต้องหาของฟรีมาใช้ให้ได้ และใช้ได้ ดี เลย ขอแนะนำอีกเว็บไซต์ ที่ใช้ในการสร้าง QR Code แบบสวย ๆ อีกเว็บไซต์ หนึ่งคือ  https://www.unitag.io/qrcode ซึ่งในการสร้าง QR Code ของเว็บไซต์นี่มีแค่ 2 ขั้นตอน คือ หนึ่งเลือก ข้อมูลที่จะแสดง และสองปรับแต่ง QR Code ที่ได้ให้สวย  ดังรูป

ขั้นตอนการสร้าง QR Code ของเว้บนี้ ไม่มีอะไรมาก กล่าวคือ
1. เลือก ที่จะแสดงข้อมูล  โดยในการเลือก จะมี แท๊บให้เลือก โดยปกติจะอยู่ใน ส่วน Web & Social Network ซึ่งเราสามารถเลือกไปยัง ชนิดอื่น โดยแท๊บไปที่ Other Type

จากนั้นก็ใส่ข้อมูลตามที่แต่ละชนิดที่เราเลือกไว้ ให้ ใส่ เช่น ถ้าเลือกเป็น Web ก้ใส่ URL เป็นต้น จากนั้นก็ กด Confirm รูป QR Code จะแสดงด้านขวามือซึ่งเป็น QR Code แบบปกติ ที่ใช้กันซึ่งเราสามารถที่จะนำไปใช้ได้ทันที แต่ ถ้า QR Code ที่ได้ยังไม่ฟุ้งฟิ้ง ก็ เลือกปรับแต่ง โดยไปที่รายการที่สอง
2. ปรับแต่ง โดยการปรับแต่ง สามารถปรับแต่ง ส่วนต่าง ๆ ได้ เช่น รูปแบบ QR Code (Templates) สี โลโก้ และอื่น ๆ ให้เราปรับแต่ง จนกว่า จะพอใจ โดยการปรับแต่งนัี้น รูป QR Code จะเปลี่ยนไป ตามที่เราปรับแต่ง เมือเราปรับแต่เสร็จ ก็ ดาวน์โหลดมาใช้งานได้ทันที


นี่ก็เป็นอีกเว็บที่ทำให้่เราสร้าง QR Code ได้ตามที่เราต้องการ โดยที่ไม่ซ้ำซากจำเจ กับ QR Code ขาวดำ

วันพุธที่ 14 กุมภาพันธ์ พ.ศ. 2561

วิธีดึงเวลาสากล จาก Internet มาใช้งานกับ ESP8266

วิธีดึงเวลาสากล จาก Internet มาใช้งานกับ ESP8266

วิธีดึงเวลาสากล จาก Internet มาใช้งานกับ ESP8266


      สำหรับนักพัฒนา เรื่องของเวลาถือเป็นเรื่องที่น่าเบื่อ และน่ารำคาญ พอสมควร สำหรับงานที่ต้องการเสถียรภาพของเวลา เช่น การตั้งเวลาเพื่อควสบคุมอุปกรณ์ต่างๆ หรือการบันทึกข้อมูลจากฐานเวลา เป็นต้น อุปกรณ์ที่ใช้นับเวลา โดยทั่วไปนั้น คือ โมดูลนาฬิกา (Real Time Clock Module) ซึ่งก็พอมีให้เลือกอยู่หลายชนิดด้วยกัน ตั้งแต่ราคาถูกๆ ซึ่งก็ใช้งานได้ตามสภาพ ไปจนถึงราคาแพงๆ


        แต่ทุกวันนี้อุปกรณ์ Microcontroller เข้าสู่ยุคของ Internet of things แล้ว ในเมื่ออุปกรณ์ควบคุมสามารถเชื่อมต่อกับ Internet ได้ เวลาก็ไม่ใช่ปัญหาอีกต่อไป บทความนี้จะเป็นการนำNode MCU หรือ ESP8266 มาตั้งเวลา โดยไม่ต้องใช้โมดูลนาฬิกา แต่จะเป็นการดึงเอาเวลาสากลจาก Server มาใช้งานแทน

       เตรียม ESP8266 หรือ Node MCU ของท่านให้พร้อม แล้วมาเริ่มกันเลย..!!

          1) สำหรับใครที่ยังไม่ได้ติดตั้ง ESP8266 บน Arduino IDE ก่อนอื่นให้ติดตั้ง Board ESP8266 ก่อน ดูวิธีการติดตั้งได้จาก บทความ การใช้งาน NodeMCU + Arduino IDE + Blynk App

          2) เมื่อติดตั้งเสร็จแล้ว ให้ Copy หรือ เขียน Code ตามตัวอย่าง

#include <ESP8266WiFi.h>
#include <time.h>
const char* ssid = "ssid"; //ใส่ชื่อ SSID Wifi
const char* password = "password"; //ใส่รหัสผ่าน
int timezone = 7 * 3600; //ตั้งค่า TimeZone ตามเวลาประเทศไทย
int dst = 0; //กำหนดค่า Date Swing Time
void setup()
{
Serial.begin(115200);
Serial.setDebugOutput(true);
WiFi.mode(WIFI_STA); //เชื่อมต่อ Wifi
WiFi.begin(ssid, password);
Serial.println("\nConnecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(",");
delay(1000);
}
configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดึงเวลาจาก Server
Serial.println("\nWaiting for time");
while (!time(nullptr)) {
Serial.print(".");
delay(1000);
}
Serial.println("");
}
void loop()
{
configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดีงเวลาปัจจุบันจาก Server อีกครั้ง
time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);
delay(1000);
}
view rawGetTime.ino hosted with ❤ by GitHub

          3) ทำการ Upload Program ให้เรียบร้อย แล้วเปิด Serial Monitor


         โปรแกรมก็จะแสดง วัน และเวลาปัจจุบัน ออกทาง Serial Monitor เพียงเท่านี้เราก็จะได้เวลาปัจจุบันโดยไม่ต้องต่อ RTC แล้ว

         แล้วเราจะ ดึงค่าเวลา ต่างๆ มาใช้ยังไง ????? ง่ายมากครับ ให้สังเกตุที่บรรทัด  struct tm* p_tm = localtime(&now)  ซึ่งเป็น Struct เก็บค่าตัวแปรต่างๆไว้ ดังนี้


struct tm {
   int tm_sec;         /* วินาที,  range 0 to 59          */
   int tm_min;         /* นาที, range 0 to 59           */
   int tm_hour;        /* ชั่วโมง, range 0 to 23             */
   int tm_mday;        /* วันที่, range 1 to 31  */
   int tm_mon;         /* เดือน, range 0 to 11             */
   int tm_year;        /* ปีคริสศักราช ตั้งแต่ 1900   */
   int tm_wday;        /* วัน, range 0 to 6    */
   int tm_yday;        /* วันใน 1 ปี, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};

        เราสามารถนำค่า Parameter ต่างๆ ไปใช้งานได้เลย โดยใช้ตัวแปร p_tm->tm_hour (ตัวแปรเก็บค่าชั่วโมง) คราวนี้ ผมจะลองดึงเฉพาะ วินาที แสดงออกทาง Serial Monitor โดยเพิ่มโค้ด Serial.Print (p_tm -> tm_sec) เข้าไป ตามตัวอย่าง


void loop()
{
  //configTime(timezone, dst, "pool.ntp.org", "time.nist.gov");    //แสดงเวลาปัจจุบัน
  time_t now = time(nullptr);
  struct tm* p_tm = localtime(&now);
  Serial.print("Sec = ");
  Serial.print(p_tm->tm_sec);
  Serial.println("");
  delay(1000);
}

       ทดสอบการทำงาน


      เพียงเท่านี้เราก็สามารถเลือกค่าเวลาต่างๆ ไปใช้ในการ แสเงเวลา หรือตั้งเวลา ได้เลย โดยไม่ต้องเสียเงินซื้อ RTC Module อีกต่อไป.....


*********************************************************************************
 Montien Ngamkaew 
*********************************************************************************