app_versions.json 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966
  1. {
  2. "1.1.37": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/esphome/1.1.37",
  7. "last_update": "2025-09-04 12:07:56",
  8. "required_features": [],
  9. "human_version": "2025.8.3_1.1.37",
  10. "version": "1.1.37",
  11. "app_metadata": {
  12. "app_version": "2025.8.3",
  13. "capabilities": [
  14. {
  15. "description": "ESPHome is able to use raw and packet sockets",
  16. "name": "NET_RAW"
  17. },
  18. {
  19. "description": "ESPHome is able to change user ID of processes",
  20. "name": "SETUID"
  21. }
  22. ],
  23. "categories": [
  24. "home-automation"
  25. ],
  26. "changelog_url": "https://esphome.io/changelog/",
  27. "date_added": "2025-01-24",
  28. "description": "ESPHome is a system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.",
  29. "home": "https://esphome.io",
  30. "host_mounts": [],
  31. "icon": "https://media.sys.truenas.net/apps/esphome/icons/icon.svg",
  32. "keywords": [
  33. "home-automation"
  34. ],
  35. "lib_version": "2.1.49",
  36. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  37. "maintainers": [
  38. {
  39. "email": "dev@ixsystems.com",
  40. "name": "truenas",
  41. "url": "https://www.truenas.com/"
  42. }
  43. ],
  44. "name": "esphome",
  45. "run_as_context": [
  46. {
  47. "description": "ESPHome runs as any non-root user.",
  48. "gid": 568,
  49. "group_name": "esphome",
  50. "uid": 568,
  51. "user_name": "esphome"
  52. }
  53. ],
  54. "screenshots": [],
  55. "sources": [
  56. "https://github.com/esphome/esphome"
  57. ],
  58. "title": "ESPHome",
  59. "train": "community",
  60. "version": "1.1.37"
  61. },
  62. "schema": {
  63. "groups": [
  64. {
  65. "name": "ESPHome Configuration",
  66. "description": "Configure ESPHome"
  67. },
  68. {
  69. "name": "User and Group Configuration",
  70. "description": "Configure User and Group for ESPHome"
  71. },
  72. {
  73. "name": "Network Configuration",
  74. "description": "Configure Network for ESPHome"
  75. },
  76. {
  77. "name": "Storage Configuration",
  78. "description": "Configure Storage for ESPHome"
  79. },
  80. {
  81. "name": "Labels Configuration",
  82. "description": "Configure Labels for ESPHome"
  83. },
  84. {
  85. "name": "Resources Configuration",
  86. "description": "Configure Resources for ESPHome"
  87. }
  88. ],
  89. "questions": [
  90. {
  91. "variable": "TZ",
  92. "group": "ESPHome Configuration",
  93. "label": "Timezone",
  94. "schema": {
  95. "type": "string",
  96. "default": "Etc/UTC",
  97. "required": true,
  98. "$ref": [
  99. "definitions/timezone"
  100. ]
  101. }
  102. },
  103. {
  104. "variable": "esphome",
  105. "label": "",
  106. "group": "ESPHome Configuration",
  107. "schema": {
  108. "type": "dict",
  109. "attrs": [
  110. {
  111. "variable": "devices",
  112. "label": "Devices",
  113. "description": "Devices to use for ESPHome.\nEg: Host Device: /dev/ttyUSB0, Container Device: /dev/ttyACM0\n",
  114. "schema": {
  115. "type": "list",
  116. "default": [],
  117. "items": [
  118. {
  119. "variable": "device",
  120. "label": "Device",
  121. "schema": {
  122. "type": "dict",
  123. "attrs": [
  124. {
  125. "variable": "host_device",
  126. "label": "Host Device",
  127. "schema": {
  128. "type": "string",
  129. "required": true
  130. }
  131. },
  132. {
  133. "variable": "container_device",
  134. "label": "Container Device",
  135. "schema": {
  136. "type": "string",
  137. "required": true
  138. }
  139. }
  140. ]
  141. }
  142. }
  143. ]
  144. }
  145. },
  146. {
  147. "variable": "additional_envs",
  148. "label": "Additional Environment Variables",
  149. "schema": {
  150. "type": "list",
  151. "default": [],
  152. "items": [
  153. {
  154. "variable": "env",
  155. "label": "Environment Variable",
  156. "schema": {
  157. "type": "dict",
  158. "attrs": [
  159. {
  160. "variable": "name",
  161. "label": "Name",
  162. "schema": {
  163. "type": "string",
  164. "required": true
  165. }
  166. },
  167. {
  168. "variable": "value",
  169. "label": "Value",
  170. "schema": {
  171. "type": "string"
  172. }
  173. }
  174. ]
  175. }
  176. }
  177. ]
  178. }
  179. }
  180. ]
  181. }
  182. },
  183. {
  184. "variable": "run_as",
  185. "label": "",
  186. "group": "User and Group Configuration",
  187. "schema": {
  188. "type": "dict",
  189. "attrs": [
  190. {
  191. "variable": "user",
  192. "label": "User ID",
  193. "description": "The user id that ESPHome files will be owned by.",
  194. "schema": {
  195. "type": "int",
  196. "min": 568,
  197. "default": 568,
  198. "required": true
  199. }
  200. },
  201. {
  202. "variable": "group",
  203. "label": "Group ID",
  204. "description": "The group id that ESPHome files will be owned by.",
  205. "schema": {
  206. "type": "int",
  207. "min": 568,
  208. "default": 568,
  209. "required": true
  210. }
  211. }
  212. ]
  213. }
  214. },
  215. {
  216. "variable": "network",
  217. "label": "",
  218. "group": "Network Configuration",
  219. "schema": {
  220. "type": "dict",
  221. "attrs": [
  222. {
  223. "variable": "web_port",
  224. "label": "WebUI Port",
  225. "schema": {
  226. "type": "dict",
  227. "attrs": [
  228. {
  229. "variable": "bind_mode",
  230. "label": "Port Bind Mode",
  231. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  232. "schema": {
  233. "type": "string",
  234. "default": "published",
  235. "enum": [
  236. {
  237. "value": "published",
  238. "description": "Publish port on the host for external access"
  239. },
  240. {
  241. "value": "exposed",
  242. "description": "Expose port for inter-container communication"
  243. },
  244. {
  245. "value": "",
  246. "description": "None"
  247. }
  248. ]
  249. }
  250. },
  251. {
  252. "variable": "port_number",
  253. "label": "Port Number",
  254. "schema": {
  255. "type": "int",
  256. "default": 36052,
  257. "min": 1,
  258. "max": 65535,
  259. "required": true
  260. }
  261. },
  262. {
  263. "variable": "host_ips",
  264. "label": "Host IPs",
  265. "description": "IPs on the host to bind this port",
  266. "schema": {
  267. "type": "list",
  268. "show_if": [
  269. [
  270. "bind_mode",
  271. "=",
  272. "published"
  273. ]
  274. ],
  275. "default": [],
  276. "items": [
  277. {
  278. "variable": "host_ip",
  279. "label": "Host IP",
  280. "schema": {
  281. "type": "string",
  282. "required": true,
  283. "$ref": [
  284. "definitions/node_bind_ip"
  285. ]
  286. }
  287. }
  288. ]
  289. }
  290. }
  291. ]
  292. }
  293. },
  294. {
  295. "variable": "additional_ports",
  296. "label": "Additional Ports",
  297. "schema": {
  298. "type": "list",
  299. "show_if": [
  300. [
  301. "host_network",
  302. "=",
  303. false
  304. ]
  305. ],
  306. "items": [
  307. {
  308. "variable": "port",
  309. "label": "Port",
  310. "schema": {
  311. "type": "dict",
  312. "attrs": [
  313. {
  314. "variable": "bind_mode",
  315. "label": "Port Bind Mode",
  316. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n",
  317. "schema": {
  318. "type": "string",
  319. "default": "published",
  320. "enum": [
  321. {
  322. "value": "published",
  323. "description": "Publish port on the host for external access"
  324. },
  325. {
  326. "value": "exposed",
  327. "description": "Expose port for inter-container communication"
  328. }
  329. ]
  330. }
  331. },
  332. {
  333. "variable": "port_number",
  334. "label": "Port Number",
  335. "schema": {
  336. "type": "int",
  337. "min": 1,
  338. "max": 65535,
  339. "required": true
  340. }
  341. },
  342. {
  343. "variable": "container_port",
  344. "label": "Container Port",
  345. "schema": {
  346. "type": "int",
  347. "min": 1,
  348. "max": 65535,
  349. "required": true
  350. }
  351. },
  352. {
  353. "variable": "protocol",
  354. "label": "Protocol",
  355. "schema": {
  356. "type": "string",
  357. "required": true,
  358. "default": "tcp",
  359. "enum": [
  360. {
  361. "value": "tcp",
  362. "description": "TCP"
  363. },
  364. {
  365. "value": "udp",
  366. "description": "UDP"
  367. }
  368. ]
  369. }
  370. },
  371. {
  372. "variable": "host_ips",
  373. "label": "Host IPs",
  374. "description": "IPs on the host to bind this port",
  375. "schema": {
  376. "type": "list",
  377. "show_if": [
  378. [
  379. "bind_mode",
  380. "=",
  381. "published"
  382. ]
  383. ],
  384. "default": [],
  385. "items": [
  386. {
  387. "variable": "host_ip",
  388. "label": "Host IP",
  389. "schema": {
  390. "type": "string",
  391. "required": true,
  392. "$ref": [
  393. "definitions/node_bind_ip"
  394. ]
  395. }
  396. }
  397. ]
  398. }
  399. }
  400. ]
  401. }
  402. }
  403. ]
  404. }
  405. },
  406. {
  407. "variable": "host_network",
  408. "label": "Host Network",
  409. "description": "Bind to the host network. It's recommended to keep this disabled.\n",
  410. "schema": {
  411. "type": "boolean",
  412. "default": false
  413. }
  414. }
  415. ]
  416. }
  417. },
  418. {
  419. "variable": "storage",
  420. "label": "",
  421. "group": "Storage Configuration",
  422. "schema": {
  423. "type": "dict",
  424. "attrs": [
  425. {
  426. "variable": "config",
  427. "label": "ESPHome Config Storage",
  428. "description": "The path to store ESPHome Config.",
  429. "schema": {
  430. "type": "dict",
  431. "attrs": [
  432. {
  433. "variable": "type",
  434. "label": "Type",
  435. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  436. "schema": {
  437. "type": "string",
  438. "required": true,
  439. "default": "ix_volume",
  440. "enum": [
  441. {
  442. "value": "host_path",
  443. "description": "Host Path (Path that already exists on the system)"
  444. },
  445. {
  446. "value": "ix_volume",
  447. "description": "ixVolume (Dataset created automatically by the system)"
  448. }
  449. ]
  450. }
  451. },
  452. {
  453. "variable": "ix_volume_config",
  454. "label": "ixVolume Configuration",
  455. "description": "The configuration for the ixVolume dataset.",
  456. "schema": {
  457. "type": "dict",
  458. "show_if": [
  459. [
  460. "type",
  461. "=",
  462. "ix_volume"
  463. ]
  464. ],
  465. "$ref": [
  466. "normalize/ix_volume"
  467. ],
  468. "attrs": [
  469. {
  470. "variable": "acl_enable",
  471. "label": "Enable ACL",
  472. "description": "Enable ACL for the storage.",
  473. "schema": {
  474. "type": "boolean",
  475. "default": false
  476. }
  477. },
  478. {
  479. "variable": "dataset_name",
  480. "label": "Dataset Name",
  481. "description": "The name of the dataset to use for storage.",
  482. "schema": {
  483. "type": "string",
  484. "required": true,
  485. "hidden": true,
  486. "default": "config"
  487. }
  488. },
  489. {
  490. "variable": "acl_entries",
  491. "label": "ACL Configuration",
  492. "schema": {
  493. "type": "dict",
  494. "show_if": [
  495. [
  496. "acl_enable",
  497. "=",
  498. true
  499. ]
  500. ],
  501. "attrs": []
  502. }
  503. }
  504. ]
  505. }
  506. },
  507. {
  508. "variable": "host_path_config",
  509. "label": "Host Path Configuration",
  510. "schema": {
  511. "type": "dict",
  512. "show_if": [
  513. [
  514. "type",
  515. "=",
  516. "host_path"
  517. ]
  518. ],
  519. "attrs": [
  520. {
  521. "variable": "acl_enable",
  522. "label": "Enable ACL",
  523. "description": "Enable ACL for the storage.",
  524. "schema": {
  525. "type": "boolean",
  526. "default": false
  527. }
  528. },
  529. {
  530. "variable": "acl",
  531. "label": "ACL Configuration",
  532. "schema": {
  533. "type": "dict",
  534. "show_if": [
  535. [
  536. "acl_enable",
  537. "=",
  538. true
  539. ]
  540. ],
  541. "attrs": [],
  542. "$ref": [
  543. "normalize/acl"
  544. ]
  545. }
  546. },
  547. {
  548. "variable": "path",
  549. "label": "Host Path",
  550. "description": "The host path to use for storage.",
  551. "schema": {
  552. "type": "hostpath",
  553. "show_if": [
  554. [
  555. "acl_enable",
  556. "=",
  557. false
  558. ]
  559. ],
  560. "required": true
  561. }
  562. }
  563. ]
  564. }
  565. }
  566. ]
  567. }
  568. },
  569. {
  570. "variable": "additional_storage",
  571. "label": "Additional Storage",
  572. "schema": {
  573. "type": "list",
  574. "default": [],
  575. "items": [
  576. {
  577. "variable": "storageEntry",
  578. "label": "Storage Entry",
  579. "schema": {
  580. "type": "dict",
  581. "attrs": [
  582. {
  583. "variable": "type",
  584. "label": "Type",
  585. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
  586. "schema": {
  587. "type": "string",
  588. "required": true,
  589. "default": "ix_volume",
  590. "enum": [
  591. {
  592. "value": "host_path",
  593. "description": "Host Path (Path that already exists on the system)"
  594. },
  595. {
  596. "value": "ix_volume",
  597. "description": "ixVolume (Dataset created automatically by the system)"
  598. },
  599. {
  600. "value": "cifs",
  601. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  602. }
  603. ]
  604. }
  605. },
  606. {
  607. "variable": "read_only",
  608. "label": "Read Only",
  609. "description": "Mount the volume as read only.",
  610. "schema": {
  611. "type": "boolean",
  612. "default": false
  613. }
  614. },
  615. {
  616. "variable": "mount_path",
  617. "label": "Mount Path",
  618. "description": "The path inside the container to mount the storage.",
  619. "schema": {
  620. "type": "path",
  621. "required": true
  622. }
  623. },
  624. {
  625. "variable": "host_path_config",
  626. "label": "Host Path Configuration",
  627. "schema": {
  628. "type": "dict",
  629. "show_if": [
  630. [
  631. "type",
  632. "=",
  633. "host_path"
  634. ]
  635. ],
  636. "attrs": [
  637. {
  638. "variable": "acl_enable",
  639. "label": "Enable ACL",
  640. "description": "Enable ACL for the storage.",
  641. "schema": {
  642. "type": "boolean",
  643. "default": false
  644. }
  645. },
  646. {
  647. "variable": "acl",
  648. "label": "ACL Configuration",
  649. "schema": {
  650. "type": "dict",
  651. "show_if": [
  652. [
  653. "acl_enable",
  654. "=",
  655. true
  656. ]
  657. ],
  658. "attrs": [],
  659. "$ref": [
  660. "normalize/acl"
  661. ]
  662. }
  663. },
  664. {
  665. "variable": "path",
  666. "label": "Host Path",
  667. "description": "The host path to use for storage.",
  668. "schema": {
  669. "type": "hostpath",
  670. "show_if": [
  671. [
  672. "acl_enable",
  673. "=",
  674. false
  675. ]
  676. ],
  677. "required": true
  678. }
  679. }
  680. ]
  681. }
  682. },
  683. {
  684. "variable": "ix_volume_config",
  685. "label": "ixVolume Configuration",
  686. "description": "The configuration for the ixVolume dataset.",
  687. "schema": {
  688. "type": "dict",
  689. "show_if": [
  690. [
  691. "type",
  692. "=",
  693. "ix_volume"
  694. ]
  695. ],
  696. "$ref": [
  697. "normalize/ix_volume"
  698. ],
  699. "attrs": [
  700. {
  701. "variable": "acl_enable",
  702. "label": "Enable ACL",
  703. "description": "Enable ACL for the storage.",
  704. "schema": {
  705. "type": "boolean",
  706. "default": false
  707. }
  708. },
  709. {
  710. "variable": "dataset_name",
  711. "label": "Dataset Name",
  712. "description": "The name of the dataset to use for storage.",
  713. "schema": {
  714. "type": "string",
  715. "required": true,
  716. "default": "storage_entry"
  717. }
  718. },
  719. {
  720. "variable": "acl_entries",
  721. "label": "ACL Configuration",
  722. "schema": {
  723. "type": "dict",
  724. "show_if": [
  725. [
  726. "acl_enable",
  727. "=",
  728. true
  729. ]
  730. ],
  731. "attrs": [],
  732. "$ref": [
  733. "normalize/acl"
  734. ]
  735. }
  736. }
  737. ]
  738. }
  739. },
  740. {
  741. "variable": "cifs_config",
  742. "label": "SMB Configuration",
  743. "description": "The configuration for the SMB dataset.",
  744. "schema": {
  745. "type": "dict",
  746. "show_if": [
  747. [
  748. "type",
  749. "=",
  750. "cifs"
  751. ]
  752. ],
  753. "attrs": [
  754. {
  755. "variable": "server",
  756. "label": "Server",
  757. "description": "The server to mount the SMB share.",
  758. "schema": {
  759. "type": "string",
  760. "required": true
  761. }
  762. },
  763. {
  764. "variable": "path",
  765. "label": "Path",
  766. "description": "The path to mount the SMB share.",
  767. "schema": {
  768. "type": "string",
  769. "required": true
  770. }
  771. },
  772. {
  773. "variable": "username",
  774. "label": "Username",
  775. "description": "The username to use for the SMB share.",
  776. "schema": {
  777. "type": "string",
  778. "required": true
  779. }
  780. },
  781. {
  782. "variable": "password",
  783. "label": "Password",
  784. "description": "The password to use for the SMB share.",
  785. "schema": {
  786. "type": "string",
  787. "required": true,
  788. "private": true
  789. }
  790. },
  791. {
  792. "variable": "domain",
  793. "label": "Domain",
  794. "description": "The domain to use for the SMB share.",
  795. "schema": {
  796. "type": "string"
  797. }
  798. }
  799. ]
  800. }
  801. }
  802. ]
  803. }
  804. }
  805. ]
  806. }
  807. }
  808. ]
  809. }
  810. },
  811. {
  812. "variable": "labels",
  813. "label": "",
  814. "group": "Labels Configuration",
  815. "schema": {
  816. "type": "list",
  817. "default": [],
  818. "items": [
  819. {
  820. "variable": "label",
  821. "label": "Label",
  822. "schema": {
  823. "type": "dict",
  824. "attrs": [
  825. {
  826. "variable": "key",
  827. "label": "Key",
  828. "schema": {
  829. "type": "string",
  830. "required": true
  831. }
  832. },
  833. {
  834. "variable": "value",
  835. "label": "Value",
  836. "schema": {
  837. "type": "string",
  838. "required": true
  839. }
  840. },
  841. {
  842. "variable": "containers",
  843. "label": "Containers",
  844. "description": "Containers where the label should be applied",
  845. "schema": {
  846. "type": "list",
  847. "items": [
  848. {
  849. "variable": "container",
  850. "label": "Container",
  851. "schema": {
  852. "type": "string",
  853. "required": true,
  854. "enum": [
  855. {
  856. "value": "esphome",
  857. "description": "esphome"
  858. }
  859. ]
  860. }
  861. }
  862. ]
  863. }
  864. }
  865. ]
  866. }
  867. }
  868. ]
  869. }
  870. },
  871. {
  872. "variable": "resources",
  873. "label": "",
  874. "group": "Resources Configuration",
  875. "schema": {
  876. "type": "dict",
  877. "attrs": [
  878. {
  879. "variable": "limits",
  880. "label": "Limits",
  881. "schema": {
  882. "type": "dict",
  883. "attrs": [
  884. {
  885. "variable": "cpus",
  886. "label": "CPUs",
  887. "description": "CPUs limit for ESPHome.",
  888. "schema": {
  889. "type": "int",
  890. "default": 2,
  891. "required": true
  892. }
  893. },
  894. {
  895. "variable": "memory",
  896. "label": "Memory (in MB)",
  897. "description": "Memory limit for ESPHome.",
  898. "schema": {
  899. "type": "int",
  900. "default": 4096,
  901. "required": true
  902. }
  903. }
  904. ]
  905. }
  906. }
  907. ]
  908. }
  909. }
  910. ]
  911. },
  912. "readme": "<h1>ESPHome</h1> <p><a href=\"https://github.com/esphome/esphome\">ESPHome</a> is a system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.</p>",
  913. "changelog": null,
  914. "chart_metadata": {
  915. "app_version": "2025.8.3",
  916. "capabilities": [
  917. {
  918. "description": "ESPHome is able to use raw and packet sockets",
  919. "name": "NET_RAW"
  920. },
  921. {
  922. "description": "ESPHome is able to change user ID of processes",
  923. "name": "SETUID"
  924. }
  925. ],
  926. "categories": [
  927. "home-automation"
  928. ],
  929. "changelog_url": "https://esphome.io/changelog/",
  930. "date_added": "2025-01-24",
  931. "description": "ESPHome is a system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.",
  932. "home": "https://esphome.io",
  933. "host_mounts": [],
  934. "icon": "https://media.sys.truenas.net/apps/esphome/icons/icon.svg",
  935. "keywords": [
  936. "home-automation"
  937. ],
  938. "lib_version": "2.1.49",
  939. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  940. "maintainers": [
  941. {
  942. "email": "dev@ixsystems.com",
  943. "name": "truenas",
  944. "url": "https://www.truenas.com/"
  945. }
  946. ],
  947. "name": "esphome",
  948. "run_as_context": [
  949. {
  950. "description": "ESPHome runs as any non-root user.",
  951. "gid": 568,
  952. "group_name": "esphome",
  953. "uid": 568,
  954. "user_name": "esphome"
  955. }
  956. ],
  957. "screenshots": [],
  958. "sources": [
  959. "https://github.com/esphome/esphome"
  960. ],
  961. "title": "ESPHome",
  962. "train": "community",
  963. "version": "1.1.37"
  964. }
  965. }
  966. }