# 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, you’ll 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 <trigger> DO <command> [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

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

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

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.)

# 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 it’s 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 <user>

>>sudo usermod -a -G tty <user>

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!