WikiJS/homeassistant/HA_part_4.md

46 KiB
Raw Blame History

title description published date tags editor dateCreated
Part 4 1 2024-02-09T22:09:29.522Z markdown 2024-02-09T22:07:59.381Z

 

 

 

add csv data to influxdb / grafana

https://community.home-assistant.io/t/importing-csv-file-into-influxdb/323933

 

manual entry:

Nutrition,measurement=Water,unit=grams value=2000 1645750800000000000

Consumption,measurement=Gas,unit=kWh value=2000 1645750800000000000

Consumption,measurement=Electricity,unit=kWh value=2000 1645750800000000000

Consumption,measurement=Electricity,unit=kWh value=3000 1687377128078000000

 

https://www.timestamp-converter.com/

Timestamp 1687377128

Timestamp in milliseconds 1687377128078 + 000000

ISO 8601 2023-06-21T19:52:08.078Z

Date Time (UTC) 21. Juni 2023, 19:52:08

Date Time (your time zone) 21. Juni 2023, 21:52:08

 

 

 

 

https://stackoverflow.com/questions/58599352/how-to-convert-formatted-date-to-unix-epoch-in-libreoffice-calc

 

Operations performed on date data should be automatic provided that the cells are formatted as as a user defined DD.MM.YYYY HH:MM:SS in the 'Format' > 'Cells' > 'Numbers' tab.

 

If you're using the standard settings, LibreOffice Calc uses 12/30/1899 as it's default date. So the first step is getting the number of days between 12/30/1899 and 1/1/1970:

 

=(DATE(1970,1,1) - DATE(1899,12,30)) = 25569

Number of seconds in a day:

 

=(60 * 60 * 24) = 86400

If, for example, in cell A2 you have the date 03.12.2013 14:01:49. I subtract the difference between Calc's default date and the Unix Epoch we just calculated, and multiply it by the number of seconds in a day:

 

=(A2 - 25569) * 86400

The result is a value of 1363096909 which is the Epoch time in seconds. If you need it in milliseconds, multiply the equation by 1000.

 

 

 

 

 

 

NOUS A1T with homeassistant

https://tasmota.github.io/docs/MQTT/#command-flow

 

 

https://tasmota.github.io/docs/Home-Assistant/

 

 

https://www.synology-forum.de/threads/brauche-mal-hilfe-bei-home-assistant-und-tasmota-einbindung.116762/

integrate via MQTT → Zum Schluss über die Tasmota Console noch folgenden Befehl senden: SetOption19 1

integrate via Tasmota Integration → SetOption19 0

 

 

http://192.168.4.1/

FRITZ!Box 7530 GD

78302839617779115068

 

http://192.168.178.50/

tasmota-832BEA-3050 with IP address 192.168.178.50

tasmota-836841-2113 with IP address 192.168.178.49

tasmota-8386C8-1736 with IP address 192.168.178.47

tasmota-C68576-1398 with IP address 192.168.178.48

tasmota-833CA2-7330 with IP address 192.168.178.61

tasmota-836841-7745 with IP address 192.168.178.60

tasmota-83310D-4365 with IP address 192.168.178.62

tasmota-837743-5955 with IP address 192.168.178.63

 

voltageset 220

 

192.168.178.52

User: note4

Password: note4

 

stat/tasmota_832BEA/RESULT

tele/tasmota_832BEA/STATE

tele/tasmota_832BEA/SENSOR

 

 

https://tasmota.github.io/docs/Peripherals/#update-interval

TelePeriod 10

 

 

 

how to keep smart plug powered off after unplugging and re-plugging?

https://tasmota.github.io/docs/Commands/#commands-list

0 / OFF = keep power(s) OFF after power up → PowerOnState 0

1 / ON = turn power(s) ON after power up

 

disable use of button

SetOption73 Detach buttons from relays and send multi-press and hold MQTT messages instead

0 = disable (default)

1 = enable → SetOption73 1

 

 

 

 

 

 

 

 

 

 

configure network storage (fritz.nas) in home assistant:

 

https://www.home-assistant.io/common-tasks/os/#network-storage

 

\\192.168.178.1\FRITZ.NAS\USB-SanDisk3-2Gen1-01

http://fritz.box/nas?sid=41098e807aea021b

 

 

 

 

 

 

https://smartebude.de/einrichtung-einer-nas-als-speicherort-fuer-home-assistant-backups-z-b-fritzbox-als-nas/

user: homeassistant

password: bhasfonworf34534thb

fritz.nas/USB-SanDisk3-2Gen1-01/Data

 

 

 

 

 

 

 

Zeitpläne nutzen, um mehrere Temperaturen in Home Assistant zu steuern

https://smartebude.de/zeitplaene-nutzen-um-mehrere-temperaturen-in-home-assistant-zu-steuern/

 

 

 

 

 

 

 

 

use Raspberry Pi as WiFi repeater

https://pimylifeup.com/raspberry-pi-wifi-extender/

https://blog.balena.io/turn-a-raspberry-pi-into-a-wi-fi-access-point-or-repeater/

 

 

 

 

 

 

Timercard (Ein-Aus-Zeit) in HomeAssistant

https://smarthomeyourself.de/wiki/homeassistant/timercard-ein-aus-zeit-in-homeassistant/

 

 

Ähnlich wie beim Lichtwecker zum Aufstehen erstellen wir eine Timercard mit On-Off-Time (ideal für die Gartenbewässerung oder ähnliches)

Als erstes benötigen wir wieder einige Helfer:

#-

Im Gegensatz zum Lichtwecker benötigen wir hier nun 2 Sensoren einen für die Startzeit und einen wo Beendet werden soll

#######################################################

Und zum Schluss wieder ein Paar Automatisierung, damit alles funktioniert.

alias

Zum Schluss alles ins Dashboard….

type

# https://smarthomeyourself.de/wiki/homeassistant/naechsten-ausfuehrungszeitpunkt-von-aktiven-zeitplaenen-der-scheduler-card-mit-einem-template-sensor-ermitteln/

- platform: template

sensors:

next_scheduler:

friendly_name: "Nächster Scheduler"

state: >

{%- set x = states.switch | selectattr('entity_id', 'in', state_attr('group.schedulers', 'entity_id'))| selectattr('state','eq','on')|list -%}

{% if x | count > 0 %}

{{ x[0].name }}

{% else %}

Kein Eintrag in der Liste

{%- endif -%}

attributes:

next_run: >

{%- set x = states.switch | selectattr('entity_id', 'in', state_attr('group.schedulers', 'entity_id'))| selectattr('state','eq','on')|list -%}

{% if x | count > 0 %}

{{ as_timestamp( x[0].attributes.next_trigger ) | timestamp_custom("%d.%m.%Y, %H:%M Uhr") }}

{% else %}

Kein Eintrag in der Liste

{%- endif -%}

 

 

 

 

 

ESP32-CAM PIR Motion Detector with Photo Capture

https://edistechlab.com/esp32-cam-2-projekte-mit-micro-sd-karte/?v=3a52f3c22ed6

 

 

 

https://randomnerdtutorials.com/esp32-cam-pir-motion-detector-photo-capture/

 

PIR is connected via a transistor!!

 

For this project, youll need the following parts:

 

ESP32-CAM with OV2640 read Best ESP32-CAM Dev Boards

MicroSD card

PIR motion sensor

2N3904 transistor

FTDI programmer

Female-to-female jumper wires

5V power supply for ESP32-CAM or power bank (optional)

 

 

 

/*********

  Rui Santos

  Complete project details at https://RandomNerdTutorials.com/esp32-cam-pir-motion-detector-photo-capture/

  IMPORTANT!!!

   - Select Board "AI Thinker ESP32-CAM"

   - GPIO 0 must be connected to GND to upload a sketch

   - After connecting GPIO 0 to GND, press the ESP32-CAM on-board RESET button to put your board in flashing mode

  Permission is hereby granted, free of charge, to any person obtaining a copy

  of this software and associated documentation files.

  The above copyright notice and this permission notice shall be included in all

  copies or substantial portions of the Software.

*********/

#include "esp_camera.h"

#include "Arduino.h"

#include "FS.h"                // SD Card ESP32

#include "SD_MMC.h"            // SD Card ESP32

#include "soc/soc.h"           // Disable brownour problems

#include "soc/rtc_cntl_reg.h"  // Disable brownour problems

#include "driver/rtc_io.h"

#include <EEPROM.h>            // read and write from flash memory

// define the number of bytes you want to access

#define EEPROM_SIZE 1

RTC_DATA_ATTR int bootCount = 0;

// Pin definition for CAMERA_MODEL_AI_THINKER

#define PWDN_GPIO_NUM     32

#define RESET_GPIO_NUM    -1

#define XCLK_GPIO_NUM      0

#define SIOD_GPIO_NUM     26

#define SIOC_GPIO_NUM     27

#define Y9_GPIO_NUM       35

#define Y8_GPIO_NUM       34

#define Y7_GPIO_NUM       39

#define Y6_GPIO_NUM       36

#define Y5_GPIO_NUM       21

#define Y4_GPIO_NUM       19

#define Y3_GPIO_NUM       18

#define Y2_GPIO_NUM        5

#define VSYNC_GPIO_NUM    25

#define HREF_GPIO_NUM     23

#define PCLK_GPIO_NUM     22

int pictureNumber = 0;

void setup() {

  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector

  Serial.begin(115200);

  Serial.setDebugOutput(true);

  camera_config_t config;

  config.ledc_channel = LEDC_CHANNEL_0;

  config.ledc_timer = LEDC_TIMER_0;

  config.pin_d0 = Y2_GPIO_NUM;

  config.pin_d1 = Y3_GPIO_NUM;

  config.pin_d2 = Y4_GPIO_NUM;

  config.pin_d3 = Y5_GPIO_NUM;

  config.pin_d4 = Y6_GPIO_NUM;

  config.pin_d5 = Y7_GPIO_NUM;

  config.pin_d6 = Y8_GPIO_NUM;

  config.pin_d7 = Y9_GPIO_NUM;

  config.pin_xclk = XCLK_GPIO_NUM;

  config.pin_pclk = PCLK_GPIO_NUM;

  config.pin_vsync = VSYNC_GPIO_NUM;

  config.pin_href = HREF_GPIO_NUM;

  config.pin_sscb_sda = SIOD_GPIO_NUM;

  config.pin_sscb_scl = SIOC_GPIO_NUM;

  config.pin_pwdn = PWDN_GPIO_NUM;

  config.pin_reset = RESET_GPIO_NUM;

  config.xclk_freq_hz = 20000000;

  config.pixel_format = PIXFORMAT_JPEG;

  pinMode(4, INPUT);

  digitalWrite(4, LOW);

  rtc_gpio_hold_dis(GPIO_NUM_4);

  if(psramFound()){

    config.frame_size = FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA

    config.jpeg_quality = 10;

    config.fb_count = 2;

  } else {

    config.frame_size = FRAMESIZE_SVGA;

    config.jpeg_quality = 12;

    config.fb_count = 1;

  }

  // Init Camera

  esp_err_t err = esp_camera_init(&config);

  if (err != ESP_OK) {

    Serial.printf("Camera init failed with error 0x%x", err);

    return;

  }

  Serial.println("Starting SD Card");

  delay(500);

  if(!SD_MMC.begin()){

    Serial.println("SD Card Mount Failed");

    //return;

  }

  uint8_t cardType = SD_MMC.cardType();

  if(cardType == CARD_NONE){

    Serial.println("No SD Card attached");

    return;

  }

  camera_fb_t * fb = NULL;

  // Take Picture with Camera

  fb = esp_camera_fb_get();  

  if(!fb) {

    Serial.println("Camera capture failed");

    return;

  }

  // initialize EEPROM with predefined size

  EEPROM.begin(EEPROM_SIZE);

  pictureNumber = EEPROM.read(0) + 1;

  // Path where new picture will be saved in SD Card

  String path = "/picture" + String(pictureNumber) +".jpg";

  fs::FS &fs = SD_MMC;

  Serial.printf("Picture file name: %s\n", path.c_str());

  File file = fs.open(path.c_str(), FILE_WRITE);

  if(!file){

    Serial.println("Failed to open file in writing mode");

  }

  else {

    file.write(fb->buf, fb->len); // payload (image), payload length

    Serial.printf("Saved file to path: %s\n", path.c_str());

    EEPROM.write(0, pictureNumber);

    EEPROM.commit();

  }

  file.close();

  esp_camera_fb_return(fb);

  delay(1000);

  // Turns off the ESP32-CAM white on-board LED (flash) connected to GPIO 4

  pinMode(4, OUTPUT);

  digitalWrite(4, LOW);

  rtc_gpio_hold_en(GPIO_NUM_4);

  esp_sleep_enable_ext0_wakeup(GPIO_NUM_13, 0);

  Serial.println("Going to sleep now");

  delay(1000);

  esp_deep_sleep_start();

  Serial.println("This will never be printed");

void loop() {

}

 

 

 

 

 

 

 

ESP32-CAM Video Streaming Web Server (works with Home Assistant)

https://randomnerdtutorials.com/esp32-cam-video-streaming-web-server-camera-home-assistant/

 

 

/*********

  Rui Santos

  Complete project details at https://RandomNerdTutorials.com/esp32-cam-video-streaming-web-server-camera-home-assistant/

  IMPORTANT!!! 

   - Select Board "AI Thinker ESP32-CAM"

   - GPIO 0 must be connected to GND to upload a sketch

   - After connecting GPIO 0 to GND, press the ESP32-CAM on-board RESET button to put your board in flashing mode

  Permission is hereby granted, free of charge, to any person obtaining a copy

  of this software and associated documentation files.

  The above copyright notice and this permission notice shall be included in all

  copies or substantial portions of the Software.

*********/

#include "esp_camera.h"

#include <WiFi.h>

#include "esp_timer.h"

#include "img_converters.h"

#include "Arduino.h"

#include "fb_gfx.h"

#include "soc/soc.h" //disable brownout problems

#include "soc/rtc_cntl_reg.h"  //disable brownout problems

#include "esp_http_server.h"

//Replace with your network credentials

const char* ssid = "REPLACE_WITH_YOUR_SSID";

const char* password = "REPLACE_WITH_YOUR_PASSWORD";

#define PART_BOUNDARY "123456789000000000000987654321"

// This project was tested with the AI Thinker Model, M5STACK PSRAM Model and M5STACK WITHOUT PSRAM

#define CAMERA_MODEL_AI_THINKER

//#define CAMERA_MODEL_M5STACK_PSRAM

//#define CAMERA_MODEL_M5STACK_WITHOUT_PSRAM

// Not tested with this model

//#define CAMERA_MODEL_WROVER_KIT

#if defined(CAMERA_MODEL_WROVER_KIT)

  #define PWDN_GPIO_NUM    -1

  #define RESET_GPIO_NUM   -1

  #define XCLK_GPIO_NUM    21

  #define SIOD_GPIO_NUM    26

  #define SIOC_GPIO_NUM    27

  #define Y9_GPIO_NUM      35

  #define Y8_GPIO_NUM      34

  #define Y7_GPIO_NUM      39

  #define Y6_GPIO_NUM      36

  #define Y5_GPIO_NUM      19

  #define Y4_GPIO_NUM      18

  #define Y3_GPIO_NUM       5

  #define Y2_GPIO_NUM       4

  #define VSYNC_GPIO_NUM   25

  #define HREF_GPIO_NUM    23

  #define PCLK_GPIO_NUM    22

#elif defined(CAMERA_MODEL_M5STACK_PSRAM)

  #define PWDN_GPIO_NUM     -1

  #define RESET_GPIO_NUM    15

  #define XCLK_GPIO_NUM     27

  #define SIOD_GPIO_NUM     25

  #define SIOC_GPIO_NUM     23

  #define Y9_GPIO_NUM       19

  #define Y8_GPIO_NUM       36

  #define Y7_GPIO_NUM       18

  #define Y6_GPIO_NUM       39

  #define Y5_GPIO_NUM        5

  #define Y4_GPIO_NUM       34

  #define Y3_GPIO_NUM       35

  #define Y2_GPIO_NUM       32

  #define VSYNC_GPIO_NUM    22

  #define HREF_GPIO_NUM     26

  #define PCLK_GPIO_NUM     21

#elif defined(CAMERA_MODEL_M5STACK_WITHOUT_PSRAM)

  #define PWDN_GPIO_NUM     -1

  #define RESET_GPIO_NUM    15

  #define XCLK_GPIO_NUM     27

  #define SIOD_GPIO_NUM     25

  #define SIOC_GPIO_NUM     23

  #define Y9_GPIO_NUM       19

  #define Y8_GPIO_NUM       36

  #define Y7_GPIO_NUM       18

  #define Y6_GPIO_NUM       39

  #define Y5_GPIO_NUM        5

  #define Y4_GPIO_NUM       34

  #define Y3_GPIO_NUM       35

  #define Y2_GPIO_NUM       17

  #define VSYNC_GPIO_NUM    22

  #define HREF_GPIO_NUM     26

  #define PCLK_GPIO_NUM     21

#elif defined(CAMERA_MODEL_AI_THINKER)

  #define PWDN_GPIO_NUM     32

  #define RESET_GPIO_NUM    -1

  #define XCLK_GPIO_NUM      0

  #define SIOD_GPIO_NUM     26

  #define SIOC_GPIO_NUM     27

  #define Y9_GPIO_NUM       35

  #define Y8_GPIO_NUM       34

  #define Y7_GPIO_NUM       39

  #define Y6_GPIO_NUM       36

  #define Y5_GPIO_NUM       21

  #define Y4_GPIO_NUM       19

  #define Y3_GPIO_NUM       18

  #define Y2_GPIO_NUM        5

  #define VSYNC_GPIO_NUM    25

  #define HREF_GPIO_NUM     23

  #define PCLK_GPIO_NUM     22

#else

  #error "Camera model not selected"

#endif

static const char* _STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY;

static const char* _STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n";

static const char* _STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n";

httpd_handle_t stream_httpd = NULL;

static esp_err_t stream_handler(httpd_req_t *req){

  camera_fb_t * fb = NULL;

  esp_err_t res = ESP_OK;

  size_t _jpg_buf_len = 0;

  uint8_t * _jpg_buf = NULL;

  char * part_buf[64];

  res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE);

  if(res != ESP_OK){

    return res;

  }

  while(true){

    fb = esp_camera_fb_get();

    if (!fb) {

      Serial.println("Camera capture failed");

      res = ESP_FAIL;

    } else {

      if(fb->width > 400){

        if(fb->format != PIXFORMAT_JPEG){

          bool jpeg_converted = frame2jpg(fb, 80, &_jpg_buf, &_jpg_buf_len);

          esp_camera_fb_return(fb);

          fb = NULL;

          if(!jpeg_converted){

            Serial.println("JPEG compression failed");

            res = ESP_FAIL;

          }

        } else {

          _jpg_buf_len = fb->len;

          _jpg_buf = fb->buf;

        }

      }

    }

    if(res == ESP_OK){

      size_t hlen = snprintf((char *)part_buf, 64, _STREAM_PART, _jpg_buf_len);

      res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen);

    }

    if(res == ESP_OK){

      res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len);

    }

    if(res == ESP_OK){

      res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY));

    }

    if(fb){

      esp_camera_fb_return(fb);

      fb = NULL;

      _jpg_buf = NULL;

    } else if(_jpg_buf){

      free(_jpg_buf);

      _jpg_buf = NULL;

    }

    if(res != ESP_OK){

      break;

    }

    //Serial.printf("MJPG: %uB\n",(uint32_t)(_jpg_buf_len));

  }

  return res;

}

void startCameraServer(){

  httpd_config_t config = HTTPD_DEFAULT_CONFIG();

  config.server_port = 80;

  httpd_uri_t index_uri = {

    .uri       = "/",

    .method    = HTTP_GET,

    .handler   = stream_handler,

    .user_ctx  = NULL

  };

  //Serial.printf("Starting web server on port: '%d'\n", config.server_port);

  if (httpd_start(&stream_httpd, &config) == ESP_OK) {

    httpd_register_uri_handler(stream_httpd, &index_uri);

  }

}

void setup() {

  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector

  Serial.begin(115200);

  Serial.setDebugOutput(false);

  camera_config_t config;

  config.ledc_channel = LEDC_CHANNEL_0;

  config.ledc_timer = LEDC_TIMER_0;

  config.pin_d0 = Y2_GPIO_NUM;

  config.pin_d1 = Y3_GPIO_NUM;

  config.pin_d2 = Y4_GPIO_NUM;

  config.pin_d3 = Y5_GPIO_NUM;

  config.pin_d4 = Y6_GPIO_NUM;

  config.pin_d5 = Y7_GPIO_NUM;

  config.pin_d6 = Y8_GPIO_NUM;

  config.pin_d7 = Y9_GPIO_NUM;

  config.pin_xclk = XCLK_GPIO_NUM;

  config.pin_pclk = PCLK_GPIO_NUM;

  config.pin_vsync = VSYNC_GPIO_NUM;

  config.pin_href = HREF_GPIO_NUM;

  config.pin_sscb_sda = SIOD_GPIO_NUM;

  config.pin_sscb_scl = SIOC_GPIO_NUM;

  config.pin_pwdn = PWDN_GPIO_NUM;

  config.pin_reset = RESET_GPIO_NUM;

  config.xclk_freq_hz = 20000000;

  config.pixel_format = PIXFORMAT_JPEG; 

  if(psramFound()){

    config.frame_size = FRAMESIZE_UXGA;

    config.jpeg_quality = 10;

    config.fb_count = 2;

  } else {

    config.frame_size = FRAMESIZE_SVGA;

    config.jpeg_quality = 12;

    config.fb_count = 1;

  }

  // Camera init

  esp_err_t err = esp_camera_init(&config);

  if (err != ESP_OK) {

    Serial.printf("Camera init failed with error 0x%x", err);

    return;

  }

  // Wi-Fi connection

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi connected");

  Serial.print("Camera Stream Ready! Go to: http://");

  Serial.print(WiFi.localIP());

  // Start streaming web server

  startCameraServer();

}

void loop() {

  delay(1);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

ESP32-CAM with Tasmota

https://cgomesu.com/blog/Esp32cam-tasmota-webcam-server/#required-packages-and-user-permissions

 

https://tasmota.github.io/docs/ESP32/#flashing

https://ota.tasmota.com/tasmota32/release/

use webinstaller to flash webcam firmware

 

connect to AP and open 192.168.4.1

 

 

 

https://community.home-assistant.io/t/esp32-cam-with-tasmota-and-rtsp/334281/6

 

how can i activte the rtsp stream?

Enter on console:

wcrtsp 1

wcrtsp 0

 

wcstream 0 stops the HTTP stream

 

 

==> rtsp://IP_der_Kamera:8554/mjpeg/1

rtsp://192.168.178.76:8554/mjpeg/1

 

 

https://github.com/arendst/Tasmota/discussions/13788

http://192.168.178.76:81/stream

http://192.168.178.76:81/cam.mjpeg

 

 

 

https://ottelo.jimdofree.com/stromz%C3%A4hler-auslesen-tasmota/#4g

(4g) Tasmota Einstellungen - Sende- und Abrufintervall, Zeitzone und Home Assistant

1. Configure other (Configuration -> Configure Other): 

MQTT = enabled

Device Name = MT175 (oder wählt einen anderen Namen)

2. Sende/Abruf Intervall einstellen (Configuration -> Configure Logging)

Telemetry period
(Wie oft soll der Wert an HA geschickt werden z.B. 60s)

4. Main Menu -> Console:

Wenn ihr die Tasmota Home Assistant Integration nutzen wollt müsst nicht nichts ändern, da SetOption19 bereits auf 0 eingestellt ist

Wenn ihr verhindern wollt, dass Tasmota rebootet wenn euer WLAN Router mal nicht verfügbar ist dann folgendes eintippen: WifiConfig 5
(wait until selected AP is available again without rebooting)

Falls ihr Probleme mit der Uhrzeit/Zeitumstellung habt, folgendes eingeben:

Backlog0 Timezone 99; TimeStd 0,0,10,1,3,60; TimeDst 0,0,3,1,2,120

Skript bezogene Einstellungen findet ihr direkt im Skript ganz oben erklärt (englisch)

 

 

https://loxwiki.atlassian.net/wiki/spaces/LOX/pages/1594589651/Befehle+f+r+die+Konsole+in+Tasmota

 

SetOption19 1 / on aktiviert die automatische Erkennung von Home-Assistant Komponenten (auch: Domoticz MQTT Discovery).
Achtung: Setoption19 1 ändert die Reihenfolge der MQTT-Topics auf %topic%/%prefix%/ (Standard: %prefix%/%topic%/). Dies lässt sich auch nicht durch einen entsprechenden Konsolenbefehl fulltopic %prefix%/%topic%/ erzwingen.

 

 

SetOption19 0

 

 

 

https://tasmota.github.io/docs/Commands/#camera

 

WcStream 1 = start webcam stream at http://<device_ip>:81/stream or http://<device_ip>:81/cam.mjpeg
0 = stop stream

 

WcStream 1

 

WcResolution Set camera resolution.
0 = 96x96 (96x96)
1 = QQVGA2 (128x160)
2 = QCIF (176x144)
3 = HQVGA (240x176)
4 = QVGA (320x240)
5 = CIF (400x296)
6 = VGA (640x480)
7 = SVGA (800x600)
8 = XGA (1024x768)
9 = SXGA (1280x1024)
10 = UXGA (1600x1200)

 

WcResolution 10 → XGA (1024x768)

WcResolution 12 → UXGA (1600x1200)

 

WcClock 200

 

 

 

https://tasmota.github.io/docs/Commands/#rules

 

ON DO [ENDON | BREAK]

 

https://tasmota.github.io/docs/Rules/#rule-trigger

 

Time#Minute every minute
Time#Minute|5 every five minutes
Time#Minute=241 every day once at 04:01 (241 minutes after midnight)

 

Restart at specific time each da of the week:

Timer1 {"Enable":1,"Mode":0,"Time":"04:0","Window":0,"Days":"1111111","Repeat":1,"Action":3}

Rule1 ON clock#Timer=1 DO Restart 1 ENDON

Rule1 1

 

Restart every 5 min:

Rule1 ON Time#Minute|5 DO Restart 5 ENDON

Rule1 1

 

 

 

 

 

 

Petoneer Smart Dot Add-on

https://community.home-assistant.io/t/petoneer-smart-dot-add-on/331391

https://github.com/marcomow/hass-addon-petoneer-smartdot

add repository: https://github.com/marcomow/hass-addons

 

 

 

modification for tasmota

https://templates.blakadder.com/petoneer_TY011.html

 

 

 

 

 

Install Petkit devices

 

Account email:

account password:

 

 

 

 

perfboard design with fritzing

https://electronics.stackexchange.com/questions/1600/stripboard-veroboard-matrix-board-design-software

 

https://forum.fritzing.org/t/how-shall-i-get-a-perfboard-matrix-board-view/4118

Select breadboard view (probably delete the breadboard to reduce clutter) then in the parts window on the right select core and move down to the category breadboard view near the bottom. There select the type of perfboard you want and drag it to the breadboard window. Once it is in the window the inspector window on the bottom right will let you change various things about it such as size and prefboard / stripboard.

 

 

 

 

 

 

Frigate

https://www.youtube.com/watch?v=xx9DyCIHK-8

 

attention to frame size configuration and ffmpeg declaration!

 

 

LINKS:

 

 

Frigate repository: https://github.com/blakeblackshear/fr...

 

Go2RTC repository: https://github.com/AlexxIT/hassio-addons

 

 

Frigate configuration: https://docs.frigate.video/configurat...

 

Go2RTC: https://github.com/AlexxIT/go2rtc

 

 

Go2RTC.yaml: https://pastebin.com/Fagfm1sC

 

Frigate.yml: https://pastebin.com/x974kFUp

 

 

 

 

 

 

 

 

stream Tapo C220 with Frigate

tapo:

ffmpeg:

inputs:

# Für 1080P (1920*1080) stream: rtsp://username:password@IP Address:554/stream1

# Für 360P (640*360) stream: rtsp://username:password@IP Address:554/stream2

- path: rtsp://tapocam:watchmyhome90@192.168.178.21:554/stream2?video&audio=all

roles:

- detect

detect:

width: 640

height: 360

 

 

 

 

 

 

 

 

 

operating touch button with Arduino

https://electronics.stackexchange.com/questions/608515/i-want-to-trigger-buttons-on-a-touch-sensitive-control-panel-not-a-touchscreen

 

https://arduino.stackexchange.com/questions/25662/triggering-capacitive-touch-on-a-touch-device

 

https://electronics.stackexchange.com/questions/60385/how-to-use-a-capacitive-touch-screen-without-a-human-hand

 

 

 

 

 

control Duux Whisper Flex Ultimate

Add Duux to Tuya Smart Life app

add Tuya integration to homeassistant, which should automatically identif device

create scene in app and reload integration

 

 

 

 

use ESP32 as BLE hub or repeater

https://smart-live.net/switchbot-esp32-mqtt-die-beste-home-assistant-integration/

Hier fügst du folgende URL hinzu: https://dl.espressif.com/dl/package_esp32_index.json

 

Als nächstes müssen zusätzliche Bibliotheken installiert werden. Hier die Übersicht, welche das sind:

 

NimBLEDevice

EspMQTTClient

ArduinoJson

CRC32 library (by Christopher Baker)

ArduinoQueue

 

Sind Arduino Vorbereitungen erledigt kannst du den Projektcode vom Github herunter laden.

https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32

 

Die Zip Datei wird entpackt und die Datei SwitchBot-BLE2MQTT-ESP32.ino in Arduino geöffnet. Im Bereich „Configurations to change“ müssen nun noch ein paar Einstellungen vorgenommen werden.

Zunächst werden im ersten Abschnitt deine WLAN Daten eingetragen

Danach folgen die Angaben zu deinem MQTT Broker

Als nächsten werden die BLE Adressen der Switchbot Geräte hinterlegt und die Bereiche entsprechend einkommentiert.

Arduino Projektcode anpassen

Arduino Projektcode

Zum Schluss noch definieren ob dein Board eine LED hat oder nicht. Im Falle des von mir verwendeten ESP32 ist das folgende Einstellung

ESP32 LED on Board oder nicht.

ESP32 LED

Nun kann der Sketch kompiliert und auf den ESP32 geflasht werden.

ESP32 Switchbot Sketch kompilieren

ESP32 Sketch kompilieren

Switchbot Geräte per MQTT in Home Assistant

Nach einem Neustart des ESP32 sollten alle erreichbaren Switchbot Geräte per Auto-Discovery in der MQTT Karte in Home Assistant zu sehen sein.

 

 

 

 

 

 

Best thermostat to control tado

 

RU4251787008: wall thermostat

IB1670717952: internet bridge; connected to router

 

 

 

Definition of entity_id: climate.tado_wohnzimmer:

tado integration

 

correct tado temperature:

/config/sensor/templates.yaml

 

calculate average temperature of thermostates:

/config/sensor/temp_indoors_average.yaml

 

adjust temperature of tado with another sensor.sensor1:

/config/automations/automations.yaml

alias: Trigger if the state of either thermostat changes

standard is 0.5 °C delta

 

adjust dynamics of temperature controller

 

 

turn off central heater or single thermostat based on presence:

/config/automations/home-away.yaml

 

 

 

 

 

 

Fritz box: detect new devices in homeassistant

https://community.home-assistant.io/t/device-tracker-fritz-integration-detect-new-devices/392042

- platform: event

id: "state"

event_type: entity_registry_updated

event_data:

action: create

 

trigger.event.data.entity_id

 

- "{{trigger.event.data.entity_id.startswith('device_tracker')}}"

 

 

 

 

 

install Conbee III

 

/dev/serial/by-id/usb-dresden_elektronik_ConBee_III_DE03188934-if00-port0

 

ls /dev/serial/by-id

 

 

 

 

https://community.home-assistant.io/t/conbee-setup/67301/19

List your devices…

ls /dev > ~/devices.txt

NOW plug in ConBee II to USB Port (via USB extension cable)

Reboot.

Find the ConBee II device

ls /dev > ~/devices2.txt

This will show the new device.
In my case it was /dev/ttyACM0

 

 

 

https://phoscon.de/de/conbee3/install#hazha

 

https://community.home-assistant.io/t/conbee-iii-conbee-3-from-dresden-elektronik-based-on-silicon-labs-efr32mg21-20dbm-radio-soc-mcu/649835

 

 

https://dresden-elektronik.github.io/deconz-rest-doc/endpoints/devices/#pair-with-install-code

 

 

 

firmware update

https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Update-deCONZ-manually

GCFFlasher -l

GCFFlasher -d COM29 -t 60 -f deCONZ_ConBeeIII_0x264f0900.bin.GCF

 

in case of powershell:

.\GCFFlasher -l

.\GCFFlasher -d COM29 -t 60 -f deCONZ_ConBeeIII_0x264f0900.bin.GCF

 

 

Connect Philips Hue bulb to Conbee

It seems as if activation of both ZHA and deConz leads to interferences → ZHA alone seems to work

Delete bulb in the app

if lamp is not immediately recognized, searching for devices with ZHA or deConz will find device automatically

 

 

Connect Philips Motion Sensor

delete the sensor from the app

push the reset button for 10 s

once the orange LED blinks, the device is read for pairing

 

 

Connect Bosch Smart radiatorThermostate to Conbee

Thermostate 1:

18FC2600000615BD

FC32-9603-E07B

5182-1390-11E8

209B-5433-A9D3

service: zha.permit
data:
duration: 60
ieee: 00:21:2e:ff:ff:0e:1d:f6
source_ieee: 18:fc:26:00:00:06:15:bd
install_code: FC32-9603-E07B-5182-1390-11E8-209B-5433-A9D3

 

Via HACS install ZHA toolkit

In configuration.yaml add a line zha_toolkit:

On the battery cap or on the radiator behind the batteries note the ZigBee EUI-64 code (Source IEEE) and the Install Code.

Go to Developer tools, services, service: Zigbee Home Automation: Permit

Enter the Source IEEE code and the install code in the UI. INSTALL

YAML looks like this:

service: zha.permit

data:

install_code: 379E-1234-ABCD-E529-1234-E6FE-ABCD-A70F-1234

source_ieee: 18:fc:26:00:00:dc:ba:ab

After INSTALL, go to Settings, Intergrations, Zigbee Home Automation. Your device should be listed now

Done.

 

https://community.home-assistant.io/t/bosch-thermostat-2/492845

Via HACS install ZHA toolkit

In configuration.yaml add a line zha_toolkit:

On the battery cap or on the radiator behind the batteries note the ZigBee EUI-64 code (Source IEEE) and the Install Code.

Go to Developer tools, services, service: Zigbee Home Automation: Permit

Enter the Source IEEE code and the install code in the UI. INSTALL

YAML looks like this:
service: zha.permit
data:
install_code: 379E-1234-ABCD-E529-1234-E6FE-ABCD-A70F-1234
source_ieee: 18:fc:26:00:00:dc:ba:ab

After INSTALL, go to Settings, Intergrations, Zigbee Home Automation. Your device should be listed now

Done.

 

 

 

 

 

 

https://www.bosch-smarthome.com/de/de/service/hilfe/hilfe-zum-produkt/hilfe-zum-heizkoerper-thermostat-2/

Wie setze ich das Bosch Smart Home Heizkörper-Thermostat II auf die Werkseinstellungen zurück (Zurücksetzen)?

Um das Bosch Smart Home Heizkörper-Thermostat II auf die Werkseinstellungen zurückzusetzen gehen Sie wie folgt vor:

 

Entfernen Sie eine Batterie. Während Sie die Bedientaste ("o") gedrückt halten, setzen Sie die Batterie wieder ein. Halten Sie die Taste solange gedrückt bis die Status-LED orange blinkt und auf dem Display "RES" steht. Lassen Sie die Taste nun kurz los und drücken Sie die Taste erneut solange bis die Status-LED grün aufleuchtet. Das Bosch Smart Home Heizkörper-Thermostat II wird nun auf die Werkseinstellungen zurückgesetzt.

Bitte beachten Sie, dass hierbei nur die Daten auf dem Bosch Smart Home Heizkörper-Thermostat II selbst, aber nicht auf dem Bosch Smart Home Controller gelöscht werden. Um die Daten auf dem Bosch Smart Home Controller zu löschen, öffnen Sie die Geräteeinstellungen in der Bosch Smart Home App und löschen dort das entsprechende Gerät.

 

Bitte beachten Sie hierzu auch unser Reset-Video in diesem Artikel. Sollte es Probleme bei der Darstellung des Videos geben, dann finden Sie unsere Installations- und Reset-Videos auch auf unserem Bosch Smart Home Youtube Channel unter folgendem Link.

 

 

 

https://www.home-assistant.io/integrations/zha/#service-zhapermit

To add new devices to the network, call the permit service on the zha domain. Do this by clicking the Service icon in Developer tools and typing zha.permit in the Service dropdown box. Next, follow the device instructions for adding, scanning or factory reset.

 

 

 

 

 

Use REST client

https://dresden-elektronik.github.io/deconz-rest-doc/getting_started/#rest-api-client

 

Talend API Tester - Free Edition

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

install proxmox server

 

 

https://techbits.io/install-home-assistant-on-proxmox/

https://tteck.github.io/Proxmox/

 

 

 

 

Proxmox

https://www.cyberithub.com/how-to-install-proxmox-ve-step-by-step-guide/#Step_4_Install_Proxmox_VE

 

 

Nextcloud

ttek

 

 

Homeassistant

ttek

https://smarthomescene.com/guides/moving-home-assistants-database-to-mariadb-on-proxmox/

https://community.home-assistant.io/t/installing-home-assistant-os-using-proxmox-8/201835

 

 

mqtt

ttek

 

Mariadb

ttek

 

 

influx db

ttek

https://smarthomescene.com/guides/how-to-keep-home-assistant-history-infinitely-with-influxdb-on-proxmox/

 

 

grafana

ttek

 

 

adguard

ttek

 

 

Node-RED

ttek

 

Visual Studio Code

tte

 

 

frigate

https://www.homeautomationguy.io/blog/running-frigate-on-proxmox

 

 

Vaultwarden

ttek

 

Nginx Proxy Manager

ttek

 

Syncthing

ttek

 

 

Wiki.js

ttek

https://docs.requarks.io/install/windows

 

 

WireGuard

ttek

 

 

deCONZ

ttek

 

grocy

ttek

https://leonardosmarthomemakers.com/how-to-track-chores-in-home-assistant-with-grocy-and-nfc-tags/

https://www.reddit.com/r/homeassistant/comments/kptfbg/track_chores_in_home_assistant_with_grocy_nfc/

 

 

 

 

 

 

Win tips

open disk manager as admin

Open Run from the Start menu or Apps screen. Type diskmgmt.msc and press Enter.

 

 

Formatting disk via command prompt → dangerous!!!

https://www.diskpart.com/de/articles/usb-stick-formatieren.html

Die Windows-Eingabeaufforderung hat ähnliche Funktionen wie die Datenträgerverwaltung, erfordert jedoch hervorragende Fähigkeiten, insbesondere in den Befehlszeilen. Es kann einige USB-Probleme lösen, indem es mit verschiedenen Befehlen formatiert wird. Befolgen Sie die Schritte, um zu sehen, wie Sie dieses Tool zum Formatieren von USB-Sticks verwenden.

Schritt 1. Geben Sie „cmd“ in die Suchleiste ein, klicken Sie mit der rechten Maustaste auf die Eingabeaufforderung und wählen Sie „Als Administrator ausführen“.

Schritt 2. Geben Sie nacheinander die folgenden Befehlszeilen ein und drücken Sie jedes Mal „Enter“:

diskpart

list disk

select disk n (n ist die Nummer des USB-Sticks)

clean

create partition primary

format fs=fat32 quick (Sie können fat32 durch ntfs oder exfat ersetzen.)

USB-Stick formatieren mit Eingabeaufforderung

 

 

 

 

 

Mycropython IDEs

Thonny

https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/

 

https://thonny.org/

https://github.com/thonny/thonny/wiki/Linux

sudo apt install python3-tk thonny

 

 

VSCode

https://randomnerdtutorials.com/micropython-esp32-esp8266-vs-code-pymakr/

https://randomnerdtutorials.com/raspberry-pi-pico-vs-code-micropython/

 

 

 

https://www.bordergate.co.uk/configuring-an-esp32-in-ubuntu-22-04/

First plug the device in, and check its recognised by the operating system using the lsusb command. You should see an entry similar to the following:

>>lsusb

Bus 001 Device 006: ID 303a:4001 Espressif Systems Espressif Device

 

Using the dmesg command, you should be able to see the device being allocated a TTY:

>> sudo dmesg

cdc_acm 1-4:1.0: ttyACM0: USB ACM device

 

>>screen /dev/ttyACM0 115200

 

You may need to add the user to the “dialout” and “tty” groups to access the TTY device:

>>sudo usermod -a -G dialout

>>sudo usermod -a -G tty

 

Log out after making the usermod change. Next attempt to connect to the device using screen:

>>screen /dev/ttyACM0 115200

 

If the device is working, you should get a blank screen. If you receive an error about screen terminating, something has went wrong…

 

https://askubuntu.com/questions/1219498/could-not-open-port-dev-ttyacm0-error-after-every-restart

ls -l /dev/ttyACM0

 

sudo usermod -aG dialout $USER

sudo usermod -aG tty $USER

 

sudo adduser $USER dialout

sudo chmod a+rw /dev/ttyACM0

 

==> need to reboot for effects to take place!!

 

 

Flashing Mycropython firmware

See also esptool.txt document

https://randomnerdtutorials.com/flashing-micropython-firmware-esptool-py-esp32-esp8266/

pip install esptool

pip install setuptools

python -m esptool

 

e.g., T-Display-S3:

cd "/home/bora/Documents/Home Assistant/Micropython"

python -u -m esptool --chip esp32s3 --port /dev/ttyACM0 erase_flash

python -u -m esptool --chip esp32s3 --port /dev/ttyACM0 write_flash -z 0x0 firmware_t-display-s3_st7789s3_esp_lcd_v1.20.1.bin

==> several trials with pushing the BOOT button might be required!