로딩중...

블로그

아두이노와 푸시(MQTT)

1. 아두이노에서 푸시를 사용하기 위해서 MQTT 프로토콜을 구현한 클라이언트를 다운받는다. – https://github.com/knolleary/pubsubclient 2. pubsubclient 라이브러리를 Import받고 아래와 같이 구현하면 된다. #include “TemptClient.h” #include #include void messageArrived(char* topic, byte* payload, unsigned int uIntLength); PubSubClient gClsMqttClient(gpChrServer, 1883, messageArrived, gClsWfClient); void messageArrived(char* topic, byte* payload, unsigned int uIntLength) { int intIndex = 0; char pChrBuffer[uIntLength + 1]; for […]

더보기

유닉스 파일 시스템을 체크하여 SMS을 보내는 쉘 프로그램

아래는 간단히 유닉스 파일시스템을 읽어 Config.ini에 정해놓은 용량보다 크게되면 SMS를 전송하는 쉘스크립트이다. #! /bin/ksh -f MANPATH=/usr/man:/usr/share/man:/opt/SUNWspro/man # Set up the oracle variables: ORACLE_HOME=/rtd_orahome ORACLE_SID=XXXX ORACLE_TERM=vt100 ORAWEB_HOME=$ORACLE_HOME/ows/3.0 ORAWEB_SITE=web ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data TNS_ADMIN=$ORACLE_HOME/network/admin ORACLE_OWNER=AAAA LANG=korean NLS_LANG=American_America.KO16KSC5601 # Set up the search paths: PATH=/opt/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:/usr/sbin:/usr/openwin/bin:$ORACLE_HOME/bin:$ORAWEB_HOME/bin:. LD_LIBRARY_PATH=/opt/SUNWspro/lib:/usr/lib:/usr/ccs/lib:/usr/openwin/lib:/usr/ucblib:$ORACLE_HOME/lib export PATH ORACLE_HOME ORACLE_SID ORACLE_TERM LANG LD_LIBRARY_PATH ORAWEB_HOME MANPATH ORA_NLS32 TNS_ADMIN ORACLE_OWNER #============================================================================================================= SMS_CLIENT=/rtd_home/monitor/bin/SmsSender CONFIG_FILE=/rtd_home/monitor/cfg/config.ini […]

더보기

오라클 Alert Log에 에러 발생시 SMS로 전송하는 쉘 스크립트

아래는 장애발생시 오라클의 alert 로그에 “ORA-“와 같이 쌓이는것을 착안하여 만든 프로그램이다. #! /bin/ksh export ORACLE_HOME=/rtd_orahome export ORACLE_SID=XXXXX export ORACLE_OWNER=AAAAA export ORAWEB_HOME=$ORACLE_HOME/ows/3.0 export ORAWEB_SITE=web export LANG=korean export NLS_LANG=American_America.KO16KSC5601 export ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data export PATH=$PATH:.:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:/usr/sbin:/usr/openwin/bin:$ORACLE_HOME/bin:$ORAWEB_HOME/bin:. export LD_LIBRARY_PATH=/opt/SUNWspro/lib:/usr/lib:/usr/ccs/lib:/usr/openwin/lib:/usr/ucblib:$ORACLE_HOME/lib SMS_CLIENT=/rtd_home/monitor/bin/SmsSender CONFIG_FILE=/rtd_home/monitor/cfg/config.ini HOST_NAME=`hostname` # 로그의 라인수 저장파일 LOG_CNT=/rtd_home/monitor/temp/alertlog_line_cnt.txt touch $LOG_CNT # 이전에 기록한 라인수를 읽는다 cat $LOG_CNT | read intPrevLineCnt # 전체라인수 […]

더보기

오라클 아카이브 로그 백업 및 이동 쉘 스크립트

오라클 아카이브로그 백업 및 이동 – find 명령에 -mtime은 일당인데 -mmin 같은 옵션이 없어 touch로 파일생성후 그 파일의 생성일과 비교하여 1시간 전 데이터를 검색 할수 있다. #! /bin/ksh ORACLE_ARCHIVE_SRC_DIR=”/rtd_data10/ARCH” ORACLE_ARCHIVE_DST_DIR=”/backup/rtd/rtd_data10/ARCH” ORACLE_ARCHIVE_PREFIX_NAME=”archive” #—————————————————— # 오래된 압출파일 삭제 주기(일단위) #—————————————————— DEL_GZIP_FILE_INTERVAL=”60″ #—————————————————— # KST-9는 시간 -8은 1시간전 #—————————————————— FIND_TIME=`TZ=KST-8; date +%Y%m%d%H%M` TEMP_DIR=$ORACLE_ARCHIVE_SRC_DIR/$FIND_TIME #—————————————————— # 임시폴더 생성 #—————————————————— […]

더보기

아두이노 WiFiClient의 write 함수의 제약

tcp 소켓의 send 함수와 같은 함수인 write(데이터, 데이터 길이) 함수를 이용하여 통신서버로 데이터를 전송하려고 할때 size_t write(const char *buffer, size_t size); 아두이노에서는 데이터 길이가 90 bytes 를 초과하게 되면 에러가 발생하게 된다. 따라서 전송할 용량이 크다면, 버퍼를 여러건으로 나누어 전송할 필요가 있다. wfClent.write(pCharBuffer1, 90); wfClent.write(pCharBuffer2, 70); ….

더보기

CORS (Cross-origin resource sharing) 서비스가 다른 크로스도메인 해결방법

Ajax에서 특정 서비스 호출 시 도메인이 서로 다를경우, 정상적인 서비스를 호출하기 위해서는 Spring MVC의 필터링을 이용하여 처리할 수 있다. 1. OncePerRequestFilter 를 상속 필터 클레스 구현 package 패키지명; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.filter.OncePerRequestFilter; public class CorsFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) […]

더보기

이클립스 아두이노에서 WiFi 라이브러리 추가시 오류 발생시 처리

이클립스에서 WiFi 라이브러리를 Import 받았을때 아래와 같이 파일을 찾을수 없다고 나온다면 다음과 같이 처리하면 된다. 09:39:27 **** Incremental Build of configuration Release for project TemptClient **** make all ‘Building file: C:/Applications/arduino-1.0.6/libraries/WiFi/utility/server_drv.cpp’ ‘Invoking: AVR C++ Compiler’ avr-g++ -I”C:\Applications\arduino-1.0.6\hardware\arduino\cores\arduino” -I”C:\Applications\arduino-1.0.6\hardware\arduino\variants\standard” -I”C:\Projects\89.IOTSolutions\02.Solutions\TemptClient” -I”C:\Applications\arduino-1.0.6\libraries\WiFi” -D__IN_ECLIPSE__=1 -DUSB_VID= -DUSB_PID= -DARDUINO=106 -Wall -Os -ffunction-sections -fdata-sections -fno-exceptions -g -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF”WiFi/utility/server_drv.d” […]

더보기

이클립스에서 Symbol ‘Serial’ could not be resolved 에러 발생시 처리

아래와 같이 Symbol ‘Serial’ could not be resolved 또는 Method ‘begin’ could not be resolved 등이 나타날때 프로젝트를 클릭후 마우스 오른쪽 클릭시 나타나는 컨텍스트 메뉴에서 index > Rebuild 를 해주면 에러가 사라진다.

더보기

아두이노 float을 문자열로 변환

아두이노에서 아래처럼 sprintf을 이용하여 문자열로 변경하려고 할때 결과를 보면 ? 가 출력된다. sprintf(pChrBuffer, “%f”, fltValue); 아두이노에서는 float형에 대해서 sprintf가 제대로 지원되지 않는듯하여, 확인하여 보니 아래 함수를 이용하면 변환할수 있다. char * dtostrf(ouble __val, signed char __width, unsigned char __prec, char * __s); float fltValue = 123.456; char pChrBuffer[50]; dtostrf(fltValue , 5, 2, pChrBuffer); // 5 […]

더보기

아두이노 와이파이 쉴드 펌웨어 업그레이드

1. 아두이노와 분리 2. 점퍼 스위치 변경 위와 같이 하나만 꽂아 있는 딥스위치를 빼서 두군데 다 접지되도록 한다. 3. ATMEL 펌웨어 수정프로그램 다운로드 – http://www.atmel.com/tools/FLIP.aspx 에서 하단에 있는 FLIP 3.4.7 for Windows (Java Runtime Environement included) 버전을 받아 설치 4. USB 연결 – wifi 쉴드의 USB를 PC와 연결하여 전원을 넣는다. 5. 제어판의 장치관리자를 열어 “기타 […]

더보기