juham-automation 0.0.7__tar.gz → 0.0.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. {juham_automation-0.0.7 → juham_automation-0.0.9}/PKG-INFO +11 -4
  2. {juham_automation-0.0.7 → juham_automation-0.0.9}/README.rst +10 -2
  3. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/.buildinfo +1 -1
  4. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/basic.css +0 -8
  5. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/genindex.html +1 -1
  6. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/index.html +34 -9
  7. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/juham_automation/index.html +1 -1
  8. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/search.html +1 -1
  9. juham_automation-0.0.9/docs/build/html/searchindex.js +1 -0
  10. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/automation/hotwateroptimizer.py +1 -1
  11. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/automation/spothintafi.py +12 -1
  12. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation.egg-info/PKG-INFO +11 -4
  13. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation.egg-info/requires.txt +0 -1
  14. {juham_automation-0.0.7 → juham_automation-0.0.9}/pyproject.toml +1 -2
  15. juham_automation-0.0.7/docs/build/html/searchindex.js +0 -1
  16. {juham_automation-0.0.7 → juham_automation-0.0.9}/LICENSE.rst +0 -0
  17. {juham_automation-0.0.7 → juham_automation-0.0.9}/MANIFEST.in +0 -0
  18. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/.buildinfo.bak +0 -0
  19. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/.nojekyll +0 -0
  20. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_images/juham.png +0 -0
  21. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_modules/index.html +0 -0
  22. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_modules/juham_core/juham.html +0 -0
  23. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_modules/juham_core/juham_ts.html +0 -0
  24. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_modules/masterpiece/application.html +0 -0
  25. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_modules/masterpiece/composite.html +0 -0
  26. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_modules/masterpiece/masterpiece.html +0 -0
  27. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_sources/index.rst.txt +0 -0
  28. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_sources/juham_automation/index.rst.txt +0 -0
  29. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/css/bootstrap-responsive.css +0 -0
  30. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css +0 -0
  31. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/css/bootstrap.css +0 -0
  32. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/css/bootstrap.min.css +0 -0
  33. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png +0 -0
  34. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/img/glyphicons-halflings.png +0 -0
  35. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/js/bootstrap.js +0 -0
  36. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-2.3.2/js/bootstrap.min.js +0 -0
  37. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap-theme.css +0 -0
  38. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap-theme.css.map +0 -0
  39. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap-theme.min.css +0 -0
  40. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap-theme.min.css.map +0 -0
  41. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap.css +0 -0
  42. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap.css.map +0 -0
  43. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap.min.css +0 -0
  44. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/css/bootstrap.min.css.map +0 -0
  45. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.eot +0 -0
  46. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.svg +0 -0
  47. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.ttf +0 -0
  48. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff +0 -0
  49. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff2 +0 -0
  50. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/js/bootstrap.js +0 -0
  51. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/js/bootstrap.min.js +0 -0
  52. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-3.4.1/js/npm.js +0 -0
  53. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-sphinx.css +0 -0
  54. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootstrap-sphinx.js +0 -0
  55. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/amelia/bootstrap.min.css +0 -0
  56. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/cerulean/bootstrap.min.css +0 -0
  57. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/cosmo/bootstrap.min.css +0 -0
  58. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/cyborg/bootstrap.min.css +0 -0
  59. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/flatly/bootstrap.min.css +0 -0
  60. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/img/glyphicons-halflings-white.png +0 -0
  61. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/img/glyphicons-halflings.png +0 -0
  62. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/journal/bootstrap.min.css +0 -0
  63. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/readable/bootstrap.min.css +0 -0
  64. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/simplex/bootstrap.min.css +0 -0
  65. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/slate/bootstrap.min.css +0 -0
  66. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/spacelab/bootstrap.min.css +0 -0
  67. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/spruce/bootstrap.min.css +0 -0
  68. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/superhero/bootstrap.min.css +0 -0
  69. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-2.3.2/united/bootstrap.min.css +0 -0
  70. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/cerulean/bootstrap.min.css +0 -0
  71. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/cosmo/bootstrap.min.css +0 -0
  72. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/cyborg/bootstrap.min.css +0 -0
  73. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/darkly/bootstrap.min.css +0 -0
  74. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/flatly/bootstrap.min.css +0 -0
  75. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.eot +0 -0
  76. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.svg +0 -0
  77. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.ttf +0 -0
  78. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.woff +0 -0
  79. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.woff2 +0 -0
  80. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/journal/bootstrap.min.css +0 -0
  81. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/lumen/bootstrap.min.css +0 -0
  82. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/paper/bootstrap.min.css +0 -0
  83. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/readable/bootstrap.min.css +0 -0
  84. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/sandstone/bootstrap.min.css +0 -0
  85. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/simplex/bootstrap.min.css +0 -0
  86. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/slate/bootstrap.min.css +0 -0
  87. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/spacelab/bootstrap.min.css +0 -0
  88. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/superhero/bootstrap.min.css +0 -0
  89. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/united/bootstrap.min.css +0 -0
  90. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/bootswatch-3.4.1/yeti/bootstrap.min.css +0 -0
  91. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/doctools.js +0 -0
  92. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/documentation_options.js +0 -0
  93. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/file.png +0 -0
  94. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/graphviz.css +0 -0
  95. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/js/jquery-1.12.4.min.js +0 -0
  96. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/js/jquery-fix.js +0 -0
  97. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/juham.css +0 -0
  98. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/juham.png +0 -0
  99. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/language_data.js +0 -0
  100. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/minus.png +0 -0
  101. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/plus.png +0 -0
  102. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/pygments.css +0 -0
  103. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/searchtools.js +0 -0
  104. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/_static/sphinx_highlight.js +0 -0
  105. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/objects.inv +0 -0
  106. {juham_automation-0.0.7 → juham_automation-0.0.9}/docs/build/html/py-modindex.html +0 -0
  107. {juham_automation-0.0.7 → juham_automation-0.0.9}/examples/myapp.py +0 -0
  108. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/__init__.py +0 -0
  109. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/automation/__init__.py +0 -0
  110. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/automation/energycostcalculator.py +0 -0
  111. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/automation/powermeter_simulator.py +0 -0
  112. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/automation/watercirculator.py +0 -0
  113. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/japp.py +0 -0
  114. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/py.typed +0 -0
  115. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/__init__.py +0 -0
  116. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/electricityprice_ts.py +0 -0
  117. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/energycostcalculator_ts.py +0 -0
  118. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/forecast_ts.py +0 -0
  119. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/log_ts.py +0 -0
  120. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/power_ts.py +0 -0
  121. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/powermeter_ts.py +0 -0
  122. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation/ts/powerplan_ts.py +0 -0
  123. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation.egg-info/SOURCES.txt +0 -0
  124. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation.egg-info/dependency_links.txt +0 -0
  125. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation.egg-info/entry_points.txt +0 -0
  126. {juham_automation-0.0.7 → juham_automation-0.0.9}/juham_automation.egg-info/top_level.txt +0 -0
  127. {juham_automation-0.0.7 → juham_automation-0.0.9}/setup.cfg +0 -0
  128. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/__init__.py +0 -0
  129. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/automation/__init__.py +0 -0
  130. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/automation/test_energycostcalculator.py +0 -0
  131. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/automation/test_hotwateroptimizer.py +0 -0
  132. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/automation/test_juham.py +0 -0
  133. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/test_japp.py +0 -0
  134. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/__init__.py +0 -0
  135. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/test_energycostcalculator_ts.py +0 -0
  136. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/test_forecast_ts.py +0 -0
  137. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/test_log_ts.py +0 -0
  138. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/test_power_ts.py +0 -0
  139. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/test_powermeter_ts.py +0 -0
  140. {juham_automation-0.0.7 → juham_automation-0.0.9}/tests/ts/test_powerplan_ts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: juham-automation
3
- Version: 0.0.7
3
+ Version: 0.0.9
4
4
  Summary: Juha's Ultimate Home Automation Masterpiece
5
5
  Author-email: J Meskanen <juham.api@gmail.com>
6
6
  Maintainer-email: "J. Meskanen" <juham.api@gmail.com>
@@ -50,7 +50,6 @@ Requires-Dist: masterpiece_pahomqtt>=0.0.3
50
50
  Requires-Dist: juham_core>=0.0.7
51
51
  Requires-Dist: requests>=2.31
52
52
  Requires-Dist: pytz>=2024.1
53
- Requires-Dist: importlib-metadata
54
53
  Provides-Extra: dev
55
54
  Requires-Dist: check-manifest; extra == "dev"
56
55
  Requires-Dist: types-pyz; extra == "dev"
@@ -64,7 +63,14 @@ Project Description
64
63
  This package extends the ``juham_core`` package, providing home automation building blocks that cover most common needs.
65
64
  It consists of two main sub-modules:
66
65
 
66
+ .. image:: _static/images/juham_automation.png
67
+ :alt: Basic automation classes for optimizing energy consumption and minimizing electricity costs.
68
+ :width: 640px
69
+ :align: center
70
+
71
+
67
72
  - ``automation``
73
+
68
74
  * **spothintafi**: Acquires electricity prices in Finland.
69
75
  * **watercirculator**: Automates a water circulator pump based on hot water temperature and motion detection.
70
76
  * **hotwateroptimizer**: Controls hot water radiators based on temperature sensors and electricity price data.
@@ -72,8 +78,9 @@ It consists of two main sub-modules:
72
78
 
73
79
 
74
80
  - ``ts``
75
- * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
76
- for later inspection.
81
+
82
+ * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
83
+ for later inspection.
77
84
 
78
85
 
79
86
  Project Status
@@ -7,7 +7,14 @@ Project Description
7
7
  This package extends the ``juham_core`` package, providing home automation building blocks that cover most common needs.
8
8
  It consists of two main sub-modules:
9
9
 
10
+ .. image:: _static/images/juham_automation.png
11
+ :alt: Basic automation classes for optimizing energy consumption and minimizing electricity costs.
12
+ :width: 640px
13
+ :align: center
14
+
15
+
10
16
  - ``automation``
17
+
11
18
  * **spothintafi**: Acquires electricity prices in Finland.
12
19
  * **watercirculator**: Automates a water circulator pump based on hot water temperature and motion detection.
13
20
  * **hotwateroptimizer**: Controls hot water radiators based on temperature sensors and electricity price data.
@@ -15,8 +22,9 @@ It consists of two main sub-modules:
15
22
 
16
23
 
17
24
  - ``ts``
18
- * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
19
- for later inspection.
25
+
26
+ * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
27
+ for later inspection.
20
28
 
21
29
 
22
30
  Project Status
@@ -1,4 +1,4 @@
1
1
  # Sphinx build info version 1
2
2
  # This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
3
- config: f36b75219feb06d1d2436d7de76f29e1
3
+ config: 7048f60e49aacf57039dd4753bf8844f
4
4
  tags: 645f666f9bcd5a90fca523b33c5a78b7
@@ -741,14 +741,6 @@ abbr, acronym {
741
741
  cursor: help;
742
742
  }
743
743
 
744
- .translated {
745
- background-color: rgba(207, 255, 207, 0.2)
746
- }
747
-
748
- .untranslated {
749
- background-color: rgba(255, 207, 207, 0.2)
750
- }
751
-
752
744
  /* -- code displays --------------------------------------------------------- */
753
745
 
754
746
  pre {
@@ -132,7 +132,7 @@
132
132
  </p>
133
133
  <p>
134
134
  &copy; Copyright 2024, juha meskanen.<br/>
135
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.0.<br/>
135
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.1.<br/>
136
136
  </p>
137
137
  </div>
138
138
  </footer>
@@ -87,6 +87,8 @@
87
87
  </ul>
88
88
  </li>
89
89
  <li><a class="reference internal" href="#changelog">Changelog</a><ul>
90
+ <li><a class="reference internal" href="#february-23-2025">[0.1.9] - February 23, 2025</a></li>
91
+ <li><a class="reference internal" href="#id2">[0.1.8] - February 23, 2025</a></li>
90
92
  <li><a class="reference internal" href="#february-08-2025">[0.1.7] - February 08, 2025</a></li>
91
93
  </ul>
92
94
  </li>
@@ -160,6 +162,8 @@
160
162
  </ul>
161
163
  </li>
162
164
  <li><a class="reference internal" href="#changelog">Changelog</a><ul>
165
+ <li><a class="reference internal" href="#february-23-2025">[0.1.9] - February 23, 2025</a></li>
166
+ <li><a class="reference internal" href="#id2">[0.1.8] - February 23, 2025</a></li>
163
167
  <li><a class="reference internal" href="#february-08-2025">[0.1.7] - February 08, 2025</a></li>
164
168
  </ul>
165
169
  </li>
@@ -196,7 +200,7 @@
196
200
 
197
201
  <section id="welcome-to-juham-documentation">
198
202
  <h1>Welcome to Juham™ documentation!<a class="headerlink" href="#welcome-to-juham-documentation" title="Link to this heading">¶</a></h1>
199
- <a class="reference internal image-reference" href="_images/juham.png"><img alt="Juha's Ultimate Home Automation Masterpiece" src="_images/juham.png" style="width: 400px; height: 300px;" />
203
+ <a class="reference internal image-reference" href="_static/juham.png"><img alt="Juha's Ultimate Home Automation Masterpiece" src="_static/juham.png" style="width: 400px; height: 300px;" />
200
204
  </a>
201
205
  <div class="toctree-wrapper compound">
202
206
  <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
@@ -211,16 +215,24 @@
211
215
  <h2>Project Description<a class="headerlink" href="#project-description" title="Link to this heading">¶</a></h2>
212
216
  <p>This package extends the <code class="docutils literal notranslate"><span class="pre">juham_core</span></code> package, providing home automation building blocks that cover most common needs.
213
217
  It consists of two main sub-modules:</p>
218
+ <a class="reference internal image-reference" href="_static/images/juham_automation.png"><img alt="Basic automation classes for optimizing energy consumption and minimizing electricity costs." class="align-center" src="_static/images/juham_automation.png" style="width: 640px;" />
219
+ </a>
214
220
  <ul class="simple">
215
- <li><p><code class="docutils literal notranslate"><span class="pre">automation</span></code>
216
- * <strong>spothintafi</strong>: Acquires electricity prices in Finland.
217
- * <strong>watercirculator</strong>: Automates a water circulator pump based on hot water temperature and motion detection.
218
- * <strong>hotwateroptimizer</strong>: Controls hot water radiators based on temperature sensors and electricity price data.
219
- * <strong>energycostcalculator</strong>: Monitors power consumption and electricity prices, and computes the energy balance in euros.</p></li>
220
- <li><p><code class="docutils literal notranslate"><span class="pre">ts</span></code>
221
- * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
221
+ <li><p><code class="docutils literal notranslate"><span class="pre">automation</span></code></p>
222
+ <ul>
223
+ <li><p><strong>spothintafi</strong>: Acquires electricity prices in Finland.</p></li>
224
+ <li><p><strong>watercirculator</strong>: Automates a water circulator pump based on hot water temperature and motion detection.</p></li>
225
+ <li><p><strong>hotwateroptimizer</strong>: Controls hot water radiators based on temperature sensors and electricity price data.</p></li>
226
+ <li><p><strong>energycostcalculator</strong>: Monitors power consumption and electricity prices, and computes the energy balance in euros.</p></li>
227
+ </ul>
228
+ </li>
229
+ <li><p><code class="docutils literal notranslate"><span class="pre">ts</span></code></p>
230
+ <ul>
231
+ <li><p>This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
222
232
  for later inspection.</p></li>
223
233
  </ul>
234
+ </li>
235
+ </ul>
224
236
  </section>
225
237
  <section id="project-status">
226
238
  <h2>Project Status<a class="headerlink" href="#project-status" title="Link to this heading">¶</a></h2>
@@ -302,6 +314,19 @@ So there is a Makefile in the root folder. For those old dogs who are like me</p
302
314
  </section>
303
315
  <section id="changelog">
304
316
  <h1>Changelog<a class="headerlink" href="#changelog" title="Link to this heading">¶</a></h1>
317
+ <section id="february-23-2025">
318
+ <h2>[0.1.9] - February 23, 2025<a class="headerlink" href="#february-23-2025" title="Link to this heading">¶</a></h2>
319
+ <ul class="simple">
320
+ <li><p>Support for grid (network) prices and tax added.</p></li>
321
+ </ul>
322
+ </section>
323
+ <section id="id2">
324
+ <h2>[0.1.8] - February 23, 2025<a class="headerlink" href="#id2" title="Link to this heading">¶</a></h2>
325
+ <ul class="simple">
326
+ <li><p>Bug fix in the computation of the utilization optimization index: solar power was previously
327
+ given in kW, while radiator power was in W, which underestimated the effect of available solar power.</p></li>
328
+ </ul>
329
+ </section>
305
330
  <section id="february-08-2025">
306
331
  <h2>[0.1.7] - February 08, 2025<a class="headerlink" href="#february-08-2025" title="Link to this heading">¶</a></h2>
307
332
  <p>Initial release for GitLab. Pre-alpha!</p>
@@ -381,7 +406,7 @@ So there is a Makefile in the root folder. For those old dogs who are like me</p
381
406
  </p>
382
407
  <p>
383
408
  &copy; Copyright 2024, juha meskanen.<br/>
384
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.0.<br/>
409
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.1.<br/>
385
410
  </p>
386
411
  </div>
387
412
  </footer>
@@ -153,7 +153,7 @@
153
153
  </p>
154
154
  <p>
155
155
  &copy; Copyright 2024, juha meskanen.<br/>
156
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.0.<br/>
156
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.1.<br/>
157
157
  </p>
158
158
  </div>
159
159
  </footer>
@@ -147,7 +147,7 @@
147
147
  </p>
148
148
  <p>
149
149
  &copy; Copyright 2024, juha meskanen.<br/>
150
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.0.<br/>
150
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 8.2.1.<br/>
151
151
  </p>
152
152
  </div>
153
153
  </footer>
@@ -0,0 +1 @@
1
+ Search.setIndex({"alltitles":{"Automation":[[0,"automation"]],"Changelog":[[0,"changelog"]],"Classes":[[0,"classes"]],"Code Formatting":[[0,"code-formatting"]],"Contents:":[[0,null]],"Contributing to Juham\u2122 - Juha\u2019s Ultimate Home Automation Masterpiece":[[0,"contributing-to-juham-juha-s-ultimate-home-automation-masterpiece"]],"Design":[[0,"design"]],"Design Patterns":[[0,"design-patterns"]],"Documentation":[[0,"documentation"]],"Index":[[0,"index"]],"Inline TODO":[[0,"inline-todo"]],"LICENSE":[[0,"license"]],"More Stuff":[[0,"more-stuff"]],"Project Description":[[0,"project-description"]],"Project Status":[[0,"project-status"]],"Special Thanks":[[0,"special-thanks"]],"TODOs for Juham\u2122":[[0,"todos-for-juham"]],"Testing":[[0,"testing"]],"Thank You!":[[0,"thank-you"]],"Todo":[[0,"id1"],[0,null]],"Using Emacs and Makefile":[[0,"using-emacs-and-makefile"]],"Welcome to Juham\u2122 - Juha\u2019s Ultimate Home Automation Masterpiece":[[0,"welcome-to-juham-juha-s-ultimate-home-automation-masterpiece"]],"Welcome to Juham\u2122 documentation!":[[0,null]],"[0.1.7] - February 08, 2025":[[0,"february-08-2025"]],"[0.1.8] - February 23, 2025":[[0,"id2"]],"[0.1.9] - February 23, 2025":[[0,"february-23-2025"]],"juham_automation":[[1,null]]},"docnames":["index","juham_automation/index"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1},"filenames":["index.rst","juham_automation/index.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"15":0,"2":0,"2024":0,"43":0,"5":0,"A":0,"AND":0,"AS":0,"BE":0,"BUT":0,"FOR":0,"For":0,"IN":0,"It":0,"NO":0,"NOT":0,"OF":0,"OR":0,"THE":0,"TO":0,"The":0,"To":0,"WITH":0,"_":0,"abov":0,"acquir":0,"across":0,"action":0,"actual":0,"ad":0,"add":0,"adjust":0,"advanc":0,"align":0,"all":0,"alpha":0,"alreadi":0,"also":0,"an":0,"ani":0,"appreci":0,"ar":0,"aris":0,"associ":0,"attempt":0,"author":0,"avail":0,"bake":0,"balanc":0,"base":0,"becaus":0,"been":0,"befor":0,"behind":0,"best":0,"between":0,"black":0,"block":0,"both":0,"bought":0,"bug":0,"build":0,"c":0,"capabl":0,"chapter":0,"charg":0,"circul":0,"claim":0,"common":0,"comput":0,"condit":0,"configur":0,"connect":0,"consist":0,"consumpt":0,"contain":0,"contract":0,"control":0,"copi":0,"copyright":0,"cost":0,"could":0,"cover":0,"currenc":0,"current":0,"damag":0,"data":0,"databas":0,"deal":0,"demonstr":0,"desper":0,"despit":0,"detect":0,"develop":0,"differ":0,"distinct":0,"distribut":0,"do":0,"doc":0,"docstr":0,"doesn":0,"dog":0,"don":0,"donat":0,"done":0,"down":0,"drag":0,"drop":0,"eclips":0,"effect":0,"effort":0,"electr":0,"element":0,"encourag":0,"encrypt":0,"endless":0,"energi":0,"energycostcalcul":0,"ensur":0,"entir":0,"entri":0,"essenti":0,"euro":0,"event":0,"everi":0,"except":0,"express":0,"extend":0,"extent":0,"extrac":0,"fall":0,"featur":0,"feedback":0,"few":0,"file":0,"find":0,"finland":0,"fit":0,"five":0,"fix":0,"folder":0,"follow":0,"formatt":0,"forthcom":0,"free":0,"from":0,"furnish":0,"gener":0,"gentlemen":0,"gitlab":0,"give":0,"given":0,"goal":0,"grant":0,"graphic":0,"grate":0,"grid":0,"ha":0,"half":0,"hard":0,"have":0,"help":0,"herebi":0,"hi":0,"highli":0,"holder":0,"hole":0,"hot":0,"hotwateroptim":0,"hour":0,"how":0,"howev":0,"i":0,"id":0,"idea":0,"imbal":0,"impli":0,"import":0,"improv":0,"includ":0,"individu":0,"initi":0,"inspect":0,"inspir":0,"instanc":0,"instrument":0,"integr":0,"invalu":0,"item":0,"its":0,"json":0,"juham_autom":0,"juham_cor":0,"k":0,"kind":0,"know":0,"known":0,"kw":0,"lack":0,"later":0,"lenght":0,"liabil":0,"liabl":0,"like":0,"limit":0,"line":0,"list":0,"listen":0,"locat":0,"logo":0,"look":0,"love":0,"m":0,"mahi":0,"main":0,"maintain":0,"make":0,"mani":0,"me":0,"merchant":0,"merg":0,"meskanen":0,"microsoft":0,"minim":0,"minut":0,"mission":0,"modifi":0,"modul":0,"monitor":0,"most":0,"motion":0,"mqtt":0,"much":0,"multipl":0,"my":0,"need":0,"neg":0,"network":0,"new":0,"noninfring":0,"notic":0,"obtain":0,"offer":0,"okai":0,"old":0,"optim":0,"organ":0,"origin":0,"other":0,"otherwis":0,"out":0,"outstand":0,"own":0,"packag":0,"page":0,"panel":0,"particular":0,"password":0,"period":0,"permiss":0,"permit":0,"person":0,"pi":0,"pleas":0,"plu":0,"portion":0,"possibl":0,"power":0,"pre":0,"previous":0,"price":0,"prioriz":0,"produc":0,"product":0,"profession":0,"properli":0,"provid":0,"publish":0,"pump":0,"purpos":0,"push":0,"python":0,"rabbit":0,"radiat":0,"raspberri":0,"read":0,"real":0,"realli":0,"record":0,"relai":0,"releas":0,"report":0,"requir":0,"restrict":0,"right":0,"robust":0,"root":0,"rst":0,"search":0,"secur":0,"seem":0,"sell":0,"semblanc":0,"sensor":0,"seri":0,"settlement":0,"shall":0,"shelli":0,"should":0,"simpli":0,"simul":0,"small":0,"so":0,"softwar":0,"solar":0,"some":0,"sourc":0,"spare":0,"spark":0,"spothintafi":0,"state":0,"still":0,"store":0,"strang":0,"structur":0,"sub":0,"subject":0,"sublicens":0,"substanti":0,"support":0,"system":0,"t":0,"tax":0,"tba":0,"temperatur":0,"teppo":0,"term":0,"thei":0,"thi":0,"those":0,"thought":0,"time":0,"tinker":0,"tool":0,"topic":0,"tort":0,"translat":0,"transmiss":0,"tri":0,"truli":0,"turn":0,"two":0,"underestim":0,"understand":0,"unit":0,"up":0,"util":0,"volt":0,"vscode":0,"w":0,"wa":0,"warranti":0,"wasn":0,"water":0,"watercircul":0,"we":0,"well":0,"whether":0,"which":0,"while":0,"who":0,"whom":0,"wifi":0,"without":0,"work":0,"workflow":0,"would":0,"write":0,"your":0},"titles":["Welcome to Juham\u2122 documentation!","juham_automation"],"titleterms":{"":0,"0":0,"08":0,"1":0,"2025":0,"23":0,"7":0,"8":0,"9":0,"autom":0,"changelog":0,"class":0,"code":0,"content":0,"contribut":0,"descript":0,"design":0,"document":0,"emac":0,"februari":0,"format":0,"home":0,"index":0,"inlin":0,"juha":0,"juham":0,"juham_autom":1,"licens":0,"makefil":0,"masterpiec":0,"more":0,"pattern":0,"project":0,"special":0,"statu":0,"stuff":0,"test":0,"thank":0,"todo":0,"ultim":0,"us":0,"welcom":0,"you":0}})
@@ -489,7 +489,7 @@ class HotWaterOptimizer(Juham):
489
489
  if len(powers) >= 8: # at least 8 hours of solar energy forecast
490
490
  for spot, solar in zip(spots, powers):
491
491
  ts = spot["Timestamp"]
492
- solarenergy = solar["Solarenergy"]
492
+ solarenergy = solar["Solarenergy"] * 1000 # argh, this is in kW
493
493
  spotprice = spot["PriceWithTax"]
494
494
  effective_price: float = self.compute_effective_price(
495
495
  self.radiator_power, solarenergy, spotprice
@@ -18,6 +18,9 @@ class SpotHintaFiThread(JuhamCloudThread):
18
18
  _spot_topic: str = ""
19
19
  _url: str = ""
20
20
  _interval: float = 12 * 3600
21
+ grid_cost_day: float = 0.0314
22
+ grid_cost_night: float = 0.0132
23
+ grid_cost_tax: float = 0.028272
21
24
 
22
25
  def __init__(self, client: Optional[Mqtt] = None) -> None:
23
26
  super().__init__(client)
@@ -51,11 +54,19 @@ class SpotHintaFiThread(JuhamCloudThread):
51
54
  for e in data:
52
55
  ts = time.mktime(time.strptime(e["DateTime"], "%Y-%m-%dT%H:%M:%S%z"))
53
56
  hour = datetime.utcfromtimestamp(ts).strftime("%H")
57
+ total_price: float
58
+ grid_cost: float
59
+ if int(hour) < 22 and int(hour) >= 6:
60
+ grid_cost = self.grid_cost_day
61
+ else:
62
+ grid_cost = self.grid_cost_night
63
+ total_price = e["SpotPrice"] + grid_cost + self.grid_cost_tax
54
64
  h = {
55
65
  "Timestamp": ts,
56
66
  "hour": hour,
57
67
  "Rank": e["Rank"],
58
- "PriceWithTax": e["PriceWithTax"],
68
+ "PriceWithTax": total_price,
69
+ "GridCost": grid_cost + self.grid_cost_tax,
59
70
  }
60
71
  spot.append(h)
61
72
  self.publish(self._spot_topic, json.dumps(spot), 1, True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: juham-automation
3
- Version: 0.0.7
3
+ Version: 0.0.9
4
4
  Summary: Juha's Ultimate Home Automation Masterpiece
5
5
  Author-email: J Meskanen <juham.api@gmail.com>
6
6
  Maintainer-email: "J. Meskanen" <juham.api@gmail.com>
@@ -50,7 +50,6 @@ Requires-Dist: masterpiece_pahomqtt>=0.0.3
50
50
  Requires-Dist: juham_core>=0.0.7
51
51
  Requires-Dist: requests>=2.31
52
52
  Requires-Dist: pytz>=2024.1
53
- Requires-Dist: importlib-metadata
54
53
  Provides-Extra: dev
55
54
  Requires-Dist: check-manifest; extra == "dev"
56
55
  Requires-Dist: types-pyz; extra == "dev"
@@ -64,7 +63,14 @@ Project Description
64
63
  This package extends the ``juham_core`` package, providing home automation building blocks that cover most common needs.
65
64
  It consists of two main sub-modules:
66
65
 
66
+ .. image:: _static/images/juham_automation.png
67
+ :alt: Basic automation classes for optimizing energy consumption and minimizing electricity costs.
68
+ :width: 640px
69
+ :align: center
70
+
71
+
67
72
  - ``automation``
73
+
68
74
  * **spothintafi**: Acquires electricity prices in Finland.
69
75
  * **watercirculator**: Automates a water circulator pump based on hot water temperature and motion detection.
70
76
  * **hotwateroptimizer**: Controls hot water radiators based on temperature sensors and electricity price data.
@@ -72,8 +78,9 @@ It consists of two main sub-modules:
72
78
 
73
79
 
74
80
  - ``ts``
75
- * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
76
- for later inspection.
81
+
82
+ * This folder contains time series recorders that listen for Juham™ topics and store the data in a time series database
83
+ for later inspection.
77
84
 
78
85
 
79
86
  Project Status
@@ -4,7 +4,6 @@ masterpiece_pahomqtt>=0.0.3
4
4
  juham_core>=0.0.7
5
5
  requests>=2.31
6
6
  pytz>=2024.1
7
- importlib-metadata
8
7
 
9
8
  [dev]
10
9
  check-manifest
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "juham-automation"
8
- version = "0.0.7"
8
+ version = "0.0.9"
9
9
  description = "Juha's Ultimate Home Automation Masterpiece"
10
10
  readme = {file = "README.rst", content-type = "text/markdown"}
11
11
  requires-python = ">=3.8"
@@ -33,7 +33,6 @@ dependencies = [
33
33
  "juham_core >= 0.0.7",
34
34
  "requests >= 2.31",
35
35
  "pytz >= 2024.1",
36
- "importlib-metadata"
37
36
  ]
38
37
 
39
38
 
@@ -1 +0,0 @@
1
- Search.setIndex({"alltitles":{"Automation":[[0,"automation"]],"Changelog":[[0,"changelog"]],"Classes":[[0,"classes"]],"Code Formatting":[[0,"code-formatting"]],"Contents:":[[0,null]],"Contributing to Juham\u2122 - Juha\u2019s Ultimate Home Automation Masterpiece":[[0,"contributing-to-juham-juha-s-ultimate-home-automation-masterpiece"]],"Design":[[0,"design"]],"Design Patterns":[[0,"design-patterns"]],"Documentation":[[0,"documentation"]],"Index":[[0,"index"]],"Inline TODO":[[0,"inline-todo"]],"LICENSE":[[0,"license"]],"More Stuff":[[0,"more-stuff"]],"Project Description":[[0,"project-description"]],"Project Status":[[0,"project-status"]],"Special Thanks":[[0,"special-thanks"]],"TODOs for Juham\u2122":[[0,"todos-for-juham"]],"Testing":[[0,"testing"]],"Thank You!":[[0,"thank-you"]],"Todo":[[0,"id1"],[0,null]],"Using Emacs and Makefile":[[0,"using-emacs-and-makefile"]],"Welcome to Juham\u2122 - Juha\u2019s Ultimate Home Automation Masterpiece":[[0,"welcome-to-juham-juha-s-ultimate-home-automation-masterpiece"]],"Welcome to Juham\u2122 documentation!":[[0,null]],"[0.1.7] - February 08, 2025":[[0,"february-08-2025"]],"juham_automation":[[1,null]]},"docnames":["index","juham_automation/index"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1},"filenames":["index.rst","juham_automation/index.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"15":0,"2":0,"2024":0,"43":0,"5":0,"A":0,"AND":0,"AS":0,"BE":0,"BUT":0,"FOR":0,"For":0,"IN":0,"It":0,"NO":0,"NOT":0,"OF":0,"OR":0,"THE":0,"TO":0,"The":0,"To":0,"WITH":0,"_":0,"abov":0,"acquir":0,"across":0,"action":0,"actual":0,"add":0,"adjust":0,"advanc":0,"align":0,"all":0,"alpha":0,"alreadi":0,"also":0,"an":0,"ani":0,"appreci":0,"ar":0,"aris":0,"associ":0,"attempt":0,"author":0,"bake":0,"balanc":0,"base":0,"becaus":0,"been":0,"befor":0,"behind":0,"best":0,"between":0,"black":0,"block":0,"both":0,"bought":0,"bug":0,"build":0,"c":0,"capabl":0,"chapter":0,"charg":0,"circul":0,"claim":0,"common":0,"comput":0,"condit":0,"configur":0,"connect":0,"consist":0,"consumpt":0,"contain":0,"contract":0,"control":0,"copi":0,"copyright":0,"cost":0,"could":0,"cover":0,"currenc":0,"current":0,"damag":0,"data":0,"databas":0,"deal":0,"demonstr":0,"desper":0,"despit":0,"detect":0,"develop":0,"differ":0,"distinct":0,"distribut":0,"do":0,"doc":0,"docstr":0,"doesn":0,"dog":0,"don":0,"donat":0,"done":0,"down":0,"drag":0,"drop":0,"eclips":0,"effect":0,"effort":0,"electr":0,"element":0,"encourag":0,"encrypt":0,"endless":0,"energi":0,"energycostcalcul":0,"ensur":0,"entir":0,"entri":0,"essenti":0,"euro":0,"event":0,"everi":0,"except":0,"express":0,"extend":0,"extent":0,"extrac":0,"fall":0,"featur":0,"feedback":0,"few":0,"file":0,"find":0,"finland":0,"fit":0,"five":0,"fix":0,"folder":0,"follow":0,"formatt":0,"forthcom":0,"free":0,"from":0,"furnish":0,"gener":0,"gentlemen":0,"gitlab":0,"give":0,"goal":0,"grant":0,"graphic":0,"grate":0,"ha":0,"half":0,"hard":0,"have":0,"help":0,"herebi":0,"hi":0,"highli":0,"holder":0,"hole":0,"hot":0,"hotwateroptim":0,"hour":0,"how":0,"howev":0,"i":0,"id":0,"idea":0,"imbal":0,"impli":0,"import":0,"improv":0,"includ":0,"individu":0,"initi":0,"inspect":0,"inspir":0,"instanc":0,"instrument":0,"integr":0,"invalu":0,"item":0,"its":0,"json":0,"juham_autom":0,"juham_cor":0,"k":0,"kind":0,"know":0,"known":0,"lack":0,"later":0,"lenght":0,"liabil":0,"liabl":0,"like":0,"limit":0,"line":0,"list":0,"listen":0,"locat":0,"logo":0,"look":0,"love":0,"m":0,"mahi":0,"main":0,"maintain":0,"make":0,"mani":0,"me":0,"merchant":0,"merg":0,"meskanen":0,"microsoft":0,"minim":0,"minut":0,"mission":0,"modifi":0,"modul":0,"monitor":0,"most":0,"motion":0,"mqtt":0,"much":0,"multipl":0,"my":0,"need":0,"neg":0,"new":0,"noninfring":0,"notic":0,"obtain":0,"offer":0,"okai":0,"old":0,"optim":0,"organ":0,"origin":0,"other":0,"otherwis":0,"out":0,"outstand":0,"own":0,"packag":0,"page":0,"panel":0,"particular":0,"password":0,"period":0,"permiss":0,"permit":0,"person":0,"pi":0,"pleas":0,"plu":0,"portion":0,"possibl":0,"power":0,"pre":0,"price":0,"prioriz":0,"produc":0,"product":0,"profession":0,"properli":0,"provid":0,"publish":0,"pump":0,"purpos":0,"push":0,"python":0,"rabbit":0,"radiat":0,"raspberri":0,"read":0,"real":0,"realli":0,"record":0,"relai":0,"releas":0,"report":0,"requir":0,"restrict":0,"right":0,"robust":0,"root":0,"rst":0,"search":0,"secur":0,"seem":0,"sell":0,"semblanc":0,"sensor":0,"seri":0,"settlement":0,"shall":0,"shelli":0,"should":0,"simpli":0,"simul":0,"small":0,"so":0,"softwar":0,"solar":0,"some":0,"sourc":0,"spare":0,"spark":0,"spothintafi":0,"state":0,"still":0,"store":0,"strang":0,"structur":0,"sub":0,"subject":0,"sublicens":0,"substanti":0,"support":0,"system":0,"t":0,"tba":0,"temperatur":0,"teppo":0,"term":0,"thei":0,"thi":0,"those":0,"thought":0,"time":0,"tinker":0,"tool":0,"topic":0,"tort":0,"translat":0,"transmiss":0,"tri":0,"truli":0,"turn":0,"two":0,"understand":0,"unit":0,"up":0,"volt":0,"vscode":0,"wa":0,"warranti":0,"wasn":0,"water":0,"watercircul":0,"we":0,"well":0,"whether":0,"while":0,"who":0,"whom":0,"wifi":0,"without":0,"work":0,"workflow":0,"would":0,"write":0,"your":0},"titles":["Welcome to Juham\u2122 documentation!","juham_automation"],"titleterms":{"":0,"0":0,"08":0,"1":0,"2025":0,"7":0,"autom":0,"changelog":0,"class":0,"code":0,"content":0,"contribut":0,"descript":0,"design":0,"document":0,"emac":0,"februari":0,"format":0,"home":0,"index":0,"inlin":0,"juha":0,"juham":0,"juham_autom":1,"licens":0,"makefil":0,"masterpiec":0,"more":0,"pattern":0,"project":0,"special":0,"statu":0,"stuff":0,"test":0,"thank":0,"todo":0,"ultim":0,"us":0,"welcom":0,"you":0}})