Raspi: bekapcsolni a klímát [1.0 megoldva]

I have a dream :D

Valahogy be szeretném tudni kapcsolni a klímát(Samsung valami) de az csak IR-t tud, wifit még nem. van hozzá Raspi, dockerben home assistant.

A xiaomi telefonomon keresztül lehet IR-en kapcsolódni hozzá, de ténylegesen kezelni nem tudja, csak on/off. nekem ez is elég lenne.

Két lehetőséget találtam:

a) hozzáférek a bekötéséhez a klímának, ott egy olyan fogalmam sincs hogy hívják modern csoki van, esetleg azt lehetne valami sonoffal meglökni, hogy kapcsolja be?

ha elmegy az áram, és visszajön, akkor szokott sípolni a klíma, bár ugye off állásban van, nem tudom ez elég-e, vagy mindenképp kell kapcsolni a távirányítóval.

b) valahogy IR-rel hogy lehet ezt meghekkelni? valaki csinált már ilyet? valami tipp, hogy merre induljak, mi kell hozzá? találtam pár yt-videót, de azok elég speciálisak voltak.

Ha jól tudom valahogy el lehet "kapni" az IR jelet, és valahogy "felvenni" és "visszajátszani" (mint a szalagos magnón). de ehhez nem sok tudásom van, egyelőre.

Valami kész tool nincs erre? 100€ szokott lenni hirdetésben ilyesmi eszköz a kínaiaktól, de abban sem vagyok biztos, hogy on/offnál többet ki tudnék abból is csalogatni.

 Köszi előre is!

----------------

Edit 1: WOW, találtam itthon egy szabad ESP8266-ot, és https://www.gregensom.com/Build/IRController/ ennek a kapcsolási rajza alapján, ezzel a kiegészítéssel: https://www.instructables.com/Universal-Remote-Using-ESP8266Wifi-Contro… sikerült is kb 5 perc alatt összerakni. Én is BC547-t használtam, mert az volt itthon, és nagyon fontos, hogy a LED anód-katód irányára ügyeljünk :D

Az IRremoteESP8266: IRsendDemo-t futtatva bekapcsolt a Sony tévé, aztán pedig csippant egy nagyot és bekapcsolt a Samsung klíma! :D (pont ezt a kettőt próbálja a tesztkód).

Most még akkor webszervert kell hegeszteni az ESP-be, wifit hozzárakni, és kész is a kapcsolgató. Valamint kell venni IR receivert, mert a klíma valami durva full-on módban kapcsolt be, és kellene tudni szabályozni / kikapcsolni, de ott a gombnyomásokat még le kell hallgatni először :)

Edit 2: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/Co… valaki meg is írta az egész Samsung vezérlést, és működik is! :O
todo: kitalálni, hogy lehet összerakni a HA-tal

Edit 3: siker! Alapvetően a IRremoteESP8266 Web-AC-control példából indultam ki, és a nekem fontos dolgokat (swing stop, quiet mód) implementáltam még bele, UI nélkül, csak a webapi-ba. Ehhez a HA kontrollok és a UI heggesztése nehezebb téma volt:

Home assistant + Custom IrRemoteESP8266 + Samsung AC

 

 

 

 

 

 

 

 

Itt a "gombok" command_line switchek lettek, az on/off-hoz az apit hívják, a visszatérési értékből pedig beáll a gomb felirata.

A "temp" input_number, slider (configuration-be felvéve, mert a UI-on nem lehet initial value-t megadni 🙈)

TODO:

1) Még lehetne automationt felvenni arra, hogyha a tempet húzogatja az ember, akkor az küldjön le api hívást, az a következő fejlesztési ütem :D

2) A FAN-t meg kell nézni, hogy mit csinál, mert ha a quiet off, akkor az maxra húzza a fant, de ott a min érték (0...4) is hangosabb mint a quiet mód...

 

Ha valaki szeretne forráskódot, szívesen megmutatom, küldjön privátot, és akkor kirakom valahova külön (gistbe mondjuk).

Köszi a tippeket mindenkinek!

 

Hozzászólások

SensiBo-nak hívják a cuccot szerintem amivel tudod kapcsolgatni a klímát - én nem használom, mert nekem a távirányítás szempontjából tökéletes elég volt a BlitzWolf universal remote controller megoldása.
Gree és Sinclair klímával megy. Kb 5000Ft-ba kerül, szerintem rendelj egyet és próbáld ki.
USB-n kér áramot, ESP van benne, felhőből tudod ki-be kapcsolni, állítani a hőfokot, a klíma üzemmódot és a venti sebességét.
Egyéb dolgot (pl terelőlap mozgatása) nem tud vezérelni.

Egy ismerosomnek rendeltem korabban ilyet alirol, az Avatto gyartja, pici fekete dobozka mini vagy mikrousb-s tapcsatival (asszem utobbi, nem emlekszem mar). Van benne egy ESP8266, es mindenfele Androidos appal (pl. a Smart Life a default) kapcsolgathato. A konkret klimat nem tudom, hogy tudja-e.

Ami hackelosebb, de RPi-hez egyszeru kapcsolni tetszoleges Arduinot, arra meg vannak mindenfele IR library-k. Ha megtalalod a konkret klima protokolljat, eleg hozza egy IR LED (meg persze elotetellenallas), ha nem, akkor egy megfelelo vevo is kelleni fog, amivel felveheto. Ez utobbihoz is leteznek libek, el is kezdtem egy ilyet kesziteni, aztan meglattam a fentit, es inkabb megvettem.

A strange game. The only winning move is not to play. How about a nice game of chess?

En ESP8266-ra csinaltam meg IRremoteESP8266 libraryvel meg MQTT-vel, illetve hardveresen kellett meg bele egy FET mert az ESP8266 GPIO-i nem tudjak eleg erosen meghajtani az infra LED-et.

Ha szerencsed van (ami eleg valoszinu) a library tudja a klimad protokolljat, a neten meg valoszinuleg meg lehet talalni a kodokat amit kikuld. A sajatom kodjait nem talaltam meg (LG) igy fogtam egy IR vevot (ez arra kell hogy a modulalt IR-bol demodulalja a tenyleges digitalis jelet) rakotottem egy logikai analizatorra es megneztem milyen kodokat kuld a sajat taviranyitoja. A protokollt magat ismerte az IRremoteESP8266.

Igy kb. par szaz forintbol kijott az egesz. Jelenleg annyit tud, hogy MQTT-n elkuldom a bitsorozatot, amit kikuld a legkondinak. Home Assistantba szeretnem integralni, csak meg nem volt ra idom.

/sza2

Digital? Every idiot can count to one - Bob Widlar

Egy haverom évekkel ezelőtt redőnyhöz szétszedte a távirányítót, és rövidre zárta a gomb alatt lévő kapcsolót, ha kapcsolni akart valamit. 

Én anno csináltam, igaz ESP8266 alapokon, egy IR vevővel felvettem a távnyomó jeleit, hogy melyik gombra mit küldött, aztán egy IR LED használatával visszajátszottam programból.

Igaz, én arra használtam, hogy a klíma plusz-minusz 1-2 fokos hiszterézisét 0,1 °C környékére hoztam azzal, hogy a távirányító follow me jeleit "felnagyítottam"... mondjuk én fűtéshez használtam, de ebből a szempontból mindegy.

Nem, azt, hogy a klíma úgy működött, hogy például 22 fok volt beállítva és a távirányító küldött 22 fokot, akkor nem fűtött. Ha 21 fokot küldött, akkor fűtött mondjuk 1 kW teljesítménnyel, ha 20 fokot küldött, akkor fűtött 2 kW teljesítménnyel. Ennek az volt a problémája, hogy soha nem volt 22 fok. Ha kicsit volt hideg, akkor 21 fok volt, ha nagyobb hideg volt kinn, akkor 20 fok volt.

Ezért aztán amikor 21,9 fok volt, akkor küldtem 21 fokot, amikor meg 21,8 fok volt, akkor küldtem 20 fokot. Így sokkal közelebb volt a helyiségben a hőmérséklet a 22 fokhoz. Nyilván okosabb klíma talán észreveszi, hogy mennyire kell fűteni a 22 fokhoz, de ahhoz se árt, ha nem csak egész fokot tud a protokoll.

Ha nem feltétlenül kész megoldást keresel, akkor érdemes ránézni az ESPHome-ra. Én TV vezérlésére gyártottam hasonló szerkezetet egy IR LED és egy TSOP4838 vevő IC segítségével. Klíma esetén a vevő különösen érdekes lehet, hogy a távirányító jeleit is le tudja követni a rendszer.

https://esphome.io/components/climate/ir_climate.html

Itt szükség lehet egy kis kódolásra mert Samsung-ot pont nem látok a listában, de ha ez nem akadály akkor ez jó megoldás lehet.

Home Assistant integrációval rendelkezik.

A konkret IC-t nem ismerem, de az infra taviranyitos protokoll a kovetkezo modon megy:

Van egy vivo freki (38kHz remlik, de szoktak varialni 36-40 kozt). Amikor 1-est akar kuldeni, akkor adott ideig ilyen frekivel villogtatja a LED-et, amikor 0-at, akkor meg nem (vagy kulonbozo hosszusagu pulzust kuld 0 es 1 eseten). Ez azert jo, mert a vevo oldalon ilyenkor nem szamit, ha fel van kapcsolva egy 200W-os lampa, vagy a Nap suti, vagy nem. A villogast megfelelo aramkorrel akkor is tudja detektalni, csak a "sotet" es a "vilagos" konkret erteke lesz mas-mas a kornyezettol fuggoen. A konkret kikuldott 0-1 sorozat eszkozfuggo, szokott lenni valami kutyure jellemzo prefix, amire reagal, es utana jon a tenylegesen megnyomott gomb kodja. Ezen kivul van, amikor ha hosszan nyomod a gombot, akkor ismetli a kodjat, van, amikor csak egy "az elozot ismeteld tovabb" kodot kuld helyette (ezt konnyen letesztelheted, pl. letakarod a taviranyito elejet, nyomva tartod a hangeroszabalyzo gombjat, es utana elveszed elole a kezedet).

Klimak jellemzoen az egesz beallitast elkuldik minden nyomasra, de van egy csomo variacio, akar meg egy gyarton belul is.

Az adas egyszeru, egy LEDet kell villogtatnod, jellemzoen egy mikrokontroller PWM-kepes pinjet konfiguraljak fel az adott vivofrekire, es engedelyezik meg tiltjak a 0-1 sorozatnak megfeleloen. Detektalaskor egy fokkal nehezebb dolgod lenne, bar talan analog modszerrel egy rezgokorrel is meg lehetne oldani. Szerencsere epp erre vannak nagyon egyszeru, filleres, 3 labu celeszkozok, amik a foldert es tapert cserebe kiadjak, hogy epp erzekelik-e az adott frekvenciaju jelet vagy sem (lehet, hogy par tipus akar a 0-1 sorozatot is dekodolni tudja).

A strange game. The only winning move is not to play. How about a nice game of chess?

Én optikai erősítőt úgy csinálok, hogy kezdődik egy transzimpedancia erősítővel, tehát áramból csinálunk feszültséget. Ezzel a fotodióda kapacitását rövidre is zártuk, így gyors lesz. Utána ezt a jelet invertálom, majd jön egy invertáló integrátor, amelynek a kimenetét egy ellenálláson keresztül visszakötöm az egésznek az elejére, tehát az áram bemenetünkre. Az integrátor az ellenálláson keresztül kihúzza a fotodióda DC áramát, illetve lassú zavaró fények által keletkezett áramot. A hasznos jelre így érzékeny marad statikus megvilágítás esetén is addig, amíg a statikus megvilágítás nem viszi telítésbe az integrátort. Mondjuk nyilván méretezni tudni kell. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Jo, de ehhez akkor erteni is kene. Ha megveszed a 3 labu infravevot, es bedugod az Arduino melle a breadboardba, akkor mar csak arra kell figyelni, hogy a foldet, tapot, meg az adatot ne keverd ossze. Raadasul sokkal hamarabb meg is van, mint ha tisztessegesen meretezned, es nem is kell csak addig, amig a megfelelo taviranyitok jeleit kiolvasod es elmented. Persze nyilvan, ha valami infrara reagalo kutyut csinalsz, akkor meg megerheti. Bar lehet, hogy akkor sem, mert a gyartok is ilyen cel-IC-ket hasznalnak valami miatt. Gondolom nem akarjak az analog vackokat egyenkent hangolgatni.

A strange game. The only winning move is not to play. How about a nice game of chess?

Azért a megbízhatatlan IR távvezérlések rengeteg bosszúságot tudnak okozni.
Persze ha a kolléga ennyi időt áldozott erre érdemes lenne megosztani. Itt azért zömében nem a gyengeáramú villamos mérnökök dominálnak.
Talán ez segít: https://www.lirc.org/

* Én egy indián vagyok. Minden indián hazudik.

Szia! Régebben jobban ment ez az infrás terület, de a wifi, bluetooth kiszorította. Itt van bőven infó róla. https://tldp.org/HOWTO/html_single/Infrared-HOWTO/
de ha rákeresel az IRDA ( https://www.lirc.org/html/irrecord.html kód rögzítése távirányítóról.)  Egy-két elemből össze lehet rakni a vevőt és az adót is, ami soros portra lehet kötni. Remélem tudtam segíteni egy kicsit.

Szerkesztve: 2021. 06. 16., sze – 09:07

RPi-n tudod hasznalni a lirc-et, van driver hozza, meg is tudod venni fityingekert az alkatreszeket. De ha nem akarsz vacakolni akkor valoszinuleg vannak kesz shieldek.

https://www.digikey.com/en/maker/blogs/2021/how-to-send-and-receive-ir-…

A trukkos resze ezutan jon, mert a klima taviranyitoja sokmindenben elter egy szokvanyos infra taviranyitotol.

https://www.instructables.com/Zero-to-Air-Conditioner-Controller-With-R…

Mivel olcso erdemes ezzel funi egy kort szvsz.

Meg en is ezt irtam, meg az editek elott (talan legelsonek ;-)

https://hup.hu/comment/2641841#comment-2641841

 

PS:

Azota annyi valtozott, hogy Home Assistantba szeretnem integralni, csak meg nem volt ra idom. (igaz, csak a be- es kikapcsolast raktam bele). Elvegre itt a nyar :-)

/sza2

Digital? Every idiot can count to one - Bob Widlar

Az IR legtöbbször ugyanazon a protokollon beszél (sőt, pl. a kocsikba utólag szerelhető fejegységek távirányítóbemenete is ugyanezt tudja).

Én úgy rögzítettem egyszer egy ilyennek a jelét, hogy a hangkártyabemenetre kötöttem az adót, és audacityvel felvettem (poor man's oscilloscope). Teljesen jól látszottak a küldött kódok. Szerintem ha az IR LED bemenetét rákötöd, az is jó lesz (bár talán kicsit magasabb feszültséget kap, mint a line-in szint).

Én is a lircd-t mondtam volna (nálam a hifit és a tévét lehet Pi-ról távirányítani, mindkettőhöz magam készítettem a remote.conf-ot - mi tagadás, macerás volt), de ezek szerint a klíma bonyolultabb...