{"id":4681,"date":"2019-12-19T12:53:20","date_gmt":"2019-12-19T03:53:20","guid":{"rendered":"https:\/\/blog.obniz.io\/?p=4681"},"modified":"2019-12-19T12:53:47","modified_gmt":"2019-12-19T03:53:47","slug":"migrate-obniz2-to-obniz3","status":"publish","type":"post","link":"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html","title":{"rendered":"How to migrate to obniz 3.0.x"},"content":{"rendered":"\n<p>obniz.js \/ obnizOS 3 has various new features.<\/p>\n\n\n\n<!--more-->\n\n\n\n<ul class=\"wp-block-list\"><li>The startup screen looks cool!<\/li><li>BLE is easier to use!<\/li><li>To use the Sleep function!(Only obniz Board 1Y)<\/li><\/ul>\n\n\n\n<p>To use these new features, both firmware and program updates are required.<\/p>\n\n\n\n<p>\u203bHow to update the firmware. See blow: <a href=\"https:\/\/obniz.com\/doc\/cloud_device\/ota\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Remote OS Update (OTA) (opens in a new tab)\">Remote OS Update (OTA)<\/a><\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_11 counter-flat counter-numeric\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#Change_obniz_js_version\" title=\"Change obniz.js version\">Change obniz.js version<\/a><\/li><li class=\"ez-toc-page-1\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#Added_BLE_initialization\" title=\"Added BLE initialization\">Added BLE initialization<\/a><\/li><li class=\"ez-toc-page-1\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#Delete_BLE_CCCD_settings\" title=\"Delete BLE CCCD settings\">Delete BLE CCCD settings<\/a><\/li><li class=\"ez-toc-page-1\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#Delete_BLE_security_settings\" title=\"Delete BLE security settings\">Delete BLE security settings<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Change_obniz_js_version\"><\/span>Change obniz.js version<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Change the HTML tag obniz@2.X.X to 3.0.X.<\/p>\n\n\n\n<p>Before<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;script src=\"https:\/\/unpkg.com\/obniz@2.0.3\/obniz.js\" crossorigin=\"anonymous\">&lt;\/script>\n<\/pre>\n\n\n\n<p>After<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;script src=\"https:\/\/unpkg.com\/obniz@3.0.X\/obniz.js\" crossorigin=\"anonymous\">&lt;\/script>\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Added_BLE_initialization\"><\/span>Added BLE initialization<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>If you are writing a program that uses BLE, you need to initialize BLE.<\/p>\n\n\n\n<p>Call <code>await obniz.ble.initWait()<\/code> first.<\/p>\n\n\n\n<p>Before<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">obniz.onconnect = async function () {\n    obniz.ble.scan.start();\n    .\n    .\n    .\n}\n<\/pre>\n\n\n\n<p>After<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">obniz.onconnect = async function () {\n    await obniz.ble.initWait();\n    obniz.ble.scan.start();\n    .\n    .\n    .\n}\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Delete_BLE_CCCD_settings\"><\/span>Delete BLE CCCD settings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In obniz 2.x.x, it was necessary to use CCCD Descriptor (0x2902) when using the BLE notify function.<\/p>\n\n\n\n<p>Since obniz 3.0.0 they are created automatically. Therefore, delete about descriptors description completely.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"text-decoration: underline;\">Use obniz as a peripheral<\/span><\/h4>\n\n\n\n<p>Before<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var characteristic = new obniz.ble.characteristic({\n  uuid: 'FFF1',\n  data: [0x0e, 0x00],\n  properties : [\"read\",\"write\",\"notify\"],  \/\/ add notify properties\n  descriptors: [\n    {\n      uuid: '2902', \/\/CCCD\n      data: [0x00, 0x00],  \/\/2byte\n    }, \n  ],\n});\n\nvar service = new obniz.ble.service({\n  uuid: 'FFF0',\n  characteristics: [characteristic],\n});\nobniz.ble.peripheral.addService(service);\n\n\n\/\/ after central connected\ncharacteristic.notify();\n<\/pre>\n\n\n\n<p>After<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var characteristic = new obniz.ble.characteristic({\n  uuid: 'FFF1',\n  data: [0x0e, 0x00],\n  properties : [\"read\",\"write\",\"notify\"],  \/\/ add notify properties\n  descriptors: [],  \/\/ CCCD\u306fproperties\u3092\u307f\u3066\u81ea\u52d5\u3067\u4ed8\u4e0e\u3055\u308c\u307e\u3059\n});\n\nvar service = new obniz.ble.service({\n  uuid: 'FFF0',\n  characteristics: [characteristic],\n});\nobniz.ble.peripheral.addService(service);\n\n\n\/\/ after central connected\ncharacteristic.notify();\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><span style=\"text-decoration: underline;\">Use obniz as Central<\/span><\/h4>\n\n\n\n<p>Before<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var target = {\n  localName: \"obniz-notify\"\n};\n\nvar peripheral = await obniz.ble.scan.startOneWait(target);\nvar connected = await peripheral.connectWait();\nif(connected){\n  let char = peripheral.getService('fff0').getCharacteristic( 'fff1');\n  let cccd = char.getDescriptor(\"2902\");\n  let result = await cccd.writeWait([0x01, 0x00]); \/\/ register cccd for remote peripheral \n\n  console.log(await cccd.readWait()); \/\/ check cccd \n\n  char.registerNotify( function(data){\n    console.log(\"notify with data \" + data.join(','));\n  });\n\n}\n<\/pre>\n\n\n\n<p>After<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var target = {\n  localName: \"obniz-notify\"\n};\n\nvar peripheral = await obniz.ble.scan.startOneWait(target);\nvar connected = await peripheral.connectWait();\nif(connected){\n let char = peripheral.getService('fff0').getCharacteristic( 'fff1');\n \n \/\/ delete cccd setting\n  \n char.registerNotify( function(data){\n    console.log(\"notify with data \" + data.join(','));\n  });\n\n}\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Delete_BLE_security_settings\"><\/span>Delete BLE security settings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>obniz 2.x.x had a function to set the security level of BLE.<br>Since obniz 3.0.0, security is automatically supported.<\/p>\n\n\n\n<p>Before<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">obniz.ble.security.onerror = function() {\n    console.error('security set params error');\n    obniz.reboot();\n};\nsecurity.setModeLevel(1, 2); \/\/LE Security Mode 1, Level 2\n<\/pre>\n\n\n\n<p>After<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ nothing todo<\/pre>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>The migration is complete!<br>obniz 3.0.X includes Sleep function that can be used with 1Y, so please try it out.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>obniz.js \/ obnizOS 3 has various new features.<\/p>\n","protected":false},"author":2,"featured_media":7262,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"spay_email":"","_locale":"en_US","_original_post":"4629","footnotes":""},"categories":[44],"tags":[],"class_list":["post-4681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","en-US"],"jetpack_featured_media_url":"https:\/\/blog.obniz.com\/wp-content\/uploads\/2020\/05\/image-default.png","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to migrate to obniz 3.0.x - obniz\u516c\u5f0f\u30d6\u30ed\u30b0<\/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:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to migrate to obniz 3.0.x - obniz\u516c\u5f0f\u30d6\u30ed\u30b0\" \/>\n<meta property=\"og:description\" content=\"obniz.js \/ obnizOS 3 has various new features.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html\" \/>\n<meta property=\"og:site_name\" content=\"obniz\u516c\u5f0f\u30d6\u30ed\u30b0\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/obniz.io\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-19T03:53:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-19T03:53:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.obniz.com\/wp-content\/uploads\/2020\/05\/image-default.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@obniz_io\" \/>\n<meta name=\"twitter:site\" content=\"@obniz_io\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"2 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.obniz.com\/#organization\",\"name\":\"obniz\",\"url\":\"https:\/\/blog.obniz.com\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/obniz.io\/\",\"https:\/\/www.youtube.com\/channel\/UCp8JPDfWVlN7DU_9mMaEz1Q\",\"https:\/\/twitter.com\/obniz_io\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/blog.obniz.com\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/blog.obniz.com\/wp-content\/uploads\/2020\/03\/logo_square.png\",\"width\":550,\"height\":550,\"caption\":\"obniz\"},\"image\":{\"@id\":\"https:\/\/blog.obniz.com\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.obniz.com\/#website\",\"url\":\"https:\/\/blog.obniz.com\/\",\"name\":\"obniz\\u516c\\u5f0f\\u30d6\\u30ed\\u30b0\",\"description\":\"IoT\\u306e\\u305f\\u3081\\u306e\\u30cf\\u30fc\\u30c9\\u30a6\\u30a7\\u30a2\\u30af\\u30e9\\u30a6\\u30c9\\u30b5\\u30fc\\u30d3\\u30b9\\u300cobniz\\u300d\\u306e\\u6700\\u65b0\\u60c5\\u5831\\u3092\\u304a\\u4f1d\\u3048\\u3057\\u307e\\u3059\",\"publisher\":{\"@id\":\"https:\/\/blog.obniz.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/blog.obniz.com\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/blog.obniz.com\/wp-content\/uploads\/2020\/05\/image-default.png\",\"width\":1200,\"height\":600,\"caption\":\"no-image\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#webpage\",\"url\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html\",\"name\":\"How to migrate to obniz 3.0.x - obniz\\u516c\\u5f0f\\u30d6\\u30ed\\u30b0\",\"isPartOf\":{\"@id\":\"https:\/\/blog.obniz.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#primaryimage\"},\"datePublished\":\"2019-12-19T03:53:20+00:00\",\"dateModified\":\"2019-12-19T03:53:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.obniz.com\/\",\"url\":\"https:\/\/blog.obniz.com\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html\",\"url\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html\",\"name\":\"How to migrate to obniz 3.0.x\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#webpage\"},\"author\":{\"@id\":\"https:\/\/blog.obniz.com\/#\/schema\/person\/2bc658b5f4ae446d33563d8ed4cdfb7e\"},\"headline\":\"How to migrate to obniz 3.0.x\",\"datePublished\":\"2019-12-19T03:53:20+00:00\",\"dateModified\":\"2019-12-19T03:53:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#webpage\"},\"publisher\":{\"@id\":\"https:\/\/blog.obniz.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/blog.obniz.com\/en\/blog\/migrate-obniz2-to-obniz3.html#primaryimage\"},\"articleSection\":\"Column\",\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.obniz.com\/#\/schema\/person\/2bc658b5f4ae446d33563d8ed4cdfb7e\",\"name\":\"kohei kido\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/blog.obniz.com\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5520f6014b8041df6a164fca5f7db8b1a93dade45107379c38b974d6d086c45d?s=96&d=mm&r=g\",\"caption\":\"kohei kido\"},\"sameAs\":[\"https:\/\/obniz.io\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","jetpack_shortlink":"https:\/\/wp.me\/paVgsL-1dv","jetpack-related-posts":[{"id":887,"url":"https:\/\/blog.obniz.com\/en\/news\/obniz-js-2-0-0-obniz-firmware-2-0-0-released.html","url_meta":{"origin":4681,"position":0},"title":"obniz.js 2.0.0 \/ obniz firmware 2.0.0 released","date":"2019\u5e742\u670816\u65e5","format":false,"excerpt":"New function and improvement was added to firmware\u2026","rel":"","context":"In &quot;News&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":885,"url":"https:\/\/blog.obniz.com\/en\/news\/obniz-firmware-1-1-0-and-obniz-js-1-15-0-released.html","url_meta":{"origin":4681,"position":1},"title":"obniz firmware 1.1.0 and obniz.js 1.15.0 released","date":"2019\u5e741\u670816\u65e5","format":false,"excerpt":"obniz firmware 1.1.0 New Features Add BLE Security\u2026","rel":"","context":"In &quot;News&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4655,"url":"https:\/\/blog.obniz.com\/en\/news\/todays-release-20191217.html","url_meta":{"origin":4681,"position":2},"title":"Todays Release.  \"obniz Board 1Y\" is on sale, JS\/OS ver3, obniz-noble","date":"2019\u5e7412\u670817\u65e5","format":false,"excerpt":"We start selling the new official device \u201cobniz Bo\u2026","rel":"","context":"In &quot;News&quot;","img":{"alt_text":"","src":"https:\/\/i1.wp.com\/blog.obniz.com\/wp-content\/uploads\/2021\/03\/cat-update.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":11996,"url":"https:\/\/blog.obniz.com\/en\/news\/update\/20210721-obniz-update-info.html","url_meta":{"origin":4681,"position":3},"title":"July 21 Release Note OS 3.5.0 and Cloud features","date":"2021\u5e747\u670821\u65e5","format":false,"excerpt":"obnizOS 3.5.0 Released","rel":"","context":"In &quot;News&quot;","img":{"alt_text":"","src":"https:\/\/i1.wp.com\/blog.obniz.com\/wp-content\/uploads\/2021\/03\/cat-update.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":889,"url":"https:\/\/blog.obniz.com\/news\/obniz-js-2-0-0-obniz-firmware-2-0-0-released-2.html","url_meta":{"origin":4681,"position":4},"title":"obniz.js 2.0.0 \/ obniz firmware 2.0.0 released","date":"2019\u5e742\u670816\u65e5","format":false,"excerpt":"\u65b0\u6a5f\u80fd\u3068\u6539\u5584\u304c\u542b\u307e\u308c\u308b\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a22.0.0\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\u3002 \u540c\u6642\u306bobniz.js2.0.\u2026","rel":"","context":"In &quot;News&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13151,"url":"https:\/\/blog.obniz.com\/en\/news\/update\/obniz-js-3-18-0-released.html","url_meta":{"origin":4681,"position":5},"title":"obniz.js 3.18.0 released,  and other December releases","date":"2021\u5e7412\u670817\u65e5","format":false,"excerpt":"obniz.js 3.18.0 has been released. New information\u2026","rel":"","context":"In &quot;News&quot;","img":{"alt_text":"","src":"https:\/\/i2.wp.com\/blog.obniz.com\/wp-content\/uploads\/2021\/12\/writer_main.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/posts\/4681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/comments?post=4681"}],"version-history":[{"count":1,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/posts\/4681\/revisions"}],"predecessor-version":[{"id":4682,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/posts\/4681\/revisions\/4682"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/media\/7262"}],"wp:attachment":[{"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/media?parent=4681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/categories?post=4681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.obniz.com\/wp-json\/wp\/v2\/tags?post=4681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}