¡Hola gente! Hoy se ha hablado mucho de Internet de las cosas (Internet of Things - IoT), con varios dispositivos conectados . Los fabricantes utilizan mucho el Arduino, el Raspberry Pi y el NodeMcu para realizar en proyectos con conectividad. En este artículo presentamos otra posibilidad de hardware para IoT, con tamaño reducido y muy simple, llamada Photon.

   Particle Photon es una pequeña y poderosa plataforma para Internet de las cosas. Tiene un microcontrolador ARM Cortex M3 y un chip WiFi Cypress WICED. Esto significa que es un microcontrolador de 32 bits, que tiene un rendimiento mejor que un microcontrolador de 8 bits (por ejemplo, un ATLa 328 de un Arduino Uno) y ya tiene WiFi integrado, eliminando la necesidad de hardware adicional.

 

Figura 1 - Particle Photon (Fuente: http://es.mouser.com/images/microsites/ParticlePhoton.jpg)
Figura 1 - Particle Photon (Fuente: http://es.mouser.com/images/microsites/ParticlePhoton.jpg)

 

 

   Comparada a un Arduino Uno o NodeMcu, la Particle Photon es mucho menor. Es decir, es posible el prototipado en protoboards o en proyectos, ocupando poco espacio y teniendo un buen desempeño.

 

Figura 2 - Particle Photon, NodeMcu y Arduino Uno (Fuente: Gedeane Kenshima)
Figura 2 - Particle Photon, NodeMcu y Arduino Uno (Fuente: Gedeane Kenshima)

 

 

   Posee 8 pines GPIO digitales (D0 a D7) y 6 analógicos (A0 a A5), un perno DAC (Convertidor Analógico Digital, D8), memoria Flash de 1 MB, 128 kB de memoria RAM, además de un led RGB incrustado en la propia (D12 a D14). También puede utilizar PWM, comunicación SPI, I2C y Serial. Para más detalles de la placa, vea la figura 3:

 

 

Figura 3 - Diagrama de pines Particle Photon (Fuente: http://diotlabs.daraghbyrne.me/getting-started/images/ParticlePhotonPin.png)
Figura 3 - Diagrama de pines Particle Photon (Fuente: http://diotlabs.daraghbyrne.me/getting-started/images/ParticlePhotonPin.png)

 

 

   Para usuarios avanzados, tiene sistema operativo en tiempo real (FreeRTOS). Para saber más sobre lo que es un RTOS, consulte este artículo del Portal Embarcados.

   Puede utilizar un sistema operacional IDE (offline) o un Web IDE (online) para desarrollar los códigos para su tarjeta. También existe una aplicación donde usted puede comunicar su Photon con su smartphone, ya que es compatible con Android e iOS. Para conocer su funcionamiento haremos la configuración de la placa para realizar un intermitente (Blink) vía aplicación.

 

Parpadeando LEDs con la Photon

   Descargue la aplicación de la Particle en su Smartphone. Si es iOS haga clic aquí, si es Android haga clic aquí y si es Windows Phone haga clic aquí.

   En la aplicación, haga clic en GETTING STARTED, haga su registro en la Particle y luego ingrese.

 

 

Figura 4 - App Particle (Fuente: Gedeane Kenshima)
Figura 4 - App Particle (Fuente: Gedeane Kenshima)

 

 

Después de iniciar sesión, haga clic en Set up a Photon. El smartphone buscará todas las tarjetas Photon disponibles. Si no aparece, es señal de que la placa no está activada.

 

 

Figura 5 - Elegir Photon en la aplicación (Fuente: Gedeane Kenshima)
Figura 5 - Elegir Photon en la aplicación (Fuente: Gedeane Kenshima)

 

 

   Conecte su Photon a una fuente de energía, como el puerto USB de su ordenador. El LED RGB parpadeará en color verde, lo que indica que todavía no está conectada. Presione durante 3 segundos el botón SETUP hasta que el led RGB empiece a parpadear en azul. Entonces la tarjeta aparecerá en la pantalla de la aplicación. Haga clic para conectar (figura 5).

   La pantalla mostrará todas las redes WiFi disponibles. Haga clic en su red para conectar su tarjeta e introduzca la contraseña (si existe). La pantalla de conexión entre la tarjeta y la aplicación es la siguiente:

 

 

Figura 6 - Conexión a Photon a la red WiFi (Fuente: Gedeane Kenshima)
Figura 6 - Conexión a Photon a la red WiFi (Fuente: Gedeane Kenshima)

 

 

   Seleccione un nombre para su Photon. La mía fue nombrada AngryBirds (por qué será? Risas).

   Al hacer clic en Tinker, aparecerá una ventana con los pines disponibles para su uso. Hay un LED conectado al pin D7 ya incrustado en la placa. También conectamos un LED al pin D4 para su visualización.

   Al hacer clic en D4, aparecerá la opción DIGITALREAD o DIGITALWRITE. Read para lectura del pin, Write para escritura en el pin. Para nuestro ejemplo con LED, utilizaremos DIGITALWRITE para encender y apagar el led.

 

Figura 7 - Configuración del pin D4 en la aplicación (Fuente: Gedeane Kenshima)
Figura 7 - Configuración del pin D4 en la aplicación (Fuente: Gedeane Kenshima)

 

 

Al hacer clic en el D4, el perno se queda en HIGH, encendiendo el LED. Al hacer clic de nuevo en D4, el LED se apaga.

 

Figura 8 - Accionando el pin D4 por App (Fuente: Gedeane Kenshima)
Figura 8 - Accionando el pin D4 por App (Fuente: Gedeane Kenshima)

 

 

   Para más información sobre Photon, visite el sitio web oficial aquí.

Esta tarjeta está disponible en el Mouser, versiones con headers, sin headers soldados y también sus periféricos. Para adquirir, visite el sitio web de Mouser.

  ¡Espero que les haya gustado este artículo, manden sugerencias para otros asuntos! ¡Hasta la próxima!

 

18.998MBMemory Usage45.62msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.20
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1749152363 "last" => 1749152363...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.55KB) (1.25ms)
  • afterInitialise (1.14MB) (5.98ms)
  • afterRoute (179.21KB) (1.39ms)
  • beforeRenderComponent com_content (100.98KB) (547μs)
  • Before Access::preloadComponents (all components) (33.45KB) (351μs)
  • After Access::preloadComponents (all components) (107.06KB) (505μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (8μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (19.42ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.05KB) (2.33ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (41μs)
  • afterRenderComponent com_content (432.68KB) (5.56ms)
  • afterDispatch (2.25KB) (56μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (422.53KB) (1.82ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (491μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (104μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (1.27ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (663μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (85μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (213μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (48μs)
  • afterRender (296.81KB) (3.37ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (42.58%)
    19.42ms
    1 x afterInitialise (1.14MB) (13.11%)
    5.98ms
    1 x afterRenderComponent com_content (432.68KB) (12.18%)
    5.56ms
    1 x afterRender (296.81KB) (7.39%)
    3.37ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.05KB) (5.11%)
    2.33ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (422.53KB) (3.99%)
    1.82ms
    1 x afterRoute (179.21KB) (3.06%)
    1.39ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (2.78%)
    1.27ms
    1 x afterLoad (85.55KB) (2.74%)
    1.25ms
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.45%)
    663μs
    1 x beforeRenderComponent com_content (100.98KB) (1.2%)
    547μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.11%)
    505μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (1.08%)
    491μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.77%)
    351μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.47%)
    213μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.23%)
    104μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.19%)
    85μs
    1 x afterDispatch (2.25KB) (0.12%)
    56μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.11%)
    48μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.09%)
    41μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    8μs
23 statements were executed, 5 of which were duplicates, 18 unique11.48ms1.58MB
  • SELECT @@SESSION.sql_mode;31μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 175μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)195μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`46μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest67μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`231μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)354μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.93ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`316μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.2200'83μs912B/libraries/src/Table/Table.php:780Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`263μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '2200'126μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)146μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`172μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)210μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`170μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC367μs6.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`176μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1155μs656B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)80μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context61μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)157μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 168μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content
  • warningassets - No asset found for com_content.article.2200, falling back to com_content