Setting printer USB di Raspberry Pi

sudo chown www-data:www-data etc
sudo chmod 775 etc
sudo chown www-data:www-data /dev/usb/lp0

source:
https://www.howtogeek.com/169679/how-to-add-a-printer-to-your-raspberry-pi-or-other-linux-computer/
https://kernelmastery.com/enable-regular-users-to-add-printers-to-cups/
https://maker.pro/raspberry-pi/projects/how-to-turn-a-usb-printer-into-a-wireless-printer-with-raspberry-pi-zero-w

Setting printer serial di raspberry pi

sudo raspi-config

“Interfacing Options,” “Serial.” Turn OFF: login shell over serial, ENABLE: hardware serial port
“Interfacing Options,” enable SSH

sudo apt-get update
sudo apt-get install git cups wiringpi build-essential libcups2-dev libcupsimage2-dev python-serial python-pil python-unidecode

cd ~
git clone https://github.com/adafruit/zj-58
cd zj-58
make
sudo ./install

sudo usermod -a -G lp pi
sudo usermod -a -G lp www-data
reboot

sudo lpadmin -p ZJ-58 -E -v serial:/dev/serial0?baud=9600 -m zjiang/ZJ-58.ppd
sudo lpoptions -d ZJ-58

git clone https://github.com/adafruit/Python-Thermal-Printer
cd Python-Thermal-Printer
python printertest.py

sudo usermod -a -G dialout www-data
sudo usermod -a -G dialout pi
reboot

Membuat Daemon di Raspberry Pi

Buka terminal lalu ketik:

hciconfig
hcitool scan

Nama perangkat biasanya bernama: hci0
Misalkan hasilnya adalah:

66:12:13:EE:D1:76 Bluetooth Printer

Test printer dengan perintah:

sudo rfcomm bind /dev/rfcomm0 66:12:13:EE:D1:76 1
echo “Test” > /dev/rfcomm0

Jika printer berhasil mencetak maka koneksi sudah berhasil

Selanjutnya tambahkan file untuk daemon service

sudo leafpad /etc/systemd/system/rfcomm.service

Ketik kode berikut dan simpan:

[Unit]
Description=RFCOMM service
After=bluetooth.service
Requires=bluetooth.service

[Service]
ExecStart=/usr/bin/rfcomm bind hci0 66:12:13:EE:D1:76 1

[Install]
WantedBy=multi-user.target

Ganti nama hci0 dengan nama hasil hciconfig dan ganti 66:12:13:EE:D1:76 dengan hasil hcitool scan

Aktifkan daemon, ubah preferensi printer dan booting

sudo systemctl enable rfcomm
sudo systemctl start rfcomm
Sudo reboot

Menambahkan RTC pada Raspberry Pi 3

Setting antarmuka I2C

sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools
sudo raspi-config

Pilih Interfacing Option > I2C > Enable lanjutkan dengan booting. Selanjutnya test koneksi dengan perintah i2cdetect untuk antaruka I2C 1. (Cek juga antarmuka ke 0 jika perlu)

sudo i2cdetect -y 1 #isikan angka 1 bila mengunakan I2C1, isikan 0 bila menggunakan I2C 0

Setting RTC

sudo modprobe rtc-ds1307 #load rtc ke kernel
sudo bash #masuk ke super user
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device #tambahkan device ds1307 di alamat 0x68 ke I2C1
exit #keluar dari super user
sudo hwclock -r #baca waktu dari RTC
sudo hwclock -w #tulis RTC berdasarkan sistem

Set agar waktu yang digunakan menggunakan RTC

sudo nano /etc/modules #agar modul rtc-ds1307 diload
#tambahkan baris berikut:
i2c-bcm2708 
rtc-ds1307

sudo nano sudo nano /etc/rc.local #agar dijalankan saat booting
#tambahkan baris berikut sebelum exit 0:
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device #tambahkan device ds1307  di alamat 0x68 ke I2C1
sudo hwclock -s #set waktu yang digunkan adalah RTC
date #baca waktu saat ini dari RTC

Sumber:

Mengubah script python menjadi executable

Menggunakan Linux

Gunakan pyinstaller, pasang dengan:

pip install pyinstaller

Jika gagal, maka:

Buka: https://github.com/pyinstaller/pyinstaller/releases
Download: PyInstaller-3.3.1.tar.gz lalu extract dan masuk kedirektori tersebut.
Eksekusi dengan perintah:

sudo python setup.py build 
sudo python setup.py install

Selanjutnya ubah script python ke executable dengan

pyinstaller --onefile <script_phyton>.py

Jika dikatakan bootloader belum tersedia, misalnya untuk Linux ARM 32Bbit, maka harus dibuat dahulu. Pada hasil download PyInstaller ada direktori bootloader. Masuk ke direktori tersebut dan jalankan perintah:

sudo python ./waf all
cd ../PyInstaller/bootloader
cp -R Linux-32bit-arm/ /home/pi/.local/lib/python2.7/site-packages/PyInstaller/bootloader/Linux-32bit-arm/
 

sumber: https://pyinstaller.readthedocs.io/en/stable/bootloader-building.html

Menerima paket UDP dan meneruskan ke URL atau website

Gunakan script phyton ini:

import socket, urllib2

UDP_IP = "127.0.0.1"
UDP_PORT = 50000

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
#sock.bind((UDP_IP, UDP_PORT))
sock.bind(("", UDP_PORT)) #bind, receive from any addresss

while True:
 data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
 print "received message:", data
 stringdata = str(data)
 if stringdata[0] == "+":
 value = stringdata[2]
 karakter = ord(loket)
 karakter = karakter + 1;
 value = chr(karakter)
 url = "http://localhost/getUDP.php?var="+value
 print "url:", url
 response = urllib2.urlopen(url)
 headers = response.info()
 data = response.read()
 print data

Menambahkan autorun pada linux raspberry

buka direktori ~/config/autostart, buat jika belum ada dengan mkdir

buat file berektensi .desktop, misalnya chrome.desktop

lalu isikan script berikut

[Desktop Entry]
Type=Application
Name=Clock
[Desktop Entry]
Type=Application
Name=Clock
Exec=chromium-browser --kiosk --app=http://localhost/

Chrome akan berjalan setelah GUI terbuka, fullscreen tanpa notifikasi dengan sempurna. Namun jika ingin autorun saat booting, maka gunakan cara berikut:

sudo leafpad /etc/rc.local

sebelum bagian  exit 0 tambahkan kode berikut:

python /home/pi/blink.py &

Penting: Ampersand (&) dibutuhkan agar proses autorun tidak memblokir proses yang lain, dangan kata lain proses yang lain juga akan terbuka walaupun proses autorun ini belum sepenuhnya selesai. Jika tanpa tanda ampersand, maka proses autorun ini akan ditunggu hingga selesai baru proses lain dibuka. Akan menjadi masalah jika pada proses ini loop, maka tidak akan pernah bisa login.

Untuk menghentikan proses loop pada autorun, gunakan:

sudo ps -ax | grep python
sudo kill <PID>

ganti <PID> dengan nomor proses. Hati hati jangan keliru, komputer bisa hang!

sumber: https://learn.sparkfun.com/tutorials/how-to-run-a-raspberry-pi-program-on-startup/all

Autoplay Video pada HTML

bagian html, isikan:

<html>
<head>Video playlist</head>
<body>

<video autoplay id="myVideo" width="480" height="326" style="object-fit: fill;">
Browser tidak mendukung video
</video>

<script src='video/list.php'></script>

<script type="text/javascript">
var videoSource = new Array();
for(var x=0; x<=files.length; x++){
    videoSource[x]='http://localhost/antrian/video/'+files[x]+'.mp4';
}

var videoCount = videoSource.length;

document.getElementById("myVideo").setAttribute("src",videoSource[0]);

function videoPlay(videoNum)
{
    document.getElementById("myVideo").setAttribute("src",videoSource[videoNum]);
    document.getElementById("myVideo").load();
    document.getElementById("myVideo").play();
}

document.getElementById('myVideo').addEventListener('ended',myHandler,false);

var i=0;
function myHandler() {
    i++;
    if(i == (videoCount-1)){
        i = 0;
        videoPlay(i);
    }else{
        videoPlay(i);
    }
}

</body>
</html>

lalu buat file list.php pada direktory video, dengan mengisikan script berikut:

var files = <?php $out = array();
foreach (glob('*.mp4') as $filename) {
$p = pathinfo($filename);
$out[] = $p['filename'];
}
echo json_encode($out); ?>;

selanjutnya taruh file video dengan format mp4 ke direktori video