riadenie kurenia cez web
Príspevkov: 11
• Stránka 1 z 1
riadenie kurenia cez web
Zdravim pokusam sa vytvorit riadenie el.vykurovania na dialku ale narazil som na problem ako dostat z retazca samotne cislo teda nastavenu teplotu a toto cislo ulozit do premennej aby som mohol premennu dalej pouzivat
Ďakujem mozno budem potrebovat do buducna viac rad
- Kód: Vybrať všetko
//citanie nastavenej teploty
Serial.println("Citam nastavenu teplotu A");
readString = "TziadA";//aka je nastavana teplotaA
if ( exosite.writeRead(writeString ,readString, returnString)){
Serial.println("OK");
Serial.print("Nastavena teplotu A je: ");
Serial.println(returnString);//vrati sa mi hodnota TziadA=23
//int TziadA =?????/tu chcem dosadit len to cislo co sa mi vrati z webu
}else{
Serial.println("Nepodarilo sa nacitat teplotu A");
}
Ďakujem mozno budem potrebovat do buducna viac rad

Re: riadenie kurenia cez web
toto Ti urcite pomoze
int TziadA =atoi(returnString);
http://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm
int TziadA =atoi(returnString);
http://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm
Re: riadenie kurenia cez web
Nepomohlo
vyhadzuje chybu
EXOSITE_TERMOSTAT_1_1:110: error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)' navod moc nepomohol spanielska dedina pre mna
Tu je pre istotu cely kod ktrory som zatial splodil

EXOSITE_TERMOSTAT_1_1:110: error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)' navod moc nepomohol spanielska dedina pre mna

- Kód: Vybrať všetko
#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Exosite.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONEWIRE 7 //pin to use for One Wire interface
//String cikData = "0000000000000000000000000000000000000000"; // <-- Fill in your CIK here! (https://portals.exosite.com -> Add Device)
byte macData[] = {0x22, 0xA5, 0x0B, 0xC3, 0xDC, 0xAC}; // <-- Fill in your Ethernet shield's MAC address here.
char unique_id[11] = "0052B50884"; //JEDINECNY IDENTIFIKATOR NA EXOSITE
String readString;
String writeString;
String returnString;
String readParam ;
String writeParam ;
char buffer[7];
float TskutA ;//namerana teplota
int TziadA;//pozadovana teplota
int TstavA;//stav kurenia kuri-nekuri
int TvipA;//vypinac konvektora
int ReleA=2;//rele konvektora
//int atoi(const char *str);
OneWire oneWire(ONEWIRE);
DallasTemperature sensors(&oneWire);
//ADRESY CIDIEL DALAS
/*DeviceAddress T0 = { 0x28, 0xB8, 0xFA, 0x85, 0x04, 0x00, 0x00, 0x65 };
DeviceAddress T1 = { 0x28 ,0xFF, 0x67, 0x27, 0x53, 0x04, 0x00, 0x5A };
DeviceAddress T2 = { 0x28, 0x74, 0x4F, 0xC3, 0x04, 0x00, 0x00, 0xF3 };
DeviceAddress T3 = { 0x28, 0xFF, 0x04, 0x91, 0x74, 0x04, 0x00, 0x73 };
DeviceAddress T4 = { 0x28, 0x6A, 0x3B, 0xC3, 0x04, 0x00, 0x00, 0xC9 };
DeviceAddress T5 = { 0x28, 0x56, 0x3C, 0xB0, 0x06, 0x00, 0x00, 0x67 };
DeviceAddress T6 = { 0x28, 0x7A, 0x0D, 0xD4, 0x04, 0x00, 0x00, 0x34 };
DeviceAddress T7 = { 0x28, 0xF5, 0x08, 0x86, 0x04, 0x00, 0x00, 0xF7 };*/
EthernetClient client;
//Exosite exosite(cikData, &client);//ked používam CIK
Exosite exosite(&client);//ked pouzivam ID
void setup(){
Serial.begin(115200);
Serial.println("Priprava");
pinMode(ReleA, OUTPUT);
Ethernet.begin(macData);
// wait 3 seconds for connection:
delay(3000);
}
void loop(){
Serial.println("Nacitanie hodnot z teplotnych senzorov...");
sensors.requestTemperatures(); // nacitanie teplot zo snimacov ds18b20
//TskutA = sensors.getTempC(T0);
TskutA = sensors.getTempCByIndex(0);
Serial.print("Teplota TskutA :");
Serial.print(TskutA);
Serial.println(" C");
Serial.println("Posielam teplotu A na Exosite portal...");
//teplotaA
readParam = ""; //nothing to read back at this time e.g. 'control&status' if you wanted to read those data sources
writeParam = "TskutA="; //parameters to write e.g. 'temp=65.54' or 'temp=65.54&status=on'
String TskutAvalue = dtostrf(TskutA, 1, 2, buffer); // convert float to String, minimum size = 1, decimal places = 2
writeParam += TskutAvalue; //add converted temperature String value
if ( exosite.writeRead(writeParam, readParam, returnString)) {
Serial.println("Exosite OK");
if (returnString != "") {
Serial.println("Teplota A odoslana");
}
}
else {
Serial.println("Exosite chyba Teplota A neodoslana");
}
delay(1000);
//citanie stavu vypinača
Serial.println("Citam stav vypinaca A");
readString = "TvipA";
if ( exosite.writeRead(writeString, readString, returnString)){
Serial.println("OK");
Serial.print("Stav vypinaca A je: ");
Serial.println(returnString);
}else{
Serial.println("Error");
}
if (returnString == "TvipA=1"){
TvipA=1;
}else{
TvipA=0;
}
returnString = "" ;
delay(1000);
//citanie nastavenej teploty
Serial.println("Citam nastavenu teplotu A");
readString = "TziadA";//aka je nastavana teplotaA
if ( exosite.writeRead(writeString ,readString, returnString)){
Serial.println("OK");
Serial.print("Nastavena teplotu A je: ");
Serial.println(returnString);//vypis na seriovom porte TziadA=23
TziadA =atoi(returnString);
}else{
Serial.println("Nepodarilo sa nacitat teplotu A");
}
//zapínanie spotrebiča
digitalWrite(ReleA, TvipA);
Serial.println("pauza 5 sec");
delay(5000);
Serial.println(TvipA);
Serial.println(TziadA);
}
Re: riadenie kurenia cez web
speko2 píše: navod moc nepomohol spanielska dedina pre mna![]()
Neboj, aj pre mna. Takze kedze pouzivas premennu typu object String. Tak potom takto:
int TziadA = returnString.toInt();
https://www.arduino.cc/en/Reference/StringToInt
Re: riadenie kurenia cez web
barado píše:int TziadA = returnString.toInt();
Toto som hned skusal ale vysledok prevodu je stale Tziad == 0
- Kód: Vybrať všetko
String returnString ="Tziad=55";
int TziadA;
void setup() {
Serial.begin(115200);
Serial.println("String toInt():");
Serial.println();
}
void loop() {
TziadA = returnString.toInt();
Serial.println(TziadA);
delay(7000);
}
vysledok nula cakal som 55
ako tu 55 odtial dostanem

Naposledy upravil speko2 dňa Uto 16. Feb 2016 14:11:28, celkovo upravené 1
Re: riadenie kurenia cez web
speko2 píše: //citanie nastavenej teploty
Serial.println("Citam nastavenu teplotu A");
readString = "TziadA";//aka je nastavana teplotaA
if ( exosite.writeRead(writeString ,readString, returnString)){
Serial.println("OK");
Serial.print("Nastavena teplotu A je: ");
Serial.println(returnString);//vypis na seriovom porte TziadA=23
[/code]
Aha ...
Takze v tomto pripade pouzi najskor toto:
https://www.arduino.cc/en/Reference/StringSubstring
a potom az toto:
https://www.arduino.cc/en/Reference/StringToInt
A preco??
Prehliadol som to, ze z tej stranky Ti vracia spat cely String v tvare "TziadA=23" a kedze:
toInt()
Description
Converts a valid String to an integer. The input string should start with an integer number. If the string contains non-integer numbers, the function will stop performing the conversion.
V preklade ak String obsahuje aj nenumericke znaky, tak funkcia zastavi konverziu na int ...
Re: riadenie kurenia cez web
Funguje vdaka za pomoc

- Kód: Vybrať všetko
String returnString ="TziadA=55";
int TziadA;
void setup() {
Serial.begin(115200);
Serial.println("String toInt():");
Serial.println();
}
void loop() {
String hodnota = returnString.substring(7);
TziadA= hodnota.toInt();
Serial.println(TziadA);
delay(7000);
}
Re: riadenie kurenia cez web
Tu je ukážka z môjho už skoro dokončeného projektu.
https://youtu.be/MJiV8y69iUU
https://youtu.be/MJiV8y69iUU
Re: riadenie kurenia cez web
to vypadá dost dobře. Jednoduché a funkční.
Nezkoušel jsi i něco jiného než Exosite pro webovou vizualizaci, případně nějáké zkušenosti s tím?
Nezkoušel jsi i něco jiného než Exosite pro webovou vizualizaci, případně nějáké zkušenosti s tím?
Re: riadenie kurenia cez web
Nie neskúšal len som letmo pozrel na /Plotly,Phant,Thingspeak,IBM Bluemix/ ale Exosite je asi najjednoduchšie a existuje aj knižnica skôr ma to ťahá vytvoriť vlastnú stránku a vlastný server ale php... mi moc nejde musím ešte hodne čítať 

Re: riadenie kurenia cez web
ok díky za info ... snad jednou 
Teď chci zkusit vyřešit týdenní termostat přes www stránku generovanou samotným arduinem.
Zkoušel jsem si udělat stránku klsicky a má 15kb jen jako klikačka do pole 24h/7dní.
Takže budu muset zkusit generovat html kod přes stav arduina ... to jsem celý já, proč využít prostro na sd kartě když si to můžu zkomplikovat

Teď chci zkusit vyřešit týdenní termostat přes www stránku generovanou samotným arduinem.
Zkoušel jsem si udělat stránku klsicky a má 15kb jen jako klikačka do pole 24h/7dní.
Takže budu muset zkusit generovat html kod přes stav arduina ... to jsem celý já, proč využít prostro na sd kartě když si to můžu zkomplikovat

Príspevkov: 11
• Stránka 1 z 1