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 […]
블로그
아래는 간단히 유닉스 파일시스템을 읽어 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 로그에 “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 #—————————————————— # 임시폴더 생성 #—————————————————— […]
tcp 소켓의 send 함수와 같은 함수인 write(데이터, 데이터 길이) 함수를 이용하여 통신서버로 데이터를 전송하려고 할때 size_t write(const char *buffer, size_t size); 아두이노에서는 데이터 길이가 90 bytes 를 초과하게 되면 에러가 발생하게 된다. 따라서 전송할 용량이 크다면, 버퍼를 여러건으로 나누어 전송할 필요가 있다. wfClent.write(pCharBuffer1, 90); wfClent.write(pCharBuffer2, 70); ….
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 라이브러리를 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 또는 Method ‘begin’ could not be resolved 등이 나타날때 프로젝트를 클릭후 마우스 오른쪽 클릭시 나타나는 컨텍스트 메뉴에서 index > Rebuild 를 해주면 에러가 사라진다.
아두이노에서 아래처럼 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. 제어판의 장치관리자를 열어 “기타 […]