Stránka 12 z 13

Re: Wifi zásuvka

Napsal: 14 kvě 2020, 21:50
od Kony
No tohle chapu, jen nevim presne jak zakomponovat do toho form...

Re: Wifi zásuvka

Napsal: 14 kvě 2020, 22:18
od KamilV
Do toho formu? Nijak. Celá alchymie byla vyzrazena už před 7 hodinami...
u toho formu si dej do action nějaký skript, který tu hodnotu updatne v db a udělá redirect zpět na výpis s tlačítkem
Tedy:

Kód: Vybrat vše

<form action="update_led.php" method="POST">
  ... hidden ... submit
</form>
V update_led.php:

Kód: Vybrat vše

$sql = 'UPDATE arduino_data SET hodnota='.(int)$_POST['hodnota'].' WHERE modul="led"';
$doSql = $mysqli->query($sql);

header('Location: jmeno_skriptu_s_formem.php');
Samozřejmě v update_led.php si musíš získat konexi do db, ideálně includovat nějaký db.php ve kterém to budeš mít... Psal jsem námět, ne copy-paste řešení.

Re: Wifi zásuvka

Napsal: 15 kvě 2020, 08:36
od Kony
Tak to bohuzel asi nedam do kupy.
Snažím se to pořád nějak vymyslet, ale nedávám to.

Re: Wifi zásuvka

Napsal: 15 kvě 2020, 08:49
od KamilV
Hrome. Musím říct, že tahle hra s dolováním informací mne už moc nebaví :(
Buď prostě chceš s něčím pomoct, pošleš vždycky raději celý soubor a ostatní ti řeknou: "tady máš takovou a makovou chybu", nebo si to prostě budeš tajit a nikdo ti s tím nepomůže.

Jediné, co si mohu vzít z posledního postu je, že sis vzal na sebe moc složitý projekt a končíš s ním. Píšeš, že to nedáš do kupy. Ok.

Máš v podstatě 3 možnosti:
  • fakt s tím sekneš a zkusíš si jednodušší projekt
  • necháš si to od někoho udělat, nikam tě to moc neposune, nebude to tvé dílo, bude tě to stát něčí práci
  • nebo se tím rozhodneš prokousat, hodně lidí ti pomůže, ale musíš se ptát konkrétně a vždy dodat podklady
Nezlob se, ale je fakt únavný ten kolovrátek "Nejde? Aha, a co nejde? Jo, ukaž jak to děláš. Takhle? Je tam tato chyba. Pořád nejde? Ale tohle jsme zatím vůbec neřešili...", to pak není divu, že jsme na 12. stránce vlákna a stále to nejde.

Re: Wifi zásuvka

Napsal: 15 kvě 2020, 09:11
od Kony
Takže jsem postoupil :

Kód: Vybrat vše

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

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

        $sqlzapis = 'UPDATE arduino_data SET hodnota='.(int)$_POST['stav'].' WHERE modul="led"';
        $doSqlzapis = $mysqli->query($sqlzapis);

            include 'menu.html';?>
                <form action="" method="POST">
                <?php if ($hodnota) { ?>
                <h1>Světlo za sedačkou</h1>
                <input type="hidden" name="stav" value="0">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko" value="1">Zhasnout</button>
                <?php } else { ?>
                <h1>Světlo za sedačkou</h1>
                <input type="hidden" name="stav" value="1">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko" value="0">Rozsvítit</button>
                <?php } ?>
                </form>
Tímto mi to zapíše hodnoty, a správně zapisuje, už jsem toho včera měl asi hodně zkoušení. Dnes zase s čistou hlavou :) Nyní po zmáčknutí tlačítka se hodnota zapíše správně, ale tlačítko se samozřejmě nezmění dle hodnoty, musím udělat refresh stránky aby se mi tlačítko změnilo dle hodnoty v DB
A samozřejmě pokud přidám další tlačítku na stránky s adresováním na záznam led2, tak to potom dělá velké problémy

Kód: Vybrat vše

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

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

        $sqlzapis = 'UPDATE arduino_data SET hodnota='.(int)$_POST['stav'].' WHERE modul="led"';
        $doSqlzapis = $mysqli->query($sqlzapis);

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

        $sqlzapis2 = 'UPDATE arduino_data SET hodnota='.(int)$_POST['stav2'].' WHERE modul="led2"';
        $doSqlzapis2 = $mysqli->query($sqlzapis2);

            include 'menu.html';?>
                <form action="" method="POST">
                <?php if ($hodnota) { ?>
                <h1>Světlo za sedačkou</h1>
                <input type="hidden" name="stav" value="0">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko" value="1" >Zhasnout</button>
                <?php } else { ?>
                <h1>Světlo za sedačkou</h1>
                <input type="hidden" name="stav" value="1">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko" value="0" >Rozsvítit</button>
                <?php } ?>
                </form>

                <form action="" method="POST">
                <?php if ($hodnota2) { ?>
                <h1>Světlo u TV</h1>
                <input type="hidden" name="stav2" value="0">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko2" value="1" >Zhasnout</button>
                <?php } else { ?>
                <h1>Světlo u TV</h1>
                <input type="hidden" name="stav2" value="1">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko2" value="0" >Rozsvítit</button>
                <?php } ?>
                </form>

Re: Wifi zásuvka

Napsal: 15 kvě 2020, 10:00
od Kony
Tak vyřešeno komplet :

Kód: Vybrat vše

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

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

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

            include 'menu.html';
?>
                <form action="update_led1.php" method="POST">
                <?php if ($hodnota) { ?>
                <h1>Světlo za sedačkou</h1>
                <input type="hidden" name="stav" value="0">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko" value="1" >Zhasnout</button>
                <?php } else { ?>
                <h1>Světlo za sedačkou</h1>
                <input type="hidden" name="stav" value="1">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko" value="0" >Rozsvítit</butto$
                <?php } ?>
                </form>

                <form action="update_led2.php" method="POST">
                <?php if ($hodnota2) { ?>
                <h1>Světlo u TV</h1>
                <input type="hidden" name="stav2" value="0">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko2" value="1" >Zhasnout</butto$
                <?php } else { ?>
                <h1>Světlo u TV</h1>
                <input type="hidden" name="stav2" value="1">
                <button style="font-size : 40px; height:100px; width:300px" type="submit" name="tlacitko2" value="0" >Rozsvítit</butt$
                <?php } ?>
                </form>
obsah update_led1.php

Kód: Vybrat vše

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

        $sqlzapis = 'UPDATE arduino_data SET hodnota='.(int)$_POST['stav'].' WHERE modul="led"';
        $doSqlzapis = $mysqli->query($sqlzapis);
        header('Location: led.php');

VŠEM MOC DĚKUJI ZA TRPĚLIVOST

Re: Wifi zásuvka

Napsal: 15 kvě 2020, 15:32
od kiRRow
A víš v čem jsi měl problém ? ... neprve si provedl SELECT ... načetl starou hodnotu a pak UPDATE a zapsal tam novou :D

Re: Wifi zásuvka

Napsal: 15 kvě 2020, 16:55
od Kony
Presne tak, ale porad jsem zkousel ruzne varianty, nakonec jsem se zamyslel a prisel na to logicky... vcera mi to uz nemyslelo

Re: Wifi zásuvka

Napsal: 28 črc 2020, 11:07
od Kony
Tak nemuzu porad prijit na chybu...

Kód: Vybrat vše

#include <SPI.h>
#include <UIPEthernet.h> // Used for Ethernet
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEE  };                                
#define BUFF_DELKA 255
char buffer[BUFF_DELKA]; //zásobník na příchozí řetězec

// ********************************************
// ***************EDITACE *********************
// ********NUTNO DODRŽET ADRESU SOUBORU *******
// ********/jirka/reset1.php reset2.php *******
// ********************************************
// **** NASTAVENI SITE****
IPAddress ip(10, 10, 111, 80);      //IP ADRESA
IPAddress gateway(10, 10, 111, 1);  // VYCHOZI BRANA
IPAddress subnet(255, 255, 255, 0); // MASKA
IPAddress dnServer(8, 8, 4, 4);     // DNS
int ID_MODULU = 1;
char serverName[] = "yxyxyxyx"; // webserver
// ********************************************
// ********************************************
// ********************************************

EthernetClient client;
String readString;
int x=0; //pocitadlo riadkov
char lf=10; //line feed character

void setup() {
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  Ethernet.begin(mac, ip, dnServer, gateway, subnet);
  Serial.print("ip-");
  Serial.println( Ethernet.localIP());
  Serial.print("Subnet mask-");
  Serial.println( Ethernet.subnetMask());
  Serial.print("Gateway-");
  Serial.println( Ethernet.gatewayIP());
  Serial.print("DNS-");
  Serial.println( Ethernet.dnsServerIP());
}

void loop() {
if (client.connect(serverName, 80)) {  //starts client connection, checks for connection
        client.println("GET http://yxyxyxyx/yxyxyxyx/reset1.php");
        Serial.println("GET http://yxyxyxyx/yxyxyxyx/reset1.php");
        client.println("Host: konycz.eu");
        client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        client.println("Connection: close");
        client.println();

        delay(1000);

        int inBuffer = 0;

        for(int i = 0; i < BUFF_DELKA; i++){ //vyprázdní buffer
            buffer[i] = '\\0'; //nastaví všechny prvky buffer na znak konce řetězce
        }
        
        while(client.available()){
            buffer[inBuffer] = client.read();    
            inBuffer++;
        }
        
     if(inBuffer == 9){
            if(buffer[0] == 'r' && buffer[1] == 'e' && buffer[2] == 's'){
                if(buffer[8] == '1'){
                    digitalWrite(4, HIGH);
                }
                else{
                    digitalWrite(4, LOW);
                }
                Serial.println(buffer[8]);
            }
        }

        client.stop();
    }
  Serial.println(buffer[8]);
    delay(6000);
}
Když si zobrazim stránku http://yxyxyxyx/yxyxyxyx/reset1.php, tak na stránce se správně vypíše "reset1:1:", ale ani zaboha nemuzu docilit arduino aby si nacetlo tu druhou jednicku.. ve vypisu mi to stale dokola vypisuje 0 a nebo vubec nic

Re: Wifi zásuvka

Napsal: 28 črc 2020, 11:34
od martinius96
Keď sa vykonáva request na PHP súbor, je potrebné použiť HTTP 1.0, ak spojenie použijete HTTP 1.1 ako default, prijaté dáta z webservera prichádzajú ako chunk encoding a je komplikované ich prijať. Pri HTTP 1.0 ti odpoveď príde normálne do riadku tak, ako keby si načítaval textový súbor. Je to tak ľahšie na spracovanie a použiteľnejšie pre tvoj prípad.
ENC28J60 som neprogramoval, ale tá knižnica vyzerá byť ako klon Ethernet knižnice pre Wiznet shieldy a moduly.
Urobil som to vzorovo podľa toho, ako to používam ja s Ethernet knižnicou.
Skús to takto:

Kód: Vybrat vše

#include <SPI.h>
#include <UIPEthernet.h> // Used for Ethernet
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEE  };
unsigned long cas = 0;
// ********************************************
// ***************EDITACE *********************
// ********NUTNO DODRŽET ADRESU SOUBORU *******
// ********/jirka/reset1.php reset2.php *******
// ********************************************
// **** NASTAVENI SITE****
IPAddress ip(10, 10, 111, 80);      //IP ADRESA
IPAddress gateway(10, 10, 111, 1);  // VYCHOZI BRANA
IPAddress subnet(255, 255, 255, 0); // MASKA
IPAddress dnServer(8, 8, 4, 4);     // DNS
int ID_MODULU = 1;
char serverName[] = "yxyxyxyx"; // webserver
// ********************************************
// ********************************************
// ********************************************

EthernetClient client;

void setup() {
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  Ethernet.begin(mac, ip, dnServer, gateway, subnet);
  Serial.print("ip-");
  Serial.println( Ethernet.localIP());
  Serial.print("Subnet mask-");
  Serial.println( Ethernet.subnetMask());
  Serial.print("Gateway-");
  Serial.println( Ethernet.gatewayIP());
  Serial.print("DNS-");
  Serial.println( Ethernet.dnsServerIP());
}

void loop() {
  if (millis() - cas >= 6000 || cas == 0) {
    cas = millis();
    if (client.connect(serverName, 80)) {  //starts client connection, checks for connection
      client.println("GET http://yxyxyxyx/yxyxyxyx/reset1.php HTTP/1.0");
      Serial.println("GET http://yxyxyxyx/yxyxyxyx/reset1.php");
      client.println("Host: konycz.eu");
      client.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
      client.println("Connection: close");
      client.println();
      delay(1000);
      while (client.connected()) {
        String line = client.readStringUntil('\n');
        Serial.println(line); //ak chceme vypísať HTTP header
        if (line == "\r") {
          break;
        }
      }
      String line = client.readStringUntil('\n');
      Serial.println("Nacitany payload response:");
      Serial.println(line); //odpoveď webservera - naše dáta
    } else {
      Serial.println("Pripojenie na webserver sa nepodarilo");
    }
    client.stop();
  }
}