Witam chciałem zrobić sterownik pomy różnicowy z tej strony https://community.home-assistant.io/t/pump-control/205511ale nie wiem jak to ugryźć.
Może ma ktoś kod na esp8266 i się podzieli.
A masz jakieś niezerowe doświadczenie z ESPHome i generalnie jakimkolwiek projektowaniem elektroniki (najlepiej na MCU ESP byś mógł samodzielnie rozpoznać wymagane różnice w konfiguracji uwzględniając różnice sprzętowe między ESP32, a ESP8266)?
Bo generalnie będzie tak samo, tylko musisz zmodyfikować definicję platformy sprzętowej (płytki) pod możliwości swojej - konkretnie chodzi głównie o dobór GPIO.
Masz w ogóle działający kod dla ESP32? bo widzę że tam tyko cześć jest realizowana w ESPHome, a reszta w HA.
Jakieś tam pojęcie mam.
Ale z tym kodem sobie nie mogę poradzić.
Z czym konkretnie, pokaż co masz.
To tak pierwszą cześć kodu mam zamiar wgrać ale mam błąd
esphome:
name: sensor-diff
friendly_name: sensor_diff
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "I9w6dtiiPSqgseXhxGvSuZDpkLwJjxsQBveZCyKZJgA="
ota:
password: "fe7a89598b5e445d0af12d4f87fe0138"
wifi:
ssid: Grzegorz
password: grzegorz
manual_ip:
static_ip: 192.168.1.102
gateway: 192.168.5.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Sensor-Diff Fallback Hotspot"
password: "JRtQ7Hs7qvw6"
captive_portal:
web_server:
port: 80
dallas:
- pin: GPIO2
# Individual Sensors
sensor:
- platform: dallas
address: 0x423cb5f649a5f028
name: "panel"
id: "panel"
- platform: dallas
address: 0x423cb5f649a5f028
name: "tank"
id: "tank"
- platform: value_template
id: Temperature Difference
unit_of_measurement: °C
update_interval: 60s
lambda: 'return id(panel).state - id(tank).state;'
Błąd wskazuje na złą definicję platformy sensora template. Powinno być:
- platform: template
A Ty masz:
- platform: value_template
Do tego jest jeszcze błąd w :
id: Temperature Difference
W identyfikatorze id nie można stosować spacji.
No ja widzę jeszcze jeden błąd - dwukrotnie jest użyty ten sam adres dla 2 oddzielnych Dallasów, ale te błędy wskazane wyżej uniemożliwiają kompilację.
a ja widzę że urządzenie i brama są w różnych sieciach
Niekoniecznie 255.255.0.0
celnie, ale maskę ma 255.255.255.0
Zwracam honor - nie przewinąłem
No jak już się mamy czepiać wzajemnie to na podstawie RFC1918 sieci z puli (przestrzeni adresowej) 192.168/16 mają być klasy C, czyli z maską przynajmniej /24 (255.255.255.0), bo ma się tam zmieścić 256 osobnych sieci.
Niektórzy błędnie czytają zalecenia IANA
https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
i stosują szersze maski (wychodząc z założenia, że skoro to działa, to nie ma co się szarpać), ale w tym względzie nie zmieniło się nic od pierwotnego RFC
(więc jeśli komuś potrzebna sieć z większą liczbą hostów to ma do dyspozycji 172.16/12 z 16 sieciami w klasie B lub 10/8 - jedna sieć A; terminologię stosuję nieco niewspółczesną, ale taka była w tamtych czasach)
Ok po poprawie kodu wgrane i co dalej z resztą kodu.
- platform: template
sensors:
temp_diff:
friendly_name: Temperature_Difference
value_template: >
{% if ((states.sensor.panel_temperature.state | float ) - (states.sensor.tank_temperature.state | float))
< (states.input_number.pump_on_offset.state | float ) %} pump_off
{% elif ((states.sensor.panel_temperature.state | float ) - (states.sensor.tank_temperature.state | float))
> (states.input_number.pump_on_offset.state | float ) %} pump_on
{% else %} pending {% endif %}
input_number:
pump_off_offset:
name: Pump OFF offset
initial: 0.1
min: 0
max: 2
step: 0.1
pump_on_offset:
name: Pump ON offset
initial: 3
min: 0
max: 2
step: 0.5
automation:
- id: ID12
alias: 'Pump hot water if hotter than tank - stop if not'
initial_state: 'on'
trigger:
platform: state
entity_id: sensor.temp_diff
action:
entity_id: switch.solar_pump
service_template: >
{% if is_state ('sensor.temp_diff' , 'pump_on') %} switch.turn_on
{% else %} switch.turn_off {% endif %}
Wklejasz do configuration.yaml
przecież to jest opisane w wątku, na który się powołujesz
a automatyzacje ewentualnie do automatyzacji (format się zmieni o jedno piętro wcięć)
oczywiście identyfikatory encji się muszą zgadzać.
Edit: tam jest stary format integracji template w YAMLu, ale widzę, że pomoc już się pojawiła.
Użyj nowego formatu, zwróć uwagę na wcięcia.
template:
- sensor:
- name: "Average temperature"
unit_of_measurement: "°C"
state: >
{% set bedroom = states('sensor.bedroom_temperature') | float %}
{% set kitchen = states('sensor.kitchen_temperature') | float %}
{{ ((bedroom + kitchen) / 2) | round(1, default=0) }}