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
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.
https://tasmota.github.io/docs/MQTT/#command-flow
https://tasmota.github.io/docs/Home-Assistant/
integrate via MQTT → Zum Schluss über die Tasmota Console noch folgenden Befehl senden: SetOption19 1
integrate via Tasmota Integration → SetOption19 0
FRITZ!Box 7530 GD
78302839617779115068
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
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
user: homeassistant
password: bhasfonworf34534thb
fritz.nas/USB-SanDisk3-2Gen1-01/Data



https://smartebude.de/zeitplaene-nutzen-um-mehrere-temperaturen-in-home-assistant-zu-steuern/
https://pimylifeup.com/raspberry-pi-wifi-extender/
https://blog.balena.io/turn-a-raspberry-pi-into-a-wi-fi-access-point-or-repeater/
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 -%}
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() {
}
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);
}
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.mjpeg0 = 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
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
Account email:
account password:
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.
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
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
https://arduino.stackexchange.com/questions/25662/triggering-capacitive-touch-on-a-touch-device
Add Duux to Tuya Smart Life app
add Tuya integration to homeassistant, which should automatically identif device
create scene in app and reload integration
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
Nach einem Neustart des ESP32 sollten alle erreichbaren Switchbot Geräte per Auto-Discovery in der MQTT Karte in Home Assistant zu sehen sein.
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
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')}}"
/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://dresden-elektronik.github.io/deconz-rest-doc/endpoints/devices/#pair-with-install-code
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
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
delete the sensor from the app
push the reset button for 10 s
once the orange LED blinks, the device is read for pairing
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.
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.
https://dresden-elektronik.github.io/deconz-rest-doc/getting_started/#rest-api-client
Talend API Tester - Free Edition
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
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/
Open Run from the Start menu or Apps screen. Type diskmgmt.msc and press Enter.
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.)

https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/
https://github.com/thonny/thonny/wiki/Linux
sudo apt install python3-tk thonny
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!!
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!