Hallo,
ich habe mich nun entschieden die Rolladensteuerung in ESPHome zu machen.
Dafür nutze ich einen KC868-A16.
Die eigentliche Steuerung soll in einer eigenen Klasse / Komponente laufen.
Zum Entwickeln habe ich mir eine kleine, kurze yaml erstellt.
esphome:
name: roller-shutter-1
friendly_name: Roller_Shutter_1
esp32:
board: esp32dev
framework:
type: esp-idf
api:
encryption:
key: !secret encryption_key
ota:
- platform: esphome
password: !secret ota_password
ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO17_OUT
phy_addr: 0
manual_ip:
static_ip: !secret ip_rl_1
gateway: !secret ip_dateway
subnet: 255.255.255.0
i2c:
sda: GPIO4
scl:
number: GPIO5
ignore_strapping_warning: true
pcf8574:
- id: inputs_1_8
address: 0x22
pcf8575: false
binary_sensor:
- platform: gpio
name: "RL_HAR_I_U"
id: in_har_u
pin:
pcf8574: inputs_1_8
number: 0
mode: INPUT
inverted: true
- platform: gpio
name: "RL_HAR_I_D"
id: in_har_d
pin:
pcf8574: inputs_1_8
number: 1
mode: INPUT
inverted: true
switch:
- platform: gpio
name: "RL_HAR_O_U"
id: out_har_u
pin:
pcf8574: outputs_1_8
number: 0
mode: OUTPUT
inverted: true
- platform: gpio
name: "RL_HAR_O_D"
id: out_har_d
pin:
pcf8574: outputs_1_8
number: 1
mode: OUTPUT
inverted: true
rstimes:
- id: TIME_NORMAL
milisecondsup: 20000
milisecondsdown: 20000
milisecondsgap: 14000
- id: TIME_BIGWINDOW
milisecondsup: 27000
milisecondsdown: 27000
milisecondsgap: 17000
- id: TIME_BIGDOOR
milisecondsup: 30000
milisecondsdown: 27000
milisecondsgap: 11000
rsgroups:
- id: HOUSE_SOUTH
name: Haus-Sued
sundowner:
monthfrom: 5
monthto: 9
gaphour: 8
gapminute: 0
uphour: 15
upminute: 45
rshutters:
- id: rs_har
name: Hausanschlussraum
rsgroup_id: HOUSE_SOUTH
rstime_id: TIME_NORMAL
inputup_id: in_har_u
inputdown_id: in_har_d
outputup_id: out_har_u
outputdown_id: out_har_d
Die oberen Einträge sind aus der KC868-A16 yaml entnommen.
Ab “rstimes” sind meine zusätzlichen Einträge.
Nun die Fragen:
1.) Wenn ich das richtig sollten die Komponenten für "ethernet, i2c, pcf8574, binary_sensor und switch automatisch erzeugt werden? richtig??
2.) Die “rstimes” und die “rsgroups” sollen in c++ struct’s
/** Struktur für die Speicherung von Fahrzeiten */
struct struct_RL_Time {
/** die Id */
std::string id;
/** Anzahl Milisekunden für Hochfahren */
int millisecondUp;
/** Anzahl Milisekunden für Runterfahren */
int millisecondDown;
/** Anzahl Milisekunden für Runterfahren auf Lücke */
int millisecondGap;
};
/** Struktur für die Speicherung von Intervallen zum
* Runter- und Hochfahren bei Sonnenbestrahlung*/
struct struct_RL_SunDowner{
/** Ab welchem Monat */
int monthFrom;
/** Bis welchen Monat */
int monthTo;
/** Runterfahren Stunde */
int gapHour;
/** Runterfahren Minute */
int gapMinute;
/** Hochfahren Stunde */
int upHoure;
/** Hochfahren Minute */
int upMinute;
};
/** Struktur für die Gruppe */
struct struct_RL_Group {
/** die Id */
std::string id;
/** Gruppenname */
std::string name;
/** Einstellungen für Sommer */
struct_RL_SunDowner sundownner;
};
Wie bekomme ich die Daten in die struct?
3.) Wie komme ich bei dem Erzeugen des “Rolladen” z.B. an den Pin mit der ID “in_har_u”?
Beste Grüße Mario