misc old changes

This commit is contained in:
Dobromir Popov
2021-04-30 18:28:22 +03:00
parent f871b492a4
commit 1d31789be0
12 changed files with 251 additions and 23 deletions

49
apache.conf Normal file
View File

@@ -0,0 +1,49 @@
# <IfModule mod_ssl.c>
# <VirtualHost *:443>
# ServerName iot.d-popov.com
# SSLProxyEngine on
# #SSLEngine on
# #KeepAliveEnabled ON
# #SSLCipherSuite HIGH:MEDIUM
# #SSLProtocol all
# #SecureProxy ON
# # first deny access to everything
# <Location />
# Order Deny,Allow
# Deny from All
# </Location>
# ProxyPreserveHost On
# #ProxyPass /n https://localhost:8443
# #ProxyPassReverse /n https://localhost:8443
# <Location /n>
# Order Allow,Deny
# Allow from All
# ProxyPass https://127.0.0.1:8443
# ProxyPassReverse https://127.0.0.1:8443
# </Location>
# #<Location />
# # ProxyPass http://127.0.0.1:8443
# # ProxyPassReverse http://127.0.0.1:8443
# #</Location>
# SSLCertificateFile /etc/letsencrypt/live/iot.d-popov.com-0001/fullchain.pem
# SSLCertificateKeyFile /etc/letsencrypt/live/iot.d-popov.com-0001/privkey.pem
# Include /etc/letsencrypt/options-ssl-apache.conf
# </VirtualHost>
# </IfModule>
# # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
# <mntent>
# <uuid>3b32d635-48a9-42ee-b084-bc5f15279964</uuid>
# <fsname>/srv/dev-disk-by-id-usb-Seagate_Expansion_NAADR4MD-0-0-part2/NAS/</fsname>
# <dir>/export/NAS</dir>
# <type>none</type>
# <opts>bind,nofail</opts>
# <freq>0</freq>
# <passno>0</passno>
# <hidden>0</hidden>
# </mntent>

31
cert/cert.pem Normal file
View File

@@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFVTCCBD2gAwIBAgISA/f8DccDhb4V1WXm4rXp6B88MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA3MTgxNTM0MjJaFw0y
MDEwMTYxNTM0MjJaMBoxGDAWBgNVBAMTD2lvdC5kLXBvcG92LmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKliScJvzjO1A8il5xC4PmEXVOmcviVI
4NWwrIztxPeW6QudcrBl4qKLTdPDMp11QOvH0qJmv73i45DyTwB9qCh/mvdrO3Nx
M5MAMWBU0sgT4z4xqtrSWRRlABpUUk9isGOMD8Zqb92xdLoppk+rYAWYOn8U0pYf
4MaI1z7dnFjRiPPGve6anja9p3kTQ/9d/t7SDuJsDMm0d/RigfN++gFcZFK8IGKH
zxLOjO1hLy4hkl6yrYE/WhlSQm0AeYup7lDGvp4ZPNSxvhrKfX9UG6sBofZXz53B
6sDr5mIOgfoK7rSb/+t11CXkQnlt+wR5EqXEfagII8744oppeUXoKoUCAwEAAaOC
AmMwggJfMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
BQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUiFwZMcZ8HyoMOcW8PlzYv17c
eb4wHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEE
YzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQu
b3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQu
b3JnLzAaBgNVHREEEzARgg9pb3QuZC1wb3Bvdi5jb20wTAYDVR0gBEUwQzAIBgZn
gQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5s
ZXRzZW5jcnlwdC5vcmcwggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdQBep3P531bA
57U2SH3QSeAyepGaDIShEhKEGHWWgXFFWAAAAXNixssmAAAEAwBGMEQCIBa2tmYh
bx1q1LIXd2v350BJNXFJq5NHvFiLdTRwl2zHAiBTSJsdkGFk+TQ8xsbk+IPlr1vN
drIx5xx5+bvUvY4M/AB2AAe3XBvlfWj/8bDGHSMVx7rmV3xXlLdq7rxhOhpp06Ic
AAABc2LGy0wAAAQDAEcwRQIgfSyqYqIg7DpBwxwhze0fMUT+yzt2MABgA/jmZO74
P9wCIQDu5fha74CHOXKpDLoZs5w6+nV4sl+CLVaIDKVm3RTetDANBgkqhkiG9w0B
AQsFAAOCAQEASvVZkOgnAV7eLWwrpzZ46XKEFQYDBlvQf1KgqzKccPiXo48LSJ+D
TVrlncW4uYfi6Z4RigbjaP2zXyX8zJT4mUH+E5MGAGgPCn4tmyZ7Ppwgb4I6n06z
8yLHf/IChIURE3blIaYmtPH+JiK7e1zeyXhG/kfUhRJCJ96eQUdxXIac2qcQuvyG
tMbet3j4/yE1mLQ/aU0SsUGSh7q3BWNs3SI9DgxjKwwHoGSugQ5v97t761MyCLZo
lO72+SkU6I8Bt4+lTL5POaQKbuMiF6rac+spUksMuF0KR9pERHlVcT03nn+AMatG
lb2J3pVMsmMsdcAikG42tSMtevTI9uQdbg==
-----END CERTIFICATE-----

27
cert/chain.pem Normal file
View File

@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----

58
cert/fullchain.pem Normal file
View File

@@ -0,0 +1,58 @@
-----BEGIN CERTIFICATE-----
MIIFVTCCBD2gAwIBAgISA/f8DccDhb4V1WXm4rXp6B88MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA3MTgxNTM0MjJaFw0y
MDEwMTYxNTM0MjJaMBoxGDAWBgNVBAMTD2lvdC5kLXBvcG92LmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKliScJvzjO1A8il5xC4PmEXVOmcviVI
4NWwrIztxPeW6QudcrBl4qKLTdPDMp11QOvH0qJmv73i45DyTwB9qCh/mvdrO3Nx
M5MAMWBU0sgT4z4xqtrSWRRlABpUUk9isGOMD8Zqb92xdLoppk+rYAWYOn8U0pYf
4MaI1z7dnFjRiPPGve6anja9p3kTQ/9d/t7SDuJsDMm0d/RigfN++gFcZFK8IGKH
zxLOjO1hLy4hkl6yrYE/WhlSQm0AeYup7lDGvp4ZPNSxvhrKfX9UG6sBofZXz53B
6sDr5mIOgfoK7rSb/+t11CXkQnlt+wR5EqXEfagII8744oppeUXoKoUCAwEAAaOC
AmMwggJfMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
BQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUiFwZMcZ8HyoMOcW8PlzYv17c
eb4wHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEE
YzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQu
b3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQu
b3JnLzAaBgNVHREEEzARgg9pb3QuZC1wb3Bvdi5jb20wTAYDVR0gBEUwQzAIBgZn
gQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5s
ZXRzZW5jcnlwdC5vcmcwggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdQBep3P531bA
57U2SH3QSeAyepGaDIShEhKEGHWWgXFFWAAAAXNixssmAAAEAwBGMEQCIBa2tmYh
bx1q1LIXd2v350BJNXFJq5NHvFiLdTRwl2zHAiBTSJsdkGFk+TQ8xsbk+IPlr1vN
drIx5xx5+bvUvY4M/AB2AAe3XBvlfWj/8bDGHSMVx7rmV3xXlLdq7rxhOhpp06Ic
AAABc2LGy0wAAAQDAEcwRQIgfSyqYqIg7DpBwxwhze0fMUT+yzt2MABgA/jmZO74
P9wCIQDu5fha74CHOXKpDLoZs5w6+nV4sl+CLVaIDKVm3RTetDANBgkqhkiG9w0B
AQsFAAOCAQEASvVZkOgnAV7eLWwrpzZ46XKEFQYDBlvQf1KgqzKccPiXo48LSJ+D
TVrlncW4uYfi6Z4RigbjaP2zXyX8zJT4mUH+E5MGAGgPCn4tmyZ7Ppwgb4I6n06z
8yLHf/IChIURE3blIaYmtPH+JiK7e1zeyXhG/kfUhRJCJ96eQUdxXIac2qcQuvyG
tMbet3j4/yE1mLQ/aU0SsUGSh7q3BWNs3SI9DgxjKwwHoGSugQ5v97t761MyCLZo
lO72+SkU6I8Bt4+lTL5POaQKbuMiF6rac+spUksMuF0KR9pERHlVcT03nn+AMatG
lb2J3pVMsmMsdcAikG42tSMtevTI9uQdbg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----

28
cert/privkey.pem Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpYknCb84ztQPI
pecQuD5hF1TpnL4lSODVsKyM7cT3lukLnXKwZeKii03TwzKddUDrx9KiZr+94uOQ
8k8Afagof5r3aztzcTOTADFgVNLIE+M+Mara0lkUZQAaVFJPYrBjjA/Gam/dsXS6
KaZPq2AFmDp/FNKWH+DGiNc+3ZxY0Yjzxr3ump42vad5E0P/Xf7e0g7ibAzJtHf0
YoHzfvoBXGRSvCBih88SzoztYS8uIZJesq2BP1oZUkJtAHmLqe5Qxr6eGTzUsb4a
yn1/VBurAaH2V8+dwerA6+ZiDoH6Cu60m//rddQl5EJ5bfsEeRKlxH2oCCPO+OKK
aXlF6CqFAgMBAAECggEAD1gxGGUqh/KhCh9FZHVcaU1EyvkBHL2SaKldqFKt4kQQ
jpXP2v0P3+vAvCtVvX/uxq1OfpnSSvBv7ySUVZYMksakkj9rnlSl+G4vCuwEQE3U
60BymuotWbSgosH6xuhI1GvOzgm8Ypf93BOD1nnO9BLLUdHgFeuDYFjrLu3CiSUk
hYIfIoleZ0xHIM+DDjn2N25syI1znFGWEqrmPiQL5nxAjR4wfTy7idpXhtuUGTTB
husHpAjz0DK7NGoKnMm7oK29JLzVkJBlpPNCnQoaBaD9TiAAu/iKCZLGDtqg+KGl
bEasdCqv2BIau6lcVRzaRrZeVXyka4X/RqNCs6QBTQKBgQDWOmIIi8Zdn6yVx0Jq
m3LY8jDBjn99VIDxRvCi0uvAeTsIXB/XgDT3o9SfbkzMyJa/z7oqkfv3hoEoY8Jz
h0ROG88TBlu+YMpDZT8Ufm3M+3C0OfCvTo3dvlb77n6i9C+OTnUm0vjMNYvaZCHo
JNuiev92++BoW+IL1TOLjtehfwKBgQDKaWwY66AUlF0oEdu4lnQpnZuO08NUyD2k
a0H4Q55kEVRpOmfIPY4C1FruF2p+6Gp+k25gOH9e5uBONE7WxAE50trfyjDeVUqE
Agrj1nt/dypZs7j5EmSlY6bThybW/c9jE2bDPbHD/jtlSl+FVcwepaHWr9JGBzrE
DYoKOKat+wKBgAEeMODGifR3HtlxPsF7qi/Do8l+yt+Gj12y9xKCc0R/3XT/thLT
0nLwYe2rD6+J5G9/0ALk3CHAi/AABUXBEPQvZPc+c0AdFTEg2CFtP3lwXngyTTU8
/bSIh7+s0PBcwdrGQgo/05iNNvuexiaF+rdwWODwE4233QgexrQVvL5VAoGAduhf
nHQvYmeWIkf7cADS1O/Fxq4YfeH0dHaeFp6Cmf6kO/0XosamensNv/j5kvwuM5Wg
rd4C1VmEQ+zus7QJlFKOShGZi8NHNy2MADSr8EGtG209KPTpM0/LXVB0PLB1+JoZ
MHE50Q21DtgWLVotw4NCA8DeIk109F+PzFljcakCgYEAyJurxXhBP1LR5jOLPin0
zqY5TMT6A9WmVbec1g0XspCI5TYAaINbDyjtbJV/zyXxLip4L7g/9lUgQy8JT8GV
Y1okdsoFKUtNxokfVl96Pe4Gw4NVUCmS1i6e2bxBo08E0dHlfmryTHQ7lAqHKtdn
Ph4vjN86b+Sy2oFT8aK+csk=
-----END PRIVATE KEY-----

24
dht.js
View File

@@ -1,7 +1,5 @@
// ./src/index.js // ./src/index.js
var GardenIP = '192.168.1.133'; var config = require('./src/setup_const');
var AcIP = '192.168.1.143';
var HouseDhtIP = '192.168.1.126';
// importing the dependencies // importing the dependencies
const util = require('util'); const util = require('util');
@@ -22,11 +20,13 @@ var fs = require("fs");
var http = require('http'); var http = require('http');
var https = require('https'); var https = require('https');
try{ try{
var SECURE_KEY = "/etc/letsencrypt/live/iot.d-popov.com/privkey.pem"; //__dirname + '/../../test/secure/tls-key.pem'; var CERT_ROOT = "/etc/letsencrypt/live/iot.d-popov.com-0003";
var SECURE_CERT = "/etc/letsencrypt/live/iot.d-popov.com/cert.pem"; var SECURE_KEY = CERT_ROOT+ "/privkey.pem"; //__dirname + '/../../test/secure/tls-key.pem';
var SECURE_CERT = CERT_ROOT+ "/cert.pem";
var _privateKey = fs.readFileSync(SECURE_KEY, 'utf8'); var _privateKey = fs.readFileSync(SECURE_KEY, 'utf8');
var _certificate = fs.readFileSync(SECURE_CERT, 'utf8'); var _certificate = fs.readFileSync(SECURE_CERT, 'utf8');
var credentials = {key: _privateKey, cert: _certificate}; var _ca = fs.readFileSync(CERT_ROOT+ "/chain.pem", 'utf8');
var credentials = {key: _privateKey, cert: _certificate, ca:_ca};
}catch(ex){console.log("can't load certificates.");} }catch(ex){console.log("can't load certificates.");}
@@ -99,7 +99,7 @@ function(req, res){
function(req, res){ function(req, res){
res.render('chart', { user: req.user }); res.render('chart', { user: req.user });
}); });
app.get('/garden', function(req, res){ res.render('chartGarden'); }); app.get('/garden/:days?', function(req, res){ res.render('chartGarden', {model:req.params}); });
//Authentication -- //Authentication --
@@ -119,13 +119,13 @@ app.use('/waterTest',function(req, res){
app.use('/water',function(req, res){ app.use('/water',function(req, res){
var time = req.query.t; var time = req.query.t;
console.log("Watering cmd for: " + time); console.log("Watering cmd for: " + time);
request('http://'+GardenIP+'/control?cmd=event,manualwatering='+ time, { json: true }, (err, res, body) => { request('http://'+config.GardenIP+'/control?cmd=event,manualwatering='+ time, { json: true }, (err, res, body) => {
if (err) { return console.log("Problem watering: " + err); } if (err) { return console.log("Problem watering: " + err); }
console.log("Watering cmd successfully sent!"); console.log("Watering cmd successfully sent!");
}); });
}); });
app.use('/waterStop',function(req, res){ app.use('/waterStop',function(req, res){
request('http://'+GardenIP+'/control?cmd=event,stopwatering', { json: true }, (err, res, body) => { request('http://'+config.GardenIP+'/control?cmd=event,stopwatering', { json: true }, (err, res, body) => {
if (err) { return console.log("Problem watering: " + err); } if (err) { return console.log("Problem watering: " + err); }
console.log("STOP watering cmd sent!"); console.log("STOP watering cmd sent!");
}); });
@@ -174,8 +174,6 @@ else
wss = new WebSocket.Server({ port: 8080 });//not secure wss = new WebSocket.Server({ port: 8080 });//not secure
} }
// // # ┌────────────── second (optional) // // # ┌────────────── second (optional)
// // # │ ┌──────────── minute // // # │ ┌──────────── minute
// // # │ │ ┌────────── hour // // # │ │ ┌────────── hour
@@ -218,8 +216,8 @@ mqtt.on('clientConnected', function(){
console.log("MQTT client connected !"); console.log("MQTT client connected !");
}); });
var mqtt = require('mqtt') var mqtt = require('mqtt');
var mqtt_client = mqtt.connect('mqtt://192.168.1.131'); var mqtt_client = mqtt.connect('mqtt://'+ config.HomeControllerMQTT);
mqtt_client.on('connect', function () { mqtt_client.on('connect', function () {
console.log("MQTT connected. subscribing to topics"); console.log("MQTT connected. subscribing to topics");
mqtt_client.subscribe('tele/tasmota/STATE'); mqtt_client.subscribe('tele/tasmota/STATE');

View File

@@ -68,7 +68,7 @@ CREATE TABLE `devices` (
LOCK TABLES `devices` WRITE; LOCK TABLES `devices` WRITE;
/*!40000 ALTER TABLE `devices` DISABLE KEYS */; /*!40000 ALTER TABLE `devices` DISABLE KEYS */;
INSERT INTO `devices` VALUES (1,'A23',NULL,NULL,NULL,NULL,'2020-03-25 10:48:26','2020-03-25 10:48:26'); INSERT INTO `devices` VALUES (1,'A23',NULL,NULL,NULL,'2020-03-25 10:48:26','2020-03-25 10:48:26');
/*!40000 ALTER TABLE `devices` ENABLE KEYS */; /*!40000 ALTER TABLE `devices` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

View File

@@ -1,5 +1,5 @@
const Sequelize = require("sequelize") const Sequelize = require("sequelize");
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const Schema = mongoose.Schema; const Schema = mongoose.Schema;

View File

@@ -40,8 +40,8 @@ exports.findByName = function(fieldName, days, cb) {
exports.insert = function(device_id, field_name, value, cb){ exports.insert = function(device_id, field_name, value, cb){
var params = [device_id, field_name,value]; var params = [device_id, field_name,value];
let sql = `INSERT INTO devicemessages(device_id,field_name,field_value,timestamp) let sql = `INSERT INTO devicemessages(device_id,field_name,field_value,timestamp,createdAt,updatedAt )
VALUES (?,?,?,NOW());`; VALUES (?,?,?,NOW(),NOW(),NOW());`;
pool.getConnection(function(err, con) { pool.getConnection(function(err, con) {
if (err) throw err; // not connected! if (err) throw err; // not connected!
con.query(sql,params,(err, r) => { con.query(sql,params,(err, r) => {

View File

@@ -1,4 +1,6 @@
//require('../src/setup_const')();
const util = require('util'); const util = require('util');
const { parse } = require('querystring'); const { parse } = require('querystring');
var moment = require('moment'); var moment = require('moment');
@@ -9,7 +11,7 @@ function GetDht() {
var result; var result;
(async () => { (async () => {
try { try {
var url='http://192.168.1.143/cm?cmnd=status%2010&user=admin&password=vlado555'; var url='http://'+'192.168.1.143'+'/cm?cmnd=status%2010&user=admin&password=vlado555';
request(url, { json: true }, (err, res, body) => { request(url, { json: true }, (err, res, body) => {
if (err) { return console.log("Problem getting current conditions: " + err); } if (err) { return console.log("Problem getting current conditions: " + err); }

18
src/setup_const.js Normal file
View File

@@ -0,0 +1,18 @@
var GardenIP = '192.168.0.18';
var AcIP = '192.168.1.143';
var HouseDhtIP = '192.168.1.126';
var HomeControllerMQTT = '192.168.0.10'; //GW02
module.exports = {
GardenIP: '192.168.0.18',
AcIP : '192.168.1.143',
HouseDhtIP : '192.168.1.126',
HomeControllerMQTT : '192.168.0.10',
foo: function () {
// whatever
},
bar: function () {
// whatever
}
};

View File

@@ -1,10 +1,12 @@
<h5>Conditions in the last <%= model.days ? model.days : '7' %> days</h5>
<div id="chartContainer" style="height: 370px; width: 100%;"></div> <div id="chartContainer" style="height: 370px; width: 100%;"></div>
<div id="now" class="form-text">getting inside conditions...</div> <div id="now" class="form-text">getting inside conditions...</div>
<div class="fieldset col-12"> <div class="fieldset col-12">
<select name="waterTime" id="waterTime"> <select name="waterTime" id="waterTime">
<option value="5">5 seconds</option> <option value="5">5 seconds</option>
<option value="15">10 seconds</option> <option value="15">15 seconds</option>
<option value="30">30 seconds</option> <option value="30">30 seconds</option>
<option value="60">1 min</option> <option value="60">1 min</option>
<option value="120">2 min</option> <option value="120">2 min</option>
@@ -13,9 +15,24 @@
</select> </select>
<button id="water" class="btn">Water</button> <button id="water" class="btn">Water</button>
<button id="waterStop" class="btn btn-warning">Stop water</button> <button id="waterStop" class="btn btn-warning">Stop water</button>
<div class="btn-group" role="group">
<button id="btnGroupDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Period
</button>
<div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
<a class="dropdown-item" href="/n/garden/1">Day</a>
<a class="dropdown-item" href="/n/garden/2">2 Days</a>
<a class="dropdown-item" href="/n/garden/7">Week</a>
<a class="dropdown-item" href="/n/garden/30">Month</a>
<a class="dropdown-item" href="/n/garden/91">Quarter</a>
</div>
</div>
</div> </div>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script> <script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<%- contentFor('head') %> <%- contentFor('head') %>
<script> <script>
var current; var current;
@@ -52,7 +69,7 @@
itemclick: toogleDataSeries itemclick: toogleDataSeries
}, },
axisX: { axisX: {
valueFormatString: "HH:mm DD MMM", valueFormatString: <%=model.days?model.days:7%> > 2?"DD MMM":"HH:mm DD MMM",
crosshair: { crosshair: {
enabled: true, enabled: true,
snapToDataPoint: true snapToDataPoint: true
@@ -207,8 +224,8 @@
chart.render(); chart.render();
} }
$.getJSON("/n/device/A23_DHT/7", addData); $.getJSON("/n/device/A23_DHT/<%= model.days ? model.days : '7' %>", addData);
$.getJSON("/n/device/A23_Garden_dht/7", addData); $.getJSON("/n/device/A23_Garden_dht/<%= model.days ? model.days : '7' %>", addData);
setTimeout(function(){ setTimeout(function(){
$.getJSON("/n/dht?e=now", function(data){ $.getJSON("/n/dht?e=now", function(data){
if(data && data.dht){ if(data && data.dht){