@@ -4,14 +4,38 @@ This plugin reads chamber temperature from a WirelessTag API and displays it in
4
4
5
5
## Features
6
6
7
+ ### Core Functionality
7
8
- Fetches temperature data from WirelessTag API endpoints
8
- - Displays chamber temperature in the OctoPrint navbar (top bar)
9
9
- Works independently of printer connection status
10
10
- Real-time temperature updates via WebSocket
11
- - Configurable polling interval
11
+ - Configurable polling interval (10-300 seconds)
12
12
- Support for custom XML temperature paths
13
13
- Clean separation of UUID and base URL configuration
14
14
15
+ ### Temperature Display
16
+ - ** Navbar Display** : Shows current chamber temperature in the top bar with thermometer icon
17
+ - ** Dedicated Tab** : Full-featured "Chamber Temp" tab with professional temperature monitoring interface
18
+
19
+ ### Chamber Temperature Tab Features
20
+ - ** Interactive Temperature Chart**
21
+ - Real-time updating graph with orange theme
22
+ - Hover tooltips showing exact time and temperature
23
+ - Auto-scrolling option to follow latest data
24
+ - Time range controls (10 min to 24 hours)
25
+ - Stores up to 24 hours of temperature history
26
+
27
+ - ** Statistics Dashboard**
28
+ - Large current temperature display
29
+ - Min/Max/Average temperature calculations
30
+ - Data point counter
31
+ - Connection status indicator
32
+ - Last update timestamp
33
+
34
+ - ** Data Management**
35
+ - Clear History button to reset all data
36
+ - Export to CSV for data analysis
37
+ - Automatic data trimming after 24 hours
38
+
15
39
## Building the Plugin
16
40
17
41
### Development Setup
@@ -106,8 +130,22 @@ The plugin:
106
130
107
131
## Where Temperature is Displayed
108
132
109
- - ** Navbar** : Shows "Chamber: XX.X°C" with a thermometer icon in the top bar
110
- - ** Logs** : Temperature updates are logged for debugging
133
+ ### 1. Navbar (Top Bar)
134
+ - Shows "Chamber: XX.X°C" with a thermometer icon
135
+ - Always visible for quick temperature monitoring
136
+ - Updates in real-time as new data arrives
137
+
138
+ ### 2. Chamber Temp Tab
139
+ - Dedicated tab in OctoPrint's main interface
140
+ - Professional temperature monitoring dashboard
141
+ - Interactive chart with historical data
142
+ - Statistics and data management tools
143
+ - No interference with printer temperature displays
144
+
145
+ ### 3. System Logs
146
+ - Temperature updates are logged for debugging
147
+ - Access via Settings → Logs
148
+ - Filter by "external_temp_reader" for plugin-specific logs
111
149
112
150
## Troubleshooting
113
151
@@ -128,10 +166,18 @@ The plugin:
128
166
- Verify the tag's battery level and signal strength
129
167
130
168
### Temperature not showing in navbar
131
- - Clear browser cache and refresh
169
+ - Clear browser cache and refresh (Ctrl+F5 or Cmd+Shift+R)
132
170
- Check browser console (F12) for JavaScript errors
133
171
- Verify the plugin's JavaScript file loaded correctly
134
172
173
+ ### Chamber Temp tab chart not displaying
174
+ - Open browser console (F12 → Console)
175
+ - Click on the "Chamber Temp" tab
176
+ - Look for "External Temp Reader:" messages
177
+ - Check for "Chart initialized successfully" or error messages
178
+ - Clear browser cache if chart container is missing
179
+ - Ensure JavaScript is enabled in your browser
180
+
135
181
## API Response Format
136
182
137
183
The plugin expects XML responses in this format from WirelessTag:
@@ -193,16 +239,41 @@ octoprint-external-temp/
193
239
├── setup.py # Package setup script
194
240
├── dist/ # Built distributions (not in git)
195
241
└── octoprint_external_temp_reader/ # Plugin package
196
- ├── __init__.py # Plugin initialization
242
+ ├── __init__.py # Plugin initialization & hooks
197
243
├── ExternalTempReaderPlugin.py # Main plugin code
198
244
├── static/ # Static assets
245
+ │ ├── css/
246
+ │ │ └── external_temp_reader.css # Styling for tab and navbar
199
247
│ └── js/
200
- │ └── external_temp_reader.js
248
+ │ └── external_temp_reader.js # Chart logic and UI updates
201
249
└── templates/ # Jinja2 templates
202
- ├── external_temp_reader_navbar.jinja2
203
- └── external_temp_reader_settings.jinja2
250
+ ├── external_temp_reader_navbar.jinja2 # Navbar temperature display
251
+ ├── external_temp_reader_settings.jinja2 # Settings page
252
+ └── external_temp_reader_tab.jinja2 # Chamber temp tab
204
253
```
205
254
255
+ ## Usage Guide
256
+
257
+ ### Initial Setup
258
+ 1 . Install the plugin and restart OctoPrint
259
+ 2 . Navigate to Settings → External Temp Reader
260
+ 3 . Enter your WirelessTag UUID
261
+ 4 . Save settings and refresh the page
262
+
263
+ ### Using the Chamber Temp Tab
264
+ 1 . Click on the "Chamber Temp" tab in OctoPrint
265
+ 2 . Temperature data will begin populating the chart
266
+ 3 . Use time range buttons to zoom in/out (10 min - 24 hours)
267
+ 4 . Enable "Auto-scroll" to keep the latest data in view
268
+ 5 . Hover over the chart to see exact temperature values
269
+ 6 . Export data as CSV for external analysis
270
+
271
+ ### Monitoring Temperature
272
+ - ** Quick View** : Check navbar for current temperature
273
+ - ** Detailed View** : Use Chamber Temp tab for full history
274
+ - ** Statistics** : Monitor Min/Max/Average on the dashboard
275
+ - ** Data Export** : Download CSV for spreadsheet analysis
276
+
206
277
## Development Tips
207
278
208
279
1 . ** Watch logs during development** :
@@ -213,21 +284,53 @@ tail -f ~/.octoprint/logs/octoprint.log | grep external_temp_reader
213
284
2 . ** Test changes without reinstalling** :
214
285
- Install in development mode (` pip install -e . ` )
215
286
- Changes to Python files require OctoPrint restart
216
- - Changes to JS/templates may require browser refresh
287
+ - Changes to JS/CSS/ templates require browser cache clear (Ctrl+F5)
217
288
218
289
3 . ** Debug JavaScript** :
219
290
- Open browser console (F12)
220
291
- Look for "External Temp Reader:" messages
292
+ - Check for chart initialization logs
221
293
222
- 4 . ** Version bumping** :
294
+ 4 . ** Debug Chart Issues** :
295
+ - Verify Flot library is loaded: ` $.plot ` in console
296
+ - Check chart container exists: ` $("#chamber-temperature-chart").length `
297
+ - Look for JavaScript errors in console
298
+
299
+ 5 . ** Version bumping** :
223
300
- Update version in ` setup.py `
224
301
- Update version in ` octoprint_external_temp_reader/__init__.py `
225
302
- Tag the release in git
226
303
304
+ ## Technical Details
305
+
306
+ ### API Integration
307
+ - Uses WirelessTag's public API endpoint for shared tags
308
+ - Polls data at configurable intervals (default: 60 seconds)
309
+ - Parses XML response with namespace handling
310
+ - Extracts temperature from ` temp_degC ` field
311
+
312
+ ### Frontend Architecture
313
+ - KnockoutJS for data binding (OctoPrint standard)
314
+ - Flot library for chart rendering
315
+ - WebSocket for real-time updates
316
+ - Custom CSS for consistent theming
317
+
318
+ ### Data Storage
319
+ - In-memory storage of temperature history
320
+ - Maximum 2,880 data points (24 hours at 30-second intervals)
321
+ - Automatic cleanup of old data
322
+ - No database required
323
+
227
324
## License
228
325
229
326
Apache 2.0
230
327
231
328
## Author
232
329
233
-
330
+
331
+
332
+ ## Acknowledgments
333
+
334
+ - OctoPrint community for plugin development resources
335
+ - WirelessTag for providing public API access
336
+ - Flot charts library for visualization
0 commit comments