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 6 roky a 4 měsíci.
-
AutorPříspěvky
-
5.11.2016 v 12:29 #9091
Pulec
Úč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.