Stránka 3 z 5

Re: Zapis hodnoty do DB

Napsal: 01 říj 2020, 13:39
od pavel1tu
Psal jsem, že by bylo možné funkčně rozšířit funkci (já ji tak využívám) na

Kód: Vybrat vše

Odesli(CisloZarizeni, TypEventu, TextEventu);
Ale pokud to dotyčnému vyhovue a nebojuje s místem a pamětí, jeho věc.

Re: Zapis hodnoty do DB

Napsal: 14 lis 2020, 17:28
od Kony
Tak já už zase nevím.....

Kód: Vybrat vše

void loop() {
    if (millis() - cas >= 6000 || cas == 0) {
    cas = millis();
    if(client.connect(serverName, 80)){
        client.print("GET http://xxxx/eee/reset");
        client.print(ID_MODULU);
        client.print(".php");
        client.println(" HTTP/1.0"); 
        client.println("Host: xxxx.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
      
      if(line == '1'){//&& PosledniStav == 0
                    digitalWrite(4, HIGH);
                    PosledniStav = 1;
                    OdesliZapnuto();
                    Serial.print("Posledni stav = ");
                    Serial.println(PosledniStav);
                }
      if(line == '0'){ // && PosledniStav == 1
                    digitalWrite(4, LOW);
                    PosledniStav = 0;
                    OdesliVypnuto();
                    Serial.print("Posledni stav = ");
                    Serial.println(PosledniStav);
                } 
    else {
      Serial.println("Pripojenie na webserver sa nepodarilo");
    }
    }
        client.stop();
    }
}
Vůbec to nebere ty podmínky

Kód: Vybrat vše

   if(line == '1'){//&& PosledniStav == 0
                    digitalWrite(4, HIGH);
                    PosledniStav = 1;
                    OdesliZapnuto();
                    Serial.print("Posledni stav = ");
                    Serial.println(PosledniStav);
                }
      if(line == '0'){ // && PosledniStav == 1
                    digitalWrite(4, LOW);
                    PosledniStav = 0;
                    OdesliVypnuto();
                    Serial.print("Posledni stav = ");
                    Serial.println(PosledniStav);
                } 

Kód: Vybrat vše

17:26:20.485 -> ip-192.168.1.120
17:26:20.485 -> Subnet mask-255.255.255.0
17:26:20.530 -> Gateway-192.168.1.1
17:26:20.569 -> DNS-8.8.4.4
17:26:20.569 -> Cislo modulu-2
17:26:23.353 -> Nacitany payload response:
17:26:23.353 -> 0
17:26:23.353 -> Pripojenie na webserver sa nepodarilo
17:26:54.215 -> Nacitany payload response:
17:26:54.215 -> 0
17:26:54.215 -> Pripojenie na webserver sa nepodarilo
17:27:25.544 -> Nacitany payload response:
17:27:25.544 -> 0
Proste to nesepne rele a ani to nevypise "Posledni stav = " jak kdyby to uplne ignorovalo

Re: Zapis hodnoty do DB

Napsal: 14 lis 2020, 18:23
od pavel1tu
Já řeknu jen JEDNO - řeklo se KOD učesat - to znamená zpřehlednit - máš blbě závorky, ty snad ani netušíš kde jaká podmínka začíná a kde končí (už podle výpisu na SERIAl vidíš že to běhá jinudy než chceš)
to jsem našel i na tabletu, snad jsem nic nepčehlédl

testni tohle, kdyby nic, půjdu na PC

Kód: Vybrat vše

void loop() {
    if (millis() - cas >= 6000 || cas == 0) {
		cas = millis();
		if(client.connect(serverName, 80)){
			client.print("GET http://xxxx/eee/reset");
			client.print(ID_MODULU);
			client.print(".php");
			client.println(" HTTP/1.0"); 
			client.println("Host: xxxx.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
      
			if(line == '1'){//&& PosledniStav == 0
				digitalWrite(4, HIGH);
                PosledniStav = 1;
                OdesliZapnuto();
                Serial.print("Posledni stav = ");
                Serial.println(PosledniStav);
            }
			if(line == '0'){ // && PosledniStav == 1
                digitalWrite(4, LOW);
                PosledniStav = 0;
                OdesliVypnuto();
                Serial.print("Posledni stav = ");
                Serial.println(PosledniStav);
            }
		}
		else {
			Serial.println("Pripojenie na webserver sa nepodarilo");
		}
    client.stop();
    }
}

Re: Zapis hodnoty do DB

Napsal: 14 lis 2020, 18:41
od pavel1tu
Já jen podotknu - napsal jsi to jinam, do jiného příspěvku
a kod je úplně jiný než minule

minule jsi vyčítal z odpovědi WWW serveru pomocí

Kód: Vybrat vše

        while(client.available()){
            buffer[inBuffer] = client.read();    
            inBuffer++;
teď vyčítáš pomocí (asi nevyčítáš)

Kód: Vybrat vše

while (client.connected()) {
      String line = client.readStringUntil('\n');
     //   Serial.println(line); //ak chceme vypísať HTTP header
        if (line == "\r") {
          break;
jsem zmaten,
client.connected() ti říká že jsi připojen
client.available() říká že jsou ještě k dispozici data

nemám to jak vyzkoušet, vrací to vyčtené data "0/1" z databáze ?

Re: Zapis hodnoty do DB

Napsal: 15 lis 2020, 09:41
od Kony
Ano hodnoty to v serial vypisuje spravne

Re: Zapis hodnoty do DB

Napsal: 15 lis 2020, 10:53
od pavel1tu
Kony píše:
15 lis 2020, 09:41
Ano hodnoty to v serial vypisuje spravne
A s tou mou změnou (přesunul jsem závorku) to vypisuje co ?
Pošli výpis jak s "1" tak s "0"

Ale když se koukneš na ty podmínky, jelikož je uložená/vyčtená hodnota z toho co vrací WWW v proměnné typu "String",
asi budeš muset upravit ty podmínky a nedotazovat se na celý "String" - musíš porovnávat jen ten jeden znak,
předtím jsi to měl správně ...

Kód: Vybrat vše

// ty porovnáváš String, ten je dle mne zakončený nějakým znakem, tudíž to nemůže fungovat
// line je String a porovnáváš s char
if(line == '1')

//nemám to jak vyzkoušet, musel by jsi testnout co vrátí na serial "line.charAt(n)" n = 0 nebo 1 
// to vrací char z nějaké pozice z toho Stringu
// záleží na které pozici ta "0" nebo "1" je (mezery, ukončovací a jiné neviditelné znaky)
// pak bude fungovat, jen doplnit správné číslo do závorky
if(line.charAt(0) == '1')
nejsem doma,nemám tojak vyzkoušet a používal jsem to už dávno

Re: Zapis hodnoty do DB

Napsal: 16 lis 2020, 21:52
od KamilV
Já teda moc nerozumím, proč se jedna věc řeší ve více vláknech, pak je v tom docela zmatek.
V sousedním vlákně jsem posílal kód, kde byl response ze serveru obalen do "dolarů", aby bylo jasně vidět, zda tam nechodí nějaká mezera nebo zalomení na nový řádek. Odpovědi jsme se nedočkali. Na dotazy se odpovědi také nedočkáme.

Tak nechápu, k čemu to je? Vlákna jsou jen snůškou různých kódů, pokaždé s jinýma chybama. Na dotazy se neodpovídá, takže se nic nikam neposunuje. To nemá konce...

Re: Zapis hodnoty do DB

Napsal: 17 lis 2020, 10:22
od pavel1tu
Já mu psal že je to jinde, ale evidentně si z příspěvků sosne jen něco ;)
Už na něj prdím, co mu napíšeme - nevyzkouší - a každý týden jiný kod + pořád stejné chyby.

Re: Zapis hodnoty do DB

Napsal: 17 lis 2020, 21:06
od KamilV
Já ještě vytrvávám, třeba postupnými krůčky nebude na net vystavovat tak brutálně děravé "systémy".
P.S. Kony, v dnešní době, kdy každý řeší GDPR, ukládat v DB hesla klientů v plaintextu je koledování si o řádný malér.

Re: Zapis hodnoty do DB

Napsal: 19 lis 2020, 20:47
od Kony
nechapu, ja prece nikde neschovavam udaje o ucastnikach...
2 pavel1tu : snazim se vzdy prijit na reseni sam... a vzdy si z fora vezmu jen cast a pak premyslim, jak to vzdy funguje, nechci jen kopirovat texty, ale chci je pochopit, proto zkouším ruzne varianty a snazim si je vysvetlit jak to funguje