{"id":1150,"date":"2012-10-28T22:03:15","date_gmt":"2012-10-28T14:03:15","guid":{"rendered":"http:\/\/gergely.imreh.net\/blog\/?p=1150"},"modified":"2012-10-28T22:04:32","modified_gmt":"2012-10-28T14:04:32","slug":"laboratory-2-0-a-monitoring-system","status":"publish","type":"post","link":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/","title":{"rendered":"Laboratory 2.0 &#8211; a monitoring system"},"content":{"rendered":"<p>Looks like that one of my specialty as a physicist, and contribution to the labs where I have worked so far, is bringing different kinds of programming techniques, and technologies to the table. I&#8217;m not saying I&#8217;m any better than many of the professors, post-docs, and students I&#8217;ve met so far (there are plenty of ingenious ones), it&#8217;s more like I experiment with different tools, have tried more of the cutting edge or recent technologies, did some web programming and could whip up something quick &#8211; that might not work very well at first, but does broaden the horizon for the rest of the people.<\/p>\n<p>Also, I&#8217;m a lazy person, so want to automate as much as possible. That was on my mind recently when we have been preparing to do a vacuum-system\u00a0<a title=\"Bake-out explanation on Wikipedia\" href=\"http:\/\/en.wikipedia.org\/wiki\/Bake-out\" target=\"_blank\">bake-out<\/a>. It&#8217;s essentially a procedure to have a delicate experimental system, mostly made up of steel, glass, and stuff like that, closed up from the atmosphere, all the air pumped out, then heated up to high temperature (~150-300\u00b0C). One has to be careful, because things can break, there are temperature limitations for some materials, also on how quickly that temperature can change, requiring careful monitoring of the status of the system. And the whole thing takes something like two weeks or more.\u00a0Perfect setting for automation.<\/p>\n<h2>Set up the electronics<\/h2>\n<p>The pressure measurements are done by some expensive other equipment so didn&#8217;t have to bother with that one yet, so set to work first on the temperature monitoring. Before it was a bunch of <a title=\"Thermocouple on Wikipedia\" href=\"http:\/\/en.wikipedia.org\/wiki\/Thermocouple\" target=\"_blank\">thermocouples<\/a> and <a title=\"Multimeter on Wikipedia\" href=\"http:\/\/en.wikipedia.org\/wiki\/Multimeter\" target=\"_blank\">multimeters<\/a>, requiring manual intervention and lots of labour. Instead, got some inspiration from <a title=\"Thermocouple Amplifier MAX31855 breakout board (MAX6675 upgrade) - v1.0\" href=\"http:\/\/www.adafruit.com\/products\/269\" target=\"_blank\">Adafruit&#8217;s Thermocouple Breakout Board<\/a>, using the <a title=\"MAX31855 Cold-Junction Compensated Thermocouple-to-Digital Converter\" href=\"http:\/\/www.maximintegrated.com\/datasheet\/index.mvp\/id\/7273\" target=\"_blank\">MAX31855<\/a> chip, and also from the <a title=\"Ocean Controls K Thermocouple Multiplexer Shield\" href=\"http:\/\/www.oceancontrols.com.au\/KTA-259.html\" target=\"_blank\">Thermocouple Multiplexer Shield<\/a>. It can handle only one channel, but can use some other chip together with it to switch between the different thermocouples, and so we can read it out one-by-one. The Adafruit board could only handle 1 channel, and the multiplexer shield was using an older chip for the measurement that I could not buy anymore. In the end, found a good analog multiplexer that one that is sold in the computer market here in Taipei, the <a title=\"CD4067B CMOS Single 16-Channel Analog Multiplexer\/Demultiplexer\" href=\"http:\/\/www.ti.com\/product\/cd4067b\" target=\"_blank\">CD4067B<\/a>, and it works pretty well.<\/p>\n<figure id=\"attachment_1167\" aria-describedby=\"caption-attachment-1167\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1167\" title=\"Breadboard setup for temperature monitoring\" src=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg\" alt=\"Breadboard setup for temperature monitoring Arduino\" width=\"550\" height=\"412\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-500x375.jpg 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-768x576.jpg 768w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2.jpg 2048w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-1167\" class=\"wp-caption-text\">Breadboard setup for temperature monitoring with Arduino<\/figcaption><\/figure>\n<p>Of course, setting it all up was quite a bit of fun times, as there were way too many gotchas along the way.<\/p>\n<ul>\n<li>MAX31855 is a <a title=\"Surface Mount Technology on Wikipedia\" href=\"http:\/\/en.wikipedia.org\/wiki\/Surface-mount_technology\" target=\"_blank\">surface-mount<\/a> component, and haven&#8217;t worked with it before. Not too bad, and can be much neater, just takes some plactice<\/li>\n<li>MAX31855 is a 3.3V circuit, so the CMOS voltage levels used by my <a title=\"Arduino Mega ADK on Arduino Wiki\" href=\"http:\/\/www.arduino.cc\/en\/Main\/ArduinoBoardADK\" target=\"_blank\">Arduino Mega ADK<\/a>\u00a0had to be level shifted<\/li>\n<li>Unlike the older chip, MAX31855 really needs differential input, and it&#8217;s much more sensitive to the environment. This required different kind of analog multiplexer than that board had<\/li>\n<li>The Arduino Mega is a new model for me, and had some strange behaviour in terms of the serial communication<\/li>\n<li>Surprisingly there are not too many options for 3.3V voltage regulators over here, just the LM1117, which is different from what others are using elsewhere<\/li>\n<li>Lots of noise and stability issues until figured out what should be how. For example under no circumstance should touch the thermocouple to conducting surfaces, and avoid ground loops<\/li>\n<li>While MAX31855 says it&#8217;s &#8220;cold-point compensated&#8221;, meaning that it accounts for the chip-s local temperature when measuring the thermocouple, it doesn&#8217;t appear completely compensated, meaning that we can have unexpected measurement change because the chip is heating up for example by being in a closed box.<\/li>\n<li>Figuring out the right amount of time to wait between switching channels (375ms seems to be good enough, 500ms is totally fine)<\/li>\n<\/ul>\n<div>In the end, though, we did have a nice 16 channel thermocouple multiplexer, sending off the measurements onto an LCD screen and to the computer over an USB cable.<\/div>\n<figure id=\"attachment_1166\" aria-describedby=\"caption-attachment-1166\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1166\" title=\"Temperature monitoring board\" src=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack-1024x768.jpg\" alt=\"Temperature monitoring board soldered\" width=\"550\" height=\"412\" srcset=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack-1024x768.jpg 1024w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack-500x375.jpg 500w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack-768x576.jpg 768w, https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack.jpg 2048w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><figcaption id=\"caption-attachment-1166\" class=\"wp-caption-text\">Temperature monitoring board in it&#8217;s lab setting with 16 thermocouple channels<\/figcaption><\/figure>\n<p>This is then saved in a database, and can be accessed from elsewhere.<\/p>\n<h2>Visualize!<\/h2>\n<p>The thing that my co-workers were most amazed by wasn&#8217;t the electronics. Sure, they haven&#8217;t worked with Arduinos, but did do similar stuff. Instead they liked the monitoring interface much more, this is the one on the picture right here (can click to enlarge)<\/p>\n<figure id=\"attachment_1151\" aria-describedby=\"caption-attachment-1151\" style=\"width: 550px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/BOMon.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1151  \" title=\"Bakeout Monitor\" src=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/BOMon-1024x586.png\" alt=\"Bakeout Monitor  interface showing the vacuum system, temperatures, pressures and long term graphs\" width=\"550\" height=\"314\" \/><\/a><figcaption id=\"caption-attachment-1151\" class=\"wp-caption-text\">Bakeout Monitor interface (click image for full view)<\/figcaption><\/figure>\n<p>It&#8217;s the schematic layout of our equipment, with the temperatures positioned where the actual sensors are. Also, the change of the measured values in time are also displayed with live scrolling.<\/p>\n<p>I&#8217;m not saying it&#8217;s great. Thinking about it, the major insight that made it good for the rest of the people is that I realized how much more people understand visual data: the placement of the values to the corresponding locations on the schematics. That&#8217;s the only thing.<\/p>\n<p>So inside it&#8217;s a <a title=\"MongoDB\" href=\"http:\/\/www.mongodb.org\/\" target=\"_blank\">MongoDB<\/a> database (learned from previous mistakes, using a replica-set at least), with <a title=\"Python homepage\" href=\"http:\/\/www.python.org\/\" target=\"_blank\">Python<\/a> scripts talking to the sensors and saving the data, <a title=\"NodeJS home page\" href=\"http:\/\/nodejs.org\/\" target=\"_blank\">NodeJS<\/a> \/<a title=\"Smoothie Charts homepage\" href=\"http:\/\/smoothiecharts.org\/\" target=\"_blank\"> Smoothie Charts<\/a> for visualization (and plain old CSS positioning of <a title=\"&lt;input&gt; tag explanation\" href=\"http:\/\/www.w3schools.com\/tags\/tag_input.asp\">&lt;input&gt; tags<\/a> for the reading display), <a title=\"NGINX homepage\" href=\"http:\/\/nginx.org\/\" target=\"_blank\">nginx<\/a>&#8216;s upstream module\u00a0for running two monitoring servers just in case. It&#8217;s mostly in the <a title=\"Bakeout code on Github\" href=\"https:\/\/github.com\/imrehg\/bakeout\" target=\"_blank\">Github repo of the monitoring code<\/a>, as well as the <a title=\"Arduino temperature monitoring\" href=\"https:\/\/github.com\/imrehg\/sketchbook\/tree\/master\/Thermocouple5\" target=\"_blank\">Arduino sketch for talking to the electronics<\/a>.<\/p>\n<p>It was actually quite fun to write it all, and the gradual improvements, trying the new tech, trying not to lose to much data, amazed how well it works. Especially had a good time learning about the database, scaling, fault tolerance,\u00a0performance&#8230;<\/p>\n<p>Of course there could be room for a lot more improvements.<\/p>\n<ul>\n<li>My failover-restart bash scripts are awful, though they do seem to work more or less and counteract the USB unreliablilities<\/li>\n<li>There were some changes to Smoothie Charts that I could improve on: logarithmic plotting, some display enhancements, wonder if it can be more optimized for performance<\/li>\n<li>More efficient data loading. 12h data is about 30Mb in JSON format, that I send compressed, apparently it gets down to ~5% in size, but it still takes quite a bit of time to process on the frontend<\/li>\n<li>The layout now can be changed from config files if the sensors change, so co-workers can do that without programming knowledge. I wonder if that can be simplified even more<\/li>\n<\/ul>\n<p>Of course, I&#8217;m a person who generally overengineers stuff, so maybe it&#8217;s good to stop somewhere. And the somewhere might be when I got to the point to use my Kindle for monitoring (craps out on 1h data already, but some real time things are good enough).<\/p>\n<figure id=\"attachment_1161\" aria-describedby=\"caption-attachment-1161\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/bomon_kindle_opt1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1161\" title=\"Bakeout Monitor on Kindle\" src=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/bomon_kindle_opt1.jpg\" alt=\"Bakeout Monitor interface running on Kindle\" width=\"500\" height=\"416\" \/><\/a><figcaption id=\"caption-attachment-1161\" class=\"wp-caption-text\">Bakeout Monitor on running on Kindle 3, not perfect but does work<\/figcaption><\/figure>\n<h2>Get on with it<\/h2>\n<p>I did learn a lot along the way, and I&#8217;m sure that with this experience I will be let to do a little bit more in the lab in terms of programming ideas. I don&#8217;t like that the rest of the system is currently forced to be LabView, but that&#8217;s for another post, and there are so many things that can be improved in general as well. Let&#8217;s just go and do that.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Being lazy physicist programmer, I grab on every opportunity to automate things in our lab. Recently I had my first large scale chance to try out the technologies I was playing with in my spare time, and amaze my coworkers. And of course create something useful.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,10,8],"tags":[90,63,89],"class_list":["post-1150","post","type-post","status-publish","format-standard","hentry","category-admin","category-lab","category-prog","tag-mongodb","tag-nodejs","tag-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Laboratory 2.0 - a monitoring system - ClickedyClick<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laboratory 2.0 - a monitoring system - ClickedyClick\" \/>\n<meta property=\"og:description\" content=\"Being lazy physicist programmer, I grab on every opportunity to automate things in our lab. Recently I had my first large scale chance to try out the technologies I was playing with in my spare time, and amaze my coworkers. And of course create something useful.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/\" \/>\n<meta property=\"og:site_name\" content=\"ClickedyClick\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:published_time\" content=\"2012-10-28T14:03:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-28T14:04:32+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg\" \/>\n<meta name=\"author\" content=\"Gergely Imreh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@imrehg\" \/>\n<meta name=\"twitter:site\" content=\"@imrehg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gergely Imreh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/\"},\"author\":{\"name\":\"Gergely Imreh\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"headline\":\"Laboratory 2.0 &#8211; a monitoring system\",\"datePublished\":\"2012-10-28T14:03:15+00:00\",\"dateModified\":\"2012-10-28T14:04:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/\"},\"wordCount\":1236,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/temphack2-1024x768.jpg\",\"keywords\":[\"mongodb\",\"nodejs\",\"python\"],\"articleSection\":[\"Admin\",\"Lab\",\"Programming\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/\",\"name\":\"Laboratory 2.0 - a monitoring system - ClickedyClick\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/temphack2-1024x768.jpg\",\"datePublished\":\"2012-10-28T14:03:15+00:00\",\"dateModified\":\"2012-10-28T14:04:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#primaryimage\",\"url\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/temphack2-1024x768.jpg\",\"contentUrl\":\"http:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/temphack2-1024x768.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2012\\\/10\\\/laboratory-2-0-a-monitoring-system\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laboratory 2.0 &#8211; a monitoring system\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\",\"name\":\"ClickedyClick\",\"description\":\"Life in real, complex and digital.\",\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\",\"name\":\"Gergely Imreh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"caption\":\"Gergely Imreh\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\"},\"description\":\"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net\",\"sameAs\":[\"https:\\\/\\\/gergely.imreh.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/gergely.imreh\",\"https:\\\/\\\/www.instagram.com\\\/imrehg\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/gergelyimreh\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GergelyImreh\"],\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/author\\\/gergely\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Laboratory 2.0 - a monitoring system - ClickedyClick","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/","og_locale":"en_GB","og_type":"article","og_title":"Laboratory 2.0 - a monitoring system - ClickedyClick","og_description":"Being lazy physicist programmer, I grab on every opportunity to automate things in our lab. Recently I had my first large scale chance to try out the technologies I was playing with in my spare time, and amaze my coworkers. And of course create something useful.","og_url":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/","og_site_name":"ClickedyClick","article_publisher":"https:\/\/www.facebook.com\/gergely.imreh","article_author":"https:\/\/www.facebook.com\/gergely.imreh","article_published_time":"2012-10-28T14:03:15+00:00","article_modified_time":"2012-10-28T14:04:32+00:00","og_image":[{"url":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg","type":"","width":"","height":""}],"author":"Gergely Imreh","twitter_card":"summary_large_image","twitter_creator":"@imrehg","twitter_site":"@imrehg","twitter_misc":{"Written by":"Gergely Imreh","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#article","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/"},"author":{"name":"Gergely Imreh","@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"headline":"Laboratory 2.0 &#8211; a monitoring system","datePublished":"2012-10-28T14:03:15+00:00","dateModified":"2012-10-28T14:04:32+00:00","mainEntityOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/"},"wordCount":1236,"commentCount":1,"publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#primaryimage"},"thumbnailUrl":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg","keywords":["mongodb","nodejs","python"],"articleSection":["Admin","Lab","Programming"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/","url":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/","name":"Laboratory 2.0 - a monitoring system - ClickedyClick","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#primaryimage"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#primaryimage"},"thumbnailUrl":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg","datePublished":"2012-10-28T14:03:15+00:00","dateModified":"2012-10-28T14:04:32+00:00","breadcrumb":{"@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#primaryimage","url":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg","contentUrl":"http:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2012\/10\/temphack2-1024x768.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/gergely.imreh.net\/blog\/2012\/10\/laboratory-2-0-a-monitoring-system\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gergely.imreh.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Laboratory 2.0 &#8211; a monitoring system"}]},{"@type":"WebSite","@id":"https:\/\/gergely.imreh.net\/blog\/#website","url":"https:\/\/gergely.imreh.net\/blog\/","name":"ClickedyClick","description":"Life in real, complex and digital.","publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gergely.imreh.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0","name":"Gergely Imreh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","caption":"Gergely Imreh"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g"},"description":"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net","sameAs":["https:\/\/gergely.imreh.net\/","https:\/\/www.facebook.com\/gergely.imreh","https:\/\/www.instagram.com\/imrehg\/","https:\/\/www.linkedin.com\/in\/gergelyimreh\/","https:\/\/www.youtube.com\/@GergelyImreh"],"url":"https:\/\/gergely.imreh.net\/blog\/author\/gergely\/"}]}},"_links":{"self":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/comments?post=1150"}],"version-history":[{"count":27,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1150\/revisions"}],"predecessor-version":[{"id":1184,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1150\/revisions\/1184"}],"wp:attachment":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/media?parent=1150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/categories?post=1150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/tags?post=1150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}