Stránka 9 z 13

Re: Wifi zásuvka

Napsal: 07 kvě 2020, 10:29
od Kony
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.

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 19:51
od Kony
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 ???

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 20:53
od kiRRow
CSS Styly ... ale problém je pak v tom že né všechno se né v každém prohlížeči chová stejně ...

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:01
od kiRRow

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:04
od Kony
no zkouším zkouším, ale stejně nepřijdu na zvětšení a vycentrování doprostřed stránky

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:12
od kiRRow
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 ...

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:20
od Kony
uz jsem snad vyzkousel vse a stejne nejde....

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:28
od kiRRow
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;">

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:37
od Kony
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...

Re: Wifi zásuvka

Napsal: 13 kvě 2020, 21:42
od kiRRow
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.