5/07/2018

MQTT : ส่งค่าจากเครื่อง Clients ไป MQTT Server

MQTT : ส่งค่าจากเครื่อง Clients ไป MQTT Server
1. ติดตั้ง
  1. apt install mosquitto-clients


2. ลองส่งข้อมูลไปที่ state_topic ที่ต้องการเช่น
  1. mosquitto_pub -h 192.168.2.200 -t "hass/speedtest" -m 210


3. Code ส่ง Python
  1.        import paho.mqtt.client as mqtt
  2.  
  3.         mqttc = mqtt.Client("python_pub")
  4.         mqttc.connect("192.168.2.200", 1883)
  5.         mqttc.publish("hass/speedtest", Value ที่จะส่งไป)
  6.         mqttc.loop(2) #timeout = 2s


ถ้ามี Error
  1. Traceback (most recent call last):
  2.   File "nettest.py", line 62, in <module>
  3.     test()
  4.   File "nettest.py", line 48, in test
  5.     import paho.mqtt.client as mqtt
  6. ImportError: No module named paho.mqtt.client


ต้อง Run คำสั่ง
  1. pip install paho-mqtt

5/03/2018

ติดตั้ง Home Assistant

Home Assistant : https://home-assistant.io
เป็นระบบสำหรับควบคุมและติดตามการทำงานของอุปกรณ์ภายในบ้านได้หลากหลายชนิด

ขั้นตอนการติดตั้ง : https://home-assistant.io/docs/installation/raspberry-pi/
1.ติดตั้ง Ubuntu Server (16.04)
2.ติดตั้ง Python virtual environment
  1. sudo add-apt-repository ppa:deadsnakes/ppa
  2. sudo apt-get update
  3. sudo apt-get install python3.6
  4. sudo apt-get install -y python3.6-venv python3.6-dev

3.สร้าง User สำหรับ Setup และ Run ระบบ
  1. sudo useradd -rm homeassistant
  2. cd /srv
  3. sudo mkdir homeassistant
  4. sudo chown homeassistant:homeassistant homeassistant

4.สร้าง Virtual Environment
  1. sudo su -s /bin/bash homeassistant
  2. cd /srv/homeassistant
  3. python3.6 -m venv .
  4. source bin/activate

5.ติดตั้ง pacakage เพิ่ม
  1. python3.6 -m pip install wheel

6.ติดตั้ง Home Assistant
  1. pip3 install homeassistant

7.สั่งให้ระบบทำงาน
  1. hass

8.เรียกใช้งานที่ port 8123
  1. ้http://homeassistant:8123


ตั้งค่าให้ทำงานตอน start
: https://home-assistant.io/docs/autostart/systemd/
  1. [Unit]
  2. Description=Home Assistant
  3. After=network-online.target
  4.  
  5. [Service]
  6. Type=simple
  7. User=%i
  8. ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
  9.  
  10. [Install]
  11. WantedBy=multi-user.target

  1. sudo systemctl --system daemon-reload
  2. sudo systemctl enable home-assistant@homeassistant //disable
  3. sudo systemctl start home-assistant@homeassistant // stop : restart : status

  1. sudo journalctl -f -u home-assistant@homeassistant


Upgrade :
  1. sudo systemctl stop home-assistant@homeassistant
  2. sudo su -s /bin/bash homeassistant
  3. cd /srv/homeassistant
  4. source bin/activate
  5. python3.6 -m pip install --upgrade homeassistant
  6. sudo systemctl start home-assistant@homeassistant

Line Notify

Line เปิดให้บริการที่ชื่อว่า Line Notify ซึ่งทำให้สามารถส่งข้อความหาบุคคลหรือกลุ่มได้
1.สมัครใช้บริการที่ https://notify-bot.line.me/my/
2.สร้าง Token โดยตั้งชื่อซึ่งจะใช้เป็นชื่อผู้ส่งข้อความ และเลือกบุคคลหรือกลุ่มที่ต้องการส่งข้อความถึง แล้วคลิก ออก Token
3.นำ Token ไปเขียน code สำหรับส่งข้อความ เช่น
  1. <?php
  2. define('LINE_API',"https://notify-api.line.me/api/notify");
  3.  
  4. $token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //ใส่Token ที่copy เอาไว้
  5. //$str = "Hello"; //ข้อความที่ต้องการส่ง สูงสุด 1000 ตัวอักษร
  6. $str = $_GET["msg"];
  7.  
  8. $res = notify_message($str,$token);
  9. print_r($res);
  10. function notify_message($message,$token){
  11.  $queryData = array('message' => $message);
  12.  $queryData = http_build_query($queryData,'','&');
  13.  $headerOptions = array(
  14.          'http'=>array(
  15.             'method'=>'POST',
  16.             'header'=> "Content-Type: application/x-www-form-urlencoded\r\n"
  17.                       ."Authorization: Bearer ".$token."\r\n"
  18.                       ."Content-Length: ".strlen($queryData)."\r\n",
  19.             'content' => $queryData
  20.          ),
  21.  );
  22.  $context = stream_context_create($headerOptions);
  23.  $result = file_get_contents(LINE_API,FALSE,$context);
  24.  $res = json_decode($result);
  25.  return $res;
  26. }
  27. ?>

4.เพิ่ม Account ของ Line Notify เป็นสมาชิกในกลุ่มนั้น
5.เรียกใช้ code แล้วจะได้ json บอกผลลัพธ์มา

ตัวอย่างการใช้งาน :
6.แจ้งเตือนเมื่อมีการ login เข้า server (เพิ่ม code เข้าไปที่ .profile หรือ .bash_profile)
  1. curl -X POST -H 'Authorization: Bearer [xxxxxxxxxxxxxxxxxxx]' -F 'message=Somebody login to server' https://notify-api.line.me/api/notify

หรือ
  1. wget --no-check-certificate 'https://intranet.sci.com/sci/Line/notify.php?msg=Somebody%20login%20to%20Server'

หรือ
  1. curl --insecure 'https://intranet.sci.com/sci/Line/notify.php?msg=Somebody%20login%20to%20Server'

5/02/2018

Ubuntu :: Ubuntu 10.04 Error Update

Ubuntu :: Ubuntu 10.04 Error Update
  1. apt-get update

show error
Err http://th.archive.ubuntu.com lucid/main Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/restricted Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/main Sources
404 Not Found
Err http://th.archive.ubuntu.com lucid/restricted Sources
404 Not Found
Err http://th.archive.ubuntu.com lucid/universe Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/universe Sources
404 Not Found
Err http://th.archive.ubuntu.com lucid/multiverse Packages
404 Not Found
Err http://th.archive.ubuntu.com lucid/multiverse Sources
404 Not Found


Err http://security.ubuntu.com lucid-security/main Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/restricted Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/main Sources
404 Not Found
Err http://security.ubuntu.com lucid-security/restricted Sources
404 Not Found
Err http://security.ubuntu.com lucid-security/universe Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/universe Sources
404 Not Found
Err http://security.ubuntu.com lucid-security/multiverse Packages
404 Not Found
Err http://security.ubuntu.com lucid-security/multiverse Sources
404 Not Found
W: Failed to fetch http://th.archive.ubuntu.com/ubuntu/dis ... ackages.gz 404 Not Found

W: Failed to fetch http://th.archive.ubuntu.com/ubuntu/dis ... ackages.gz 404 Not Found

W: Failed to fetch http://th.archive.ubuntu.com/ubuntu/dis ... Sources.gz 404 Not Found


วิธีแก้
1. backup ไฟล์ sources.list ไว้ก่อน อยู่ที่ /etc/apt/sources.list
2. ใช้คำสั่ง
  1. sudo sed -i.bak -r 's/(th.archive|security).ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

3. ทดลอง update upgrade ดู

https://gist.github.com/dergachev/f5da514802fcbbb441a1
https://askubuntu.com/questions/805523/apt-get-update-for-ubuntu-10-04

4/28/2018

Vmware : Vmawre Esxi 6.5 status invalid ไม่สามารถลบปกติได้ ด้วยการคลิกขวา ลบ หรือ Unregister ได้

Vmware : Vmawre Esxi 6.5 status invalid ไม่สามารถลบปกติได้ ด้วยการคลิกขวา ลบ หรือ Unregister ได้
แก้โดย
vmware remove virtual machine status invalid by command
1. ssh เข้าเครื่อง Server Vmware ที่ Error
2. Stop vpxa and hostd service before edit คำสั่งนี้ Server อื่น ๆ ยังสามารถเข้าใช้งานได้ตามปกติ
  1. /etc/init.d/vpxa stop
  1. /etc/init.d/hostd stop

3. เข้าไปที่ /etc/vmware/hostd
  1. cd /etc/vmware/hostd

3. แก้ไฟล์ vmInventory.xml ด้วยคำสั่ง vi backup ไฟล์เดิมไว้ก่อนแก้ไขด้วย
  1. vi vmInventory.xml

4. หา Line ที่ Vm Error แล้วกด ลบ ด้วยการกด dd ลบทั้งบรรทัดออก
เช่น
  1.  <ConfigEntry id="0002">
  2.     <objID>3</objID>
  3.     <secDomain/>
  4.     <vmxCfgPath>/vmfs/volumes/590cca43-c78bd3ac-1234-000c2908a466/VMware vCenter Server Appliance/VMware vCenter Server Appliance.vmx</vmxCfgPath>
  5.   </ConfigEntry>

5. กด :wq เพื่อออกจาก จาก คำสั่ง vi
6. Start service vpxa and hostd service
  1. /etc/init.d/vpxa start
  1. /etc/init.d/hostd start

เสร็จแล้วลองเข้าดู Vm ที่ Error จะหายไป
https://communities.vmware.com/thread/582673
คำสั่ง vi เพิ่มเติม
http://thaiopensource.org/%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-vi-editor-%E0%B9%80%E0%B8%9A%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%99/