2016년 3월 8일부터 제공 되었던 텔레그램 통합대기지수 알림 채널이 잠정적으로 중단 됩니다.

"라즈베리파이" 라는 소형 컴퓨터에서 서비스를 진행 하였었는데

중간 중간 SD 카드도 고장이 나서 교체를 진행 하면서 서비스를 제공 하였습니다.

현재 사용중인 라즈베리파이2 장비가 4년을 쉬지 않고 작동을 하다 보니 메모리 불량이 발생하였습니다.

SD 카드 교체 비용/라즈베리파이 교체 비용이 생각보다는 크기 때문에 당분간은 서비스 제공이 어렵습니다.

언제가 될 지는 모르겠지만 추후 라즈베리파이를 새로 구매 하게 되면 그때 다시 서비스를 제공 하도록 하겠습니다.

감사합니다.

  1. Darimee 2020.05.29 10:22

    엇...정말 유용했는데...

    제가 서버 제공하는데 도움 드리고 싶은데 후원계좌있으면 후원하고 싶습니다.

    • BlogIcon Acidpop acidpop 2020.05.29 12:41 신고

      안녕하세요
      후원 가능하시다면 텔레그램 채널에 후원 정보를 추가해두었습니다.

      정말 감사합니다 ^^

  2. 9033 2020.05.29 12:08

    aws 람다 같은 서버리스로 옮기는 것도 방법같습니다.

    • BlogIcon Acidpop acidpop 2020.05.29 12:42 신고

      예전에 AWS 를 한번 사용했다가 요금이 많이 청구 된 적이 있어서 AWS 는 손이 잘 안가더라구요

  3. ip.day.cat 2020.05.29 13:05

    헉.. 여태 잘 사용했는데 라즈베리가 이제 한계가 왔나보군요;;
    그간 감사했습니다 ㅎㅎ

  4. 2020.05.29 17:57

    비밀댓글입니다

  5. 2020.05.29 18:28

    너무 유용하게 사용했었는데 아쉽습니다.
    그동안 사용한 이용료라고 생각하고 후원계좌 통해서 작게나마 도움 드릴께요~

  6. 대기화이팅 2020.06.08 02:36

    ㅠㅠ 올해 초에 알아서 유용하게 미세먼지 상황을 받았는데 ..
    아쉽네요 ㅠ

 

https://hub.docker.com/r/acidpop/synobot/

 

Docker Hub

 

hub.docker.com

 

synobot 이 0.8 로 업데이트 되었습니다.

 

기존에 배포 하였던 0.5 버전에서 자잘한 버그 및 소소 한 기능들 몇가지 업데이트 완료.

시놀로지 NAS 를 사용하면서 24시간 사용이 필요치 않기에 

필요시마다 WOL 을 이용하여 부팅을 하고 있다.

구글 홈 미니와 Sonoff 를 연동해서 조명을 켜고 끄는데 컴퓨터도 켤 수 있지 않을까? 해서 생각을 해보니

다음과 같은 방법으로 사용이 가능하다.

1. 준비물

- 구글 홈 또는 구글 홈 미니 기기

- 라즈베리 파이 (Web 요청을 받으면 자신의 네트워크에서 WOL 매직 패킷을 전달하기 위함)

- WOL 이 작동 하는 컴퓨터

 

2. 설계

작동 방식 구성은 다음 처럼..

 - 구글 홈에게 컴퓨터 켜 라고 말하면 IFTTT 에서 구글 홈 명령을 해석하여 특정 URL 을 호출

 - 라즈베리파이 웹 서버에서 해당 요청을 받으면 WOL 매직 패킷 보내기

 

3. 방법

 3-1. 구글 홈 앱에서 루틴 설정 하기.

다음을 말하면 조건에 "컴퓨터 켜", "컴퓨터 켜 줘" 문장을 등록 한다.

필요 하다면 다른 문장을 추가 해도 좋다.

 

"Google 어시스턴트가 할 행동" 에는 IFTTT 가 알아 들어야 할 문장을 등록해야 하는데 영어만 지원 되기 때문에

작업 추가를 클릭 -> "my desktop on" 이라고 등록 한다.

 

한번 더 작업 추가를 눌러-> 인기 있는 작업을 누르고

가장 아래에 말하기 기능에 톱니 모양을 누른다.

 

"내 컴퓨터를 켭니다" 라고 등록한다. (문장을 각자 알아서 수정)

 

3-2. 라즈베리파이에 Web 요청 처리 만들기

라즈베리파이는 WOL 로 켤 컴퓨터와 같은 네트워크상에 존재 해야 한다.

그리고 ngnix 또는 apache 와 같이 WAS 가 설치되어 있고 php 가 연동이 되어 있는 상태여야 한다. (was 및 php 구성은 구글 검색으로 설치)

필자는 nginx 와 php 7.0 이 연동되어 작동 중이므로 해당 환경으로 설명한다.

 

/var/www/html 경로에 wol 이라는 디렉토리를 생성하여 wol.php 코드를 작성 한다.

전체 경로 (/var/www/html/wol/wol.php)

<?php
function wol($broadcast, $mac)
{
    if (strstr($mac, "-"))
    {
        $mac_array = explode('-', $mac);
    }
    else
    {
        $mac_array = explode(':', $mac);
    }
    $hwaddr = '';
 
    foreach($mac_array AS $octet)
    {
        $hwaddr .= chr(hexdec($octet));
    }
 
    // Create Magic Packet
 
    $packet = '';
    for ($i = 1; $i <= 6; $i++)
    {
        $packet .= chr(255);
    }
 
    for ($i = 1; $i <= 16; $i++)
    {
        $packet .= $hwaddr;
    }
 
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    if ($sock)
    {
        $options = socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, true);
 
        if ($options >=0) 
        {    
            $e = socket_sendto($sock, $packet, strlen($packet), 0, $broadcast, 7);
            socket_close($sock);
        }    
    }
}


$AUTH_KEY="";
$PC_TYPE="";

$broadcast_ip = "";
$mac_addr = "";


$WOL_KEY="RANDOMKEY";

if( isset($_GET['wolkey']) ){ $AUTH_KEY=$_GET['wolkey']; }

if( isset($_GET['wolpc']) ){
        $PC_TYPE=$_GET['wolpc'];
}
else{
        $res_data = ['result' => 'fail'];
        header('Content-type: application/json');
        echo json_encode($res_data);
        return;
}

if( strcmp($WOL_KEY, $AUTH_KEY) != 0 ) {
        $res_data = ['result' => 'fail'];
        header('Content-type: application/json');
        echo json_encode($res_data);
        return;
}

// PC Type is NAS or PC
if( strcmp($PC_TYPE, "NAS") == 0 ){
    $broadcast_ip = "192.168.0.2";
    $mac_addr = "00-11-22-33-44-55";
    $res_data = ['result' => 'success', 'pctype' => 'NAS'];
}else if( strcmp($PC_TYPE, "PC") == 0){
    $broadcast_ip = "192.168.0.3";
    $mac_addr = "AA-BB-CC-DD-EE-FF";
    $res_data = ['result' => 'success', 'pctype' => 'PC'];
}else{
        $res_data = ['result' => 'fail'];
        header('Content-type: application/json');
        echo json_encode($res_data);
        return;
}

wol($broadcast_ip, $mac_addr);


header('Content-type: application/json');
echo json_encode($res_data);
 
?>

 

위 코드 중$WOL_KEY 에 있는 값은 적당하게 긴 문자열로 만들어 준다. (WOL Url 에 최소한의 보안을 위함)

// PC Type is NAS or PC 주석 아래에 WOL 컴퓨터의 IP 와 MAC 주소 값을 입력해 준다.

필요한 컴퓨터가 많다면 $PC_TYPE 의 문자열과 else if 부분을 복사/붙여넣기 하여 추가 하면 된다.

 

php 가 작성이 완료 되었다면 라즈베리 파이에서 다음 명령으로 시험을 해본다.

curl "http://127.0.0.1/wol/wol.php?wolkey=RANDOMKEY&wolpc=NAS"

RANDOMKEY 와 NAS 는 각자 세팅에 맞게 변경 한다.

 

위 테스트로 WOL 이 작동 하면 이제 외부에서 url 호출만으로 WOL 을 사용 할수 있게 된다.

 

※ IFTTT 와 연동 해야 하므로 공유기를 사용 한다면 라즈베리파이의 WAS 포트를 포트 포워딩 해야 한다.

라즈베리파이의 WAS 포트는 80 이고 포트 포워딩은

외부 포트는 8080 , 내부 포트는 80으로 포트 포워딩을 설정 하였다면

WOL 작동 주소는 다음과 같이 된다.

http://공인IP:8080/wol/wol.php?wolkey=RANDOMKEY&wolpc=NAS

 

 


3-3. IFTTT 에서 구글 홈 문장을 분석하는 애플릿 만들기

IFTTT 에 접속하여 Explore 를 클릭

+ 버튼을 눌러 애플릿 생성으로 들어 간다.

 

+ This 를 클릭한다.

google 을 검색하여 Google Assistant 를 클릭

(Google Assistant 가 나오지 않거나 say a simple phrase 항목이 나오지 않는 다면 IFTTT 와 구글 계정 연동이 먼저 되어 있야 나오게 된다.)

 

Say a simple phrase 를 클릭

 

What do you want to say? 항목에 루틴에서 설정 하였던 "my desktop on" 을 입력

What do you want the Assistant to say in response? 항목에는 해당 애플릿 수행 후 구글 홈에서 말 할 TTS 문장을 입력한다. (TTS 재생이 필요 없다면 굳이 하지 않아도 되며 한국어는 지원하지 않는다.)

 

아래로 내려서 "Create trigger" 버튼을 클릭

 

 

+ That 을 클릭

webhook 을 검색하여 Webhooks 선택

Make a web request 선택

URL 항목에 라즈베리파이의 WOL URL 을 작성하고 Create Action 버튼을 눌러 애플릿 작성을 완료 한다.

 

 

구글 홈에서 "컴퓨터 켜" 라고 명령 하게 되면 다음과 같은 순서로 작동을 한다.

 

구글 홈 -> IFTTT -> 라즈베리 파이 PHP 호출 -> WOL 패킷 송신.

 

 

잘 되지 않는 경우 IFTTT 의 로그에서 구글 홈 명령이 전달이 되었는지, 라즈베리파이의 URL 은 정상적으로 호출 되는지 등을 확인 하면 된다.

'강좌 > IoT' 카테고리의 다른 글

구글 홈 - 네스트 미니, 네스트 허브 출시  (0) 2020.06.30
구글 홈 음성 명령으로 컴퓨터 켜기  (0) 2020.02.06

미디어 색인이 작동 안하는 경우 사용 하는 스크립트

 

MediaIndexScript.tgz
0.00MB

 

사용법

 

위 압축 파일을

/volume1/homes/acidpop/MediaScript

경로에 업로드 하여 압축 해제

root 권한으로 ./updateIndexVideo.sh 실행

 

출처 : https://m.blog.naver.com/lastingchild/220763255604

 

위 블로그에서 받은 스크립트 파일이 파일명에 '(작은 따옴표) 가 포함 되어 있는 경우 처리 하지 못하는 부분 수정

 

하드웨어 : 라즈베리파이 3+

OS : Raspbian 10 (buster)

 

1. 의존성 라이브러리 설치

sudo apt-get update

sudo apt install -y libffi-dev libbz2-dev liblzma-dev \
    libsqlite3-dev libncurses5-dev libgdbm-dev zlib1g-dev \
    libreadline-dev libssl-dev tk-dev build-essential \
    libncursesw5-dev libc6-dev openssl git

2. python 3.8 설치

cd /home/pi

mkdir pkg_install

cd pkg_install

mkdir pkg_python

cd pkg_python

wget "https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz"

tar xvfz ./Python-3.8.0.tgz

cd Python-3.8.0

./configure

make -j 6

sudo make install

 

3. Python 3.8 pip 설치

cd /home/pi/pkg_install/pkg_python

wget https://bootstrap.pypa.io/get-pip.py

sudo python3 ./get-pip.py



4. Chromium Driver 설치

cd /home/pi/pkg_install

mkdir pkg_chromium

cd pkg_chromium

wget "http://ports.ubuntu.com/pool/universe/c/chromium-browser/chromium-codecs-ffmpeg_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb"

wget "http://ports.ubuntu.com/pool/universe/c/chromium-browser/chromium-codecs-ffmpeg-extra_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb"

wget "http://ports.ubuntu.com/pool/universe/c/chromium-browser/chromium-browser_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb"

wget "http://ports.ubuntu.com/pool/universe/c/chromium-browser/chromium-chromedriver_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb"

 

sudo dpkg -i ./chromium-codecs-ffmpeg_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb

sudo dpkg -i ./chromium-codecs-ffmpeg-extra_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb

sudo dpkg -i ./chromium-browser_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb

sudo dpkg -i chromium-chromedriver_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb

 

 

위 명령 중 sudo dpkg 수행시 다음과 같은 오류가 발생 한다면?

sudo dpkg -i ./chromium-browser_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb 
(Reading database ... 45515 files and directories currently installed.)
Preparing to unpack .../chromium-browser_75.0.3770.90-0ubuntu0.18.10.1_armhf.deb ...
Unpacking chromium-browser (75.0.3770.90-0ubuntu0.18.10.1) over (75.0.3770.90-0ubuntu0.18.10.1) ...
dpkg: dependency problems prevent configuration of chromium-browser:
 chromium-browser depends on libatk-bridge2.0-0 (>= 2.5.3); however:
  Package libatk-bridge2.0-0 is not installed.
 chromium-browser depends on libatk1.0-0 (>= 2.2.0); however:
  Package libatk1.0-0 is not installed.
 chromium-browser depends on libatspi2.0-0 (>= 2.9.90); however:
  Package libatspi2.0-0 is not installed.
 chromium-browser depends on libcairo2 (>= 1.6.0); however:
  Package libcairo2 is not installed.
 chromium-browser depends on libcups2 (>= 1.4.0); however:
  Package libcups2 is not installed.
 chromium-browser depends on libgdk-pixbuf2.0-0 (>= 2.22.0); however:
  Package libgdk-pixbuf2.0-0 is not installed.
 chromium-browser depends on libgtk-3-0 (>= 3.9.10); however:
  Package libgtk-3-0 is not installed.
 chromium-browser depends on libnspr4 (>= 2:4.9-2~); however:
  Package libnspr4 is not installed.
 chromium-browser depends on libnss3 (>= 2:3.22); however:
  Package libnss3 is not installed.
 chromium-browser depends on libpango-1.0-0 (>= 1.14.0); however:
  Package libpango-1.0-0 is not installed.
 chromium-browser depends on libxcursor1 (>> 1.1.2); however:
  Package libxcursor1 is not installed.
 chromium-browser depends on xdg-utils; however:
  Package xdg-utils is not installed.

dpkg: error processing package chromium-browser (--install):
 dependency problems - leaving unconfigured
Processing triggers for mime-support (3.62) ...
Processing triggers for man-db (2.8.5-2) ...
Errors were encountered while processing:
 chromium-browser

sudo apt-get -f install

위 명령으로 의존성 오류난 라이브러리를 모두 설치 하기

 

2018년 4월에 공개하였던 알송 가사 플러그인 0.5 버전이 몇 달 전부터 작동이 되지 않음.

 

그동안 시간이 없어 건드릴 여유가 없었지만 다시 시간이 나서 또 분석!!

 

패킷을 캡쳐해보니 구조가 완전히 바뀌었다...

 

 

alsong_lyric_0.6.aum
0.00MB

 

자세한 등록 방법은 아래 링크를 참조.

https://blog.acidpop.kr/286

 

Synology Audio Station 알송 가사 플러그인 0.5

http://blog.acidpop.kr/264 기존에 배포 하였던 0.4 버전이 2018년 초부터 작동을 안하는것을 발견. 한동안 계속 바빠서 살펴볼 틈이 없었지만... 겨우 짬이 나서 소스를 다시 분석. 가사 플러그인 디버깅 환경이..

blog.acidpop.kr

 

혹시라도 분석 했던 패킷 덤프가 필요하신 분은 아래 파일을 다운로드 하여

와이어 샤크에서 사용하시면 됩니다.

alsong_lyric.pcapng
0.89MB

  1. 피피더스 2019.12.16 22:45

    감사합니다

  2. 학생 2020.01.21 12:33

    php 알송가사 검색중에 우연히 들어오게 되었는데, 이파일은 어떻게 사용하는건가요?

  3. 타조 2020.02.14 09:31

    고맙습니다 ^^

  4. 감사하는사람 2020.05.23 07:26

    진심 감사드립니다.

synobot 0.9 업데이트

https://blog.acidpop.kr/320

 


기존 xpebot 이 Synology DSM 이 업데이트 되면서 인증서 관련 오류가 발생.. ㅠㅠ

 

언젠가는 Download Station API 를 이용하도록 바꿔야지 하면서 미루다가 이제서야 작업 진행.

 

 

DSM 의 환경이 워낙 자주 바뀌기 때문에 이번에는 Docker 이미지로 작업을 하였다.

 

1. Synology DSM 에서 Docker 설치

 

2. Docker 실행.

 

레지스트리를 선택하고 검색 창에 synobot 을 검색 하면 acidpop/synobot 이 검색 된다.

 

검색된 synobot 옆의 아이콘을 누르면 설정 방법에 대한 페이지로 링크 된다.

 

아래 링크를 클릭 해도 동일하다.

 

Synobot 링크

 

 

위 링크에도 설정 방법이 설명 되어 있으니 해당 페이지에 있는 설정 방법을 이용하여 설정한다.

 

 

AMZN WEB-DL 릴 기준으로 

 

16:34 시간에 나옵니다.

'잡담' 카테고리의 다른 글

카트라이더 어벙벙 케이크  (0) 2020.06.12
티스토리 붙여 넣기 버그  (3) 2020.06.01
왕좌의 게임 시즌 8 4회 스타벅스 컵(?)  (1) 2019.05.08
광안대교 선박 충돌  (0) 2019.02.28
넷플릭스 유재석  (1) 2018.04.05
2018 설 기차표 예매  (0) 2018.01.09
2017 설 기차표 예매  (0) 2017.01.01
2016 추석 기차표 예매 일정  (2) 2016.08.09
2016년 설 기차표 예매 기간  (0) 2016.01.12
  1. BlogIcon 박작가님 2020.06.22 05:46 신고

    스타벅스컵 발견하시다니 눈썰미가 좋으십니다 :)

+ Recent posts