Archive for Februari 2016

Websocket: A Simple Example For IOT Project

By : M yunus
Websocket is bi-directional communication protocol which emerged recently, with the introduction of HTML5. It enables full-duplex message based communication between client and server. After connection is established, messages can be transmitted, either client or server initiated. This means that you can make a dynamic web page where changes occur in real time. In that way Websockest communication presents a suitable protocol for IoT world where changes are usually asynchronously occuring and number of clients can be very large. Ok, sounds cool but what do I need to develop such web pages? To implement Websocket communication in your app there are some prerequisites on your server that has to be done. Apart from that, clients have to run browsers that support Webosckets. In this article, a simple example which includes Websocket is presented. The example is tested on Raspbian (kernel ver. 3.12.21) and Debian (kernel ver. 2.6.39). In both cases Apache web server was used to deliver html pages to the clients.
 

Server side

First thing to do is to choose webserver implementation with Websocket protocol support. Among different solutions such as Node.js (Socket.IO, WebSocket-Node, ws), Java (Jetty), Ruby (EventMachine), Python (pywebsocket, Tornado), C++ (libwebsockets), .NET (SuperWebSocket) we have decided to pick Tornado, an asynchronous webserver for python which is capable to simultaneously handle more than 10k connections. To install Tornado we recommend to use some package manager like pip or EasyInstall. We used pip, so get it:
sudo apt-get install pip
After successful installation of pip package manager you can execute the following command to install Tornado:
pip install tornado
Alternatively, you can install Tornado manually (see here). Now your system is ready to use Websocketprotocol.
The next step is to write a simple Tornado web server app. Run your favorite text editor (we like nano):
sudo nano ws.py
and write some code:
import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web

class WSHandler(tornado.websocket.WebSocketHandler):

  def open(self):
    print 'user is connected.\n'

  def on_message(self, message):
    print 'received message: %s\n' %message
    self.write_message(message + ' OK')

  def on_close(self):
    print 'connection closed\n'

application = tornado.web.Application([(r'/ws', WSHandler),])

if __name__ == "__main__":
  http_server = tornado.httpserver.HTTPServer(application)
  http_server.listen(8888)
  tornado.ioloop.IOLoop.instance().start()
As you can see, code consists of four parts:
  • import of necessary modules,
  • Websocket handler class,
  • Initialization of Tornado app – web app configuration (websocket request handler) and
  • Main program – setting up Tornado server, port definition and service start.
In WSHandler class we have defined three event handlers for basic communication:
  • open – occurs when the connection is established,
  • on_message – executed on every incomming message and
  • on_close – handler triggered on the connection close event.
Here we are connecting appropriate event handler (WSHandler) with the URI to listen to (/ws’):
application = tornado.web.Application([(r'/ws', WSHandler),])
In the main, after defining the port number, we will call the start method of the Tornado server:
if __name__ == "__main__":
  http_server = tornado.httpserver.HTTPServer(application)
  http_server.listen(8888)
  tornado.ioloop.IOLoop.instance().start()
You can finally start the server in the background:
python ws.py &
Now, your server is up and running, or more precisely waiting for websocket connection. If you are connecting over SSH, the server will be killed once you exit the session. To avoid that, use nohup command to ignore hang up signal at the end of SSH connection:
nohup python ws.py &
(Note: Make sure that port 8888 is opened on your machine. Additionally, if you are running Tornado on a machine in your local network which is behind the router, you have to make port forwarding for websockets (port 8888). Otherwise this example won't work for clients that connect from outside).

Client app

To implement websocket protocol all you need is s a simple HTML web page with some JavaScript code. Well, we used JQuery to enable websockets on the client side. Body of HTML document has <label> element for connection status text, <textbox> to input text and <button> for sending messages:
<!doctype html>
<html>
<head>
<title>Websockets</title>
<script src="http://code.jquery.com/jquery-2.0.0.js"></script>
</head>
<body>
<h1>Websockets</h1>
<label id="conn_text"></label><br />
<input type="text" id="input_text"/>
<input type="submit" id="button" value="Send" />
<div id="messages_txt" />
Javascript code should be executed after the page loads, i.e. after loading of JQuery script so it will be placed inside anonymous function which is called when document.ready event occurs:
<script>
  $(document).ready(function () {

  //script goes here

});
</script>
</body>
</html>
We will create an instance of WebSocket class to handle all requests for our app:
var ws = new WebSocket("ws://example.com:8888/ws");  //change example.com with your host
We will define three event handlers: onopen, onmessage and onclose and they are invoked respectively: when connection is opened, when new message arrives from server and when the websocket connection is closed. onopen notifies and onclose alerts client about the connection status while onmessage writes message from the server to the client’s web page:
ws.onopen = function(evt) {
  var conn_status = document.getElementById('conn_text');
  conn_status.innerHTML = "Connection status: Connected!"
};

ws.onmessage = function(evt) {
  var newMessage = document.createElement('p');
  newMessage.textContent = "Server: " + evt.data;
  document.getElementById('messages_txt').appendChild(newMessage);
};

ws.onclose = function(evt) {
  alert ("Connection closed");
};
and message sending is performed when user clicks the button:
$("#button").click(function(evt) {
  evt.preventDefault();
  var message = $("#input_text").val();
  ws.send(message);
  var newMessage = document.createElement('p');
  newMessage.textContent = "Client: " + message;
  document.getElementById('messages_txt').appendChild(newMessage);
});
If you save the whole document on your server you are ready to test websockets. Write address of your webpage into the web browser’s address bar and you will be informed if connecting to server was successful with the message inside the web page: “Connection status: Connected!". Similar information, ”Connection closed”, is alerted after closing the connection (for example if you kill ws.py). On every message sent to the server, the server echoes back  that message but with “OK” in the end. You can see every message sent from client or server in your web page:
The whole code of the web page should look like this:
<!doctype html> 
<html>
<head>
<title>Websocket</title>
<script src="http://code.jquery.com/jquery-2.0.0.js"></script>
</head>
<body>
<h1>Websocket</h1>
<label id="conn_text"></label><br />
<input type="text" id="input_text"/>
<input type="submit" id="button" value="Send" /><br />
<div id="messages_txt" />
<script>
  $(document).ready(function () {
    //change example.com with your IP or your host
    var ws = new WebSocket("ws://example.com:8888/ws");
    ws.onopen = function(evt) {
      var conn_status = document.getElementById('conn_text');
      conn_status.innerHTML = "Connection status: Connected!"
    };
    ws.onmessage = function(evt) {
      var newMessage = document.createElement('p');
      newMessage.textContent = "Server: " + evt.data;
      document.getElementById('messages_txt').appendChild(newMessage);
    };
    ws.onclose = function(evt) {
      alert ("Connection closed");
    };
    $("#button").click(function(evt) {
      evt.preventDefault();
      var message = $("#input_text").val();
      ws.send(message);
      var newMessage = document.createElement('p');
      newMessage.textContent = "Client: " + message;
      document.getElementById('messages_txt').appendChild(newMessage);
    });
  });
</script>
</body></html> 
 
 
 
 
source: http://iot-projects.com/index.php?id=websocket-a-simple-example 

PHYSICS FOREVER

By : M yunus

Kenalin, gua Yunus. Mahasiswa jurusan Fisika murni di IPB (Institut Pertanian Bogor). Gua sekarang semester 8 dan dihadapkan banyak persoalan "rumit" haha...., ya setidaknya lumayan mendramatisir.

Sepanjang gua kuliah jurusan Fisika murni pada banyak yang nanya, "nanti emang kerja dimana?", "di IPB ada jurusan Fisika?", "kalo Fisika kenapa gak ngambil Fisika di UPI aja?", "Nggk takut nganggur lu entar kalo ngandelin dari lulus Fisika doank?"............... Super dahhh tu orang-orang udah kaya dukun aja pake nebak-nebak takdir orang -__- (emoticon BT).

Asli,, gua kesel banget kalo denger pertanyaan jenis, rupa, wujud, onggokan macem itu.... bodo amat dah sama yang nanya.. rasanya mau nyelupin tuh orang ke aspal panas sambil gua kecapin terus kasih bumbu masako biar brasa idup lo :v (emoticon Evil)...... Astagfirullah :( maapin ya esmosi...

Di tahun-tahun sebelumnya kalo ada yang nanya kayak gitu gua selalu bilang (walaupun gua sendiri jujur kurang yakin) kalo jurusan fisika murni itu dapat kerja dimanapun, di industri, di bidang riset, bisnis, perbangkan, pemerintahan, dan banyak lagi. Woooowww..... dan gua yakin orang yang denger itu pasti gak percaya meskipun gua tereak - tereak pake speker mesjid sekalipun. iyalahh gua sendiri aja kagak percaya (untuk saat itu vrohh.... :v)........... yahh lumayan buat nenangin hati sendiri..... walaupun gak dipungkiri saat semester demi semester bertambah gua makin gusar ...... mau jadi apa setelah gua lulus dari jurusan yang supppppppppeeeeeeerrrrrrrrr bikin rantai karbon tiap kali nilai ujian keluar.. (-C-C-C-C-C-C-C-C-C......)???????

Setelah itu gua rajin nyari cerita-cerita sukses dari orang yang dulunya punya latar belakang fisika murni.... yang kerja di prusahaan apalah, peneliti dimanalah, punya bisnis apalah, jadi mentri lah, dan lah lah lah lah yang lainya.... sejak saat itu pola pikir gua jadi laen dari biasanya... selalu saja berfikir ............ " Gua harus lulus cepet, IPK gua gede kalo bisa cumlaude, Kerja diperusahaan ternama, Minimal BUMN, Gaji Minimal 10 juta, belum termasuk tunjangan, dapet bonus 2 kali lipat total gaji satu tahun dan di bayar saat menjelang idulfitri" .............   gua gak ngerti entah dorongan apa sampe punya pandangan macem gitu.......

Jujur waktu itu di tingkat 2 gua pengen kerja sebagai Engginer Nuklir. kenapa nuklir?? karena dari namanya aja udah bombastis.... dan itu pasti menyedot perhatian,,, kenapa Engginer?? karena waktu itu gua pikir lebih keren jadi Engginer dari pada Saintis. Superrrrrr dah.....  Pea :v

Tapi vrohhhh, lu harus tau,...........

IPK Just Number,  Cumlaude Just Name, But Skill Prove Everything.....

Semenjak gua masuk semster 6 gua sadar...... buat semua ambisi, mimpi ngawang-ngawang, nganyal kaga ada duanya, dan harap-harap gak jelas...... gua harus tinggalin...... lo harus mulai realistis dan belajar dengan baik...

Gua sadar, udah melewatkan begitu banyak harta karun......
Mekanika, Fisika Matematik, Elektronika, Termodinamika, Kuantum (terimakasih om schrodinger buat persamaanya) , Listrik Magnet yang supeeeerr mengerikan (terimakasih om Maxwell buat 4 persamaannya), fisika zat padat, sensor dan transduser, fisika komputasi, ekperimen fisika, instrumentasi fisika, biofisika dannn semuanyaaa.... semua ilmu yang udah gua dapet di departemen yg selama hampir 4 tahun membawa gua ke dunia yang luar biasa..... gua dapet banyak hal selama hampir 4 tahun ini.... semua ilmu diatas yang semula gua kira "yahhh sama aja kayak di SMA".... kaga vrohh.... ini jurusan yang menurut gua (dan bodo amat sama semua orang yang kaga ngerti fisika) bisa membawa gua memahami apapun diluar sains fisika.... dengan sangat mudah,,,,,,,,  Gua gak pake tanda petik di kata mudah , karena memang semuanya akan terlihat mudah, ini berlaku buat apapun.....

mahasiswa fisika di desain untuk "Learn How To Think"

Dan satu lagi yang paling berkesannn buat gua.. terutama 1 tahun kebelakang... saat gua belajar betapa tajamnya fisika, yup.... di PRC (Physics Research Club).  Waktu yang sangat berharga... lo di beri kesempatan dan fasilitas buat belajar apapun yang lo mau.... dan di saat itulah gua, dengan matakepala gua sendiri, tanpa ngibul, tanpa pemanis... gua bilang........... " Gua bersyukur kuliah S1 jurusan Fisika".......

Gua bangga, nunjukin ke siapapun kalo gua kuliah jurusan fisika murni, di Departemen Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor.

Mengerjakan proyek Embeded System, mengunakan puluhan sensor untuk banyak keperluan, Membuat Robot beroda, Robot Berkaki, Robot Lengan, memprogram Chip, Merancang Instrumen, belajar sistem kontrol, Belajar Internet Of Things,  mengembangkan Smart City, membuat rancangan Wireless Sensor Network, Membuat Buku tutorial Robotik sendiri, turun ke sekolah-sekolah untuk share tentang dunia robotika dan memprogram robot linefollower, sharing dan diskusi perkembangan sains dan teknologi di grup PRC, dan banyak hal luar bisa lainya.........

Terimakasih buat siapapun yang sudah sampai detik ini memberikan banyak inspirasi yang tak bisa diukur dengan uang.

Jangan pernah berhenti belajar, jangan pernah lelah untuk terus membuka buku dan bereksperimen.... sekarang bukan waktu yang tepat untuk menghawatirkan "berapa gaji yang saya akan terima jika saya bekerja????" ..... Kita harus mulai khawatir "berapa banyak waktu kita di sisa umur yang ada untuk dapat belajar.............??"

Mahasiswa fisika tidak lahir untuk hari ini dan memikirkan perutnya sendiri, Mahasiwa Fisika lahir untuk menciptakan masa depan bukan hanya untuk hadir di masa depan. 

tak ada satu cintapun tanpa landasan keyakinan..... cinta terhadap fisika timbul karena keyakinan yang kuat bahwa fisika selalu untuk semua.... 
Alam semesta bisa dan akan sangat mampu berdiri tegap tanpa ilmu sastra, ilmu sejarah, ilmu ekonomi, ilmu farmasi, ilmu kedokteran, ilmu keteknikan, ilmu biologi, ilmu matematika sekalipun..... tapi tak akan mampu berdiri tegap walau hanya 1 detikpun tanpa hukum fisika.

  Salam jabat erat tangan sahabat fisika.
  Bogor, 10 Februari 2016

  Muhammad Yunus
  - CEO Legendre -


#Legendre_Electronic_Instrumentation


- Copyright © Legendre-electronics - Date A Live - Powered by Blogger - Designed by Johanes Djogan -