# OctoDash - UI

![](https://lh5.googleusercontent.com/1Vs7rR5dESwn2fc5X1KEzqb7F2EdzKUXIprXvYQS6w6mQVSwwpKD2YXDN8tlJaKphKuMSDgF3NV61dtfIzSKl2zPJHfY767CrzdkypY52aDp4M6Nfkst0nRCfhK4gpPaKQogHqvt)

OctoDash es un simple pero bonito dashboard para OctoPrint que cuenta con pantallas.

Utiliza llamadas API para lanzar los comandos a tu Octoprint desde un bonito interfaz que funciona fantástico con una pantalla touch.

## El proceso de instalación:

### Preparar Octoprint

Instalando los siguientes plugins:

* **DisplayLayerProgress** (requerido) : muestra en la pantalla de la impresora el tiempo estimado para finalizar, el porcentaje y las capas.

{% embed url="<https://plugins.octoprint.org/plugins/DisplayLayerProgress/>" %}

* **PrintTimeGenius Plugin** (sugerido) : estimaciones exactas de tiempo de impresión.

{% embed url="<https://plugins.octoprint.org/plugins/PrintTimeGenius/>" %}

* **Filament Manager** (opcional): podemos añadir nuestras bobinas y que nos lleve la cuenta del material que gastamos. Está relacionado con el Cost Estimation, puesto que pilla de ahí lo que cuesta cada uno de los materiales.

{% embed url="<https://plugins.octoprint.org/plugins/filamentmanager/>" %}

* **Preheat Button** (opcional), para hacer el precalentado

{% embed url="<https://plugins.octoprint.org/plugins/preheat/>" %}

* **Slicer Thumbnails** (sugerido), tener una imagen de previsualización de la pieza, requiere de configuración en el Slicer y es muy aconsejable

{% embed url="<https://plugins.octoprint.org/plugins/prusaslicerthumbnails/#:~:text=This%20plugin%20will%20extract%20embedded,open%20in%20a%20modal%20window>." %}

* **Enclosure** (sugerido si tenemos reles), nos permite controlar los relés configurados en este plugin

{% embed url="<https://plugins.octoprint.org/plugins/enclosure/>" %}

También es importante activar **CORS** en tu Octoprint, CORS permitirá que la autodetección de la instancia de Octoprint por parte de OctoDash funcione mejor, puedes activarlo en **Opciones/API/CORS**

![](https://1888789367-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MTqLw6KI5FruaRNEMZD%2F-MeuVZ_Wbzp2zENEtlcU%2F-MeunrfZFi-llnc3b7qA%2Fimage.png?alt=media\&token=72839b6b-b7eb-4a27-b735-14af85f29b86)

### Conectanco a tu Raspberry OS

Acceder por SSH (puedes usar [PuTTY](https://www.putty.org/) o [Terminus](https://termius.com/) para conectar ambos son multiplataforma o sea Windows MAC Linux) el usuario por defecto es pi y el password raspberry.

Preparando el sistema Raspbian para hacer autologin (dependiendo de la versión pueden variar los menus):\
`sudo raspi-config`\
`"3 Boot Options"`\
`"B1 Desktop / CLI"`\
`"B2 Console Autologin"`\
Finalizar y reiniciar la Pi.

Volveremos a conectar y nos aseguraremos que tenemos nuestro OS actualizado:

```bash
# Actualizar Raspbian:
sudo apt update
sudo apt upgrade

# Si nos indica algun paquete incorrcto lanzar:    
sudo apt install -f
```

### Instalando Octoprint

Lanza el siguiente comando:

```bash
bash <(wget -qO- https://github.com/UnchartedBull/OctoDash/raw/main/scripts/install.sh)
```

> Aconsejable poner un teclado en el caso que la versión de Octoprint o OctoDash no permitan el auto-enlazado (ver siguiente punto).

Al arrancar OctoDash intentará detectará instancias de Octoprint en la red selecciona la que quieres controlar (normalmente la misma donde instalaste OctoDash...octoprint.local) y deberás poner la API KEY que la puedes encontrar en los ajustes de Octoprint opción API o depende de la versión te saldrá un botón verde en OctoDash que lanza una petición a Octoprint para verificar, en ese caso con ir a Octoprint le das a Allow en la ventana que sale y a disfrutar!!!

![](https://lh4.googleusercontent.com/ugNgFLwbFaXCvhC0XG6lpiJLcjXMKarRDXRQie6Wtpnh2ixjYPF81oQjy01SbZnZnzA4Y9LdJ0ruoujRTwmvdjxNOQwdQHc6jyzDm2TCwqJeXJdgidn97a9ZT2ChmFaYqjt-EmNs)

> Si no tenemos teclado o problemas con el proceso de permisos del botón verde y la parte de permitir en Octoprint podemos editar el fichero de configuración desde SSH\
> \&#xNAN;**`sudo nano ~/.config/octodash/config.json`**\
> el formato es bastante sencillo de leer aunque de la parte superior tan solo necesitamos poner la IP de Octoprint y la API KEY.

> Si deseas actualizar OctoDash desde SSH por si falla desde el interfaz podéis ejecutar el siguiente comando desde el terminal SSH:\
> \&#xNAN;**`sudo wget -qO- https://github.com/UnchartedBull/OctoDash/raw/main/scripts/update.sh | bash`**\\

> Si deseas desinstalar OctoDash podéis ejecutar el siguiente comando desde el terminal SSH:\
> \&#xNAN;**`wget -qO- https://github.com/UnchartedBull/OctoDash/raw/main/scripts/remove.sh | bash`**

## Resolución de errores

### Fallo al iniciar entorno gráfico por fallo en fbturbo

En el caso que tengamos un error al iniciar OctoDash que indique un fallo en la libreria fbturbo

![](https://1888789367-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MTqLw6KI5FruaRNEMZD%2F-MeQh4V54ju19tZHMx0n%2F-MeQhylHiTOj5GC6Tnyh%2Fimage.png?alt=media\&token=0633cb4e-fc4c-43cc-94e7-7ecdef0f01bb)

Podemos seguir los siguientes pasos para solucionarlo:

```
sudo apt-get install libgtk-3-0 xserver-xorg xinit x11-xserver-utils
sudo apt-get install git build-essential xorg-dev xutils-dev x11proto-dri2-dev
sudo apt-get install libltdl-dev libtool automake libdrm-dev
git clone https://github.com/ssvb/xf86-video-fbturbo.git

cd xf86-video-fbturbo
autoreconf -vi
./configure --prefix=/usr
make
sudo make install
sudo cp xorg.conf /etc/X11/xorg.conf
```

## Sugerimos las siguientes pantalla para disfrutar de OctoDash:

### Waveshare 3.5" (GPIO) o clones

{% embed url="<https://s.click.aliexpress.com/e/_A1gQjM>" %}

Instalando los drivers Waveshare:

```bash
# Descargar los drivers Waveshare:
git clone https://github.com/waveshare/LCD-show.git

# Cambiar los permisos de la carpeta:
chmod -R 755 LCD-show

# Cambiamos al directorio:
cd LCD-show/

# Cambiamos permisos de ficheros:
chmod +x LCD35-show

# Ejecutamos el script de nuestro modelo de pantalla, en nuestro caso 3.5
sudo ./LCD35-show

# Podemos volver a ejecutarlo indicando el angulo de giro si queremos cambiarlo
sudo ./LCD35-show 180

```

Cambios a realizar para su funcionamiento (añadir al final del fichero):

```bash
sudo nano /boot/config.txt
```

Y modificaremos/añadiremos lo siguiente

```bash
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
dtoverlay=waveshare35a
#dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=1,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900
hdmi_force_hotplug=1
#max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 533 60 6 0 0 0
hdmi_drive=2
```

ificaremos/añadiremos lo siguiente

### Waveshare 7" HDMI Touch (HDMI)

{% embed url="<https://www.amazon.es/dp/B07PKLGMSY/ref=cm_sw_r_cp_apa_fabc_jm77FbPWNZKBZ?_encoding=UTF8&psc=1>" %}

Cambios a realizar para su funcionamiento (añadir al final del fichero):

```
sudo nano /boot/config.txt
```

Y modificaremos/añadiremos lo siguiente

```bash
max_usb_current=1

hdmi_force_hotplug=1
config_hdmi_boost=7
hdmi_group=2
hdmi_mode=87
hdmi_drive=1
display_rotate=0 # 0 conectores a la derecha, 1 a 90 grados, 2 connectores a la izquierda, 3 270 grados
hdmi_cvt 1024 600 60 6 0 0 0
```

### LongRunner 5" XPT2046 (HDMI GPIO Táctil)

{% embed url="<https://www.amazon.es/gp/product/B07QC6G6S9/ref=ppx_yo_dt_b_asin_image_o00_s00?ie=UTF8&psc=1>" %}

Cambios a realizar para su funcionamiento (añadir al final del fichero):

```
sudo nano /boot/config.txt
```

Y modificaremos/añadiremos lo siguiente:

```bash
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=0

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt=800 480 60 6 0 0 0

# Enable touchscreen on Elecrow HDMI interface.
dtparam=spi=on
dtparam=i2c_arm=on
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
dtoverlay=w1-gpio-pullup,gpiopin=4,extpullup=1
```

### **FYSECT CTP40 (GPIO)**

Para esta pantalla asegurarse de instslar los drivers siguiendo las instrucciones

{% embed url="<https://github.com/FYSETC/FYSETC-CTP40/tree/main/Pi3>" %}

## Soporte/Ayuda

{% embed url="<https://discord.com/invite/PeFgKUuZ?utm_source=Discord%20Widget&utm_medium=Connect>" %}
Discord OctoDash
{% endembed %}

{% embed url="<https://github.com/UnchartedBull/OctoDash/blob/master/README.md>" %}
OctoDash Github
{% endembed %}

{% embed url="<https://unchartedbull.github.io/OctoDash/index.html>" %}
OctoDash Website
{% endembed %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://marlin.3dwork.io/octoprint/octodash-ui.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
