Stránka 3 z 13
Re: Wifi zásuvka
Napsal: 24 dub 2020, 20:11
od Kony
Ale pokud bych zrusil prece ten cyklus, tak to nebude cekat na pozadavky prece.
A to druhy vubec nevim co to je a jak toho docilit
Přidal jsem na konec
Teď testuji, ale pořád mě to i neřeší to přesměrování, kvůli tomuto mi to potom nepřesměrovává zpátky na stránku a pořád nemám vůbec tušení, jak docílit abych mohl na svých stránkách odeslat požadavek na rozsvícení a poté na zhasnutí a zůstalo mi to na mých stránkách
Re: Wifi zásuvka
Napsal: 26 dub 2020, 18:14
od KamilV
Už to tady zaznělo. Vzal sis poměrně velké sousto, takže teď musíš přijmout, že toho budeš muset hodně načíst, hodně vyzkoušet. Žádné řešení za 5 min nečekej. On Ti nikdo nenapíše "co přesně a kde máš upravit", protože by to udělal za Tebe. A ty bys u dalšího projektu přišel opět.
Bohužel ze Tvých reakcí je vidět, že si ani nevygooglíš spojení, na které jsi tady odkazován. A že jich nebylo málo.
Tedy: buď tento projekt odlož a zkoušej si menší úlohy, nebo se mu tedy věnuj, ale ne stylem "udělejte za mě".
Pokud zvolíš to druhé, tak:
Promysli si, v jaké roli (client / server) má které zařízení být.
Možnosti jsou prakticky dvě. Buď bude právě jedno zařízení v roli serveru, na něm se budou uchovávat stavy jednotlivých relátek, bude obsahovat nějaké rozhraní pro GUI a ostatní zařízení budou clienti, kteří se budou v časových intervalech dotazovat, zda mají svá relátka sepnout / rozepnout.
Výhoda: clienti mohou být klidně z DHCP, nikde nebudeš muset uchovávat jejich adresy. Nevýhoda: po síti budou stále putovat pravidelné "reporty".
Nebo budou i jednotlivá relátka v roli serverů, ten hlavní ovladač bude posílat GET requesty na jejich IP.
Výhoda: zbavíš se těch pravidelných várek dat a po síti putuje vždy jen to, co bude aktuálně potřeba. Nevýhoda: hlavní jednotka musí udržovat seznam IP adres všech relátek, pokud přidáš nové zařízení, musí se rozšířit seznam na hlavní jednotce.
Ať už zvolíš kteroukoliv variantu, měl bys vědět proč.
Proč ses rozhodl nedělat ty odkazy ajaxem? Místo toho vymýšlíš, jak přesměrovat uživatele zpět. Místo, abys odstranil příčinu, odstraňuješ následek a ještě si házíš klacky pod nohy.
Velký problém je, že nerozumíš vlastnímu kódu.
Pravděpodobně to skládáš z příkladů, aniž bys věděl, co se tam děje. Pak legitimní chování považuješ za zaseknutí.
Jak už tady zaznělo, ano, zasekává se Ti to, proč jsi napsal, aby se to zasekávalo.
Závěrečné doporučení
Nespěchej. Místo 5 příspěvků s jednou větou nám sem hoď 1, který bude obsahovat koncepci. Popiš krátce, jak sis ten projekt tedy vymyslel, co se bude čeho dotazovat, co se bude kde uchovávat. Pak si vyzkoušej jednoduchý příklad na HTTP komunikaci. Třeba si stáhnout nějakou URL a najít v response nějakou odpověď. Ukaž nám, jak jsi to udělal, třeba už tam bude něco, co by šlo udělat lépe. Pak si udělej příklad na serverovou část a zkus zpracovat nějaký request, na jehož základě nějakou response odešleš. Zase nám ukaž, jak ses s tím popasoval. Možná i tam společně spoustu věcí odladíme. Až budeš mít za sebou tyto postupné krůčky, možná zjistíš, že už se vlastně na nic ptát nemusíš a všechno zvládneš sám.
Vím, že nic z toho jsi nechtěl slyšet, kdo ví, možná se i urazíš, možná se mnou ostatní nebudou souhlasit, někdo sedne a celé Ti to napíše. Já si ale myslím, že to není dobrá cesta.
Re: Wifi zásuvka
Napsal: 26 dub 2020, 18:50
od Kony
Napsal si to vyborně a děkuji ti za to...
Budu se snažit dodržet všechno co jsi napsal, samozřejmě nechci po někom žádné řešení, protože potom by mě vadilo, že jsem to neudělal já. A o tomto Arduino je.
Chci na vše přijít. Proto si procházím každý kód programu a postupně si v hlavě probírám co každý řádek dělá. Mám to od dob co jsem dělal v BasicG na Consulech nebo v Basicu na Sinclare, a jim podobné.
Ještě jednou děkuji za tvé slova. Úplně mě zatemnila hlava tím, že to chci hned a nepřemýšlel jsem nad problémem jako kdysi... když jsem prostě musel zkoušet...
Re: Wifi zásuvka
Napsal: 26 dub 2020, 19:21
od KamilV
Bezva. Smekám. Nečekal jsem. Vzhůru tedy do práce

Vezmi tužku a papír a načmrkni si rozvahu. Kolik na síti bude zařízení? Kolik relátek bude na jednom chipu, resp. co všechno bude mít IP adresu?
Bude např. 5 relátek viset na jednom boardu, tedy pod jednou IP? Nebo budou relátka od sebe vzdálená a každé bude mít svůj board, tedy svou IP?
Nebo kombinace obojího, kdy bude několik boardů od sebe, ale na každém z nich bude více relátek?
Bude to jedna jediná prototypová instalace (takže třeba IP adresy budou fixně ve firmware), nebo to chceš obecně a rozšířitelně?
Re: Wifi zásuvka
Napsal: 27 dub 2020, 10:36
od Kony
Soupis :
4 x wifi ovladaná zásuvka s RELE, každé zvlášť
2 x wifi čidlo teploty a vlhkosti
3 x wifi měření spotřebované elektriky na zásuvce(nemusí možná ani být)
Každé zařízení bude mít vlastní IP, nepoužiji ani Arduino. Hlavní je ovládání přes www stránky.
Nyní zkouším ovládat to jedno relé přes Ajax, zatím se mi povedlo rozchození základního kódu pro jedno tlačítko, s tím, že vyčítám info ze souboru, ale nemůžu přijít jak přidat dvě tlačítka, když dám dvě tlačítka, tak mi to nejde
Kód: Vybrat vše
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({url: "zapnuto.txt", success: function(result){
$("#div1").html(result);
}});
$("button").click(function(){
$.ajax({url: "vypnuto.txt", success: function(result){
$("#div2").html(result);
}});
});
});
</script>
</head>
<body>
<div><h2>Tlačítko 1</h2></div>
<button id="div1">Zapnout</button>
<div id="div1"></div>
<div><h2>Tlačítko 2</h2></div>
<button id="div2">Vypnout</button>
<div id="div2"></div>
Re: Wifi zásuvka
Napsal: 27 dub 2020, 11:19
od Kony
Tak jsem upravil kód, sice mě to už načítá informace jaký potřebuji ze souboru, ale když to nasměruji na zapnutí/vypnutí rele, tak se nic nestane
Kód: Vybrat vše
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#buttonzapnuto").click(function(){
$.ajax({url: "http://ipadresarele:1080/ON", success: function(result){
$("#div1").html(result);
}});
});
$("#buttonvypnuto").click(function(){
$.ajax({url: "http://ipadresarele:1080/OFF", success: function(result){
$("#div1").html(result);
}});
});
});
</script>
</head>
<body>
<h2>Zásuvka 1</h2>
<button id="buttonzapnuto" >Zapnout</button>
<button id="buttonvypnuto" >Vypnout</button>
</body>
</tr>
<tr>
<div id="div1"></div>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</tbody>
Re: Wifi zásuvka
Napsal: 27 dub 2020, 14:34
od Kony
Tak funguje, ale opět se to nějak kouslo, po vypnutí zapnutí z elektriky to běží jak má. Ale to mě teda neřeší ten problém s tím kousáním.
Re: Wifi zásuvka
Napsal: 27 dub 2020, 15:11
od KamilV
Takže jsi zvolil, že každé zařízení bude v roli serveru. OK.
Ovládání bude přes www stránky, ok. Na čem ty www stránky běží? Co je tou hlavní řídící jednotkou?
Pak je to příklad té www stránky z řídící jednotky. Dělá request na textový soubor. Co to má dělat?
V druhém příkladu už děláš request na IP nějakého relátka, to mi dává větší smysl.
Jakým kódem to na tom relátku odbavuješ? Ukaž.
Pak je tu zase jen kousek informace, že se "to" kousne. Netušíme ale co. Kousne se relátko? Kousne se řídící jednotka? Její kód?
Re: Wifi zásuvka
Napsal: 27 dub 2020, 15:27
od Kony
www stránky běží na Ubuntu Linux serveru
Na rele s wifi NodeMCU mám tento kód :
Kód: Vybrat vše
#include <ESP8266WiFi.h>
// Nazev Wi-Fi site, do ktere se mam pripojit
const char* ssid = "Kony";
// Heslo Wi-Fi site, do ktere se mam pripojit
const char* password = "Konyheslo";
// Je rele sepnute?
bool rele = false;
// Webovy server pobezi na portu 80 (HTTP komunikace)
WiFiServer server(80);
// Promenna s HTTP pozadavkem z prohlizece
String request;
void setup() {
// Nastartuj seriovou linku, do ktere budu vypisovat provozni informace
Serial.begin(9600);
// Na pin D1 je pripojene rele, nastavim jej tedy na vystup
// Zaroven nastavim nizkée napeti, aby se rele po startu nesepnulo
pinMode(D1, OUTPUT);
digitalWrite(D1, LOW);
// Pripojeni k Wi-Fi
Serial.println();
Serial.print("Pripojuji k ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
// Jsem pripojeny k Wi-Fi a mohu pokracovat
Serial.println();
Serial.println("WiFi pripojena!");
// Spusteni serveru
server.begin();
Serial.println("Server spusten");
// Napis IP adresu, kterou mikropocitac dostal
Serial.print("Pouzij k pripojeni tuto adresu: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
}
// Smycka loop se opakuje stale dokola
void loop() {
// Pokud ma promenna rele hodnotu pravda, posli na pin D1 vyssi napeti a sepni rele
if (rele == true) digitalWrite(D1, HIGH);
else digitalWrite(D1, LOW);
// Cekej, dokud se nepripoji nejaky klient
WiFiClient client = server.available();
if (!client) {
return;
}
// Cekej, dokud klient neposle nejaka data
Serial.println("Novy klient!");
while (!client.available()) {
delay(1);
}
// Precti a vypis prvni radek od klienta s URL dotazem
request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Pokud je v radku vyraz ON, nastav promennou rele na pravdu
if (request.indexOf("ON") > -1) rele = true;
// Pokud je v radku vyraz OFF, nastav promennou rele na nepravdu
if (request.indexOf("OFF") > -1) rele = false;
// To je vse, ted jeste 1 ms pockam a cela smycka se muze zopakovat
delay(1);
Serial.println("Klient odpojen");
Serial.println("");
client.stop();
}
Kousne se to tak, že to rele odpovídá na ping, ale to je tak max vše.. musím to komplet vypnout z elektriky aby se to celý vypnulo a pak to zase běží krásně
Re: Wifi zásuvka
Napsal: 27 dub 2020, 15:55
od KamilV
Co píše Serial Monitor? Chodí tam vůbec ty requesty? Posíláš je na port 1080, ale u relátka nasloucháš na 80.