- [Speedtest Tracker](#SpeedtestTracker)
- [What's Up Docker](#whats-up-docker)
- [SABnzbd](#sabnzbd)
- - [OctoPrint](#sabnzbd)
+ - [OctoPrint](#octoprint)
- [Tdarr](#tdarr)
If you experiencing any issue, please have a look to the [troubleshooting](troubleshooting.md) page.
downloadInterval: 5000 # (Optional) Interval (in ms) for updating the download count
```
-## OctoPrint
+## OctoPrint/Moonraker
-The OctoPrint service only needs an `apikey` & `url` and optionally a `display` option.
+The OctoPrint/Moonraker service only needs an `apikey` & `endpoint` and optionally a `display` or `url` option. `url` can be used when you click on the service it will launch the `url`
+
+Moonraker's API mimmicks a few of OctoPrint's endpoints which makes these services compatible. See https://moonraker.readthedocs.io/en/latest/web_api/#octoprint-api-emulation for details.
```yaml
- name: "Octoprint"
logo: "https://cdn-icons-png.flaticon.com/512/3112/3112529.png"
- apikey: "xxxxxxxxxxxx" # insert your own API key here. Request one from https://openweathermap.org/api.
- url: "http://192.168.0.151:8080"
+ apikey: "xxxxxxxxxxxx" # insert your own API key here.
+ endpoint: "http://192.168.0.151:8080"
display: "text" # 'text' or 'bar'. Default to `text`.
type: "OctoPrint"
```
<template v-if="item.subtitle && !state">
{{ item.subtitle }}
</template>
- <template v-if="!error && display == 'text'">
+ <template v-if="!error && display == 'text' && statusClass == 'in-progress'">
<i class="fa-solid fa-gear mr-1"></i>
<b v-if="completion">{{ completion.toFixed() }}%</b>
<span class="separator mx-1"> | </span>
{{ toTime(printTime) }}
</span>
</template>
+ <template v-if="!error && display == 'text' && statusClass == 'ready'">
+ <i class="fa-solid fa-temperature-half mr-1"></i>
+ <b v-if="printer.temperature.bed">{{ printer.temperature.bed.actual.toFixed() }} C</b>
+ <span class="separator mx-1"> | </span>
+ <b v-if="printer.temperature.tool0">{{ printer.temperature.tool0.actual.toFixed() }} C</b>
+ </template>
<template v-if="!error && display == 'bar'">
<progress
v-if="completion"
printTimeLeft: null,
completion: null,
state: null,
+ printer: null,
error: null,
}),
computed: {
},
created() {
this.display = this.item.display == "bar" ? this.item.display : "text";
+ this.fetchPrinterStatus();
this.fetchStatus();
},
methods: {
console.error(e);
}
},
+ fetchPrinterStatus: async function () {
+ try {
+ const response = await this.fetch(`api/printer?apikey=${this.item.apikey}`);
+ this.printer = response;
+ this.error = response.error;
+ } catch (e) {
+ this.error = `Fail to fetch octoprint data (${e.message})`;
+ console.error(e);
+ }
+ },
toTime: function (timastamp) {
return new Date(timastamp * 1000).toTimeString().substring(0, 5);
},