Re: Zavlažovací systém
Napsal: 19 srp 2018, 14:43
Já už několik let mám domů ip stejnou, takže mám ke službám přístup i z venku. Pokud by se to zmenilo, tak dyDns a VPN.
České fórum pro všechny nadšence do Arduina a dalších technologií.
https://forum.hwkitchen.cz/
Souhlas, bezpečnost nade všerejze69 píše: ↑19 srp 2018, 08:24A ten řídící webserver je s tím arduinem v interní síti? Bál bych se mít ho vzdálený. Mám nějaké(zatím velmi hrubé plány),ale spíš zkusím cestu decentralizovaných jednotek (asi nějakých Node Mcu), které budou samy rozhodovat o své části řízení domu a z webového rozhraní budou dostávat jen parametry. Webserver bude doma. Chci použít nějakou nízkospotřebovou desku s minimálně dvěmi síťovkami (routerboard,nějaké Pi apod.) na který půjde nainstalovat debian like systém. To by mělo zajistit gateway, routování a pár služeb, které mi doma běží, plus právě webové rozhraní pro ovládání těch jednotek.
Toto jsem přehodnotil a doba se bere z nastavení v EEPROM. Navíc jsem upravil nastavování doby zálivky tak,aby se do 20ti minut nastavoval čas po minutě a přes 20min po deseti minutách. (nastavovat celých 240min po minutě je opruz a přes dvacet už na nějaké minutě nesejde )
Kód: Vybrat vše
//-----------------------------------------------------------------
//----------Nastaveni spinacich okruhu
//-----------------------------------------------------------------
void circuitSet() {
//-----nacteni promennych pro nastaveni okruhu
int q=1;
int h[3]= {EEPROM.read(21),EEPROM.read(22),EEPROM.read(23)};
int mi[3]= {EEPROM.read(31),EEPROM.read(32),EEPROM.read(33)};
int d[3]= {EEPROM.read(41),EEPROM.read(42),EEPROM.read(43)};
int dz[3]={EEPROM.read(51),EEPROM.read(52),EEPROM.read(53)};
char nastaveni [22]; //promenna pro display
switch(Set) { // (Set) prepinani polozek nastaveni, (mod) prepinani naetavovanych okruhu
case 1: //nastaveni hodin
LCD.setCursor(1,2);
h[mod-1]=(EEPROM.read(20+mod)+krok); // inkrementace nastavene hodnoty
if(h[mod-1] < 0) { // omezeni nastavovanych hodnot
h[mod-1]=0;
krok++;
}
if(h[mod-1] > 23) {
h[mod-1]=23;
krok--;
}
if(EnterFlag==true) { // po stisku enter
EEPROM.update((20+mod), h[mod-1]); // uloz nastavenou hodnotu
Set++; // prejdi na dalsi polozku
krok=0;
}
// }
break;
case 2: //nastaveni minut
LCD.setCursor(4,2);
mi[mod-1]=(EEPROM.read(30+mod)+krok);
if(mi[mod-1] < 0) {
mi[mod-1]=0;
krok++;
}
if(mi[mod-1] > 59) {
mi[mod-1]=59;
krok--;
}
if(EnterFlag==true) {
EEPROM.update((30+mod), mi[mod-1]);
Set++;
krok=0;
}
break;
case 3: //nastaveni dnu frekvence zalivky
LCD.setCursor(12,2);
d[mod-1]=(EEPROM.read(40+mod)+krok);
if(d[mod-1] < 0) {
d[mod-1]=0;
krok++;
}
if(d[mod-1] > 7) {
d[mod-1]=7;
krok--;
}
if(EnterFlag==true) {
if(mod==1 && OdlFlag==true) {
Stop24();
}
EEPROM.update((40+mod), d[mod-1]);
o[mod]=d[mod-1];
Set++;
krok=0;
}
// }
break;
case 4: //nastaveni doby zalivky
LCD.setCursor(15,2);
if(krok==0) { // kdyz krok=0
dz[mod-1]=(EEPROM.read(50+mod)); //nacti ulozenou dobu zalivky do promenne
}
if(dz[mod-1]<20){ //kdyz je nastavena doba <20
q=1; //koeficient kroku = 1
dz[mod-1]=(EEPROM.read(50+mod)+(krok*q)); //inkrementuj promennou po 1
}
if(dz[mod-1]>20) { //kdyz je nastavena doba >20
q=10; //koeficient kroku = 10
dz[mod-1]=(EEPROM.read(50+mod)+(krok*q)); //inkrementuj promennou po 10
}
//---------Osetreni kdyz je doba = 20 ---------------------------
if(EEPROM.read(50+mod)==20&&krok>0){ //kdyz se pricte nahoru
q=10; //koef = 10
dz[mod-1]=(EEPROM.read(50+mod)+(krok*q)); //inkrementuj na 30
}
if(EEPROM.read(50+mod)==20&&krok<0){ //kdyz se odecte dolu
q=1; //koef=1
dz[mod-1]=(EEPROM.read(50+mod)+(krok*q)); //Dekrementuj na 19
}
if(dz[mod-1]==20){ //kdyz je nastavovana doba = 20
EEPROM.update((50+mod), dz[mod-1]); //uloz do EEPROM
m[mod]=dz[mod-1]; //zapis hodnotu do casovace
krok=0; //vynuluj krok
}
if(dz[mod-1] < 1) { //osetreni nejnizsi hodnoty
dz[mod-1]=1;
krok++;
}
if(dz[mod-1] > 240) { //osetreni nejvyssi hodnoty
dz[mod-1]=240;
krok--;
}
if(EnterFlag==true) { //po stisku tlacitka ok
EEPROM.update((50+mod), dz[mod-1]); // uloz nastavenou dobu
m[mod]=dz[mod-1]; //zapis do casovace
krok=0; //vynuluj krok
if(mod==1) { //nastavoval se okr1
mod=2; //skoc do nastaveni okr2
Set=1; //na prvni polozku
}
else if(mod==2) { //Nastavoval se okr2
mod=3; //skoc na okr3
Set=1; //prvni polozku
}
else if(mod==3 && Set==4) { //po posledni polozce okr3
mod++; //vyskoc z rezimu nastaveni
Set=1; //priprav prvni polozku pro pristi nastaveni
}
}
break;
}
Těžko říci, ale i toto lze doma otestovat.rejze69 píše: ↑26 bře 2019, 00:09Zdravím lidi,
Jaro je tady a tak je nutné vrátit se k dílu a dokončit co jsem začal. Řeším nyní sensory a chybovou logiku. Pro snímání hladiny budu používat jak jsem psal výš indukční čidlo. Bude od arduina na cca. 15m kabelu. Mám tedy dotaz, jestli to bude uspokojivě fungovat na 5V, nebo mám použít vyšší napětí(čidlo ja do 24V) a dělič napětí a zenerovu diodu pro úpravu na 5V?
Díky za názory, případně bezpečné řešení děliče.