Co do “dawkowania” i implementacji do ESP do jednego drugiego nie wyklucza a jak zgłębiłem temat z tym dodatkiem do dawkowania wody, to trochę przerost formy w tym podlewaniu, chyba ze każdy tryskacz pod osobny zawór, wtedy miałby to większy sens. a przy działce porosnietej z jednej strony drzewami, z innej północ, z innej południe… to lepiej na własnym doswiadczeniu dobrac czas nawodnienia.
Pomożecie?
Poniżej część mojego yaml. płytka kc868-A6. przez to ze mam 7 stref, zastosowałem zewnętrzny switch na ukladzie xl9535.
Po uruchomieniu płytki wszystko działa. “zone” 1-6 można włączać i wyłączać. Ale dla “zone” 7 mogę włączyć i mogę ją wyłączyć a następnie już switch fizycznie nie reaguje, inne jak najbardziej wszystko ok. Dopiero restart urządzenia znowu pozwala włączyć i wyłączyć “zone” 7. Nie mam zielonego pojęcia o co chodzi… chatgpt wywala się chyba przez $ i jakieś głupoty pisze, których ja nawet w tym kodzie nie posiadam.
number:
- platform: template
id: $zone_1_valve_id
name: $zone_1_name
min_value: 1
max_value: 60
step: 1
unit_of_measurement: $uom
icon: "mdi:timer-outline"
mode: box # Defines how the number should be displayed in the UI
lambda: "return id($devicename).valve_run_duration(0);"
set_action:
- sprinkler.set_valve_run_duration:
id: $devicename
valve_number: 0
run_duration: !lambda 'return x;'
- platform: template
id: $zone_6_valve_id
name: $zone_6_name
min_value: 1
max_value: 60
step: 1
unit_of_measurement: $uom
icon: "mdi:timer-outline"
mode: box # Defines how the number should be displayed in the UI
lambda: "return id($devicename).valve_run_duration(5);"
set_action:
- sprinkler.set_valve_run_duration:
id: $devicename
valve_number: 5
run_duration: !lambda 'return x;'
...
- platform: template
id: $zone_7_valve_id
name: $zone_7_name
min_value: 1
max_value: 60
step: 1
unit_of_measurement: $uom
icon: "mdi:timer-outline"
mode: box # Defines how the number should be displayed in the UI
lambda: "return id($devicename).valve_run_duration(6);"
set_action:
- sprinkler.set_valve_run_duration:
id: $devicename
valve_number: 6
run_duration: !lambda 'return x;'
- platform: template
id: sprinkler_ctrlr_repeat_cycles
name: "Sprinkler Repeat Cycles"
min_value: 0
max_value: 4
step: 1
mode: box
icon: "mdi:water-sync"
lambda: "return id($devicename).repeat();"
set_action:
- sprinkler.set_repeat:
id: $devicename
repeat: !lambda 'return x;'
###############################################
# Main Sprinkler Controller
###############################################
sprinkler:
- id: $devicename
main_switch:
name: "Start/Stop/Resume"
id: main_switch
auto_advance_switch: "Auto Advance"
#valve_overlap: 1s
repeat_number: "Repeat"
valves:
- valve_switch: $zone_1_name
enable_switch: Enable $zone_1_name
run_duration: 25s
valve_switch_id: ${devicename}_1
...
- valve_switch: $zone_6_name
enable_switch: Enable $zone_6_name
run_duration: 90s
valve_switch_id: ${devicename}_6
- valve_switch: $zone_7_name
enable_switch: Enable $zone_7_name
run_duration: 45s
valve_switch_id: ${devicename}_7
button:
- platform: template
id: sprinkler_pause
name: "Pause"
icon: "mdi:pause"
on_press:
then:
- text_sensor.template.publish:
id: valve_status
state: "Paused"
- sprinkler.pause: $devicename
# I2C bus definition
i2c:
sda: 4
scl: 15
scan: true
id: bus_a
# I2C I/O expander config
pcf8574:
- id: 'pcf8574_output_hub'
address: 0x24
pcf8575: false
- id: 'pcf8574_input_hub'
address: 0x22
xl9535:
- id: 'xl9535_hub'
address: 0x20
####################################################
# Hidden I/O Switches to control irrigation valve relays
####################################################
- platform: gpio
name: Relay Board Pin IN1
restore_mode: RESTORE_DEFAULT_OFF # Prevents GPIO pin from going high during boot
internal: true # Prevents GPIO switch NAME from showing up in Home Assistant
id: ${devicename}_1
on_turn_on:
- text_sensor.template.publish:
id: valve_status
state: "$zone_1_name Active"
on_turn_off:
- text_sensor.template.publish:
id: valve_status
state: "Idle"
pin:
pcf8574: pcf8574_output_hub
# Use pin number 0
number: 0
# One of INPUT or OUTPUT
mode:
output: true
inverted: true
....
- platform: gpio
name: Relay Board Pin IN6
restore_mode: RESTORE_DEFAULT_OFF # Prevents GPIO pin from going high during boot
internal: true # Prevents GPIO switch NAME from showing up in Home Assistant
id: ${devicename}_6
on_turn_on:
- text_sensor.template.publish:
id: valve_status
state: "$zone_6_name Active"
on_turn_off:
- text_sensor.template.publish:
id: valve_status
state: "Idle"
pin:
pcf8574: pcf8574_output_hub
# Use pin number 0
number: 5
# One of INPUT or OUTPUT
mode:
output: true
inverted: true
- platform: gpio
name: Relay Board Pin IN7
restore_mode: RESTORE_DEFAULT_OFF # Prevents GPIO pin from going high during boot
internal: true # Prevents GPIO switch NAME from showing up in Home Assistant
id: ${devicename}_7
on_turn_on:
- text_sensor.template.publish:
id: valve_status
state: "$zone_7_name Active"
on_turn_off:
- text_sensor.template.publish:
id: valve_status
state: "Idle"
pin:
xl9535: xl9535_hub
number: 0
mode:
output: true
inverted: false
Nie chce mi się poprawiać po AI, ale z bloku gdzie masz piny sterowane z xl9535 wywaliłbym to (bo nie jestem przekonany czy ten komponent to obsługuje)
restore_mode: RESTORE_DEFAULT_OFF # Prevents GPIO pin from going high during boot
z tych sterowanych z tego drugiego ekspandera chyba też (chociaż nie wiem czy to konieczne) - w sumie sprzęt masz i możesz to sprawdzić organoleptycznie, a mi się nie chce kopać po dokumentacji.
hint poza konkurencją - zwiększ sobie poziom logowania do verbose lub very verbose i analizuj logi.
niestety usunięcie restore_mode: RESTORE_DEFAULT_OFF
nic nie zmienia.
a to co podpowiada deepseek tj " Dodaj sekcję initialize" wywala “[initialize] is an invalid option for [xl9535].”
To zajrzyj do dokumentacji, ESPHome teoretycznie domyślnie inicjalizuje każdy ekspander (ale inaczej niż Ty chciałeś lub chciało AI). Może jest coś zwalone w tym komponencie przekopałeś wszelkie issue, również zamknięte, na temat tego komponentu?
przy włączeniu układ sam inicjalizuje sobie wszystkie GPIO do stanu hi-Z (jako wejścia, ze słabym pullupem), a ESPHome standardowo w ekspanderach inicjalizuje wyjścia jako stan wyłączony. Dokumentacja tego komponentu jest wybitnie uboga, ale zasadniczo się zakłada, że GPIO powinno obsługiwać wszystkie funkcje standardowe, chyba, że sprzęt na to nie pozwala.
A wykorzystałeś możliwości samej płyty ? Pakowanie dodatkowego expandera żeby dorobić jeden przekaźnik, gdy do dyspozycji jest kilka wolnych GPIO ma dla mnie średni sens.
Jeśli nie wykorzystujesz dodatkowego portu serial
O jakiej płytce piszesz ? Jak to gotowy chiński moduł z tym ekspanderem, to wymaga on zasilania 5V , magistrala I2C w A6 jest na 3,3V , więc zasilanie z niej tego przekaźnika odpada. Pokaż co masz i jak zasilasz , bo może to nie problem kodu, a samego zasilania.
Ma osobne zasilanie I w Twoim przypadku jest wymagane, zrób test a się przekonasz. Podłącz do A6 do gniazda z VIN, zdejmij zworę a na dowolne gniazdo gdzie jest 5V i GND podaj 5V z ładowarki do telefonu lub dowolnego zasilacza 5V
Dlatego że stabilizator LM1117 nie wydala prądowo
Jak masz lutownicę i trochę umiejętności, to 5V możesz ukraść z płyty A6.
Na ten jeden przekaźnik da radę
Możesz, jak 5V będzie z płyty , to łączysz wszystko tak jak wcześniej narysowałem tylko minus nie jest potrzebny , bo jest wspólny na wszystkich gniazdach.
Faktycznie, na schemacie narysowane jest GND. czyli podepnę się z 5v do D9 na płycie kc i powinno ruszyć. Dam znać, ale pewnie za parę h bo nie ma mnie fizycznie przy sprzęcie. Dziękuję za naprowadzenie.