- 파이썬 소스코드를 이용한 프로젝트를 경험해보진 못해서 자세한 레이아웃이나 명령어 사용법을 구체적으로 모른다.
- 그래도 최근 각광받고 있는 생성형 AI에게 원하는 소스코드를 질문하면 잘 구성해 주는 편이라 적절히 이용하고 있다.

- 그래서 만든 소스코드가 있는데, 구글 캘린더의 개인 일정을 읽어오라고 했더니 iCal 링크로 잘 읽어왔다.
-이부분을 라즈베리파이에 적용해서 라즈베리파이가 부팅할때 자동으로 실행하게 했더니 icalendar 모듈을 읽어오지 못하면서 실행이되지 않는다. 터미널을 열고 커맨드 모드에서 실행시키면 잘 작동하는데 왜 이럴까?

-chatGPT에게 물어보면 모듈을 새로 설치하라고 하면서 이런저런 도움을 주기는 하는데 잘 안풀린다.
-조금더 구체적으로 물었어야 하는데, 잘 안되었나보다. 

-결국 라즈베리파이가 부팅할때 넣어둔 쉘프로그램에 sudo python *****.py로 시작하는것이 문제였다.
-일반 유저로 python *****.py라고 실행하는 것과는 차이가 있다.
-일반적으로 root 계정과 pi 계정은 다른 site-packages 디렉토리를 사용하므로 sudo를 붙여 root 계정에서도 icalendar를 설치해야 합니다.  라고 chatGPT가 다시 알려준다.
- 그래서 sudo python3 -m pip install icalendar  이렇게 모듈을 다시 설치하고 부팅시키니 잘 작동한다.

-일반계정으로 소스코드를 만들어서 실행할 때와 부팅시 root권한으로 실행할 때 실행이 안될 수 있다는것을 기억해야 겠다.

-그런데, 최신버전의 라즈비안OS는 파이썬 프로젝트별로 가상화를 이용할 것을 추천한다. 
이러한 상황에서 위에 적어둔 root계정에서의 설치시 
error: externally-managed-environment    이러한 에러를 내면서 설치해주지 않을때가 있다.

- 그럴땐, 

sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED

이렇게 입력하고 앞서 정리한 방식으로 모듈을 설치하면 이상없이 설치되고 작동한다.

Posted by 천칭
,

라즈베리파이를 이용해서 장난감 만들듯 내 핸드폰의 블루투스MAC어드레스를 체크해서 라즈베리파이가 인식하면 "재실"을 없으면 "부재"를 표현하는 파이썬 프로그램을 ChatGTP에게 부탁해서 여러 오류제거 끝에 완성하게 되었다.

이때 필요한 라이브러리가 sounddevice 이다. 제목과 같이 HDMI 케이블의 오디오 신호로 Beep음을 (모니터의 스피커로) 출력가능하게 해준다.

이 라이브러리는 pip install sounddevice 라는 명령어로 해결되지 않기에 이렇게 기록으로 남겨둔다.

[Ubuntu 또는 라즈베리파이(리눅스 계열) 적용]
sudo apt update
sudo apt install portaudio19-dev
pip install sounddevice --update

[MacOS 적용]
brew install portaudio
pip install sdounddevice --update

 

몇가지 추가기능을 부여하고 나름 완성도 높게 만들었다고 자부하는데...  와이파이의 DHCP 설정때문에 IP가 종종 변경되어 설정이나 관리측면에서 필요했던 SSH로 접속하기 위해 IP를 확인해야 하는 경우가 생기게 된다. IP를 확인하기 위해 마우스와 키보드를 연결해 놓는데, 이것은 불편한 자리만 차지하므로 화면 중앙 맨 아래에 IP를 별도로 표시하는 소스를 다시 적용해보기로 했다. (참고로 적어 놓는다.)

Posted by 천칭
,

그동안 계속해서 실패하던 파이선으로 만든 디지털 시계를 라즈베리파이 부팅이후 자동으로 실행하고자 했던 부분이 마침내 성공했다.  인터넷으로 실행가능하다는 별별 내용을 적용해 보았지만 안되더니 한 블로그에서 본 내용을 적용했더니 바로 적용이 되었으나, 다음 부팅시 로그인을 요구하는 창이 무한반복해서 나타나는 버그가 있었다.

그래서 결국, 쉘 명령어로 부팅할 때, 시작되는 방식으로 변경하게 되었다.

1. 쉘 명령어 라인을 새로 만든다.
    sudo nano run_autostart.sh

2. 다음과 같이 명령어 라인을 입력하고 저장한다.
    #!/bin/bash
    echo "run_autostart.sh"

    sudo python /home/pi/******.py

3. 권한 정보를 변경합니다.
    sudo chmod +x run_autostart.sh

4. 테스트 실행을 해본다. 이상 없으면 다음단계..
    sh run_autostart.sh

5. 실제 부팅할때 실행하는 autostart 파일을 수정합니다.
    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

6. 마지막 줄에 다음과 같이 입력하고 저장한다.
    lxterminal -e ~/run_autostart.sh

7. reboot 하여 확인한다. 

 

[아래 방식은 실행은 되지만 무한 로그인을 요구하는 버그가 있습니다.]

profile  파일은 라즈베리파일이 부팅될때 반드시 실행되는 파일이란다. 이 파일을 열어서 파이썬 실행을 요청하면 된다.

sudo nano ~/.profile   

.profile 파일의 맨 끝줄에 다음의 내용을 추가하고 저장하면 가능해진다.

#시작과 동시에 python 파일을 실행하기
export PATH=~/.local/bin:%PATH
(sleep 10 && /usr/bin/python /home/pi/*******.py) &

이렇게 저장하고 나온뒤에 

source ~/.profile  을 실행하고 reboot 하면 적용된다.

Posted by 천칭
,