Zapis hodnoty do DB

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.
pavel1tu
Příspěvky: 1772
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zapis hodnoty do DB

Příspěvek od pavel1tu » 01 říj 2020, 13:39

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.
UNO, NANO, Mikro, PRO mini, DUE
Pavel1TU

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

Re: Zapis hodnoty do DB

Příspěvek od Kony » 14 lis 2020, 17:28

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

pavel1tu
Příspěvky: 1772
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zapis hodnoty do DB

Příspěvek od pavel1tu » 14 lis 2020, 18:23

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();
    }
}
UNO, NANO, Mikro, PRO mini, DUE
Pavel1TU

pavel1tu
Příspěvky: 1772
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zapis hodnoty do DB

Příspěvek od pavel1tu » 14 lis 2020, 18:41

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 ?
UNO, NANO, Mikro, PRO mini, DUE
Pavel1TU

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

Re: Zapis hodnoty do DB

Příspěvek od Kony » 15 lis 2020, 09:41

Ano hodnoty to v serial vypisuje spravne

pavel1tu
Příspěvky: 1772
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zapis hodnoty do DB

Příspěvek od pavel1tu » 15 lis 2020, 10:53

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
UNO, NANO, Mikro, PRO mini, DUE
Pavel1TU

KamilV
Příspěvky: 314
Registrován: 03 dub 2018, 15:27
Reputation: 1
Bydliště: Olomouc

Re: Zapis hodnoty do DB

Příspěvek od KamilV » 16 lis 2020, 21:52

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...

pavel1tu
Příspěvky: 1772
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zapis hodnoty do DB

Příspěvek od pavel1tu » 17 lis 2020, 10:22

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.
UNO, NANO, Mikro, PRO mini, DUE
Pavel1TU

KamilV
Příspěvky: 314
Registrován: 03 dub 2018, 15:27
Reputation: 1
Bydliště: Olomouc

Re: Zapis hodnoty do DB

Příspěvek od KamilV » 17 lis 2020, 21:06

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.

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

Re: Zapis hodnoty do DB

Příspěvek od Kony » 19 lis 2020, 20:47

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

Odpovědět

Kdo je online

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