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