Posts

Showing posts from October, 2017

ตั้งเวลาเปิดพัดลมให้แมวด้วย Python กับ DHT11

1.ติดตั้งสิ่งที่จำเป็น sudo apt-get install git-core sudo apt - get install build - essential python - dev git clone https :// github . com / adafruit / Adafruit_Python_DHT . git cd  Adafruit_Python_DHT sudo python setup . py install 2.แก้ไข code ตัวอย่างสำหรับตรวจสอบอุณหภูมิ cd Adafruit_Python_DHT/examples nano  AdafruitDHT.py แก้ตรงส่วนเช็คอุณหภูมิด้านล่างของไฟล์ ถ้าอุณหภูมิสูงกว่า 27 องศา return ค่าเป็น 1 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None:     if temperature > 27:         print 1     else:         print 0  else:     print('Error') 3.สร้างไฟล์ dht11mqtt.h เพื่อเรียกใช้ python แล้วสั่งไปที่ MQTT Broker อีกที ( 11 คือ DHT 11 , 4 คือ GPIO 4 ) #!/bin/bash result=`python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py "11" "4"` if [ $result == "1" ]; then     echo "hot"     mosquitto_pub -h 192.168.x.x -t "cmnd/fan1/power&

How to schedule Power On/Off Raspberry Pi

Image
วิธีตั้งเวลา Power On/Off Raspberry Pi    เรื่อง Shutdown หรือ Wakeup Raspberry Pi หลายคนคงค้นเจอเยอะแล้ว แต่นี่น่าจะเป็นการ Power On และ Power Off ที่ค่อนข้างตรงความหมายจริง ๆ คือ จ่ายและหยุดจ่ายไฟ วงจรการทำงาน   ณ จุด ๆ นี้ ขอบอกเลยว่า เราเน้นที่การตั้งเวลา Power On และ Power Off ไม่ได้คำนึงในแง่ของการประหยัดไฟ ดังนั้นเราจะใช้อุปกรณ์มาควบคุมการจ่ายไฟเพิ่มนั่นก็คือ Sonoff นั่นเอง ตามรูป หลักการทำงาน Shutdown : 1.ตั้ง crontab ที่ Raspberry Pi ให้ shutdown ตามเวลาที่ต้อง sudo crontab -e 0 18 * * 1,2,3,4,5,6 /sbin/shutdown -h now Power Off/On  : 2.Setup MQTT Broker ตามตัวอย่าง  http://www.komkid.net/2017/10/mqtt.html 3.โปรแกรม Sonoff ให้เป็น MQTT Client ซึ่งมีหลายวิธี แต่ทำตามตัวอย่างนี้ ก็สะดวกดี  https://github.com/arendst/Sonoff-Tasmota  โดย setup ให้ subscribe ไปที่ topic ชื่อ raspberrypi 4.ตั้ง crontab ที่ broker หรือที่ MQTT Client ก็ได้ให้ publish ไปที่ topic ที่ว่า เช่น 3 18 * * * mosquitto_pub -h 127.0.0.1 -t "cmnd/ raspberrypi /power " -m "0&

ควบคุมอุปกรณ์ในบ้านด้วย home-assistant.io

1.ติดตั้ง (ที่มา :  https://home-assistant.io/docs/installation/raspberry-pi/ ) sudo apt-get install python3 python3-venv python3-pip sudo useradd -rm homeassistant $ cd /srv $ sudo mkdir homeassistant $ sudo chown homeassistant:homeassistant homeassistant $ sudo su -s /bin/bash homeassistant $ cd /srv/homeassistant $ python3 -m venv . $ source bin/activate ( homeassistant ) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant ( homeassistant ) $ hass 2.เข้าใช้งานที่ http://ipaddress:8123 3.ตั้งค่าให้ run เป็น service $ sudo nano /etc/systemd/system/ home-assistant@ homeassistant.service [Unit] Description=Home Assistant After=network.target [Service] Type=simple User=%i ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" [Install] WantedBy=multi-user.target $ sudo systemctl enable home-assistant@homeassistant $ sudo systemctl start home-assistant@homeassistant sudo journalctl -f -u home-assistant@homeassistant

Pi-Hole : Ads blocking via Raspberry Pi

Pi-Hole : Ads blocking via Raspberry Pi :  https://pi-hole.net/ - ปิดโฆษณาในระดับเครือข่าย คือ ปิดสำหรับทุกอุปกรณ์ที่เชื่อมต่อ - โฆษณา อ่านว่า โคด-สะ-นา มีเทคนิคให้จำได้จนขึ้นใจ คือ เจอคำนี้ให้คิดถึงโคตรพ่อโคตรแม่ไว้ จะอ่านถูก - ติดตั้งง่ายมาก ใช้คำสั่งเดียว คือ  curl -sSL https://install.pi-hole.net | bash - หลังจากติดตั้งแล้วจะได้รหัสผ่านสำหรับ login เข้าเมนู admin ต้องจำไว้ให้ดี ถ้าจำไม่ได้ต้องใช้คำสั่ง sudo pihole -a -p เพื่อสร้างรหัสใหม่ - ก่อนจะติดตั้ง ต้องบอกก่อนว่า pihole ทำงานผ่าน lighttpd บนพอร์ท 80 ถ้าใช้ apache อยู่ก่อนแล้วอาจมีปัญหา - หลังจากติดตั้งก็แล้วก็ตั้งค่า Router ให้จ่าย DHCP โดยใช้ pihole เป็น DNS - ถ้าตั้งค่าที่ Router ไม่ได้ ก็มาตั้งที่ pihole ซึ่งสามารถจ่าย DHCP  ได้ด้วย - บางเกมส์ใน Android ที่เปิดโอกาสให้ดู VDO เพื่อรับ Item หรือ Promotion พิเศษอาจจะถูก blocked ไปด้วย ต้อง login เข้าไป Disable Pi-hole ชั่วคราว

Pi-VPN : OpenVPN on Raspberry Pi

วิธี Setup ให้ Raspberry Pi เป็น OpenVPN Server (Pi-VPN) : https://www.sitepoint.com/setting-up-a-home-vpn-using-your-raspberry-pi/ 1.Download Script สำหรับ Setup curl -L https://install.pivpn.io | bash 2.เลือก Network Interface ที่จะใช้ 3.ระบบจะต้องใช้ Sataic IP เท่านั้น (จะเป็น Fixed Static หรือ Static DHCP ก็ได้) 4.เลือก User ที่จะเก็บ Config ใช้ pi เลยก็ได้ 5.เลือก unattended upgrades เพื่อให้ระบบทันสมัยและปลอดภัยอยู่เสมอ 6.เลือก port ที่จะใช้ ใช้ 1194 หรือจะเปลี่ยนเพื่อความปลอดภัยมากขึ้นอีกนิดก็ได้ (ต้องไปตั้งค่า port ของ client ให้ตรงกันด้วย) 7.ตั้งค่าความยากของการเข้ารหัสเป็น 2048 ตามที่ script แนะนำ (แล้วรอสักพักใหญ่ ๆ) 8.ตั้งค่าของ Public IP (ถ้า IP อาจมีการเปลี่ยนแปลงก็ใช้ DNS Entry แล้วเลือกใช้ของ Google ก็ได้) 9.สร้าง user สำหรับใช้งานด้วยคำสั่ง pivpn add หมายเหตุ  : ถ้าใช้ Raspbian Stretch อาจมีปัญหาในการ AUTHEN ต้องเปลี่ยน Key ใหม่ ดังนี้ cd /etc/openvpn/easy-rsa sudo ./easyrsa set-rsa-pass user sudo nano pki/private/user.key แล้ว copy Key รวมทั้ง Header

เริ่มต้นกับ MQTT

Image
MQTT เป็นชื่อ Protocol หนึ่งไว้สำหรับรับ-ส่งข้อมูลอย่างง่าย เป็นที่นิยมใช้ในอุปกรณ์ IOT : Internet Of Thing (รายละเอียด : https://en.wikipedia.org/wiki/MQTT ) หลักการทำงานพอสังเขป : 1.สื่อสารกันโดยประกาศว่าจะส่งข้อความ (Publish) และรอรับข้อความ (Subscribe) 2.มี Broker เป็นตัวกลางในการสื่อสาร สองรูปแทนสองหมื่นตัวอักษร (เครดิตรูปและคำอธิบายจาก https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Overview ) 1.ติดตั้ง Broker sudo apt-get install mosquitto 2.ติดตั้ง client sudo apt-get install mosquitto-clients 3.เริ่มใช้งาน 3.1 ให้ Client ตัวหนึ่ง สมัครรับข้อความทุกอย่างจาก Broker (สมัครรับหัวข้อ (topic) ไหน ก็จะได้รับเฉพาะ topic นั้น แต่ตัวอย่างนี้ใช้ # เพื่อขอดูทุก topic) mosquitto_sub -h 192.168.xx.xx -t "#" 3.2 ให้ client อีกตัว ประกาศข้อความ ในหัวข้อเรื่อง (topic) "obtrusive" mosquitto_pub -h 192.168.xx.xx -t "obtrusive" -m "Not yours" 3.3 Client ที่สมัครรับ topic นั้นไว้ก็จะได้รับข้อความ ตามตัวอย่าง 4.แนวทางการใช้งาน

เริ่มต้นใช้งาน Raspberry Pi

1.ติดตั้ง 1.1 Download Raspbian Image จาก  https://www.raspberrypi.org/downloads/raspbian/ 1.2 Download โปรแกรมสำหรับเขียน Image ลง SDCard  จาก  https://etcher.io/ 1.3 เขียน Image ลง SDCard 2.ปรับแต่งเบื้องต้น 2.1 ตั้งค่า WIFI โดยเปิด SDCard บน Computer แล้วแก้ไขไฟล์  /etc/wpa_supplicant/wpa_supplicant.conf ดังนี้ network={ ssid="SSID" psk="password" key_mgmt=WPA-PSK } 2.2 ทำให้ระบบทันสมัย sudo apt update sudo apt upgrade *** ถ้ามี  apt-cacher-ng  ก็สร้างไฟล์  /etc/apt/apt.conf.d/02-proxy  แล้วใส่ค่านี้ลงไป Acquire::http::Proxy "http://192.168.xx.xx:3142"; *** วิธี setup apt-cacher-ng จาก  github 2.3 สั่ง sudo raspi-config เพื่อตั้งค่าพื้นฐาน เช่น hostname, locale, timezone 3.ติดตั้ง GUI (ที่มา :  https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=133691 ) 3.1 ติดตั้งสิ่งที่จำเป็น sudo apt-get install --no-install-recommends xserver-xorg sudo apt-get install --no-install-recommends xinit sudo apt-g