Code Monkey home page Code Monkey logo

esphome-dashboard's Introduction

esphome-dashboard

The objective of this external esphome component is to easily create a webpage in the esphome environment. esphome has an extensive sets of sensor interfaces and automations but lacks the configurable onboard webpage. So hopefully this can achieve most use cases, please file a feature request if there is something missing.

Preview

Prerequisite

Using the esphome wrapped dashboard requires the esphome building environment, either natively or using a docker container. Please see the esphome documention on this matter.

Get acquainted with the documentation of the dashboard library ESP-Dash.

Getting started

Add this repository in your ESPHome config file:

external_components:
  - source: github://jbbjarnason/esphome-dashboard

Add the ESP-Dash repository as library in the same file:

  libraries:
    - https://github.com/jbbjarnason/ESP-DASH

Now you should be able to configure the dashboard, an example:

dashboard:
  id: esp_dash
  port: 80
  charts:
    - id: barchart 
      # Valid types are currently only "bar"
      type: "bar"
      name: "Chart in front page"
  cards:
    - id: heater_increase_temp
      type: "button"
      name: "+1 °C"
      lambda: |-
        ESP_LOGD("TAG", "Button value %d", value));
  tabs:
    - id: adjust_tub
      name: "Example 1"
      navigation_name: "Example 1"
      header: "Example 1"
      cards:
        - id: heater_target_temp
          # Valid types are: 
          # generic, temperature, humidity, status, slider, button and progress
          type: "slider"  
          name: "Target Temperature"
          unit_of_measurement: "°C"
          default_value: 37
          min_value: 5
          max_value: 45
          lambda: |-
            ESP_LOGD("TAG", "new value: %d", value);
        - id: heater_sensor_temp
          type: "temperature"
          name: "Sensor Temperature"
          unit_of_measurement: "°C"
    - id: advanced_tab
      name: "Example 2"
      navigation_name: "Example 2"
      header: "Example 2"
      charts:
        - id: power
          type: "bar"
          name: "A second tab chart"

Configuration variables:

dashboard

  • id(Optional, ID): The variable name in the generated code, this id can be used in lambdas.
  • port(Optional, int): The port the web server should open its socket on.
  • auth(Optional): Enables basic authentication with username and password.
    • username(Required, string): The username to use for authentication.
    • password(Required, string): The password to check for authentication.
  • statistics(Optional, bool): Display a statistics tab of controller features. (default ON)
  • cards(Optional, list): List of cards to appear on front page(overview).
    • id(Optional, ID): The variable name in the generated code, this id can be used in lambdas.
    • type(Required, enum): Choose one: "generic", "temperature", "humidity", "status", "slider", "button", "progress"
    • name(Required, string): Display name of the card.
    • unit_of_measurement(Optional, string): Smaller font after the name, convenient for units.
    • min_value(Optional, int): Minimum value of the card, convenient for "slider" card.
    • max_value(Optional, int): Maximum value of the card, convenient for "slider" card.
    • default_value(Optional): Can either be a string, int or float.
    • lambda(Optional, lambda): C++ code to execute when an event from the card, button push or slider changed.
  • charts(Optional, list): List of Charts to appear on front page(overview).
    • id(Optional, ID): The variable name in the generated code, this id can be used in lambdas.
    • type(Required, enum): Choose one: "bar".
    • name(Required, string): Display name of the chart.
  • tabs(Optional, list): List of tabs to generate.
    • id(Optional, ID): The variable name in the generated code, this id can be used in lambdas.
    • name(Required, string): Name of tab, appears in title bar and url.
    • navigation_name(Required, string): Navigation name, appears in navigation bar on the webpage.
    • header(Optional, string): Header on webpage, appears in the top left corner of the navigation bar.
    • cards(Optional, list): List of cards to appear in this tab.
      • id(Optional, ID): The variable name in the generated code, this id can be used in lambdas.
      • type(Required, enum): Choose one: "generic", "temperature", "humidity", "status", "slider", "button", "progress"
      • name(Required, string): Display name of the card.
      • unit_of_measurement(Optional, string): Smaller font after the name, convenient for units.
      • min_value(Optional, int): Minimum value of the card, convenient for "slider" card.
      • max_value(Optional, int): Maximum value of the card, convenient for "slider" card.
      • default_value(Optional): Can either be a string, int or float.
      • lambda(Optional, lambda): C++ code to execute when an event from the card, button push or slider changed.
    • charts(Optional, list): List of charts to appear in this tab.
      • id(Optional, ID): The variable name in the generated code, this id can be used in lambdas.
      • type(Required, enum): Choose one: "bar".
      • name(Required, string): Display name of the chart.

Relevant API reference

A brief excerpt of the API, which is relevant to use inside callbacks is as follows:

Class ESPDash

Send updates to frontend(browser).

void sendUpdates();

Class Card

Update card value, currently does not send the update to the browser, please refer to the section above.

void update(int value);
void update(int value, const char* symbol);
void update(bool value);
void update(bool value, const char* symbol);
void update(float value);
void update(float value, const char* symbol);
void update(const char* value);
void update(const char* value, const char* symbol);
void update(const String &value);
void update(const String &value, const char* symbol);

Class Chart

Update axes, currently does not send the update to the browser, please refer to the section above.

void updateX(int arr_x[], size_t x_size);
void updateX(float arr_x[], size_t x_size);
void updateX(String arr_x[], size_t x_size);
void updateY(int arr_y[], size_t y_size);
void updateY(float arr_y[], size_t y_size);

esphome-dashboard's People

Contributors

jbbjarnason avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

darcyg dkzv mauixer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.