MadForFamily

Mar 042017
 

Rule작성법을 연습하기 위해 PushBullet 연동을 해보았다. Kankun wifi plug의 상태가 변할 때마다 push notification을 받을 수 있도록 OpenHAB2 rule을 작성하면 된다.

PushBullet api token 준비

Pushbullet에서 Account setting페이지를 가보면 Access token을 생성할 수 있다.

Rule 작성

sudo -u openhab vi /etc/openhab2/rules/switch.rules 해서 다음을 입력

rule "switchOn" 
when Item mqttsw1 changed from OFF to ON 
then executeCommandLine("curl@@-k@@-H@@Access-Token: 토큰키@@-XPOST@@https://api.pushbullet.com/v2/pushes@@-H@@Content-Type: application/json@@--data-binary@@{\"type\": \"note\", \"title\": \"스위치1 상태", \"body\": \"현재 On입니다.\"}@@") 
end 

rule "switchOff" 
when Item mqttsw1 changed from ON to OFF 
then executeCommandLine("curl@@-k@@-H@@Access-Token: 토큰키@@-XPOST@@https://api.pushbullet.com/v2/pushes@@-H@@Content-Type: application/json@@--data-binary@@{\"type\": \"note\", \"title\": \"스위치1 상태\", \"body\": \"현재 Off입니다."}@@") 
end 

이제 스위치를 On/Off하면 이제 푸쉬메시지가 온다.

Mar 042017
 

이상하게 들리겠지만, 기본적으로 OpenHAB2는 UI(관리 페이지)에 대해 사용자 인증이 없다. 이 얘기는 관리자 페이지를 외부 접속이 되게 하면, 무방비로 노출이 된다는 얘기다. 이것에 대해 여러 보완책이 있는데 OpenHAB cloud connector를 사용해보기로 했다.

overrides.propertie파일로 인한 에러를 막기 위해 빈 파일 생성

sudo -u openhab touch /var/lib/openhab2/etc/overrides.properties

Paper UI의 Add-on메뉴에서 Misc항목에 있는 OpenHAB cloud connector를 설치

이상하게 Installing이 멈추지 않는데, 그래도 괜찮은듯 하다

uuid와 secret

다음 파일의 내용을 적어둔다 /var/lib/openhab2/uuid /var/lib/openhab2/openhabcloud/secret

myopenhab.org에서 위에서 생성한 uuid와 secret을 가지고 회원 가입

가입시 사용한 이메일 확인하면 인증메일이 와 있다. 메일내의 링크를 클릭해서 인증 완료

openhab2 재시작

sudo /etc/init.d/openhab2 stop 
sudo /etc/init.d/openhab2 start

myopenhab.org에 로그인하면 다음과 같은 메시지가 나오고 링크를 클릭하면 관리자 페이지 접근이 가능함

You are using openHAB 2.x. Click here to access your openHAB's dashboard

안드로이드 OpenHAB 앱의 Settings에 Remote URL = https://myopenhab.org와 가입한 id/pw를 입력하고 URL에 적었던 url/ip를 삭제 후 제어/모니터링 되는지 확인

이제 myopenhab.org를 통해 접근이 되므로 Paper UI를 외부 접근이 안되도록 만들면 된다.

sudo -u openhab vi /var/lib/openhab2/etc/org.ops4j.pax.web.cfg 후 다음처럼 변경 후 openhab2 재시작 org.ops4j.pax.web.listening.addresses = 127.0.0.1` 
sudo /etc/init.d/openhab2 stop 
sudo /etc/init.d/openhab2 start

주의

관리페이지에 대해 방화벽을 열어놔야 한다. 방화벽을 열어도 OpenHAB2가 127.0.0.1에 대해서만 응답하므로 걱정하지 않아도 된다.

Mar 012017
 

Mosquitto client(No-SSL 버전) 설치

다음의 두 명령어를 Kankun wifi plug에 SSH 접속 후 실행하면 MQTT client 중 하나인 mosquitto_pub과 mosquito_sub가 설치된다.

opkg update
opkg install mosquitto-client-nossl

메시지 송수신 테스트

Kankun –> MQTT
  • MQTT 서버쪽에서 mosquitto_sub -h localhost -t /testsw/1/state -u user_1  -P password_1 실행해서 메시지 수신 대기
  • Kankun 기기에서 mosquitto_pub -h mqtt_server_ip -t /testsw/1/state -m 1 -u user_1  -P password_1 실행해서 메시지 송신해서 MQTT서버측에 잘 송신되는지 확인

MQTT –> Kankun

  • Kankun 기기에서 mosquitto_sub -h mqtt_server_ip -t /testsw/1/state -u user_1  -P password_1 실행해서 메시지 수신 대기
  • MQTT 서버쪽에서 mosquitto_pub -h localhost -t /testsw/1/state -m 1 -u user_1  -P password_1 실행해서 메시지 송신해서 Kankun 스위치쪽으로 잘 송신되는지 확인

2번의 테스트를 통해 망이나 방화벽 상관없이 외부 MQTT 서버를 통해 메시지가 문제없이 송수신 됨을 확인했다. 즉, 스위치가 어떤 환경에 있던지 상관없이 외부망에 있는 브로커를 통해 어디서든 통신이 가능하다는 점을 확인한 것이다.

Kankun 스위치에서 현재 상태 publish

Kankun 기기에서 주기적으로 기기 상태를 MQTT로 푸쉬해보자. * mkdir /root/scripts * vi /root/scripts/mqtt_publish.sh 해서 다음을 입력

# !/bin/sh

while true 
do 
  CURR_STATUS="\`cat /sys/class/leds/tp-link:blue:relay/brightness\`"
  mosquitto_pub -h mptt_server_ip -t /testsw/1/state -u user_1 -P password_1 -m $CURR_STATUS 
  sleep 5 
done
  • chmod 755 /root/scripts/mqtt_publish.sh

자동 시작되도록 vi /etc/profile 해서 /root/scripts/mqtt_publish.sh &을 추가한다.

이제 reboot 실행해서 재부팅하고 접속 후에 테스트해보자. * echo "1" > /sys/class/leds/tp-link:blue:relay/brightness 해서 안드로이드앱의 스위치 상태가 ON으로 변경되는지 확인 * echo “0” > /sys/class/leds/tp-link:blue:relay/brightness` 해서 안드로이드앱의 스위치 상태가 OFF으로 변경되는지 확인

MQTT 서버에서 Kankun 스위치 제어

MQTT를 통해 상태를 알 수 있게 되었으니 이제는 제어해보자.

Kankun 기기에서 mkdir /root/work 한 후 vi /root/scripts/mqtt_subscribe.sh 해서 다음을 입력한다.

#!/bin/sh 
mosquitto_sub -h mqtt_server_ip-t /testsw/1/command -u user_1-P password_1 >> /root/work/mqtt.dat 2>/dev/null

chmod 755 /root/scripts/mqtt_subscribe.sh 한 다음 vi /etc/profile 해서 /root/scripts/mqtt_subscribe.sh & 을 추가해준다.

제어를 위해서 vi /root/scripts/mqtt_command.sh 해서 다음을 입력한다.

#!/bin/sh 
while true 
do 
  if [ -e /root/work/mqtt.dat ]; then 
    COMMAND="\`tail -1 /root/work/mqtt.dat\`"    
  fi 

  if [ "$COMMAND" = "1" ]; then 
    echo "1" > /sys/class/leds/tp-link:blue:relay/brightness 
  elif [ "$COMMAND" = "0" ]; then 
    echo "0" > /sys/class/leds/tp-link:blue:relay/brightness 
  fi 
  echo "" > /root/work/mqtt.dat 
  sleep 5 
done

chmod 755 /root/scripts/mqtt_command.shvi /etc/profile 해서 /root/scripts/mqtt_command.sh & 을 추가해주면 준비가 끝이 난다. reboot 실행해서 재부팅 한 후 기기에 접속해서 테스트해보자.

OpenHAB앱에서 스위치 ON해보니 대략 5초가 소요된 후 Kankun 기기의 /sys/class/leds/tp-link:blue:relay/brightness가 1로 변경되고 스위치가 ON되었다.

스위치를 추가할 때 변경해야 하는 부분들

  • /etc/openhab2/item/switch.items에 스위치별 topic(제어용/모니터링용) 선정 후 스위치 추가
  • /etc/openhab2/sitemap/Test.sitemap에 추가된 스위치 추가
  • /etc/mosquitto/mosquitto.acl에 추가된 topic을 사용자별로 추가

이제 …

Kankun 스위치에 위의 스크립트를 복사해 넣고 topic을 변경 기나긴 설정과 테스트의 끝에 드디어 Kankun wifi plug를 OpenHAB2 + MQTT 기반으로 제어 및 모니터링에 성공했다. 전용앱으로 쉽게 갈 수 있는 길을 어렵게 간 듯 하지만, 나중에 구현할 Follow Me 기능(특정 스마트폰이 집안 인터넷에 무선랜 접속시 뭔가를 하거나, 무선랜에서 접속이 사라지면 뭔가를 하거나 하는 등의 기능)을 위해서는 OpenHAB과 MQTT가 꼭 필요했다. 언제 다시 할 수 있을지는 모르겠지만…

Feb 282017
 

이번 글은 우분투 12.04를 기준으로 OpenHAB2와 Mosquitto를 설치해서 MQTT 바인딩을 통해 가상의 스위치의 상태를 보고 제어하는 과정이다. 궁극적으로는 실제 센서나 원격제어 가능한 스위치에 사용할 수 있는 방법으로써 OpenHAB을 어떻게 사용할 수 있는지, MQTT를 가지고 어떻게 HW등과 연동하는지 알 수 있는 기회가 되었으면 한다. 추후 Kankun wifi plug를 위한 준비 과정이다. 참 길다 ㅠ.ㅠ

Zulu

다음은 OpenHAB2에서 권장하는 Open JDK계열의 Zulu를 설치하고 설정하는 과정이다.

Installation (http://zulu.org/zulu-community/zuludocs)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0x219BD9C9 
sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main' 
sudo apt-get update 
sudo apt-get install zulu-8
Additional setups

cd ~ 한 후 vi .profile해서 다음을 추가해준다.

 
export JAVA_HOME=/usr/lib/jvm/zulu-8-amd64/
export PATH=/$JAVA_HOME/bin:$PATH 

그 후 source .profile해주면 된다.

Choose JDK

혹시 이미 JDK가 설치되어있는 경우에는 sudo update-alternatives --config java해서 선택해줘야 한다.

OpenHAB2

설치(http://docs.openhab.org/installation/linux.html#package-repository-installation)
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - echo 'deb http://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list 
sudo apt-get update 
sudo apt-get install openhab2 openhab2-addons
서비스 제어
  • sudo update-rc.d openhab2 defaults
  • sudo /etc/init.d/openhab2 start
  • sudo /etc/init.d/openhab2 stop
  • Restart 명령의 경우 서비스가 제대로 종료안되는 이슈가 있으므로 stop 후 start해야 함.
초기 설정
  • sudo /etc/init.d/openhab2 start
  • 웹브라우저에서 http://openhab_server_ip:8080 접속
  • Standard package setup 클릭해서 UI 설치
  • Paper UI 선택
  • 우측 상단 메뉴 –> Addons –> Bindings tab에서 MQTT binding 선택 후 설치

MQTT

가벼운 메시징 프로토콜로서 센서 등과 같은 HW에서 사용하기 좋은 통신 방법이다. HTTP바인딩과 달리, 메시징 서버(=브로커)가 외부접근 가능하면, 방화벽 등의 상관없이 통신이 가능하여 선택하였다. 사실 로컬네트워크안에 라즈베리파이를 가지고 MQTT 서버(=브로커)를 운영해도 괜찮지만, 이미 가지고 있는 $5 짜리 DigitalOcean 가상서버에 OpenHAB2와 MQTT서버를 운영함으로써, 방화벽 등의 문제도 피해갈 수 있으리라는 판단이었다. (사실 인터넷망이 공인 ip를 주지 않는 서비스라서… ㅠ.ㅠ)

설치
sudo apt-get install python-software-properties 
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa 
sudo apt-get update 
sudo apt-get install mosquitto mosquitto-clients
기본 테스트
  • 터미널 1: mosquitto_sub -h localhost -t /test_topic
  • 터미널 2: mosquitto_pub -h localhost -t /test_topic -m “Message from terminal 2”
  • Topic = 채팅방이라고 생각하면 됨

OpenHAB2 + MQTT기반 Switch 연동

현재 시점으로 MQTT binding의 경우 OpenHAB2의 UI에서 설정이 안되므로 1.x처럼 파일을 직접 편집해야 함

/etc/openhab2/services/mqtt.cfg
# mymqtt = MQTT broker name
mymqtt.url=tcp://localhost:1883
mymqtt.clientId=openHAB
mymqtt.qos=2
mymqtt.retain=true
mymqtt.async=true
/etc/openhab2/items/switch.items
# mqttsw1 : OpenHAB2내부에서 사용되는 id
# mqtt : mqtt type binding
# mymqtt : broker name
# /testsw/1/command : 제어용 MQTT 채널
# /testsw/1/state: 상태확인용 MQTT 채널

Switch mqttsw1 “Switch 1″ (all) {mqtt=”>[mymqtt:/testsw/1/command:command:ON:1],>[mymqtt:/testsw/1/command:command:OFF:0],<[mymqtt:/testsw/1/state:state:ON:1],<[mymqtt:/testsw/1/state:state:OFF:0]”}

/etc/openhab2/sitemaps/Test.sitemap
# Test : sitemap name, file name과 일치해야 함
# mqttsw1: OpenHAB2내부에서 사용되는 id
# “MQTT Switch 1”: UI에서 표시되는 레이블
sitemap Test label=”Menu”
{
  Frame label=”MQTT”
  {
    Switch item=mqttsw1 label=”MQTT Switch 1″
  }
}
안드로이드폰에 OpenHAB 설치 설치
  • 실행 후 처음 보는 선택창에서 _default 선택(의미없슴)
  • 우측 상단 버튼(…) 눌러서 Setting 진입 후 demo mode uncheck 한 후 openHAB URL에 http://openhab_server_ip:8080 입력 후 이전으로 돌아가기 버튼 누르면 지정해준 서버에 연결함
  • 우측 상단 버튼(…) 눌러서 Select default sitemap 선택해서 위에서 생성해준 Test를 선택하면 다음처럼 제어버튼 및 현재 상태를 볼 수 있슴
    openhab_android_app
안드로이드에서 테스트
  • OpenHAB서버에서 tail -f /var/log/openhab2/events.log 해서 상태변화를 감지함
  • Toggle 스위치를 선택할 때마다 다음과 같은 메시지가 나오면서 상태가 변화됨을 확인
2017-02-27 19:58:24.608 [ItemCommandEvent ] - Item 'mqttsw1' received command OFF 
2017-02-27 19:58:24.614 [ItemStateChangedEvent ] - mqttsw1 changed from ON to OFF
MQTT 메시지를 가지고 테스트(HW 스위치 시뮬레이션)
  • OpenHAB서버에서 tail -f /var/log/openhab2/events.log 해서 상태변화를 감지함
  • mosquitto_pub -h localhost -t /testsw/1/state -m 1 실행 후 상태가 ON으로 변하는 지 확인(참고로 1, 0, “1”, “0” 모두 가능함)
MQTT 사용자 인증 / 토픽 접근 제어
  • sudo vi /etc/mosquitto/mosquitto.users 해서 아이디:암호 형식으로 user_1:password_1처럼 1줄에 1개씩 기재
  • sudo mosquitto_passwd -U /etc/mosquitto/mosquitto.users
  • sudo vi /etc/mosquitto/mosquitto.conf 해서 다음을 추가
allow_anonymous false 
password_file /etc/mosquitto/mosquitto.users 
  • sudo service mosquitto restart해서 재시작
테스트 해보자.
  • 터미널 1: mosquitto_sub -h localhost -t /test_topic -u user_1 -P password_1
  • 터미널 2:
    • mosquitto_pub -h localhost -t /test_topic -m "Message from terminal 2" -u user_1 -P password_1 –> OK
    • mosquitto_pub -h localhost -t /test_topic -m "Message from terminal 2" –> Connection refused
  • sudo vi /etc/mosquitto/mosquitto.acl 해서 다음을 추가
user user_1 
topic /testsw/1/command 
topic /testsw/1/state

sudo service mosquitto restart

테스트 해보자.
  • 터미널 1: mosquitto_sub -h localhost -t /testsw/1/state -u user_1 -P password_1
  • 터미널 2: mosquitto_pub -h localhost -t /testsw/1/state -m "ON" -u user_1 -P password_1 –> OK
  • 터미널 1: mosquitto_sub -h localhost -t /testsw/**2**/state -u user_1 -P password_1
  • 터미널 2: mosquitto_pub -h localhost -t /testsw/**2**/state -m "ON" -u user_1 -P password_1  –> 메시지가 보내지지 않음
OpenHAB2의 mqtt.cfg 변경

설정한 아이디/암호를 /etc/openhab2/services/mqtt.cfg에 반영

mymqtt.user=user_1 
mymqtt.pwd=password_1
Feb 242017
 

작년 ADSL 모뎀을 자동으로 리부팅시켜주는 기기를 찾다가 우연히 발견한 제품이다. 당시 아마존에 인터넷 연결이 끊어지면 모뎀을 자동으로 리부팅시켜주는 Wifi Reset plug 제품이 있었는데, 거기에서 이 제품이 Kankun smart plug 제품과 동일하다는 글을 보게 되었다.

Aliexpress에서 보니 역시나 동일한 외양의 제품이 약 USD 13에 판매중이었다. 꼬리에 꼬리를 이은 검색 끝에, Kankun Smart Plug KK-SP3라는 제품이 OpenWRT기반의 AC outlet sw라는 결론에 도달했다. 무슨 얘기냐 하면, AC플러그 제어가 가능한 초저전력 USD 13짜리 리눅스 박스였다. 

AC outlet은 Free volt로 대략 10A / 90V-265V  / 50HZ-60HZ / 최대 2200W를 지원하므로 큰 전력을 필요로 하지 않는 기기에 사용가능하다. 제어용 안드로이드앱을 사용하면 Timer/Delayed timer/스마트폰 완충시 자동 차단/Wifi 신호 증폭 기능을 사용할 수 있다. 입력 단자는 US, AU, EU, UK형식이 있고 출력 단자는 유니버셜타입이여서 AU형식으로 3개를 주문했다. 작년 기준으로 일단 원격 제어만 해도 13불 정도면 쓸만한  수준(지금은 더 저렴한 녀석들도 많긴 하다)이었고, 추후 해킹을 통해 가지고 놀 수도 있을 거라는 생각(PushBullet연동, 인터넷 회선 감시, 출/퇴근시 자동 ON/OFF, OpenHAB연동 등등)에서 였다. 물론 인터넷 회선 감시해야 하는 필요성은 인터넷 회사를 바꿈으로서 사라지긴 했다.

kankun_appearance

받고나서 제어용 안드로이드앱을 깔아서 설정하면 되는데 이 과정이 작년에는 조금 잘 안되었고 기능도 없었는데 최근에 해보니 앱도 깔끔해지고 설정/기능도 훨씬 좋아졌다. 앱스토어에서 Kankun을 검색 후 나오는 중국어플을 깔면 된다. 물론 설치 후에는 영어로 표시된다.

kankun_app

  • 스마트폰: 집안 무선랜에 접속한다.

kankun_setup

  • 스마트폰: SmartPlug앱을 실행해서 Setting탭으로 간 후 접속한 무선랜 비번을 입력한다.
  • SW: 스위치를 콘센트에 꽂은 후 20초를 기다린다 –> 한쪽 끝에 있는 스위치를 5초간 누른 후 손을 뗀다 –> 다시 20초를 기다리면 파란색 LED가 점등한다.

kankun_setup

  • 스마트폰: 무선랜 목록에서 OK_SP3(스위치가 생성한 ad-hoc 무선랜)를 선택해서 연결한다.

kankun_setup

  • 스마트폰: SmartPlug앱에서 Configure버튼을 누른다. 100%까지 될 때까지 기다린다.

kankun_setup

  • 스마트폰: 다음과 같은 메시지가 나와도 별 이상없으니 무시한다.

kankun_setup

  • 스마트폰: SmartPlug라고 상단에 새로 잡힌 스위치가 Device List로 가면 보인다.

kankun_setup

  • 기기 목록에서 스위치를 선택하면 현재 상태를 보여준다.

kankun_setup

  • 가운데 버튼을 누르면 ON/OFF 조절이 가능하다.

kankun_setup

  • 오른쪽 하단 + 버튼을 누르면 추가 기능 메뉴가 나온다.

kankun_setup

  • 타이머 설정으로 특정 시간/요일 범위에서 ON/OFF를 조절할 수 있는데, 복수 타이머 설정도 가능하다.

kankun_setup

  • Delay timer는 일단 시간 후에 상태를 toggle해 주는 타이머다.

kankun_setup

  • 스마트 컨트롤에는 Wifi 신호 증폭 및 만충시 자동 차단 기능이 있다. 신호 증폭은 얼마나 되는 지 모르겠으나 스마트폰 만충시 자동차단을 쓸만한 거 같다. 다만 스위치를 계속 켜고 스마트폰의 무선랜도 계속 켜놔야 한다는 점에서 과연 얼마나 실효가 있을지는 모르겠다.

kankun_setup

이로써 기본적인 소개와 사용법은 끝났고 신나게 갖고 노는 방법은 다음에 알아보기로 하겠다.

Feb 162017
 

어느 날 HRV(외부 공기를 필터링 후 집안 내부로 강제 흡기하는 공기 순환 장치 중 유명한 회사의 브랜드명) 필터 교체 등이 켜졌는데 리셋할 때까지 계속 켜져있었다. 리셋하지 않고 필터 교체후에 하겠다고 했는데, 필터 사놓고 거의 몇개월을 그렇게 지내다 드디어 교체를 마쳤다.

HRV_filter_replacement_led

HRV팬은 천정과 지붕 사이에 있는데, 필터는 그 철로 된 박스안에 다음처럼 껴 있다.

HRV_where_filter_is

필터를 교체하려면, 필터 + 커터칼 + 전등(머리에 쓰는 게 좋다) + 덕트용 테이프을 들고 천정 위로 기어올라가서 다음처럼 팬이 지붕에 걸려있는 곳으로 접근해야 한다. 그 후 커터칼로 기존에 붙어있는 테잎 부분을 살짝 그어서 위쪽 흡기 부분과 아래쪽 배기 부분을 분리 후 필터를 교체하고 다시 덕트용 테이프로 봉합해주면 된다.

HRV_how_to_replace_filter

Trademe나 인터넷 검색을 해보면 F7등급과 F8 등급의 필터가 있는데 F8 등급이 조금 더 필터링 능력이 좋아서 조금 비싸게 판매된다. 대략 60~80불이면 F7이나 F8을 구입할 수 있을 듯 하다. 굳이 HRV가 파는 필터를 안해도 무방하고, 직접 해볼만한 쉬운 diy이다. 작년에 F7 등급을 트레이트미에서 덕트 테이프 포함해서 구입후 직접 했는데, 대략 30분이 소요된다. 통상 천정과 지붕 사이 온도가 높으므로 덥지 않을 때 하는 게 좋다. 사람 불러서 교체시 필터값 + 60불 정도를 더 내야한다. 교체 후에 필터 교체 LED를 끄기 위해서는 다음의 2가지 방법을 시도하면 된다.

  • 방법 1
    • Switch off at the control panel
    • Press down button for 8 seconds
    • It will beep after about 3 seconds, but keep it pushed for the full 8 seconds
    • 0.2 is displayed in the roof
    • 20 is displayed in the house
    • Push the on/off button and a 1 or a 5 will be displayed
    • Push the on/off button again & again to cycle through the numbers displayed until you come back to the 1 or 5 being displayed again
    • Push the Function button to confirm
  • 방법 2
    • Switch off at the control panel
    • Hold the “down” button for 8 seconds
    • It will beep after about 3 seconds, but keep it pressed for the full 8 seconds
    • 02 is displayed in the roof
    • Press the “up” button to increase 02 to 22 (not holding it down, short pushes)
    • Below the 22 you will see a 0
    • Press the power button to increase the 0 to 9
    • Push the Function button to save settings

이미지 2개는 http://davidchin38.blogspot.co.nz/2016/08/hrv.html에서 받았다.

Jan 012017
 

언어

한국어는 놀라울 정도의 습득하고 있다. 말 대답도 하기 시작(아 짜증난다 ㅠ.ㅠ)하고, 거짓말도 잘 만들어낸다. 영어도 문장을 조금씩 만들기 시작했다. 말하기를 좋아하는 편이라서 그런지 습득 속도가 빨라서 새로운 자극 등을 많이 주려고 노력중이다.

생활습관

식사는 아직도 먹여달라고 하는 때가 많지만, 기본적으로 혼자 먹을 수 있는 능력이 갖춰졌다. 야채를 포함해서 고기도, 밥도, 멸치 등도 잘 먹는 편이다. 또한 양치질/목욕도 정말 많이 좋아졌다. 시간도 줄어들고, 티격태격 신경싸움하지 않고 부드럽게, 양치질/목욕/로션바르기/옷입기/머리말리기 까지 진행이 되고 있다. 이 모든 것에 뽀로로에 나오는 크롱의 역할이 95% 이상이다. 감사선물을 보낼까 고려중이다. 장난감 정리는 조금 약해져서 요즘 다시 강화시키려고 노력중이다.

신체 발달

바퀴 3개짜리 Kick scooter도 집안에서 타기도 하고, 작은 3바퀴 오토바이는 쌩쌩 타고 다니기 시작했다. 자신의 다리를 박차면서 앞으로 전진하는 부분이 많이 좋아졌다. 가끔 매달릴 수 있는 구조물에 자꾸 매달리려고 한다. 대략 3초 정도는 매달릴 수 있다. 아무래도 내가 하는 턱걸이 운동 등에 자극받아서 그런 거 같다. 그림 그릴 때도 많이 달라졌다. 의미없는 선들 등에서 요즘은 세모, 네모, 동그라미를 그럭저럭 비슷하게 그릴 수 있다. 크게 달라진 점은, 뭔가를 “그리려고” 한다는 것이다. 사물이나 사람, 동물 등을 그리려고 하기 시작했다. 산책도 꽤나 멀리 같이 갈 수 있게 되었다. 조금 많이 걷고 나면 안아 달라고, 세발 자전거 들어달라고 하지만, 거부하면 자기가 하려고 하기는 한다.

애착인형

요즘은 토끼 인형을 주로 데리고 논다. 자신의 투사하면서 노는 데 너무 귀엽다. 가끔은 생각하는 의자에, 말도 안되는 이유를 대가며 앉히기도 하고, 자신의 가슴으로 수유를 하려고 하기도 한다. 분유 수유는 물론, 기저귀 채우기 등등 자신의 모든 것을 투사하면서 노는 데, 그 행위가 점점 다양해지고 있다. 이러한 행동은 다른 아이들에 대해서도 그대로 행해지는 거 같다. 유치원에서도 한 아이가 울면, 토닥여주고, 안아주고, 물 갔다 주고 등등 한다고 한다.

나쁜 습관

유치원에 보낸 이후로 조금씩 안 좋은 습관들을 보여서 그것을 없애려고 조금씩 신경쓰고 있다. 물건을 던진다던지, 자신의 이마를 때리면서 짜증을 표현한다던지, 손으로 음식을 먹는 행동들이다. 스트레스를 풀어주기 위해 장난감을 일정한 곳에 던지는 놀이나, 필요없는 종이들을 찢으면서 하는 놀이 등이다.

소리와 노래

세이펜을 이제서야 사용하기 시작했는데, 관심을 많이 보이고 있다. 특히나 각 책 뒷 표지에 나오는 노래에도 관심을 많이 보이고 있는데, 노래를 같이 부르는 걸 좋아한다. 새로운 노래를 캐취하는 능력도 좋아져서, 같이 노래를 반복하면서 부르고, 콧노래도 부르고 하면서, 의미있는 노래를 많이 만들려고 하고 있다.

Dec 052016
 

1년여전쯤 늙은 초짜 목수 친구가 만들어준 자그마한 벤치가 많이 상해버렸다. 현관문앞에 놓여져서 비에 노출되어 있고, untreated된 소나무 재질이여서 군데 군데 거멓게 물들고 그랬다. 와이프가 stain하자고 해서, 나무 청소하는 세제와 oil 베이스의 stain을 사와서 작업했다.

PrepMax

조그마한 플라스틱 통과 설겆이할 때 쓰는 스폰지를 가지고 위의 용액(일정량의 물을 넣어서 희석 후 사용)을 가지고 박박 문지른 후 물로 깨끗히 세척해서 말렸다. 물론 고무장갑을 껴서 손을 보호해야 할 정도로 강한 세제이니 주의해야 한다. 하수구 쪽 흘러가는 쪽에 아직도 허연 자국이 남아있는 걸 보니 장난 아니게 독한 듯 싶다.

IMG_20161201_193937

더러웠던 벤치가 나름 깨끗해졌다. 군데 군데 나무 섬유질이 일어나 있었다. 아마도 너무 세게 문지른 부분인 거 같다. 그리고 세제도 나무 섬유질을 약간 녹여가면서 세척하는 방식으로 보인다.

IMG_20161204_112913

요거트 통에 조금씩 따라가면서 페인트용 붓으로 골고루 칠하고 그늘에 말려 두었다. 근데 와이프가 색이 너무 진하다고 한다. 다음엔 더 연할 걸로 해야겠다.

IMG_20161204_132535

나름 이뻐졌다.

Nov 142016
 

Pull Up 1개 도전을 위해 Suunto의 Workout planner를 사용하기로 했다. 그전에 한번 보기는 해봤는데 사용은 해보지 않았다. 안드로이드앱에서 Workout 이름을 수정하고 interval내용도 변경 후 싱크했는데, 이상하게도 시계에 나오질 않는 것이었다. 몇번을 시도해봐도 마찬가지였다. 혹시나 싶어서 안드로이드 앱을 지웠다 다시 설치 후 싱크하니 그제서야 보인다. Workout 이름이 변경되어서일까 싶기는 하지만 좀 그랬다.

Suunto workout planner

다음 글을 보고 풀업 8개용 프로그램을 입력했다. 오늘부터 해봐야 겠다.

Oct 042016
 

작년말부터 시작한 “운동”이 이제 거의 1년째에 접어든다. 그 경험을 여기에 적어둠으로써, 훗날 내가 어떻게 시작하고 변화해 나가기 시작했는지를 기억하고 싶어서 이 글을 적어본다.

아침형 인간

10월 초 지금 사는, 회사에서 편도 38km인 집으로 이사를 했다. 아침 시간대의 SH1의 교통체증을 피하기 위해 조금씩 출근 시간을 앞당기며 테스트해보았다. 8시, 7시 30분, 7시, 6시 30분, … 하다보니 5시에 일어나서 출근하기로 했다. 5시에 일어나, 5시 15~20분에 출발하면 회사에 35분만에 도착할 수 있었다. 20세 이후 전형적인 올빼미형의 생활을 20년 넘게 하다가 처음으로 아침 일찍 일어나는 생활로의 첫 변화였다. 역시나 힘들었다. 점심 먹고 오후 2시만 되면 졸음이 쏟아졌다. 세수하고 커피마시고 산책하고 하면서 깨어 있기 위해 부단히 노력했다. 문제는 퇴근 운전이었다. 운전하면서도 졸음이 쏟아졌다. 껌이나 사탕만으로 힘들때는 갓길에 주차 후 10분~20분씩 잠을 자야 하기도 했다. 시간이 조금이 지나면서 서서히 적응해나가기 시작했다. 그런데 일찍 출근하다보니 시간이 좀 남기 시작했다. 유동적인 근무시간을 허용하는터라 6시간 반만 근무하고 주 42시간 30분(8시간 30분 * 5일)만 지키면 되는데, 오후 3시에 미팅이 거의 매일 있어서 하다보니 일주일에 몇시간씩 초과근무를 하게 되었는데 남는 시간을 유용하게 쓰고 싶었다.

점점 자라는 한나

한나가 점점 자라고 있어서, 오래 안아주다보니 팔이  아파오고, 와이프처럼 손목도 아파왔다. 진공청소기를 돌릴때도 팔과 손목이 힘들어했다. 40여년을 한번도 운동해본 적 없는(군대 2년 2개월 제외), 전형적인 ET몸매의, 마른 비만이었다. 육아로 지쳐 있는 상황에서, 한나가 잠에 든 후 와이프와 Cider(사과 베이스 알콜) 마시면서 TV 예능을 보며 스트레스를 해소하던 게 뱃살을 키우기도 했다. 몸무게를 재보니 68.9kg였다. 166.5cm인데 68.9kg라니… 고민이 늘어갔다.

시작

무엇을 시작할지도 몰랐다. 그리고 뭔가를 시작한다면 와이프와 함께 하고 싶었다. 클리앙에 있는 땀흘린당의 글들을 읽어나갔다. 사용기 게시판도 읽어갔다. 다이어트/운동을 관한 많은 글들을 읽고 T25와 함께 약간의 변화를 시작하기로 했다. 식단 변화는 오직 하나 – 저녁 식사 후에 아무것도 먹지 않는 것이었다. 이 식습관 변화가 자리잡은 후에는 가끔 1주일에 한번 정도는 술이든 과일이든 먹기로 했다. 운동은 T25 알파코스를 하기로 했다. 알파코스도 만만히 볼 수 없는 강도라서 앞에 있는 아시아 여성분이 하는 동작을 따라하기도 쉽지 않다는 경고를 보았지만 처음에는 무시했다. 하지만 착오였다. 동작 하나 하나를 따라하다보니, 땀은 비오듯 쏟아지고, 아시아 여성분이 하는 조금 쉬운 동작들도 버거웠다. 첫날 죽을 거 같았던 느낌이 새삼 떠오른다. 정말 힘들었다. 하지만 와이프와 서로 웃으며 계속 해보기로 했다.

Focus T25

금요일 두 코스를 해야 하는 것만 빼고는 알파코스를 2번 완주했다. 그저 “완주”였지, “제대로 완주”라기 보기는 힘들었다. 제대로 따라한 코스는 하나도 없었다. 그래도 끝까지 반복했다는 것이 스스로에게 자랑스러웠다. 이후, 손목 터널 증후군이 있는 와이프는 손목을 쓰는 동작이 많이 있어서, 2번의 알파코스를 마친 후 운동을 쉬기로 했다.  다시 변화가 찾아왔다. 혼자서 하는 것보다, 후일 와이프가 다시 참여할 수 있을 때를 기약하며, T25를 잠시 묻어두기로 했다. 대신 조금은 근력과 심폐지구력이 생긴 몸을 더 단련하고 싶었다.

맨몸운동

하체를 위한 Squat + Lunge + Calf Raise, 복부를 위한 Reverse Crunch + Half Sit Ups + Low Plank, 그리고 상체를 위한 Push Ups + Dips를 했다. 매일 모든 루틴들을 한 것은 아니였고 상체+복부, 하체+복부식으로 조합해서 해나갔다. 계속하다보니 몸에 조금씩 변화가 찾아왔고 자신감 또한 생겨났다.

배드민턴

직장 동료 2명이 아침에 배드민턴을 쳤다는 얘기를 듣고 가담하게 되었다. 그 둘은 내가 보기엔 꽤나 실력이 되어 보였는데, 아니나 다를까, 둘 다 어릴 때부터 배드민턴을 쳐왔다고 했다. 1주일에 한번 배드민턴을 하면서, 배우다 보니 정말 재미있었다. 처음으로 해보는 그룹운동이었는데, 날씨 상관없이 할 수 있었고, 이른 아침에 이용가능한 배드민턴 코트가 있어서 매주 플레이하고 있다.

수영

수영을 배우고 싶어했었다. 섬에서 태어났지만, 형제 중 나 혼자만 수영을 배우지 못했다. 바닷가에서 매일 놀았지만, 수영만큼은 배울 수 없었다. 아이가 생기고 나서, 아이와 함께 물놀이도 하고 싶었다. 그래서 수영 잘하는 동료에게 부탁을 했다. 가르치지는 않아도 좋으나, 같이 수영할 수 있을까 라고… 흔쾌히 그래주겠다는 직장 동료 덕분에 1주일에 한번 수영을 연습하기 시작했다. Youtube를 보고 조금씩 혼자서 배워나갔다. 수영을 배우고 싶어하는 다른 동료들과 같이 시작해서 서로에게 위안과 동기부여가 되기도 했다.

러닝과 족저근막염

맨몸운동이 시들해질 무렵, 달리기를 시작했다. 1주일에 한번 3km를 뛰다가, Midfoot strike를 연습하며 조금씩 횟수와 거리를 늘려나갔다. 어떻게 뛰고 있는지를 알기 위해 Suunto Ambit 3 Vertical이라는 스포츠워치를 구매 후, 일주일에 3번, 4km + 6km + 6km를 뛰었다. 그러다보니, 허벅지 근육이 조금씩 좋아지는 게 눈에 띄었다. 종아리도 점점 근육이 선명해지기 시작할 무렵, 느닷없이 족저근막염이 찾아왔다. 무조건 쉴 수 밖에 없었다. 또 다시 뛰기 위해서 러닝을 쉬기로 했다. 대신 수영을 1주일에 2회로 늘리고 수영에 집중하기로 했다. 다시 뛸 수 있는 날을 기다리며, Squat + Calf Raise를 다시 시작했다.

다음 1년

1년 목표를 세웠다. 한 시간에 10km 뛰기, 1개의 Perfect 풀업, 한번에 50개 푸쉬업, 자유형 100m 그리고 평형 100m. 그리고 그걸 책상 옆에 붙여놓았다. 내 목표를 다른 이들에게 노출함으로써, 나 자신에게 더욱 더 강한 동기를 부여하기 위해서였다.

goal

요즘

배드민턴은 여전히 빠지지 않고 참석 중이다. 달리기는 여전히 1달 넘게 하지 않고 있는데 아무래도 1~2주 정도는 더 쉬어야 할 거 같다. 다시 뛸 수 있는 날을 기다리며 운동용 깔창도 주문해놨다. 요즘 집중하는 건 수영이다. 어제 처음으로 87미터를 자유형으로 쉬지 않고 할 수 있었다. 25m 풀에서 처음 1바퀴를 돌았을 때의 성취에 이은, 나름 큰 성취였다. 자유형 100미터 목표에 아주 근접했다. 차츰 평형도 배울 준비를 하고 있다. 배드민턴/러닝/수영을 위해 맨몸 운동도 계속 조금씩 하고 있다. 상체를 위해 주로 Push Ups + 풀업바에 매달리기 + 핸드그립을 하는 중이다. 아직도 풀업은 1회도 못하지만, 조금씩 근접하고 있다. 러닝/수영킥을 위해서 squat + calf raise를 주로 하고 있다.  몸무게는 요즘 62kg 정도 나가고 있다. 69kg였다가 62kg로 줄었으니 겨우 7kg가 줄었지만, 복부에 쌓여있던 피하/내장 지방이 줄어드는 것 말고는 별로 관심이 없다. 대신 근력 증가에 집중하는데, Push Up 15개에서 같은 방식으로 25개까지 늘었고, 맨몸 squat도 요즘 50개까지는 무리없이 한번에 할 수 있는 것만 봐도 많이 좋아진 거 같다. 그리고 그 사이 훨씬 무거워진 딸 한나를 품에 안아도 그리 힘들지 않다는 것, 5시 기상 + 10시 취침 생활에도 지치지 않는 것도 큰 변화 중 하나일듯 하다. 40넘은 세월이 흘러 시작한 운동. 지난 1년 동안 이미 운동은 나에게 많은 변화를 가져다 주었다. 이제 앞으로도 꾸준히 다치지 않고 즐길 수 있기 위해 노력하려고 한다.

« 1 2 3 4 5 6 7 8 9 10 11 12 ... 24 »