Wifi zásuvka
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.
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.
Re: Wifi zásuvka
No tohle chapu, jen nevim presne jak zakomponovat do toho form...
Re: Wifi zásuvka
Do toho formu? Nijak. Celá alchymie byla vyzrazena už před 7 hodinami...
V update_led.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í.
Tedy: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
Kód: Vybrat vše
<form action="update_led.php" method="POST">
... hidden ... submit
</form>
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');
Re: Wifi zásuvka
Tak to bohuzel asi nedam do kupy.
Snažím se to pořád nějak vymyslet, ale nedávám to.
Snažím se to pořád nějak vymyslet, ale nedávám to.
Re: Wifi zásuvka
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:
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
Re: Wifi zásuvka
Takže jsem postoupil :
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);
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>
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
Tak vyřešeno komplet :
obsah update_led1.php
VŠEM MOC DĚKUJI ZA TRPĚLIVOST
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>
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
A víš v čem jsi měl problém ? ... neprve si provedl SELECT ... načetl starou hodnotu a pak UPDATE a zapsal tam novou
Re: Wifi zásuvka
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
Tak nemuzu porad prijit na chybu...
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
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);
}
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Wifi zásuvka
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:
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();
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Bing [Bot] a 10 hostů