Follow Me sterowanie za pomocą Wemos i diody IR

Cześć. Czy może mi ktoś sprawdić ten kod? błagam. Siedzę już od kilku dni nad Follow me z ChatGPT, ale co poprawi kod to wychodzi podkreślenie. Teraz zwracam się z peośbą do normalnej inteligencji, bo moja i sztyczna wysiadła :). poniżej kod do ESPHome:

esphome:
  name: follow-me
  friendly_name: Follow Me

esp8266:
  board: esp01_1m

logger:

api:
  encryption:
    key: "z---------------------------------------"  

ota:
  password: "c44-----------------------------------"

wifi:
  ssid:!secret wifi_ssid
  password:!secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Follow-Me Fallback Hotspot"
    password: "1O7j-----------

captive_portal:

remote_transmitter:
  pin: GPIO4
  carrier_duty_percent: 50%

button:
  - platform: template
    name: "AC 19°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 07D0"
  - platform: template
    name: "AC 20°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 07E0"
  - platform: template
    name: "AC 21°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 07F0"
  - platform: template
    name: "AC 22°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0800"
  - platform: template
    name: "AC 23°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0810"
  - platform: template
    name: "AC 24°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0820"
  - platform: template
    name: "AC 25°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0830"

Jakbyś jeszcze napisał co to jest, tak by ludzka inteligencja zrozumiała, to może się i kiedyś znajdzie ktoś, kto pomoże…

Na razie udało mi się przekwalifikować do sensownego działu (bo z HA to ni hu hu nie jest powiązane) i poprawić formatowanie kodu YAML, ale tytułu sam nie wymyślę, ani innych sensownych informacji też ze szklanej kuli nie dołożę…

Follow Me to jakaś marka klimy???

A właściwie jaki jest problem, bo linter przeleciał ten kod “bez mydła” = jest poprawny składniowo. Zaraz spróbuję to skomplikować, ale myślę że też problemu nie będzie. I zrobione - są jakieś ostrzeżenia, ale kompiluje się raczej poprawnie.

tak wygląda końcówka logu kompilacji

Linking .pioenvs/follow-me/firmware.elf
RAM:   [=====     ]  45.2% (used 37000 bytes from 81920 bytes)
Flash: [=====     ]  49.9% (used 510845 bytes from 1023984 bytes)
Building .pioenvs/follow-me/firmware.bin
/data/cache/platformio/packages/framework-arduinoespressif8266/tools/elf2bin.py:54: SyntaxWarning: invalid escape sequence '\s'
  words = re.split('\s+', line)
/data/cache/platformio/packages/framework-arduinoespressif8266/tools/elf2bin.py:73: SyntaxWarning: invalid escape sequence '\s'
  words = re.split('\s+', line)
esp8266_copy_factory_bin([".pioenvs/follow-me/firmware.bin"], [".pioenvs/follow-me/firmware.elf"])
esp8266_copy_ota_bin([".pioenvs/follow-me/firmware.bin"], [".pioenvs/follow-me/firmware.elf"])
======================== [SUCCESS] Took 175.16 seconds ========================
INFO Successfully compiled program.

a tak dokładny YAML, który skompilowałem (są oczywiście jakieś właściwe podstawienia lub autogenerowane klucze, gdybyś ich nie pousuwał miałbyś też gotowy plik binarny, tj. w sytuacji gdybyś dodał sekrety, ale można skompilować na puste hasła)

esphome:
  name: follow-me
  friendly_name: Follow Me
  
esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "zK1B7BP04x8cV4N2rDvNTAyzothz81lHS0QO0lZbWqI="

ota:
  - platform: esphome
    password: "5bd579fec7d83b77267122e7361f6670"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Follow-Me Fallback Hotspot"
    password: "IMePSarmjIEk"

captive_portal:


remote_transmitter:
  pin: GPIO4
  carrier_duty_percent: 50%

button:
  - platform: template
    name: "AC 19°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 07D0"
  - platform: template
    name: "AC 20°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 07E0"
  - platform: template
    name: "AC 21°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 07F0"
  - platform: template
    name: "AC 22°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0800"
  - platform: template
    name: "AC 23°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0810"
  - platform: template
    name: "AC 24°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0820"
  - platform: template
    name: "AC 25°C"
    on_press:
      remote_transmitter.transmit_pronto:
        data: "0000 006D 0022 0002 0156 00AA 0015 0016 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 003F 0015 003F 0015 0016 0015 0016 0015 0016 0015 0016 0015 0016 0015 003F 0015 0016 0015 0016 0015 0830"

Jeśli używasz tej nakładki IR, to są inne GPIO
https://www.wemos.cc/en/latest/d1_mini_shield/ir.html

Dzięki za jakieś informacje. Jestem bardzo zielony ale mam otwarte serce i umysł (może nie z młody ale zawsze)… Klima Rotenso jeśli jestem poza domem (czesto w zimie) traci połaczenie z Follow Me z pilotem. W takim momencie klima ma informację, że ma 28 stopni a ma 21. tylko funkcja “Follow me” potrafi to naprawić, bo mogę dać dowolny termometr połączony z HA aby dawał właściwą temperature. Piloty podaje info o tempertyurze co 7 minut. jeśli nie ma po 15 minutach informacji z pilota to przechodzi na odczyt z klimatyzatora o około 5 do 7 stopni i nie ma możliwości nagrzania pomieszczenia do wymaganej temperatury. Może wymagam za dużo, ale chcę by to działało.( na pewno przyda się innym). i teraz sedno. w pilocie baterie się wyczerpują i przy zaniku napięcia Follow Me nie wraca. Przy wemosie i diodzie IR można to ominąć i wtedy Follow me może podwać info o temeraturze ( z wybranego czujnika temp) np co 3 minuty. mam nadzieję, że nie zagmatwałem sprawy jeszcze bardziej. zawsze staram się wypowiedzi bardzo streszczać, by oszczedzać czas czytającym

Szczerze mówiąc, to wydaje mi się że najlepszym posunięciem byłby serwis klimy i wymiana czujnika na sprawny lub kalibracja istniejącego jeśli jest taka możliwość (czujnik bazujący na termistorze można bezczelnie oszukać, swoją drogą może mieć błędne wskazania jeśli są jakieś problemy ze stykiem, natomiast jeśli jest tam bardziej zaawansowana konstrukcja, to raczej tylko wymiana).

Masz jakąś dokumentację tej klimy (najlepiej serwisówkę)?

Zawsze masz 28 stopni? (jeśli to maksimum dla tej klimy to sugeruje wstawioną zworkę zamiast termistora)

Jeśli nie zawsze, tylko masz “rozjazd”, to menu serwisowym powinna być kompensacja (ale nawet jak nie ma, a tanie chinole mają, to myślący instalator poradzi sobie z kompensacją NTC metodą partyzancką - dokładając rezystor i/lub potencjometr).

Niestety żadnej serwisowki nie mam. Kiedyś znalazłem kody serwisowe do Rotenso i była tam pozycja do kalibracji ale niestety nie przyjmował kodów. Te 28 stopni to nie jest stała wielkość. Po prostu jest o około 6 stopni wyższa od rzeczywistej. Dzwoniłem kiedyś do Rotenso i powiedzieli, że jest to norma w tych klimatyzatorach. Chciałem ten czujnik odpiąć od lameli i odsunąć trochę dalej ale mi to odradzono. Cały czas jadę na Follow me ale tak jak pisałem rozłącza się przy zaniku napięcia i przełącza się na wewnętrzny i np. Ustawie 21 stopni klima dostaje od czujnika na lamelach 27 stopni i zaczyna się wyłączać i nie otrzymuje żądanej temperatury. Dlatego próbuje z tym follow me na innym sprzęcie wemos +dioda ir. Jest nawet w home assistant instrukcja jak to zrobić ale bardziej oględna i nie bardzo wiem jak sobie z tym poradzić. Będę walczył dalej. Walczę dopiero 3 lata. Jeszcze mam czas:)

Wrzucę swoje 5 groszy do tematu.
Follow Me jest funkcją pozwalającą na “zamianę” wbudowanego czujnika w jednostkę wewnętrzną, na czujnik wbudowany w pilota. Ma to swoje ograniczenia i nie jest pozbawione wad. Podstawowa wada to dezaktywacja funkcji po każdym zaniku zasilania, lub utracie komunikacji pilot - odbiornik.
Powyższy YAML nie uwzględnia aktywacji funkcji Follow Me , więc po zaniku zasilania będzie bezużyteczny.
Bez poprawnych wskazań z czujnika wbudowanego w jednostkę wewnętrzną nie wróżę sukcesu.
Dodam, że zworki czy przerwanie obwodu czujnika wygeneruje kod błędu i zatrzymanie pracy urządzenia, więc nie tędy droga. Gdyby nawet taka zworka zamiast czujnika nie wygenerowała błędu, to zerowa rezystancja będzie odpowiadać temperaturze maksymalnej, więc to tylko pogorszy sprawę.
Moim skromnym zdaniem jedynie delikatne oszukanie czujnika temperatury powietrza załatwi sprawę .
Jeżeli ta klima ma służyć tylko do grzania, sprawa jest prosta, dokładamy do czujnika szeregowo potencjometr 4,7k , uruchamiamy urządzenie i sprawdzamy co widzi klima. Potencjometrem ustawiamy wartość zbliżoną do faktycznej temp w pomieszczeniu, następnie sprawdzamy jaką rezystancję ma sam potencjometr i zastępujemy go najbardziej zbliżoną wartością stałego rezystora.
Potrzebny jest do tego miernik i odrobina wiedzy technicznej.
PS
Tak w ciemno obstawiam, że czujnik powinien mieć wartość 10k przy 25 st , więc dołożenie rezystora 2,7k powinno zaniżyć wskazania o około 6 stopni.


Zrzut z serwisówki Rotenso Imoto , dlatego napisałem “w ciemno”, bo autor nie kwapił się napisać jaki ma model.

1 polubienie

Pisałem w nocy padając na twarz, ale właśnie rezystor miałem na myśli - sądziłem, że jest tam wstawiony rezystor zamiast NTC (ale faktycznie trop na bezczelną zworkę był zły - jednak jest spory offset, a nie jak przypuszczałem na podstawie dotychczasowej dyskusji stałe 28C).

Termistory do takich zastosowań mają charakterystykę dostatecznie bliską liniowej w tutaj interesującym zakresie, więc istotnie wystarcza do kompensacji rezystor szeregowy i w zasadzie nie słyszałem by były stosowane jakieś inne niż 5k, 10k, 20k lub 50k dla 25C, ale w handlu są dostępne i wartości pośrednie, więc potencjalnie możliwa jest wymiana na inną wartość NTC o tej samej charakterystyce (współczynnik beta gdzieś w okolicach 3500-4000 - typowe to chyba 3950, no ale to już raczej z informacji w serwisówce), wtedy rezultat będzie lepszy w większym zakresie temperatur.
Charakterystykę można też lekko dokompensować rezystorem równoległym oprócz tego szeregowego (ale to już chyba za dużo roboty).

Zastanawiam się czy autor rzetelnie wszystko opowiedział?
Czujnik wewnętrzny zawsze zawyża temperaturę - raz to ciepłe powietrze unosi się do góry, a dwa przy grzaniu cała jednostka się sama nagrzewa.
Myślę więc, że wysiłki kolegów z kalibrację są bezcelowe.
Ciekawi mnie bardziej skąd wynalazł jak wygląda ramka z pilota? :slight_smile: