{"id":95529,"date":"2020-09-30T19:42:39","date_gmt":"2020-09-30T17:42:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832"},"modified":"2020-09-30T19:42:39","modified_gmt":"2020-09-30T17:42:39","slug":"kak-podklyuchit-aczp-hx711-k-nrf52832","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832","title":{"rendered":"How to connect the HX711 ADC to the NRF52832","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>1. Introduction<\/h3>\n<p>\n The task at hand was to develop a communication protocol between the nrf52832 microcontroller and two half-bridge Chinese load cells. <\/p>\n<p>The task turned out to be challenging due to the lack of clear information. Likely, the \"root of the problem\" lies within the SDK from Nordic Semiconductor \u2014 constant version updates, some redundancy, and functional complexity. I had to write everything from scratch. <\/p>\n<p><\/p>\n<p>I believe this topic is quite relevant given that this chip features a BLE stack and a whole set of energy-saving \"goodies.\" However, I won't delve too deeply into the technical aspects, as there are already many articles written on this subject. <\/p>\n<p><\/p>\n<h3>2. Project Description<\/h3>\n<p>\n<img decoding=\"async\" alt=\"How to connect the HX711 ADC to the NRF52832\" src=\"\/wp-content\/uploads\/2020\/09\/f187e56e29b4f2e57ce0de3a5f2a0eab.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p><b>Hardware:<\/b><\/p>\n<p><\/p>\n<ul>\n<li>Adafruit Feather nRF52 Bluefruit LE (what was at hand) <\/li>\n<li>HX711 ADC <\/li>\n<li>Two Chinese load cells (50x2 kg) <\/li>\n<li>ST-LINK V2 programmer <\/li>\n<\/ul>\n<p><\/p>\n<p><b>Software:<\/b><\/p>\n<p><\/p>\n<ul>\n<li>VSCODE IDE<\/li>\n<li>NRF SDK 16<\/li>\n<li>OpenOCD<\/li>\n<li>ST-LINK V2 programmer <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Everything is contained in one project, it will just require some adjustments to the Makefile (specify the location of your SDK). <\/p>\n<p><\/p>\n<h3>3. Code Description<\/h3>\n<p><\/p>\n<p>We will use the GPIOTE module for peripheral interaction based on task and event binding, as well as the PPI module to transfer data from one peripheral to another without CPU involvement.<\/p>\n<pre><code class=\"cpp\">ret_code_t err_code;\n   err_code = nrf_drv_gpiote_out_init(PD_SCK, &amp;config); \/\/ Configuring for output\n   nrf_drv_gpiote_out_config_t config = GPIOTE_CONFIG_OUT_TASK_TOGGLE(false); \/\/ Toggling pin for pulse\n   err_code = nrf_drv_gpiote_out_init(PD_SCK, &amp;config); \/\/ Configuring for output\n<\/code><\/pre>\n<p>\nWe configure the PD_SCL synchronization line as an output to generate pulses with a duration of 10 \u03bcs.<\/p>\n<pre><code class=\"cpp\">   nrf_drv_gpiote_in_config_t gpiote_config = GPIOTE_CONFIG_IN_SENSE_HITOLO(false); \/\/ Level transition from high to low\n   nrf_gpio_cfg_input(DOUT, NRF_GPIO_PIN_NOPULL); \/\/ Configuring input without pull-up\n   err_code = nrf_drv_gpiote_in_init(DOUT, &amp;gpiote_config, gpiote_evt_handler); <\/code><\/pre>\n<p><\/p>\n<pre><code class=\"cpp\">static void gpiote_evt_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)\n{\n    nrf_drv_gpiote_in_event_disable(DOUT); \/\/ Disabling interrupt\n    nrf_drv_timer_enable(&amp;m_timer0); \/\/ Enabling timer\n}\n <\/code><\/pre>\n<p><\/p>\n<p>We configure the DOUT data line to read the readiness state of the HX711; when a low level is detected, the handler is triggered, where we disable the interrupt and start the timer to generate synchronization pulses on the PD_SCL output.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\"> err_code = nrf_drv_ppi_channel_alloc(&amp;m_ppi_channel1);\n   APP_ERROR_CHECK(err_code);\n   err_code = nrf_drv_ppi_channel_assign(m_ppi_channel1,                                         nrf_drv_timer_event_address_get(&amp;m_timer0, NRF_TIMER_EVENT_COMPARE0),                                           nrf_drv_gpiote_out_task_addr_get(PD_SCK)); \/\/ Connecting timer to output\n   APP_ERROR_CHECK(err_code);\n   err_code = nrf_drv_ppi_channel_enable(m_ppi_channel1); \/\/ Enabling channel\n   APP_ERROR_CHECK(err_code);\n   nrf_drv_gpiote_out_task_enable(PD_SCK); <\/code><\/pre>\n<p>\/\/ \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c gpiote<\/p>\n<p>Next, we initialize the PPI module and connect our timer to the PD_SCL output to generate pulses lasting 10 microseconds when a comparison event occurs, and we also enable the GPIOTE module.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">\nnrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG; \/\/ Default configuration\n   timer_cfg.frequency = NRF_TIMER_FREQ_1MHz; \/\/ Setting frequency to 1MHz\n   ret_code_t err_code = nrf_drv_timer_init(&amp;m_timer0, &amp;timer_cfg, timer0_event_handler);\n   APP_ERROR_CHECK(err_code);\n   nrf_drv_timer_extended_compare(&amp;m_timer0,\n                                  NRF_TIMER_CC_CHANNEL0,\n                                  nrf_drv_timer_us_to_ticks(&amp;m_timer0,\n                                                            10),\n                                  NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK,\n                                  true); \/\/ Trigger on compare<\/code><\/pre>\n<p><\/p>\n<p> We initialize the zero timer and its handler. <\/p>\n<pre><code class=\"cpp\">  if(m_counter % 2 != 0 &amp;&amp; m_counter &lt;= 48) {\n       buffer &lt;&lt;= 1; \/\/ Read data variable\n        c_counter++; \/\/ Positive pulse counter\n           if(nrf_gpio_pin_read(DOUT)) buffer++; \/\/ Reading input state\n   }\n<\/code><\/pre>\n<p><\/p>\n<p> The most interesting part happens in the timer handler. The pulse period is 20 microseconds. We are interested in the odd pulses (on the rising edge) under the condition that their count does not exceed 24, while the total events are 48. With each odd event, we read DOUT. <\/p>\n<p><\/p>\n<p> According to the datasheet, the number of pulses should be at least 25, which corresponds to a gain coefficient of 128 (in the code, I used 25 pulses); this is equivalent to 50 timer events, indicating the end of the data frame. <\/p>\n<p><\/p>\n<pre><code class=\"cpp\"> ++m_counter; \/\/ Event counter\nif(m_counter == 50) {\n      nrf_drv_timer_disable(&amp;m_timer0); \/\/ Disabling timer\n       m_simple_timer_state = SIMPLE_TIMER_STATE_STOPPED; \/\/\n       buffer = buffer ^ 0x800000;\n       hx711_stop(); \/\/ Stopping hx711\n       }\n   <\/code><\/pre>\n<p><\/p>\n<p> After that, we disable the timer and process the data (according to the datasheet) and switch the HX711 to low power mode. <\/p>\n<p><\/p>\n<pre><code class=\"cpp\">\nstatic void repeated_timer_handler(void * p_context)\n{\n   nrf_drv_gpiote_out_toggle(LED_2);\n   if(m_simple_timer_state == SIMPLE_TIMER_STATE_STOPPED) {\n      hx711_start(); \/\/ Starting hx711\n       nrf_drv_gpiote_out_toggle(LED_1);\n       m_simple_timer_state = SIMPLE_TIMER_STATE_STARTED;\n   }\n  \n}\n\/**@brief Create timers.\n*\/*\/\nstatic void create_timers()\n{\n   ret_code_t err_code;\n \n   \/\/ Create timers\n   err_code = app_timer_create(&amp;m_repeated_timer_id,\n                               APP_TIMER_MODE_REPEATED,\n                               repeated_timer_handler);\n   APP_ERROR_CHECK(err_code);\n}\n<\/code><\/pre>\n<p><\/p>\n<p> Waiting for an event from the RTC timer with an interval of 10 seconds (this is at your discretion), in the handler we start HX711, calling an interrupt on the DOUT line.<\/p>\n<p>There's one more aspect to consider: logs are output via UART (baud rate 115200, TX \u2014 pin 6, RX \u2014 pin 8) all settings are located in sdk_config.h.<\/p>\n<p><img decoding=\"async\" alt=\"How to connect the HX711 ADC to the NRF52832\" src=\"\/wp-content\/uploads\/2020\/09\/95a8f333227fe26cb8e9827b39bb6350.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3> Conclusions<\/h3>\n<p><\/p>\n<p>Thank you all for your attention; I hope this article will be useful and save precious time for developers searching for a solution. I want to say that the technical approach used by Nordic in their platforms is quite interesting in terms of energy efficiency.<\/p>\n<p><\/p>\n<h3>P.S. <\/h3>\n<p><\/p>\n<p>The project is still in development, so if there is interest in this topic, in the next article, I will try to describe the algorithm for calibrating weight sensors, as well as connecting the BLE stack.<\/p>\n<p><\/p>\n<h3> Materials <\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CiochinaVitalie\/nrf52832-HX711\">Project Code<\/a><\/noindex> <\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/cdn.sparkfun.com\/datasheets\/Sensors\/ForceFlex\/hx711_english.pdf\">HX711 datasheet in English<\/a><\/noindex><\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.iarduino.ru\/page\/hx_711_with_tenzo\/\">Description of the operation of load cells<\/a><\/noindex><\/li>\n<\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/521244\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0417\u0430\u0434\u0430\u0447\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043a\u0430\u043a\u043e\u0439 \u2014 \u043b\u0438\u0431\u043e \u0432\u043d\u044f\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435, \u0447\u0442\u043e \u00ab\u043a\u043e\u0440\u0435\u043d\u044c \u0437\u043b\u0430\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c SDK \u043e\u0442 Nordic Semiconductor \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95530,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0410\u0426\u041f HX711 \u043a NRF52832 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-30T17:42:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-30T17:42:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47How to connect the HX711 ADC to the NRF52832 | ProHoster","description":"1. Introduction The task at hand was to develop a communication protocol between the nrf52832 microcontroller and two half-bridge Chinese load cells.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0410\u0426\u041f HX711 \u043a NRF52832 | ProHoster","og:description":"1. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u041d\u0430 \u043f\u043e\u0432\u0435\u0441\u0442\u043a\u0435 \u0434\u043d\u044f \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u0430 nrf52832 \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u043b\u0443\u043c\u043e\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u043c\u0438 \u0442\u0435\u043d\u0437\u043e\u0434\u0430\u0442\u0447\u0438\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-podklyuchit-aczp-hx711-k-nrf52832","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-30T17:42:39+00:00","article:modified_time":"2020-09-30T17:42:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95529","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:03:23","updated":"2022-09-28 01:57:03","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/95529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=95529"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/95529\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/95530"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=95529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=95529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=95529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}