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: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Wifi zásuvka

Příspěvek od Kony » 07 kvě 2020, 10:29

Tak řeším ještě jeden problém a to zasekávání modulu u světla...
Nyní mám 2 kusy... v obou modulech jsou shodně nahrané stejné programy :

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 = "***********";

// 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(0, OUTPUT);
 digitalWrite(0, 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(0, HIGH);
 else digitalWrite(0, 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("");
}
na svých webových stránkách mám tento kód pro ovládání :

Kód: Vybrat vše

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Dokument bez názvu</title> </head>
<body>
<table width="200" border="1">
  <tbody>
    <tr>
<head>
<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://ipadresazasuvky1/ON", success: function(result){
      $("#div1").html(result);
        }});
  });
  $("#buttonvypnuto").click(function(){
      $.ajax({url: "http://ipadresazasuvky1/OFF", success: function(result){
      $("#div1").html(result);
        }});
  });
  $("#buttonzapnuto2").click(function(){
      $.ajax({url: "http://ipadresazasuvky2/ON", success: function(result){
      $("#div1").html(result);
        }});
  });
  $("#buttonvypnuto2").click(function(){
      $.ajax({url: "http://ipadresazasuvky2/OFF", success: function(result){
      $("#div1").html(result);
        }});
  });
});
</script>
<h2>Zásuvka 1</h2>
<button style="width: 200px; height: 100px;" id="buttonzapnuto" >Zapnout</button>
<button style="width: 200px; height: 100px;" id="buttonvypnuto" >Vypnout</button>
<h2>Zásuvka 2</h2>
<button style="width: 200px; height: 100px;" id="buttonzapnuto2" >Zapnout</button>
<button style="width: 200px; height: 100px;" id="buttonvypnuto2" >Vypnout</button>
</body>
</html>
Zničeho nic přestane jedno z čidel reagovat. Jednou je to modul1 podruhé modul2. Jediné řešení je modul vypnout zapnout z elektriky a vše zase funguje normálně. Není to tak časté jako předtím, ale stejně se stane.

Tak jsem našel tuto stránku

Kód: Vybrat vše

https://arduino.cz/programovani-webovych-rozhrani-pro-arduino/
moooc se mi toto líbí, protože to je úplně super na MySQL, takže zkusím tyto zásuvky předělat na tento postup.

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

Re: Wifi zásuvka

Příspěvek od Kony » 13 kvě 2020, 19:51

Funguje mi to uplne super....

Jen ještě jedna otázka...

Mám nyní tohle na www stránce :

Kód: Vybrat vše

<div class="container" style="width:900px;">
<?php
	$server = "localhost";
	$user = "kony";
	$pass = "xxxxxxxxx";
	$db = "Domacnost";

	$mysqli = mysqli_connect($server, $user, $pass, $db); //připojení k MySQL

	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo1"';
	$doSql = $mysqli->query($sql);
	if($doSql->num_rows == 0){
		$sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo1", 0)';
		$doSql = $mysqli->query($sql);
	}

	if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
		$hodnota = sanitize($_POST['stav']);

		$sql = 'UPDATE arduino_data SET hodnota="'.$hodnota.'" WHERE modul="svetlo1"';
		$doSql = $mysqli->query($sql);

	}

	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo1"';
	$doSql = $mysqli->query($sql);
	$hodnota = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB

	$zapnuto1Checked = $hodnota == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
	$vypnuto1Checked = $hodnota == 0 ? 'checked' : '';



 	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo2"';
        $doSql = $mysqli->query($sql);
        if($doSql->num_rows == 0){
                $sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo2", 0)';
                $doSql = $mysqli->query($sql);
        }

        if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
                $hodnota2 = sanitize($_POST['stav2']);

                $sql = 'UPDATE arduino_data SET hodnota="'.$hodnota2.'" WHERE modul="svetlo2"';
                $doSql = $mysqli->query($sql);

        }

        $sql = 'SELECT * FROM arduino_data WHERE modul="svetlo2"';
        $doSql = $mysqli->query($sql);
        $hodnota2 = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB

        $zapnuto2Checked = $hodnota2 == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
        $vypnuto2Checked = $hodnota2 == 0 ? 'checked' : '';


 	$sql = 'SELECT * FROM arduino_data WHERE modul="svetlo3"';
        $doSql = $mysqli->query($sql);
        if($doSql->num_rows == 0){
                $sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo3", 0)';
                $doSql = $mysqli->query($sql);
        }

        if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
                $hodnota3 = sanitize($_POST['stav3']);

                $sql = 'UPDATE arduino_data SET hodnota="'.$hodnota3.'" WHERE modul="svetlo3"';
                $doSql = $mysqli->query($sql);

        }

        $sql = 'SELECT * FROM arduino_data WHERE modul="svetlo3"';
        $doSql = $mysqli->query($sql);
        $hodnota3 = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB

        $zapnuto3Checked = $hodnota3 == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
        $vypnuto3Checked = $hodnota3 == 0 ? 'checked' : '';

	include 'menu.html';
	echo '<form action="" method="POST" >';
		echo '<input type="hidden" value="1" name="odeslano" />';
		echo 'Světlo 1<br>';
		echo '<input type="radio" name="stav" value="1" '.$zapnuto1Checked.' /> Zapnout<br>';
		echo '<input type="radio" name="stav" value="0" '.$vypnuto1Checked.' /> Vypnout<br><br>';
		echo 'Světlo 2<br>';
		echo '<input type="radio" name="stav2" value="1" '.$zapnuto2Checked.' /> Zapnout<br>';
                echo '<input type="radio" name="stav2" value="0" '.$vypnuto2Checked.' /> Vypnout<br><br>';
		echo 'Světlo 3<br>';
                echo '<input type="radio" name="stav3" value="1" '.$zapnuto3Checked.' /> Zapnout<br>';
                echo '<input type="radio" name="stav3" value="0" '.$vypnuto3Checked.' /> Vypnout<br><br>';
		echo '<input type="submit" value="Odeslat">';
	echo '</form>';

	function sanitize($input){
		$input = htmlspecialchars($input);
		$input = htmlentities($input);
		$input = strip_tags($input);
		$input = trim($input);
		return $input;
	}
?>
a potřeboval bych, aby ten radiobutton byl u prostředka stránky a hlavně aby byl větší. Přece jen na mobilu je to dost malinkatý. Takže nějaký zoom nebo tak něco.. Existuje na to něco ???

Uživatelský avatar
kiRRow
Příspěvky: 1163
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Wifi zásuvka

Příspěvek od kiRRow » 13 kvě 2020, 20:53

CSS Styly ... ale problém je pak v tom že né všechno se né v každém prohlížeči chová stejně ...

Uživatelský avatar
kiRRow
Příspěvky: 1163
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Wifi zásuvka

Příspěvek od kiRRow » 13 kvě 2020, 21:01


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

Re: Wifi zásuvka

Příspěvek od Kony » 13 kvě 2020, 21:04

no zkouším zkouším, ale stejně nepřijdu na zvětšení a vycentrování doprostřed stránky

Uživatelský avatar
kiRRow
Příspěvky: 1163
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Wifi zásuvka

Příspěvek od kiRRow » 13 kvě 2020, 21:12

https://www.jakpsatweb.cz/css/css-pozicovani.html
... akorát teď koukám že tam toho není vůbec moc o zarovnávání pomocí align : center/left/right .... vAlign : top/middle/bottom ... když tak tohle ještě v rámci pozicování pomocí css prožeň googlem ...

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

Re: Wifi zásuvka

Příspěvek od Kony » 13 kvě 2020, 21:20

uz jsem snad vyzkousel vse a stejne nejde....

Uživatelský avatar
kiRRow
Příspěvky: 1163
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Wifi zásuvka

Příspěvek od kiRRow » 13 kvě 2020, 21:28

no jednak ti chybí konec toho <div></div> prvku ... je to párový tag ... a jak máš v tom divu ten style .... tak si na těch w3school stránkách dohledej jaký atribut mu musíš nastavit aby všechno co je uvnitř toho <div></div> se vycentrovalo ... tuším že nejlehčí cesta by mohlo být tohle <div class="container" style="width:900px; text-align: center;">

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

Re: Wifi zásuvka

Příspěvek od Kony » 13 kvě 2020, 21:37

super, pomocí

Kód: Vybrat vše

<div class="container" style="width:900px; text-align: center;">
jsem vyřešil vycentrování na střed, ale nemůžu přijít na zoom...

Uživatelský avatar
kiRRow
Příspěvky: 1163
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Wifi zásuvka

Příspěvek od kiRRow » 13 kvě 2020, 21:42

to není zoom .... buď pomocí CSS upravíš styl toho inputu typu radio .... nebo ho musíš pomocí javascriptu a obrázků, či canvasu nahradit vlastním výtvorem ...

tyhle věci jako zaškrtávátka, rolovací seznamy a čudlíky ... to je přímo součástí OS ... arduino vůbec neví co to je nějakej input radio ... prostě řekne tomu OS kterej na něj šahá .. hele tu máš .. zobraz si tam to radio input a o to jak to vypadá se stará ta strana co to zobrazuje.

Odpovědět

Kdo je online

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