[About NARAN] Introduce Jobs at NARAN, We are hiring.
NARAN은 open mind / fast - learning / passion 이 세가지를 가지고 있는 사람과 함께 일하고 싶습니다. 사물인터넷 운영체제 프로타와 함께 발전해 나가며, 프로타를 더욱 가치있고 사용하기 편리한 플랫폼으로 만들고자 합니다. 여러분이 NARAN에서 할 수 있는 것들은 아래와 같습니다.
# Marketing
## Product manager
VoC 및 Market research 를 통한 니즈 도출 및 엔지니어링과 고객의 연결고리 역할을 합니다. 프로타와 나란이 제공하는 서비스를 필요로 하는 고객에게 효율적으로 전달될 수 있도록 기술에 대한 높은 이해는 물론이고, 고객의 니즈와 시장 흐름에 대한 끊임없는 연구가 주 업무 입니다.
프로타를 누구보다도 많이 사용하고 테스트하며, 버그 리포트 및 시장의 니즈에 기반한 기능 개선 아이디어 도출, 그 밖의 NARAN 내부에서 관리하는 서비스 및 제품들의 관리를 맡게 됩니다.
## Business manager
나란의 전략적 파트너쉽을 비롯한 신제품/서비스 등을 마케팅하는 업무를 담당합니다. 새로운 제품과 서비스가 필요한 타겟 시장 분석과 전략적 접근을 통해 수익을 창출하는 것을 주요 목표로 하며, 트렌드 기술과 프로타에 대한 이해가 필수적인 업무입니다.
# Engineering
## Product Frond-end
나란의 Product팀에서 프로타의 앱 및 상용 서비스의 front-end 설계, 개발, 테스트, 배포, 관리 등을 담당하게 됩니다. 개발 업무이지만 디자인 감각은 필수 입니다.
## Product Back-end
나란의 Product팀에서 프로타의 앱 및 상용 서비스의 back-end 설계, 개발, 테스트, 배포, 관리 등을 담당하게 됩니다. 나란의 엔지니어들 처럼 Geek 마인드를 가진 분들을 환영합니다.
## Core OS
나란의 Core Operating Systems팀에서 clique engine과 프로타 코어 시스템 개발을 주로 맡게 됩니다.
## Web publishing
나란의 Product팀에서 웹 퍼블리싱을 담당하게 됩니다. 프로타와 같이 제공되는 상용 서비스와 나란의 웹사이트의 디자인, 개발, 배포, 관리가 주 업무 입니다. 디자이너지만 개발을 배우고자 하시는 분도 지원 가능합니다.
뛰어난 개인 혼자만의 힘으로 이룬다고 생각하지 않습니다. 나란은 각자가 자신의 분야에서 역량을 발휘하고 그것이 모였을 때 더욱더 빨리 발전할 수 있다고 생각합니다. 더 많은 정보를 원하시거나 채용 문의를 원하시는 분은 http://thenaran.com/kr/jobs.html 을 참고해주세요!
[Event] 오픈 테크넷 서밋 Open technet summit 2015 NARAN 발표!
2015년 3월 12일 목요일. 2012년부터 개최된 오픈 테크넷 서밋 4번째 행사에 NARAN이 발표기업으로 참가했어요!
저도 대표님이 발표하시는 김에 초대장을 받아 따라가봤습니다 :) 이번 행사에는 약 500여 명 이상이 참여한 행사로 삼성전자, Microsoft, SK Planet 등 대기업들이 대거 참여하여 오픈 소스의 현상황을 공유하는 자리였습니다.
여기서 NARAN은 오픈 소스 플랫폼 기반으로 '사물인터넷 스마트 허브 구축 사례'를 주제로 발표하게 됐습니다. 발표주제는 3월 5일에 참여했던 'K-growth hacks' 행사 때의 발표 내용과 비슷한 부분이 많으니 참고하시면 좋을 것 같네요! '제 8회 K-growth hacks 오픈 네트워킹 NARAN 발표 참여' 포스팅
(오픈 테크넷 서밋 2015 시간표)
보시다시피 '오픈소스 기반의 IoT 플랫폼 개발사례' 라는 주제로 40분간 발표를 진행했습니다. 굉장히 많은 분이 오셔서 지켜보는 저도 긴장이 됐지만, 많은 분들이 관심을 가지고 주의깊게 들어주셔서 원활한 발표가 됐던 것 같네요!
NARAN의 박태현 대표님이 발표 중인 사진입니다.
발표 끝나고 다른 세션들과 달리 발표 내용 혹은 프로타(PROTA)에 대해 궁금하신 많은 분들이 직접 NARAN의 대표님에게 찾아와 물어봐주셨네요. 이론적인 내용보다는 프로타 시연을 통해 청중들에게 사물인터넷이라는 분야가 정말 가까운 미래고 현재라는 것을 보여드리려 했어요. 프로타 시연 중에 청중들에게 가장 호응을 불러일으켰던 부분은 아마도 아래의 '자동화 룰'을 소개할 때가 아니었나 싶습니다.
많은 분들이 사용하시는 라인 메세지를 이용한 자동화 룰인데요, 조금 설명을 드리자면 라인 대화창에 "TV꺼" 라는 메세지를 보내면 일반 TV가 꺼지는 시연이었습니다. 말로만 듣던 사물인터넷 자동화 룰을 직접 보여드려 뜻깊은 시간이지 않았나 싶습니다. 오픈 테크넷 서밋(Open technet summit) 2015 에 직접 참여하지 못한 분들 중 프로타(PROTA) 데모 시연을 보고싶으신 분들이 있다면 아래의 링크로 가셔서 직접 해보세요! (발표 당일에도 아래의 링크를 통해 시연을 진행했습니다.) 직접 테스트하시기 어려운 분들은 'Guide'를 보시고 따라해보셔도 좋습니다.
[Event] '제8회 K-Growth Hacks 오픈 네트워킹' Presentation day!
2015년 3월 5일 19:00 벤처스퀘어 행사장에서 'K-Growth hacks 모바일 사업화를 위한 오픈 네트워킹' 이라는 목적으로 세미나가 열렸습니다. 여기서 저희 NARAN은 프로타(PROTA)를 소개하며 'IoT 스마트 허브 구축 사례'라는 주제로 발표를 맡았어요 :)
함께하지 못한 분들을 위해 간략하게 발표를 정리해드릴게요!
# IoT 스마트 허브 구축 사례 : PROTA(프로타) OS
myprota.com 등에서도 자세히 소개되어 있는데요, '사물인터넷 스마트 허브 - PROTA 운영체제' 에 대한 소개와 더불어 프로타를 왜 만들게 되었는지, 그리고 프로타가 앞으로 어떤 방향을 향해 나아가고 있는지를 소개하는 시간이었습니다.
## 프로타는 왜 개발되었을까
많은 리서치 기관에서 사물인터넷을 지향하는 스마트 디바이스는 계속적으로 증가할 것이며, 2020년에 달해서는 40억 개를 넘는다는 예상까지 하고 있습니다. 이런 추세 속에 일반 사용자들은 그 스마트 디바이스에 해당하는 앱들을 설치해야 되는 것 뿐만 아니라, 새로운 기술들을 배워야 하는 상황에 처하게 되죠. 편리함을 위해 발전하는 기술로 불편함을 겪게 되는 역설적인 상황에 대비해 바로, 프로타(PROTA)가 개발된 것이지요.
## 디바이스와 웹 서비스를 이어주는 자동화 플랫폼 엠비언시(Ambiency)
프로타는 스마트 디바이스와 웹 서비스를 담는 스마트 허브 역할을 할 뿐만 아니라, 그 디바이스와 웹서비스를 자동화 서비스(Ambiency 엠비언시)로 이어주는 역할까지 할 수 있습니다. 사용자가 몇 번의 클릭만으로도 "Turn off 라는 메세지를 보내면, 집에 있는 TV 를 꺼라" 라는 편리한 자동화 룰을 만들 수 있는거죠. 게다가 이런 룰들을 많은 사용자들이 쉽고 빠르게 사용할 수 있도록 사용자와 사용자 간의 자동화 룰 공유까지 지원합니다.
## NARAN이 원하는 것은 모두가 힘을 합칠 수 있는 '선순환 생태계 플랫폼'입니다.
NARAN은 이미 많은 기업들과 프로타(PROTA)를 이용한 다양한 개발을 진행하고 있습니다. 기업의 인프라부터 홈 어플라이언스까지 다양한 분야에 걸쳐 스마트 허브 프로타를 이용하여 함께 나아가고자 노력하고 있습니다. 개발자 도구 및 API 문서 등을 공유하여 많은 개발자 및 개발사들이 프로타 플랫폼에 참여할 수 있도록 하여 NARAN 혼자 힘이 아닌 많은 협력사들과 함께 조금 더 나은 프로타를 개발하고자 합니다.
NARAN의 대표님이 직접 발표하고 있네요 :)
앞으로도 다양한 이벤트에 참여하여 함께 할 수 있는 분들을 찾아보려 합니다. 많은 관심 부탁드려요! 프로타를 사용해보고 싶으신 분들은 아래의 링크를 참고하세요! PROTA Shop
[New features] Settings 앱의 WiFi & AP 모드 기능 Settings 앱의 새로운 기능을 소개해드립니다!!
기존에 소개해드린 Settings 앱이 가지고 있는 기능은 아래와 같았습니다.
* PROTA 버전 업그레이드 * 부팅 앱 선택 및 제외 * 네트워크 정보(Ethernet 정보) * 외부 접속 허용 여부 결정(Security settings) * Reboot & Shutdown * PROTA EULA, License 여러분이 사용하시는 프로타(PROTA)가 아직도 랜(LAN)선에 붙잡혀 있다면, Settings 앱의 새로운 기능인 WiFi 기능을 써보세요!! 당신의 프로타를 무선으로 사용할 수 있습니다! 아주 간단하게 설명을 드릴게요!
# WiFi 연결하기
사용 무선랜카드 칩셋은 RTL 8188EU 입니다.
라즈베리파이(Raspberry Pi) B, B+ 지원 칩셋
RTL8192CU
RTL8188CU
RTL8188EU
라즈베리파이(Raspberry Pi)2 지원 칩셋
RTL8192CU
RTL8188CU
더 나아가서 가끔씩 Hidden SSID(숨겨진 SSID)가 있는 경우가 있죠?!
그런 경우는 "Join Other Network"로 숨겨진 SSID를 연결하시면 됩니다!
# AP 모드 사용하기
AP 모드는 여러분의 프로타를 WiFi 공유기로 사용할 수 있는 기능입니다! "AP mode"를 선택하신 후 연결이 완료되면 노트북, 스마트폰, PC 등으로 WiFi 연결을 시도할 수 있습니다. 참 많은 기능이 있는 프로타(PROTA) 입니다 :) 자 이렇게 두 가지 기능을 배우면 무엇이 좋을까요??
더 이상 스마트 허브 프로타를 한 곳에 둘 필요가 없어지는 것이죠! WiFi 를 연결한 상태에서 외장 배터리를 이용한다면 더 이상 선을 통해 프로타를 연결해 둘 필요가 없어지죠! 또한 공유기를 따로 구입하지 않아도 프로타로 공유기를 사용할 수 있는거죠. (대신 AP mode 기능을 사용할 경우 무선랜카드의 사양이 꽤 좋아야겠죠?!) 셋팅앱의 다른 사용 포스팅을 소개해드릴테니 참고하시기 바랍니다! http://thenaran.blogspot.kr/2014/08/prota-settings-settings-prota.html 감사합니다 :)
Booting time of PROTA OS on Raspberry Pi2 reduced to 70%in comparison to Raspberry Pi B+. on Raspberry Pi2 : 38 seconds on Raspberry Pi B+ : 2minutes 4 seconds
- Shorter 'Installation time'
Raspberry Pi2 vs Rpi B+
Install time of 'Transmission' app just took 12seconds on Raspberry Pi2. Installation time of PROTA OS on Raspberry Pi2reduced to 66% in comparison to Raspberry Pi B+.
on Raspberry Pi2 : 12 seconds on Raspberry Pi B+ : 35 seconds
- More 'Powerful'
Raspberry Pi2 vs Rpi B+
B+ wasn't powerful enough, but with Pi2 now you can!
Shares, syncs, and collaborates files securely like cloud.
[Advanced features] Ambiency Language : What is AMBLANG?
1. Overview * Amblang is a mini language for specifying filters and actuator input parameters. ###### The grammar The context-free grammar of amblang is as follows.
Expressions can be embedded in any kind of text. When evaluated, the result can be any type of object and will be accordingly put into the enclosing text.
###### Evaluation An expression is evaluated into one of the following types. * symbol * number * bool * object A symbol is not evaluated unless it's enclosed with double curly braces ({{}}). The value of a symbol is retrieved from the provided symbol table containing sensor data with corresponding names. A literal is either a string enclosed with quotations (single or double) or a number (integer or float). If the result is an object, it must be consumed by a converter function until the end of evaluation. Failing to do so, the original expression will be remained.
A converter function can be applied to any expression with zero or more arguments. When failed, the original expression will be remained but without the converter function itself. 2. Examples --- ---
Amblang is used in sensor filters and actuator inputs. In sensor filters, amblang must be evaluted into a bool-type result. For actuator inputs, amblang must produce values of a type the actuator expects; otherwise, the actuator will not be executed. ###### Sensor Filters
When specifying filters for sensor data, users can write a filter expression in amblang. All sensor data fields can be used in a expression, and more than one expression are allowed but must result in a single boolean value at the end. Consider the following filter expression for the Email sensor.
````
{{ sender!endswith("thenaran.com") }}
````
This will check if the first sender's domain is "thenaran.com." and get evaluated to a boolean value; true or false.
````
{{ {{ receivers!len }}!gt(1) }}
````
This expression will be evaluated to true only if the number of receivers is greater than 1, meaning the email was sent to multiple recipients. Specifying multiple expressions in more than one depth is also allowed.
This evaluates to true only if the email is from "thenaran.com" and sent to multiple recipients. ###### Actuator Inputs Actuators consumes sensor data. However, from time to time, sensor data have different types and formats making direct feeding impossible. Amblang can be used to re-format any type of sensor data and assign to actuator inputs accordingly. As an example, the Email application has an actuator which can send an email message with or without attachments. The email's send actuator expects the following inputs. * receivers : string * subject : string * message : string * file : binary * file name : string Each input field has its type and it must be respected in order for a rule to succeed. For each field, amblang can be used for formatting and converting sensor data.
For instance, in a string field, an amblang expression must be evaluated into a string. If it fails to produce a corresponding input type, the expression leaves as it is written before evaluation. In other types of fields, the actuator will not be executed unless all inputs have appropriately-typed values. Consider the following input expression for the Email actuator's subject field. The WebCam application is used as an example sensor, and the trigger is "snapshot available".
````
Snapshot taken at {{ time!strftime("%a, %d %b %Y %H:%M:%S +0000") }}
````
the message field,
````
Checkout the snapshot below.
````
and the file field which expects a binary data,
````
{{image}}
````
The "snapshot available" trigger produces two types of sensor data; timestamp and snapshot image file. Each data is available under the symbols "time" and "image" respectively. The "time" data is an integer type so it must be converted to a string. In this example, the "strftime" converter is used to format the millisecond timestamp into a human-readable text. The "image" data is a binary data so it can be directly fed to the file field.
Once a motion is detected on the webcam and the snapshot gets ready, an email with the above inputs is sent with the snapshot as an attachment file. 3. Recap --- ---
Amblang is a micro-programming language that defines sensor data filter and actuator input values. It is an advanced feature of possibilities that may require getting used to, but it is not a big deal for most users because Rules can be shared and applied with almost no effort.
This is only a part of Amblang and more will be shared in the coming weeks.
4. Rule Example --- ---
Try out now with a drag-and-drop of the below image file onto your Ambiency. All you need to do is drop the image file onto the app, you can see it applied instantly.
[Advanced features] Ambiency Language : 엠블랑(AMBLANG) 이란? 자동화 룰을 만들면서 조금 더 세세한 제어를 원하신 적이 계신가요? 자동화 룰을 조금 더 나에게 맞게 사용하고 싶은 분이 있다면, 엠블랑(AMBLANG)을 배워보세요! 조금 어렵지만 꽤 강력합니다.
'센서 필터(sensor filters)', '액츄에이터 인풋(actuator inputs)' 설정시 엠블랑을 사용하면 더 정확하게 룰을 만들 수 있습니다. 센서필터 화면 왼쪽 아래에 "Advanced" 버튼을 누르시면 엠블랑으로 필터 설정을 할 수 있고, 액츄에이터 화면에서는 바로 엠블랑을 활용하여 각 인풋 필드에 값을 설정 할 수 있습니다.
(Sensor app 필터(filters) 화면)
(Actuator app 인풋(inputs) 화면)
AMBLANG
1. Overview
엠블랑(AMBLANG)은 엠비언시 앱의 ‘필터’와 액츄에이터의 인자값을 명시하기 위한 조그만 프로그래밍 언어입니다.
위의 문법을 사용한 표현식은 어느 텍스트에도 포함될 수 있습니다. 텍스트에 포함된 표현식이 도출될 때 그 결과는 객체의 어떤 타입으로도 도출될 수 있고 문자열이 될수도 있습니다.
Evaluation
하나의 표현식은 아래의 타입들 중 하나로 도출됩니다.
symbol
number
bool
object (객체)
symbol은 중괄호({{ }})로 둘러쌓여 있지 않으면 도출되지 않습니다. symbol value는 일치하는 항목의 센서데이터를 포함하는 symbol table 에서 얻을 수 있습니다. 표현식 내에서의 문자는 따옴표 혹은 쌍따옴표로 둘러 쌓여져 있어야 도출이 되고, 숫자는 정수 혹은 실수만 사용할 수 있습니다.
결과값이 객체라면, 표현식에서 도출이 완료될 때까지 변환되어 재가공되어져야 합니다. 재가공이 실패하게되면, 원래의 표현이 그대로 남게 됩니다.
2. Examples
엠블랑은 센서 필터(Sensor filters)와 액츄에이터 인풋(Actuator inputs)에 사용됩니다. 센서필터에서는 엠블랑은 bool-type 결과로 도출됩니다. 액츄에이터 인풋에서 사용되기 위해 엠블랑은 액츄에이터에서 요구되는 값으로 작성되어야 하며, 그렇지 않을 경우 액츄에이터가 제대로 실행이 되지 않을 수 있습니다.
Sensor Filters(센서 필터)
센서 데이터를 센서 필터에 구체적으로 쓰기 위해서 사용자는 엠블랑의 문법에 맞게 사용해야 합니다. 모든 센서 데이터 필드들은 한 가지 표현으로 사용되어야 하고, 한 개 이상의 표현식을 사용은 할 수 있지만, 한 가지의 boolean으로 사용되어야 합니다.
위 표현식은 “thenaran.com” 도메인으로부터 오고, 여러 수신자에게 보내질 때만 ‘true’ 값으로 도출됩니다.
Actuator Inputs(액츄에이터 인풋)
액츄에이터는 센서 데이터를 사용합니다. 센서 데이터가 다른 타입을 가지고 있어서 바로 적용하지 못하는 포맷인 경우가 있습니다. 엠블랑은 센서 데이터의 타입을 재가공하여 사용할 수 있게 해주며, 액츄에이터 인풋에서 요구하는 타입으로 맞춰서 값을 줄 수 있습니다.
한 예로 메일 앱이 액츄에이터로 사용될 때 첨부파일이 있는 경우 혹은 없는 경우로 메일을 보내는 경우가 있습니다.
메일의 ‘메일 송신 액츄에이터’는 아래의 인풋 데이터 필드를 지원합니다.
receivers : string
subject : string
message : string
file : binary
file name : string
각 액츄에이터 인풋 필드는 자동화 룰이 실행되기 위해서 필요한 값을 받게 되는데, 엠블랑은 센서데이터를 변환하여 액츄에이터 인풋 필드에서 사용될 수 있게 만들 수 있습니다. 이때 변환되는 최종값은 인풋 필드에서 요구하는 타입에 맞아야 룰이 실행 될 수 있습니다.
예를 들어, string 필드에서 엠블랑 문법을 통해 string으로 도출해야 합니다. input type(string이어야 하는 경우)을 string으로 만들지 못한다면, 원래의 input type으로 쓰여지게 됩니다. 다른 필드 타입의 경우, 모든 인풋 데이터가 적절한 타입으로 변환되지 않는다면 액츄에이터가 제대로 실행되지 않습니다.
웹캠(WebCam)앱이 센서로 사용되어 trigger가 ‘snapshot 사용’인 경우의 이메일 액츄에이터 제목 필드 부분의 인풋 표현식을 보겠습니다.
````
Snapshot taken at {{ time!strftime("%a, %d %b %Y %H:%M:%S +0000") }}
````
메세지 필드(message field),
````
Checkout the snapshot below.
````
바이너리 데이터가 쓰여져야되는 파일 필드(file field),
````
{{image}}
````
"snapshot 사용” trigger는 센서 데이터에서 두 개의 타입을 만드는데, ‘타임 스탭프(time stamp)’와 ‘스냅샷 이미지 파일(snapshot image file)’입니다.
각 데이터는 개별적으로 “time”과 “image”로 사용이 가능하고, “time” 데이터는 integer(정수)이기 때문에 string으로 변환되어져야 합니다. 이 경우 “strftime” 변환기가 사람이 읽을 수 있는 글자로 “time” 데이터를 천분의 일초(milisecond)로 변환합니다.
일단 웹캠에 움직임이 감지되면(motion detected), 위 인풋 값들이 쓰여진 이메일 앱이 첨부파일로 스냅샷을 함께 보내게 됩니다.
3. Recap
엠블랑은 센서 데이터 필터와 액츄에이터 인풋 값 정의에 사용되는 미니 프로그래밍 언어 입니다.
조금 복잡하기 때문에 전문가 분들만 사용하시겠지만, 복잡한 룰이라도 공유 받아 사용하는데는 전문지식이 필요없기 때문에 큰 걱정은 안 하셔도 될 겁니다.
아직 다 엠블랑의 기능을 보여드리진 못 했습니다. 앞으로 천천히 룰도 공유하면서 엠블랑을 더 깊게 알려드리도록 하겠습니다.
4. Rule Example
아래의 룰 이미지를 여러분의 엠비언시(ambiency) 페이지에 드래그 앤 드랍(drag & drop)하면, 룰이 공유되어 엠블랑(Amblang)의 사용예제를 직접 보실 수 있습니다.
[Casual hacking] GPIO app project 2 : how to build Air Button using ultrasonic sensor
This is the second project using the GPIO app.
Please note the following to build an Air Button using an ultrasonic sensor.
First of all, ultrasonic sensor adopts serial communication called UART.
If you would like to check out the specification of the sensor, you can do so by clicking the link below.
(Please note the data sheet or detailsfrom the product page of your purchased goods)
Product information from ultrasonic sensor: HG-C40U
From here on, please follow theinstructions below.
1. Get your breadboard ready
Like in the picture, only TxD, RxD, GND, and 5V are connected.
An LED has also been pinned to be notified whether the settings areworking properly.
2. ConfigureUART from the GPIO app
Please configure your settings as shown in the guideline of UI of GPIO app.
Baud rate : 38,400 bps
Data bit : 8 bit
Stop bit : 1 bit
Buffer size : 100
The buffer size means the number of letters that can be delivered at one transfer.
Register all values & Set !
As a result, 'Read data’ of ultrasonic sensor is retrieved.
/x32/x37/x03/x02/x5e/x31/x37/x32/x38/x03/x02/x5e.. so on. Data like /x03/x02 repeats and meaningful data follows from the third.
(note that this is limited to HG-C40U specification and data may differ depends on your ultrasonic models.)
I will also pin a LED to provide me a feedback of whether the ultrasonic sensor has been properly placed.
3. Test the ultrasonic sensor
To test whether the ultrasonic sensor has been placed properly, I will use the rules below.
Like in the clip below, tests can be made with the two automation rules.
Lets go over with how to configure the first Rule.
“If the distance reading on ultrasonic is less than 10cm, turn on the LED."
- Check out the configuring process of the first Rule in .gif!
<How to configure a sensor app>
1. select GPIO app
2. select UART serial
3. UART Read
4. (check the green checkbox)
5. select and register filter : click '+ Advanced'
Test True : {{{{{{data!split("\x03\x02^")}}[1]!to_int}}!le(100)}}
This works by parsing /x03/x02 and making use of the second data in list(=[1]). This is the value retrieved from ultrasonic sensor. (This may be a bit difficult step to some of us.. in short, le(less than and equal to) 100mm. Try testing by changing the numbers yourself!)
If you’d like to understand more about how to register code in filter values and build the rule for yourself, please try out the link(blog) below.