Ovládání klimatizace
Úvodní stránka › Fórum › Vaše projekty › Arduino › Ovládání klimatizace
- Toto téma obsahuje celkem 39 odpovědí. Do diskuze (6 diskutujících) se naposledy zapojil uživatel Vojtěch Vosáhlo a poslední změna proběhla před 8 roky a 1 měsícem.
-
AutorPříspěvky
-
10.10.2016 v 11:30 #8703PulecÚčastník
Dobrý den.Potřebuji ovládat přes internet klimatizaci doma.Zapnutí vypnutí, teplotu.Šlo by arduino uno s ethernet shildem využít jako dálkový ovladač s ir diodou?Děkuji za pomoc
10.10.2016 v 19:01 #8705Zbyšek VodaÚčastníkDobrý den, určitě by to nějak šlo.
Třeba tady http://www.instructables.com/id/Air-Conditioning-web-controlled-by-Arduino/?ALLSTEPS o tom píšou.3.11.2016 v 9:26 #9067PulecÚčastníkAno to jsem našel bohužel to je na megu arduino to nezvládne.Na megu čekám je objednaná.Mám ir přijímač a ir vysílač a uno.Chtěl bych jen zvýšení a snížení teploty klimatizace po ethernet.Kodý ovladače od klimi mám načtené.Dokázal by někdo napsat kód?Podobný tomu v odkazu víše.
Ale jen pro zvýšení a snížení teploty.Moc děkuji za jakoukoliv pomoc.3.11.2016 v 11:19 #9069Luke_CZÚčastníkA, proč by to normální arduino nezvládlo?
B, nemáš možnost WiFi? ESP8266(NodeMcu) by bylo ideální, napájet by šlo rovnou v klimě a nikde by nelezly dráty
C, kód je jednoduchýL.
3.11.2016 v 11:28 #9070PulecÚčastníkA.Píše to málo proměné
B.wifi je objednané
C.pro mě moc ne
Nevím jestly si rozumíme ale na arduinu beží server a přes vebowé rozhraní ovládám klimu.Arduino je osazeno ir diodou.3.11.2016 v 11:49 #9071Luke_CZÚčastníkA, nerozumím
B, mega != wifi
C, „Učit se, učit se, učit se! VIL“
D, ESP8266 zvládne vše, tj. server, měření teploty a vlhkosti i ovládání IRL:
3.11.2016 v 12:56 #9072Luke_CZÚčastníkPro doplnění:
A, jde o přeplnění SRAM paměti vloženými obrázky a HTML kódem, autor skriptu řeší vše pouze v rámci SRAM. V jeho případě je to MEGA s 8kB SRAM vs tvoje UNO s 2kB SRAM 🙁Toto jde řešit:
1, větším arduinem, přístup autora = s kanonem na vrabce
2, nahráním obrázků na SD a loadovat je z ní = v případě opravdu velkých obrázků, či skriptů (java apod)
3, místo obrázků použít tag <button>, ten tolik paměti nezabere viz.
http://www.w3schools.com/tags/tag_button.asp
4, celkově optimalizovat zápis HTML viz F() macro
https://playground.arduino.cc/Learning/Memory
a PROGMEM
https://www.arduino.cc/en/Reference/PROGMEML.
3.11.2016 v 16:04 #9073PulecÚčastníkTak změna.Megu mám doma dnes došla.Autorův kód funguje.Jen nevím jak dodělat teplota více/méně.Jak jsem zjistil každá nastavená teplota má svůj kód.Šlo by do kódu dodělat teplota více ,teplota méně?Nebo napsat kód jak pro pitomce (čili mě) úplně nový a česky.
Jedná se mi o toto:
Teplota a vlhkost s dht22 :to se mi podařilo
Ovládat teplotu klimatizace vzestupně sestupně:to neumím
Vyp/zap:neumím není duležité ale potěší3.11.2016 v 17:24 #9075Vojtěch VosáhloÚčastníkPředpokládám že ten ovladač má šipky nahoru a dolu pro zvýšení a snížení teploty a nějaká další tlačítka. Pokud tedy opravdu při stisku tlačítka nahoru pošle vždy jiný kód, což mi přijde trochu jako hovadina ale dobře, zkuste zjistit jak se číslo mění. Chce to něco podle čeho by jsme mohli ty kódy generovat aby jste je neměl jen všechny naklikané v kódu, pro každou teplotu jeden (což by taky šlo). Vyp/zap si taky vyřešíte podle kódů. Pak se dá podle protokolu ve kterém IR mluví napsat odesílání kódů.
3.11.2016 v 17:41 #9076dariraÚčastníkNení to na Arduinu, ale třeba by to stačilo.
4.11.2016 v 9:23 #9077PulecÚčastníkDobrý den.Nejsou mi jasné ty kódy ovladače.V příloze posílám kódy získané megou přez ir přijímač.Je to postupně z 18,19,20,21,22 čili pořád směrem nahoru.Neřekl bych že se kód opakuje.Nebo ano?Musí se používat celá řada čísel?Děkuji za ujasnění
Attachments:
4.11.2016 v 11:45 #9079PulecÚčastníkBohužel nejsem schopen dostat z ovladače klimatizace kód v tomto tvaru 0xFDD827.Ten pak stačí v kódu programu?
Tento se mi daří získat pouze z ovladače na settopbox.Vše je zjištěno přes IRrecvDumpV2.4.11.2016 v 15:25 #9080Vojtěch VosáhloÚčastníkZkusme něco jiného, například tuhle knihovnu: https://learn.adafruit.com/using-an-infrared-library/hardware-needed, ta vypisuje i kód ve formáru co by jsme chtěli.
5.11.2016 v 12:14 #9087PulecÚčastníkMoc děkuji pane Vosáhlo.Tady je výsledek.Co stoho je k použití?Viz příloha
V čem jsem to měl spustit v IRrecvDumpV2?
Děkuji za pomocAttachments:
5.11.2016 v 12:21 #90895.11.2016 v 12:29 #9091PulecÚčastníkZjistil jsem že duležitý je pro mne první řádek ale ten je bohužel bez hodnot.
Decoded Unknown(0): Value:0 (0 bits)Při testu ovladače settopboxu je vše jak má.
Decoded NEC(1): Value:FD6897 (32 bits)
Bohužel tedy z ovladače klimatizace nedostanu tyto hodnoty.
Co stím?Zadávat tedy ty dlouhé kódy raw?S nimi to funguje ale je to hrozná práce.Attachments:
5.11.2016 v 17:02 #9095Vojtěch VosáhloÚčastníkJeště tak mimochodem co je to za klimošku? Předpokládám že cíl je nepájet přímo na ni ani na ovladač. To že je tam 0 znamená že to nevysílá v žádném známém formátu. Chtělo by to její název a pak se dá třeba kouknout i po nějakejch projektech, jestli nedělal někdo reverse engineering…
To pane si prosím nechte 😀7.11.2016 v 17:48 #9136PulecÚčastníkKlimatizace je nějaká čína Nordline.Ale kódy mě zas až tak netrápí nacpu tam ty dlouhé a s těmi to funguje.Byl by někdo ochoten upravit program z těchto stránek ?
tady
Potřebuji abych tam měl třeba 6 tlačítek a po jejich stisku na stránkách klimatizace bych změnil teplotu.Kódy a popis přiřadit umím.Jen nevím jak napsat ten program jednotlivých tlačítek.
Arduino bude napájeno ze sítě sólo.Poběží pořád v topné sezoně.7.11.2016 v 17:59 #9138PulecÚčastníkTakto mi to už zhruba funguje ale pouze na třech funkčních tlačítkach
Attachments:
7.11.2016 v 18:12 #9141PulecÚčastníkTady v příloze mnou pokřivený kód který umí pouze dvě teploty a vypnout.Potřebuji alespoň 5 teplot a on/OFF.
Attachments:
7.11.2016 v 20:05 #9144Vojtěch VosáhloÚčastníkVy komentujete španělsky? 😀 Samozřejmě jen vtip…
Prakticky by vám mělo stačit přidávat jen else if
else if (readString.indexOf("L=X") > 0) { irsend.sendRaw(TEPLOTA, sizeof(TEPLOTA)</ sizeof(int), khz); }
a pak jen do tohoto oddílu
client.print("<h2> <a href='/?L=0'> OFF </a>| <a href='/?L=1'> Teplota mene </a> | <a href='/?L=2'> Teplota vice </a></h2>");
přidávat html kód viz.
<h2> <a href='/?L=X'> TEPLOTA </a>
Aspoň tak bych to chápal já…
7.11.2016 v 22:37 #9150PulecÚčastníkTak tlačítka jsem přidal ale dál se mi nedaří 🙁
Když přidám else if (readString.indexOf(„L=X“) > 0) {irsend.sendRaw(TEPLOTA, sizeof(TEPLOTA)</ sizeof(int), khz);
}
Hazí to chybu.
C:\Users\MPUHLO~1\AppData\Local\Temp\untitled1276640573.tmp\sketch_nov07e\sketch_nov07e.ino: In function ‚void loop()‘:sketch_nov07e:103: error: expected primary-expression before ‚/‘ token
irsend.sendRaw(18, sizeof(18)</ sizeof(int), khz);/
^
sketch_nov07e:103: error: expected primary-expression before ‚/‘ token
irsend.sendRaw(18, sizeof(18)</ sizeof(int), khz);/
^
sketch_nov07e:106: error: expected primary-expression before ‚}‘ token
}
^
Byly nalezené násobné knihovny „DHT.h“
Použitý: C:\Users\Mpuhlovsky\Documents\Arduino\libraries\DHT
Nepoužitý: C:\Users\Mpuhlovsky\Documents\Arduino\libraries\DHT_sensor_library
exit status 1
expected primary-expression before ‚/‘ tokenNezkusil by jste prosím alespoň jedno tlačítko oživit?Jdou mi jen ty první tři.
Attachments:
8.11.2016 v 15:55 #9158Vojtěch VosáhloÚčastníkmáte v kódu navíc toto </
irsend.sendRaw(TEPLOTA, sizeof(TEPLOTA)</ sizeof(int), khz);
bez toho by to mělo fungovat. Omlouvám se, napsal jsem to nahoře chybně…
9.11.2016 v 10:39 #9163PulecÚčastníkTak zase se nedaří hlásí to toto
klima_poku2:109: error: ‚TEPLOTA‘ was not declared in this scope
irsend.sendRaw(TEPLOTA, sizeof(TEPLOTA) sizeof(int), khz);
^
klima_poku2:175: error: expected ‚}‘ at end of input
} // fine loop
^
Byly nalezené násobné knihovny „DHT.h“
Použitý: C:\Users\Mpuhlovsky\Documents\Arduino\libraries\DHT
Nepoužitý: C:\Users\Mpuhlovsky\Documents\Arduino\libraries\DHT_sensor_library
exit status 1
‚TEPLOTA‘ was not declared in this scope10.11.2016 v 20:40 #9169NasranekÚčastníkNepoužitou knihovnu smaž s disku, někdy to dělá bordel při kompilaci.
Nejlepší je všechny knihovny přidávat do dokumety/arduino/library a nikam jinam
pokud možno tak přes program ne ručně.11.11.2016 v 8:19 #9170Vojtěch VosáhloÚčastníkSorry za menší odmlčení.
1 věc, TEPLOTA je hen obrazná, musíte místo ní deklarovat proměnnou ve které budou ir kódy pro jednu z teplot, jako u coolon atd.
2 jak to píše očekává to závorku takže ta někde chybí, nejspíš právě uplně na konci ale musel bych vidět kód kam už jste vložil teplotu.
O knihovnách už tu napsal Nasranek
11.11.2016 v 16:50 #9172PulecÚčastníkZde je kód.Opět jsem si sním pohrál a kostrbatě počeštil už nevypisuje chybu.Byl by někdo tak hodný a přidal mi tam i s okomentováním další funkční tlačítko čily 19°C které by po stisknutí vypsalo „topim na 19*C“ a poslalo do diody signál.Klidně použijte kod pro off nebo nějaký jiny nebo tam napište „sem to dej ty blbe levej“já si to už přepíšu.Moc děkuju za pomoc
Attachments:
11.11.2016 v 20:42 #9175Vojtěch VosáhloÚčastníkKód vracím, doufám že funkční.
Všechny věci co jsem přidal jsou vyznačeny dlouhou řadou //// aby jste se zorientovalJediné co by mělo být potřeba přidávat při přidávání dalších teplot by měli být tyto části:
// kod ovladače pro Topím na 19 stupnu unsigned TEPLOTAXY[] = {8800,4350, 550,500, 600,500, 550,500, 550,500, 600,500, 550,500, 600,500, 550,500, 550,1600, 600,1600, 550,1600, 550,1600, 550,1600, 600,1600, 550,500, 550,1600, 600,500, 550,500, 550,500, 600,500, 550,1600, 600,500, 550,500, 550,500, 600,1600, 550,1600, 550,1600, 550,1600, 600,500, 550,1600, 550,1600, 600,1600, 550 };
Zde stačí vždy jen změnit název a IR kódy
else if (readString.indexOf("L=Z") > 0) { if(CILOVATEPLOTA != XY){ /// Pokud teplota kterou chceme zapnou jeste neni zapnuta => pustime dal irsend.sendRaw(TEPLOTAXY, sizeof(TEPLOTAXY) / sizeof(int), khz); CILOVATEPLOTA = XY; ///Nastavime promenne aby se nepodelala orig cast programu a cilovateplota na teplotu kterou jsem nastavili COOLON = false; DRYON = false; }
Tahle funkce musí existovat pro každou tepotu, kolik teplot, tolik těchto funkcí. Jediné co je potřeba změnit tady je TEPLOTAXY za název pole ve kterém jsou uloženy kódy pro danou teplotu a do proměnné CILOVATEPLOTA zapisovat hodnotu teploty kterou jste nastavil.Důležité je nastavit čemu se rovná L, koukal jsem že už tam máte vložených pár teplot takže pro každou z nich je L jiné… Jak máte napsáno L=4 by mělo topit na 20*C a proto funkci upravíte tak aby se spustila když L=4 tzn nahradíte Z tímto číslem a aby vysílala vše správně.
Zbytek by měl být připravený na více teplot a měl by vypisovat na webu danou teplotu na kterou je nastaveno.
PS: Píšu měl protože nemám na čem to otestovat takže pište jakýkoliv feedback
Attachments:
12.11.2016 v 11:20 #9178PulecÚčastníkTak zase nějaká chybka.Píše to toto
C:\Users\MPUHLO~1\AppData\Local\Temp\arduino_modified_sketch_719325\klimav2.ino: In function ‚void loop()‘:
klimav2:162: error: invalid operands of types ‚const char*‘ and ‚const char [17]‘ to binary ‚operator+‘
client.println(„<span style=’color:red; font-weight:bold;‘>Topim na “ + CILOVATEPLOTA + „*C</span></font>“);
^
klimav2:193: error: expected ‚}‘ at end of input
} // fine loop
^
exit status 1
invalid operands of types ‚const char*‘ and ‚const char [17]‘ to binary ‚operator+‘12.11.2016 v 11:29 #9179Vojtěch VosáhloÚčastníkOops,musí tam být String(CILOVATEPLOTA) místo té teploty a opět na konci chybí }
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.