Wifi zásuvka

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
Kony
Příspěvky: 394
Registrován: 09 dub 2020, 11:43

Re: Wifi zásuvka

Příspěvek od Kony » 24 dub 2020, 20:11

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

Kód: Vybrat vše

client.stop();
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

KamilV
Příspěvky: 484
Registrován: 03 dub 2018, 15:27
Bydliště: Olomouc

Re: Wifi zásuvka

Příspěvek od KamilV » 26 dub 2020, 18:14

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.

Kony
Příspěvky: 394
Registrován: 09 dub 2020, 11:43

Re: Wifi zásuvka

Příspěvek od Kony » 26 dub 2020, 18:50

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...

KamilV
Příspěvky: 484
Registrován: 03 dub 2018, 15:27
Bydliště: Olomouc

Re: Wifi zásuvka

Příspěvek od KamilV » 26 dub 2020, 19:21

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ě?

Kony
Příspěvky: 394
Registrován: 09 dub 2020, 11:43

Re: Wifi zásuvka

Příspěvek od Kony » 27 dub 2020, 10:36

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>

Kony
Příspěvky: 394
Registrován: 09 dub 2020, 11:43

Re: Wifi zásuvka

Příspěvek od Kony » 27 dub 2020, 11:19

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>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </tbody>

Kony
Příspěvky: 394
Registrován: 09 dub 2020, 11:43

Re: Wifi zásuvka

Příspěvek od Kony » 27 dub 2020, 14:34

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.

KamilV
Příspěvky: 484
Registrován: 03 dub 2018, 15:27
Bydliště: Olomouc

Re: Wifi zásuvka

Příspěvek od KamilV » 27 dub 2020, 15:11

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?

Kony
Příspěvky: 394
Registrován: 09 dub 2020, 11:43

Re: Wifi zásuvka

Příspěvek od Kony » 27 dub 2020, 15:27

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ě

KamilV
Příspěvky: 484
Registrován: 03 dub 2018, 15:27
Bydliště: Olomouc

Re: Wifi zásuvka

Příspěvek od KamilV » 27 dub 2020, 15:55

Co píše Serial Monitor? Chodí tam vůbec ty requesty? Posíláš je na port 1080, ale u relátka nasloucháš na 80.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host