우선 전문개발자가 아니라 하던 일 중 이런 기능이 있으면 좋겠다 싶어서 시작한 일입니다 ㅠㅠ
바쁘시겠지만 읽어주시고 도움 주신다면 감사하겠습니다.
nas 서버 : 시놀로지 ds918+
모뎀 : 텔라딘 TX700 lte모뎀
nas 서버에는 mariadb 5를 설치 한 상태에서 단말기(stm32)에서 수집한 데이터를 모뎀을 통해 mariadb에 저장하고자합니다.
포트는 3306기본으로 열어놓았고 외부컴퓨터에서 telnet을 허용해서 cmd에서 telnet ip로 접속하면 dsm(나스관리프로그램)으로
접속되며 id, password를 입력하면 dsm로그인되며 mysql -u db_name -p 로 password를 입력시 mariadb에 접속이 가능해집니다.
(데이터 추가, 테이블 추가 삭제 등 모두 가능)
그런데 모뎀(텔라딘 TX700)의 경우 TCP socket으로만 데이터 전송이 가능하다고 합니다.
TCP socket이 뭔지 제대로 알지 못해 그냥 입력되는 데이터만 전송되는 것으로 이해해 난감한 상황이던 중
검색을 통해서 아두이노에서 입력된 데이터를 mariadb에 보내는 방법 중 php파일을 통해서 보내는 내용을 따라 진행했습니다.
php파일을 통해서 업로드 할 생각으로 아래와 같은 예제를 약간 수정해 보내고자 했습니다.
$con = mysqli_connect("localhost", "db_name", "password", "table_name");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$num = $_GET["num"];
$gps = $_GET["gps"];
$sql = "insert into bs_01.bs_01(no, gps) values($num, $gps)";
mysqli_query($con, $sql);
mysqli_close($con);
?>
php 파일이 열리면 데이터가 들어가는지 확인해보려 $num과 $gps 대신에 데이터를 넣어서 시험해보니 잘 작동했습니다.
페이지를 열 때마다 데이터가 차곡차곡 쌓였습니다.
그런데 TCP socket으로 전송한다는 모뎀의 통신방식을 이해하지 못해 코딩을 해놓고 실행해도 php파일에 데이터를
넣지도 접속하지도 못하는 것으로 보였습니다.
그러던 중 'sockettest v 3.0 0'이라는 프로그램을 알게되었고 접속을 해보니 서버에서의 반응이 전부 부정적인 것들이었습니다.
포트를 3306(db)로 정해놓고 접속을하면
R
5.5.62-MariaDB CheAVj3_ ��! � cTYC"!|qD
라고 뜨며 그냥 두면 자동으로 접속이 끊기고 비밀번호는 쳐지지 않고 아무 문자나 보내면 끝에 password 뒤에 'S: 내가보낸문자'만
표시합니다. 기본적으로 보낸 문자 받는 문자에 대한 전송 내용만 나오고
! ��#08S01Got packets out of order
라고 뜹니다.
다른 포트를 접속해도 (예. 80, 등 열어놓은 포트) 웹기반이면 400에러가 뜨면서 접속이 끊겨버립니다.
모뎀회사에서는
at커맨드로 보내는 방법이 적힌 메뉴얼에 나와있는데로라고 말해주는데 딱 저기까지 접속되고 끊겨버립니다.
보내는 측인 lte모뎀(TX700)과 받는 측인 nas mariadb를 연결해주는 방법을 모르겠습니다.
구구절절 적은 내용 이해하기 힘드시거나 설명할 부분이 많아 귀찮으실 수 있다고 생각합니다.
부디 이 문제를 해결할 수 있도록 도움주시면 감사하겠습니다.
긴 글 읽어주셔서 감사합니다.
|