4way valve rules

Moderators: grovkillen, Stuntteam, TD-er

Post Reply
Message
Author
nobody@all
Normal user
Posts: 30
Joined: 09 Apr 2017, 23:27

4way valve rules

#1 Post by nobody@all » 16 Dec 2020, 16:26

Hello everyone. I have build using espeasy,arduino nano and sg90 servomotor 4way valve controller for my heating.
arduino is responsible for servo support. One pin is for open and one is for close.
On youtube i found rules for simple thermostat, I set it to my needs and it works great.
When heating -valve is opening, if the set temperature is reached, the valve closes.
I've been trying to figure out how to write the rules for two days and I can't do it.

I need it to work this way-
 heat is turn on, set to 40 degrees
 turn on GPIO12 (event Open) for 2s (the valve opens a little)
 wait 1 min
 check that the temperature is 40 degrees
 if not- turn on gpio12 (event Open) 2s (the valve opens a little more)
 wait 1 min and so on.
 up to 40 degrees
 If the temperature is above 42 degrees
 turn on GPIO13 (event Close) (the valve closes a little)
 check that the temperature is above 42 degrees
 if so, turn on gpio13 (event Close)
 
 if the temperature is between 40 and 42 degrees
 gpio12 off, gpio13 off.
 
 
My rules only for LCD and setting temperature
 

Code: Select all

on System#Boot do
   TaskValueSet 2,1,20.0
   TaskValueSet 2,2,19.5
   TaskValueSet 2,3,20.5
endon

on Up#Switch do
  if [Up#Switch]=0
  if [Local#SetTemp]<40
   TaskValueSet 2,1,[Local#SetTemp]+0.5
   TaskValueSet 2,2,[Local#SetTemp]
   TaskValueSet 2,3,[Local#SetTemp]+1
  endif
 endif
endon

on Down#Switch do
  if [Down#Switch]=0
  if [Local#SetTemp]>5
   TaskValueSet 2,1,[Local#SetTemp]-0.5
   TaskValueSet 2,2,[Local#SetTemp]-1
   TaskValueSet 2,3,[Local#SetTemp]
  endif
 endif
endon

on Ds18b20#temp do
   if [Ds18b20#temp] > [Local#TempHigh]
   event,Close
  endif
endon

  
on Ds18b20#temp do
   if [Ds18b20#temp] < [Local#TempLow]
   event,Open
  endif
endon

on Open do
   gpio,12,1
   oled,4,2,Heating -ON-
endon

on Close do
   gpio,13,1
   oled,4,2,Heating -OFF- 
endon



on SetTemp do
   TaskValueSet 2,1,%eventvalue%
   TaskValueSet 2,2,%eventvalue%-0.5
   TaskValueSet 2,3,%eventvalue%+0.5
endon

User avatar
Ath
Normal user
Posts: 3492
Joined: 10 Jun 2018, 12:06
Location: NL

Re: 4way valve rules

#2 Post by Ath » 16 Dec 2020, 20:30

The logic in the rules seems OK, but still a few remarks for improvement:

Having 2 if statements like this, and catching both the on and off state of your button seems quite inefficient:

Code: Select all

on Up#Switch do
  if [Up#Switch]=0
  if [Local#SetTemp]<40
This could be simplified to this:

Code: Select all

on Up#Switch=0 do
  if [Local#SetTemp]<40
Of course similar for the Down button.

You have a duplicate event for checking the temperature:

Code: Select all

on Ds18b20#temp do
You'd better move that into 1 event:

Code: Select all

on Ds18b20#temp do
  if [Ds18b20#temp] > [Local#TempHigh]
    event,Close
  endif
  if [Ds18b20#temp] < [Local#TempLow]
    event,Open
  endif
endon
NB: By the inconsistent spacing the code is hard to read, and thus hard to comprehend. It's much easier with the spacing/code symmetrically.
/Ton (PayPal.me)

Patou
Normal user
Posts: 106
Joined: 21 May 2018, 10:33

Re: 4way valve rules

#3 Post by Patou » 16 Dec 2020, 21:28

Hello,
For the small pulse you can use longpulse_ms
For the waiting time just a timer
See bellow Attention not tested just for info !

Patou

Code: Select all

On System#Boot do 
let,1,40  // Setpoint low 
let,2,42  // Setpoint high
let,3,1000  // Pulse time opening (msec)
let,4,1200 // Pulse time closing (msec)
let,5,60  // Wait time opening (sec)     
let,6,60   // Wait time closing (sec)
TimerSet,1,5 // no action until 5 sec after boot
TimerSet,2,5 
Gpio,12,0 active for opening
Gpio,13,0 active for closing
// Temp#°C is a task that reads the temperature
endon

On Rules#Timer=1 do
 if [Temp#°C] < %v1%  // opening
  LongPulse_mS,12,%v3%
  TimerSet,1,%v5%,
 endif
endon

On Rules#Timer=2 do
 if [Temp#°C] > %v2% // closing
   LongPulse_mS,13,%v3%
   TimerSet,2,%v6%,
 endif
endon

nobody@all
Normal user
Posts: 30
Joined: 09 Apr 2017, 23:27

Re: 4way valve rules

#4 Post by nobody@all » 20 Dec 2020, 17:27

Thanks for the code, when I read it it makes sense but it doesn't work. Only after restarting, the esp opens or closes depending on the temperature
Code after my modification (correctly set temperature reading and shorter testing time)

Code: Select all

On System#Boot do 
let,1,25  // Setpoint low 
let,2,28  // Setpoint high
let,3,1000  // Pulse time opening (msec)
let,4,1200 // Pulse time closing (msec)
let,5,20  // Wait time opening (sec)     
let,6,20   // Wait time closing (sec)
TimerSet,1,5 // no action until 5 sec after boot
TimerSet,2,5 
Gpio,12,0 active for opening
Gpio,13,0 active for closing
// Temp#°C is a task that reads the temperature
endon

On Rules#Timer=1 do
 if [Ds18b20#Temp] < %v1%  // opening
  LongPulse_mS,12,%v3%
  TimerSet,1,%v5%,
 endif
endon

On Rules#Timer=2 do
 if [Ds18b20#Temp] > %v2% // closing
   LongPulse_mS,13,%v3%
   TimerSet,2,%v6%,
 endif
endon
output serial

Code: Select all

17:15:55.399 177043 : Info  : DS   : Temperature: 23.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:15:55.426 177072 : Info  : EVENT: Ds18b20#Temp=23.50
17:15:59.576 181222 : Info  : EVENT: Clock#Time=Sun,17:16
17:16:00.020 {l^@l��|^@�d�|^C^D^D^L�^Ld�^Lb|��^C�^[�s�c�^L#��no�$gn���^Dc^\p��d{$sdp�g�^P^B^D^D�^Dl^D��^D^L^Dc^Ln�|^C$�d�^Dc��g'�^@l��d`^B�^S^[gn^Ld`^C^G^Cor���n^L^D�^Cd`^C^N{��o^D^D�^Cl ^C�s^D�p�^Dl�;^G�`^C��'�^C�bd`^Br�g^Gl�U68 : Info  : 
17:16:00.117 
17:16:00.117 ^MINIT : Booting version: mega‑20200328 (ESP82xx Core 3d128e5c, NONOS SDK 2.2.2‑dev(a58da79), LWIP: 2.1.2 PUYA support)
17:16:00.117 69 : Info  : INIT : Free RAM:33312
17:16:00.142 70 : Info  : INIT : Warm boot #3 Last Task: Background Task Last systime: 1608480960 ‑ Restart Reason: External System
17:16:00.142 71 : Info  : FS   : Mounting...
17:16:00.545 96 : Info  : FS   : Mount successful, used 76555 bytes of 957314
17:16:00.545 499 : Info  : CRC  : program checksum       ...OK
17:16:00.572 533 : Info  : CRC  : SecuritySettings CRC   ...OK 
17:16:00.660 617 : Info  : INIT : Free RAM:30632
17:16:00.660 618 : Info  : INIT : I2C
17:16:00.660 618 : Info  : INIT : SPI not enabled
17:16:01.153 1105 : Info  : INFO : Plugins: 46 [Normal] (ESP82xx Core 3d128e5c, NONOS SDK 2.2.2‑dev(a58da79), LWIP: 2.1.2 PUYA support)
17:16:01.153 1106 : Info  : EVENT: System#Wake
17:16:01.284 1247 : Info  : WIFI : Set WiFi to STA
17:16:01.476 1349 : Info  : WIFI : Connecting Orange attempt #0
17:16:01.476 1355 : Info  : Webserver: start
17:16:01.476 1356 : Info  : Time set to 1608480960.000
17:16:01.476 1357 : Info  : Current Time Zone: STD time start: 2020‑10‑25 03:00:00 offset: 60 min
17:16:01.476 1360 : Info  : Local time: 2020‑12‑20 17:16:00
17:16:01.476 1361 : Info  : EVENT: System#Boot
17:16:01.476 1368 : Info  : ACT  : let,1,25
17:16:01.476 1370 : Info  : Command: let
17:16:01.476 1374 : Info  : ACT  : let,2,28
17:16:01.476 1376 : Info  : Command: let
17:16:01.476 1379 : Info  : ACT  : let,3,1000
17:16:01.476 1380 : Info  : Command: let
17:16:01.476 1383 : Info  : ACT  : let,4,1200
17:16:01.476 1384 : Info  : Command: let
17:16:01.476 1388 : Info  : ACT  : let,5,20
17:16:01.476 1389 : Info  : Command: let
17:16:01.476 1392 : Info  : ACT  : let,6,20
17:16:01.476 1393 : Info  : Command: let
17:16:01.476 1397 : Info  : ACT  : TimerSet,1,5
17:16:01.476 1398 : Info  : Command: TimerSet
17:16:01.476 1402 : Info  : ACT  : TimerSet,2,5
17:16:01.476 1403 : Info  : Command: TimerSet
17:16:01.476 1407 : Info  : ACT  : Gpio,12,0 active for opening
17:16:01.476 1409 : Info  : Command: Gpio
17:16:01.476 1411 : Info  : SW   : GPIO 12 Set to 0
17:16:01.476 1414 : Info  : ACT  : Gpio,13,0 active for closing
17:16:01.476 1416 : Info  : Command: Gpio
17:16:01.476 1418 : Info  : SW   : GPIO 13 Set to 0
17:16:02.619 2572 : Info  : WIFI : Connected! AP: Orange (D8:A7:56:33:37:07) Ch: 11 Duration: 1085 ms
17:16:02.619 2573 : Info  : WIFI : DHCP IP: 192.168.1.28 (ESP‑Easy) GW: 192.168.1.1 SN: 255.255.255.0   duration: 71 ms
17:16:02.632 2589 : Info  : firstLoopConnectionsEstablished
17:16:02.755 2717 : Info  : EVENT: Time#Initialized
17:16:02.965 2906 : Info  : NTP  : NTP replied: delay 40 mSec Accuracy increased by 0.595 seconds
17:16:02.965 2908 : Info  : Time set to 1608480963.595 Time adjusted by 2124.13 msec. Wander: 0.59 msec/second
17:16:02.965 2911 : Info  : Local time: 2020‑12‑20 17:16:03
17:16:02.965 2913 : Info  : EVENT: Clock#Time=Sun,17:16
17:16:03.064 3023 : Info  : WD   : Uptime 0 ConnectFailures 0 FreeMem 22776 WiFiStatus 3
17:16:03.087 3044 : Info  : DS   : Temperature: 23.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:03.087 3047 : Info  : EVENT: WiFi#Connected
17:16:03.286 3147 : Info  : EVENT: Time#Set
17:16:03.286 3248 : Info  : EVENT: Ds18b20#Temp=23.50
17:16:07.260 7221 : Info  : EVENT: Rules#Timer=1
17:16:07.332 7275 : Info  : ACT  : LongPulse_mS,12,1000.00
17:16:07.332 7277 : Info  : Command: LongPulse_mS
17:16:07.332 7279 : Info  : SW   : GPIO 12 Pulse set for 0 msec
17:16:07.332 7285 : Info  : ACT  : TimerSet,1,20.00,
17:16:07.332 7286 : Info  : Command: TimerSet
17:16:07.332 7292 : Info  : EVENT: Rules#Timer=2
17:16:07.979 7939 : Info  : DS   : Temperature: 23.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:07.987 7948 : Info  : EVENT: Ds18b20#Temp=23.50
17:16:13.101 13057 : Info  : DS   : Temperature: 23.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:13.101 13061 : Info  : EVENT: Ds18b20#Temp=23.50
17:16:18.217 18176 : Info  : DS   : Temperature: 23.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:18.286 18247 : Info  : EVENT: Ds18b20#Temp=23.50
17:16:23.352 23297 : Info  : DS   : Temperature: 26.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:23.386 23347 : Info  : EVENT: Ds18b20#Temp=26.50
17:16:28.261 28221 : Info  : EVENT: Rules#Timer=1
17:16:28.464 28423 : Info  : DS   : Temperature: 28.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:28.487 28447 : Info  : EVENT: Ds18b20#Temp=28.50
17:16:32.832 32790 : Info  : WD   : Uptime 1 ConnectFailures 0 FreeMem 22128 WiFiStatus 3
17:16:33.588 33542 : Info  : DS   : Temperature: 29.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:33.588 33547 : Info  : EVENT: Ds18b20#Temp=29.50
17:16:38.707 38662 : Info  : DS   : Temperature: 29.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:38.707 38665 : Info  : EVENT: Ds18b20#Temp=29.50
17:16:43.852 43811 : Info  : DS   : Temperature: 30.00 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:43.886 43848 : Info  : EVENT: Ds18b20#Temp=30.00
17:16:48.967 48926 : Info  : DS   : Temperature: 30.00 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:48.986 48947 : Info  : EVENT: Ds18b20#Temp=30.00
17:16:54.090 54046 : Info  : DS   : Temperature: 30.00 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:54.090 54049 : Info  : EVENT: Ds18b20#Temp=30.00
17:16:59.206 59164 : Info  : DS   : Temperature: 30.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:16:59.287 59248 : Info  : EVENT: Ds18b20#Temp=30.50
17:17:00.300 s$^@l��<^@�l�|^C^L^D^L�^Dl�^L#|��^C�^S�s�#�^Dc��'o�dg'���^Dc^\p��dsdrd8�g�^P^C^L^D�^D$^L��^D^D^Lb^L'�|^Cd�d�^Lb��og�^@l��l`^C�^R^[o'^Dl`^C^G^Co;Ǜ�'^D^L�^Cd`^C^G{ۓo^L^D�^C$`^C�;^D�p�^Dl�{^O�`^C��g�^C�bd`^Br�g^Gl�U68 : Info  : 
17:17:00.397 
17:17:00.397 ^MINIT : Booting version: mega‑20200328 (ESP82xx Core 3d128e5c, NONOS SDK 2.2.2‑dev(a58da79), LWIP: 2.1.2 PUYA support)
17:17:00.397 69 : Info  : INIT : Free RAM:33312
17:17:00.422 70 : Info  : INIT : Warm boot #4 Last Task: Background Task Last systime: 1608481019 ‑ Restart Reason: External System
17:17:00.422 71 : Info  : FS   : Mounting...
17:17:00.825 97 : Info  : FS   : Mount successful, used 76555 bytes of 957314
17:17:00.825 500 : Info  : CRC  : program checksum       ...OK
17:17:00.852 533 : Info  : CRC  : SecuritySettings CRC   ...OK 
17:17:00.941 618 : Info  : INIT : Free RAM:30632
17:17:00.941 619 : Info  : INIT : I2C
17:17:00.941 619 : Info  : INIT : SPI not enabled
17:17:01.433 1105 : Info  : INFO : Plugins: 46 [Normal] (ESP82xx Core 3d128e5c, NONOS SDK 2.2.2‑dev(a58da79), LWIP: 2.1.2 PUYA support)
17:17:01.433 1106 : Info  : EVENT: System#Wake
17:17:01.565 1247 : Info  : WIFI : Set WiFi to STA
17:17:01.756 1350 : Info  : WIFI : Connecting Orange attempt #0
17:17:01.756 1356 : Info  : Webserver: start
17:17:01.756 1356 : Info  : Time set to 1608481019.000
17:17:01.756 1358 : Info  : Current Time Zone: STD time start: 2020‑10‑25 03:00:00 offset: 60 min
17:17:01.756 1361 : Info  : Local time: 2020‑12‑20 17:16:59
17:17:01.756 1362 : Info  : EVENT: System#Boot
17:17:01.756 1369 : Info  : ACT  : let,1,25
17:17:01.756 1370 : Info  : Command: let
17:17:01.756 1373 : Info  : ACT  : let,2,28
17:17:01.756 1374 : Info  : Command: let
17:17:01.756 1377 : Info  : ACT  : let,3,1000
17:17:01.756 1379 : Info  : Command: let
17:17:01.756 1383 : Info  : ACT  : let,4,1200
17:17:01.756 1384 : Info  : Command: let
17:17:01.756 1388 : Info  : ACT  : let,5,20
17:17:01.756 1389 : Info  : Command: let
17:17:01.756 1392 : Info  : ACT  : let,6,20
17:17:01.756 1394 : Info  : Command: let
17:17:01.756 1397 : Info  : ACT  : TimerSet,1,5
17:17:01.756 1398 : Info  : Command: TimerSet
17:17:01.756 1401 : Info  : ACT  : TimerSet,2,5
17:17:01.756 1403 : Info  : Command: TimerSet
17:17:01.756 1406 : Info  : ACT  : Gpio,12,0 active for opening
17:17:01.756 1409 : Info  : Command: Gpio
17:17:01.756 1411 : Info  : SW   : GPIO 12 Set to 0
17:17:01.756 1416 : Info  : ACT  : Gpio,13,0 active for closing
17:17:01.756 1418 : Info  : Command: Gpio
17:17:01.756 1420 : Info  : SW   : GPIO 13 Set to 0
17:17:03.011 2684 : Info  : WIFI : Connected! AP: Orange (D8:A7:56:33:37:07) Ch: 11 Duration: 1125 ms
17:17:03.011 2686 : Info  : WIFI : DHCP IP: 192.168.1.28 (ESP‑Easy) GW: 192.168.1.1 SN: 255.255.255.0   duration: 85 ms
17:17:03.046 2702 : Info  : firstLoopConnectionsEstablished
17:17:03.053 2735 : Info  : EVENT: Time#Initialized
17:17:03.259 2921 : Info  : NTP  : NTP replied: delay 40 mSec Accuracy increased by 0.891 seconds
17:17:03.259 2923 : Info  : Time set to 1608481023.891 Time adjusted by 3402.11 msec. Wander: 0.95 msec/second
17:17:03.259 2926 : Info  : Local time: 2020‑12‑20 17:17:03
17:17:03.259 2928 : Info  : EVENT: Clock#Time=Sun,17:17
17:17:03.359 3038 : Info  : WD   : Uptime 0 ConnectFailures 0 FreeMem 22776 WiFiStatus 3
17:17:03.383 3060 : Info  : DS   : Temperature: 30.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:17:03.383 3065 : Info  : EVENT: WiFi#Connected
17:17:03.582 3164 : Info  : EVENT: Time#Set
17:17:03.582 3264 : Info  : EVENT: Ds18b20#Temp=30.50
17:17:07.540 7222 : Info  : EVENT: Rules#Timer=1
17:17:07.604 7286 : Info  : EVENT: Rules#Timer=2
17:17:07.674 7341 : Info  : ACT  : LongPulse_mS,13,1000.00
17:17:07.674 7344 : Info  : Command: LongPulse_mS
17:17:07.674 7347 : Info  : SW   : GPIO 13 Pulse set for 0 msec
17:17:07.674 7353 : Info  : ACT  : TimerSet,2,20.00,
17:17:07.674 7354 : Info  : Command: TimerSet
17:17:08.276 7956 : Info  : DS   : Temperature: 30.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:17:08.283 7964 : Info  : EVENT: Ds18b20#Temp=30.50
17:17:13.398 13075 : Info  : DS   : Temperature: 30.50 (28‑57‑64‑79‑a2‑0‑3‑74)
17:17:13.398 13079 : Info  : EVENT: Ds18b20#Temp=30.50
17:17:16.021 Connection lost

Patou
Normal user
Posts: 106
Joined: 21 May 2018, 10:33

Re: 4way valve rules

#5 Post by Patou » 21 Dec 2020, 12:33

Nice that you understand the principle and could adapt to your application
Have good fun now....

nobody@all
Normal user
Posts: 30
Joined: 09 Apr 2017, 23:27

Re: 4way valve rules

#6 Post by nobody@all » 23 Dec 2020, 18:21

For 3 days I have been trying to come up with something from this code but unfortunately I can't. I need a hint, not a ready-made solution.
Do I need config devices in Devices? I have only 2 devices: oled and ds18b20 named out and values temp
What do I understand:
On System#Boot do
let,1,40 // Setpoint low OK
let,2,42 // Setpoint high OK
let,3,1000 // Pulse time opening (msec) OK
let,4,1200 // Pulse time closing (msec) OK
let,5,60 // Wait time opening (sec) OK
let,6,60 // Wait time closing (sec) OK
TimerSet,1,5 // no action until 5 sec after boot OK

TimerSet,2,5 // is this for rules to close section? after elapse rules to open wait 5s and check next rules?
Gpio,12,0 //active for opening
Gpio,13,0 //active for closing
// ds18b20#temp is a task that reads the temperature?is it correct in rules?
endon

On Rules#Timer=1 do //after boot if timer1,5 elapse
if [ds18b20#temp] < %v1% // if temperature readed from ds18b20 is smaller then let1=40deg
LongPulse_mS,12,%v3% //turn gpio 12 to what? shouldn't be yet 12,0,%v3% (for 10s) after 10s elapse
TimerSet,1,%v5%, //set timer1 (why timer1 - it is set for boot up for 5s)
endif
endon


On Rules#Timer=2 do //after end of rules to open go to closing section?
if [ds18b20#temp] > %v2% // closing
LongPulse_mS,13,%v3% //turn gpio 13 to what? shouldn't be yet 13,0,%v4% (for 12s) after 12s elapse
TimerSet,2,%v6%, //shouldn't be here TimerSet,3 ??
endif
endon

Patou
Normal user
Posts: 106
Joined: 21 May 2018, 10:33

Re: 4way valve rules

#7 Post by Patou » 24 Dec 2020, 12:14

Hello
There was a mistake in my previous code
Here is the correction This should run OK
The timer reset line must be out of the if/endif part !!!
Have happy christmas
Patou

Code: Select all

On System#Boot do 
let,1,40  // Setpoint low 
let,2,42  // Setpoint high
let,3,1000  // Pulse time opening (msec)
let,4,1200 // Pulse time closing (msec)
let,5,60  // Wait time opening (sec)     
let,6,60   // Wait time closing (sec)
let,7,25  // Setpoint max
Gpio,0,0 // vanne off
TimerSet,1,5 // no action until 5 sec after boot
TimerSet,2,5 
Gpio,12,0 //active for opening
Gpio,13,0 //active for closing
// Temp#°C is a task that reads the temperature
endon


// This will run 5 sec after boot and every %v5% seconds checking if your set temperature is bellow %v1% and make gpio,12 high for %v3% milliseconds 
On Rules#Timer=1 do 
 if [Temp#°C] < %v1%  // opening
  LongPulse_mS,12,%v3%
 endif
TimerSet,1,%v5% // reset timer
endon

On Rules#Timer=2 do
 if [Temp#°C] > %v2% // closing
   LongPulse_mS,13,%v3%
 endif
TimerSet,2,%v6%
endon
 
// If the wait time is the same for opening and closing the valve then you can make it more simple

On Rules#Timer=1 do 
 if [Temp#°C] < %v1%  // opening
  LongPulse_mS,12,%v3%
 elseif [Temp#°C] > %v2% // closing
   LongPulse_mS,13,%v4%
 endif
TimerSet,1,%v5% // reset timer
endon

Post Reply

Who is online

Users browsing this forum: No registered users and 56 guests