From 3527b7ed99c721ae77db5d2282589c5acf25a68d Mon Sep 17 00:00:00 2001 From: Fisch Date: Tue, 25 Jun 2024 21:10:12 +0200 Subject: [PATCH] only one hydroponic system per esp --- .vscode/settings.json | 5 +- .../hydrocontroller_schematic.kicad_sch | 530 +++++++++++++----- include/ec.h | 96 +--- include/flow.h | 72 +-- include/temperature.h | 74 +-- include/waterlevel.h | 300 +++------- include/waterlevel_hcsr04.h | 99 ---- include/wifi_settings.h | 2 +- messung/approximate.py | 20 +- platformio.ini | 58 +- src/main.cpp | 165 ++---- 11 files changed, 650 insertions(+), 771 deletions(-) delete mode 100644 include/waterlevel_hcsr04.h diff --git a/.vscode/settings.json b/.vscode/settings.json index cad7657..49194b3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "cmake.configureOnOpen": false + "cmake.configureOnOpen": false, + "files.associations": { + "vl53l1x.h": "c" + } } \ No newline at end of file diff --git a/hydrocontroller_schematic/hydrocontroller_schematic.kicad_sch b/hydrocontroller_schematic/hydrocontroller_schematic.kicad_sch index 75543f6..a8da167 100644 --- a/hydrocontroller_schematic/hydrocontroller_schematic.kicad_sch +++ b/hydrocontroller_schematic/hydrocontroller_schematic.kicad_sch @@ -288,67 +288,6 @@ ) ) ) - (symbol "Connector_Generic:Conn_01x04" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) - (property "Reference" "J" (id 0) (at 0 5.08 0) - (effects (font (size 1.27 1.27))) - ) - (property "Value" "Conn_01x04" (id 1) (at 0 -7.62 0) - (effects (font (size 1.27 1.27))) - ) - (property "Footprint" "" (id 2) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_keywords" "connector" (id 4) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_description" "Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)" (id 5) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_fp_filters" "Connector*:*_1x??_*" (id 6) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (symbol "Conn_01x04_1_1" - (rectangle (start -1.27 -4.953) (end 0 -5.207) - (stroke (width 0.1524) (type default) (color 0 0 0 0)) - (fill (type none)) - ) - (rectangle (start -1.27 -2.413) (end 0 -2.667) - (stroke (width 0.1524) (type default) (color 0 0 0 0)) - (fill (type none)) - ) - (rectangle (start -1.27 0.127) (end 0 -0.127) - (stroke (width 0.1524) (type default) (color 0 0 0 0)) - (fill (type none)) - ) - (rectangle (start -1.27 2.667) (end 0 2.413) - (stroke (width 0.1524) (type default) (color 0 0 0 0)) - (fill (type none)) - ) - (rectangle (start -1.27 3.81) (end 1.27 -6.35) - (stroke (width 0.254) (type default) (color 0 0 0 0)) - (fill (type background)) - ) - (pin passive line (at -5.08 2.54 0) (length 3.81) - (name "Pin_1" (effects (font (size 1.27 1.27)))) - (number "1" (effects (font (size 1.27 1.27)))) - ) - (pin passive line (at -5.08 0 0) (length 3.81) - (name "Pin_2" (effects (font (size 1.27 1.27)))) - (number "2" (effects (font (size 1.27 1.27)))) - ) - (pin passive line (at -5.08 -2.54 0) (length 3.81) - (name "Pin_3" (effects (font (size 1.27 1.27)))) - (number "3" (effects (font (size 1.27 1.27)))) - ) - (pin passive line (at -5.08 -5.08 0) (length 3.81) - (name "Pin_4" (effects (font (size 1.27 1.27)))) - (number "4" (effects (font (size 1.27 1.27)))) - ) - ) - ) (symbol "Connector_Generic:Conn_01x06" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) (property "Reference" "J" (id 0) (at 0 7.62 0) (effects (font (size 1.27 1.27))) @@ -1545,6 +1484,9 @@ (junction (at 250.19 30.48) (diameter 0) (color 0 0 0 0) (uuid 6685ca70-8a38-4493-b748-2e06f7eb3947) ) + (junction (at 141.605 165.735) (diameter 0) (color 0 0 0 0) + (uuid 7a99b804-a08e-4da8-a8aa-74e8537c0b53) + ) (junction (at 189.865 99.695) (diameter 0) (color 0 0 0 0) (uuid 9f136350-5714-4f3b-9752-ac9a2088891f) ) @@ -1557,6 +1499,9 @@ (junction (at 245.11 50.165) (diameter 0) (color 0 0 0 0) (uuid b07991cb-dc2a-4245-9adc-66145eaa2a9f) ) + (junction (at 141.605 144.78) (diameter 0) (color 0 0 0 0) + (uuid b43a9ee7-eddf-417f-92b9-c980818a502c) + ) (junction (at 238.125 19.05) (diameter 0) (color 0 0 0 0) (uuid bd89ee73-9ec2-4f03-b6e4-70d8733ef6be) ) @@ -1576,7 +1521,7 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 005ebc8d-bf01-410d-b056-93ea35231e3b) ) - (polyline (pts (xy 216.535 142.24) (xy 216.535 152.4)) + (polyline (pts (xy 166.37 142.24) (xy 166.37 152.4)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 01a43c3e-2fc4-4074-a0bf-68aea9830525) ) @@ -1598,6 +1543,15 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 0360af81-66f0-40ad-a3a5-6ae55ea9f135) ) + + (wire (pts (xy 178.435 137.795) (xy 178.435 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 04c5df30-ff0a-401a-8585-d3e2dfe10c17) + ) + (wire (pts (xy 183.515 158.115) (xy 191.135 158.115)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 05872310-e030-47fc-9501-71ad3428e39c) + ) (polyline (pts (xy 218.44 25.4) (xy 218.44 35.56)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 05eb46ed-00ff-4b14-8815-4363e47739a0) @@ -1607,6 +1561,10 @@ (uuid 0789939c-e116-448c-a80e-ab64e57b951e) ) + (wire (pts (xy 179.705 158.115) (xy 179.705 104.775)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 07c26d7d-cff7-4db6-b7ca-360fbbbea064) + ) (wire (pts (xy 267.97 13.97) (xy 238.125 13.97)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 08303348-6b99-4ad1-bacb-78cd3a2280a8) @@ -1647,6 +1605,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 129ecdf4-9002-4f02-9f05-25d3666f5d70) ) + (wire (pts (xy 141.605 165.735) (xy 140.335 165.735)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 14dde8ae-a538-4f88-97c8-2cb5fa558b24) + ) (wire (pts (xy 91.44 34.925) (xy 93.345 34.925)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 15ab9d1d-1508-43be-bba4-55c3d1cf1f25) @@ -1656,6 +1618,14 @@ (uuid 178de00b-7dd4-40c2-9d99-c276a856712e) ) + (wire (pts (xy 141.605 165.735) (xy 141.605 158.115)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 17a082be-1175-455c-92c8-87cc864c467d) + ) + (wire (pts (xy 191.135 147.955) (xy 189.23 147.955)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 18b6ce96-2f97-4177-8daf-8988302fc121) + ) (wire (pts (xy 262.89 22.86) (xy 267.97 22.86)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 1ad6e480-a6ad-40b9-b52b-d5e2a8551da9) @@ -1685,6 +1655,19 @@ (uuid 1fcfb4da-97b6-4b40-a9b9-75715a4e5e20) ) + (wire (pts (xy 187.96 117.475) (xy 187.96 129.54)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 22a91fee-6f93-42c9-bddd-ead57b093191) + ) + (polyline (pts (xy 216.535 161.29) (xy 196.215 161.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 24f1a834-dbc3-49ab-94ae-5710ba7eca9b) + ) + (polyline (pts (xy 166.37 173.355) (xy 146.685 173.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 259fbdda-1575-4c23-980f-52925896a8dd) + ) + (wire (pts (xy 193.675 47.625) (xy 192.405 47.625)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 26211c60-d85f-481d-a4ff-7d2df030da4e) @@ -1697,6 +1680,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 2a64c995-db2f-4f28-bd3e-b4a059655a9c) ) + (wire (pts (xy 186.69 125.095) (xy 191.135 125.095)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2a86147e-7540-4e58-9d95-edf030f44f00) + ) (polyline (pts (xy 35.56 33.02) (xy 48.895 33.02)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 2b2e2e78-76c8-4e04-a659-cf2062dfbd4f) @@ -1710,15 +1697,19 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 2d396b01-5473-4132-9779-951811675124) ) - (polyline (pts (xy 196.85 142.24) (xy 216.535 142.24)) + (wire (pts (xy 141.605 158.115) (xy 179.705 158.115)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 2d8c7c2e-105e-4866-a4af-49af71bcb5ae) + ) + (polyline (pts (xy 146.685 142.24) (xy 166.37 142.24)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 2f33f0a7-79d7-41e0-9ef6-8f4eac103a57) ) - - (wire (pts (xy 187.96 120.65) (xy 191.135 120.65)) + (polyline (pts (xy 166.37 163.195) (xy 166.37 173.355)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 2fecd610-2419-4350-831d-7c36889a1ef3) + (uuid 2fb870a7-724f-402b-a0f0-acb2084cb03b) ) + (wire (pts (xy 234.95 68.58) (xy 234.95 76.835)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 313a079f-1660-4c03-97a7-7ec968d80f37) @@ -1727,6 +1718,11 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 327b242d-9ec5-4435-b85c-9e53dd3e3cf1) ) + (polyline (pts (xy 216.535 142.875) (xy 216.535 161.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 34c89b9f-7c18-4f1e-8264-127776f7a1a0) + ) + (wire (pts (xy 240.03 16.51) (xy 238.125 16.51)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 34e1dc47-a10e-4053-ac01-1b4d29711a4a) @@ -1747,11 +1743,23 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 3b26d51c-20a3-4e07-8f73-67c85521bde5) ) + (wire (pts (xy 178.435 107.315) (xy 172.085 107.315)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 3fdadac7-f54c-406d-af4a-5e95f555cd53) + ) (polyline (pts (xy 252.095 99.06) (xy 252.095 109.22)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 40ac92ef-483c-4a0a-b0f5-8f80f0cf378b) ) + (wire (pts (xy 186.69 150.495) (xy 191.135 150.495)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4103c4ad-5c1b-4073-92b5-fe701316446b) + ) + (wire (pts (xy 191.135 120.015) (xy 189.23 120.015)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 4229ecc0-7329-4ec9-b021-ce272cbea0ea) + ) (wire (pts (xy 186.69 50.165) (xy 193.675 50.165)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 42a8c003-55c6-4cef-9f49-5fc53e4840fe) @@ -1781,11 +1789,11 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 4c658ecf-d550-4517-84b5-3462362826e6) ) - (wire (pts (xy 191.77 149.86) (xy 187.325 149.86)) + (wire (pts (xy 141.605 149.86) (xy 137.16 149.86)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 4d05bc3a-4510-44fd-a4e1-37d5a8933c74) ) - (polyline (pts (xy 196.85 142.24) (xy 196.85 152.4)) + (polyline (pts (xy 146.685 142.24) (xy 146.685 152.4)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 4ddadd10-d0e8-48c6-b2b0-2d65ab8faf64) ) @@ -1794,10 +1802,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 4f5a833c-60da-4c08-8a62-4e80a1a782a1) ) - (wire (pts (xy 191.77 147.32) (xy 178.435 147.32)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 527535bb-c397-4731-9236-ad8b90a513de) - ) (wire (pts (xy 64.77 34.925) (xy 66.675 34.925)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 5332c1b9-2953-4282-9b51-22a203fdddd0) @@ -1806,6 +1810,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 53bbb223-c227-47fd-8b36-d4effca39472) ) + (wire (pts (xy 141.605 168.275) (xy 141.605 165.735)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 56b38d15-0ff1-4169-920b-89435a942ff6) + ) (wire (pts (xy 192.405 27.94) (xy 192.405 34.29)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 57d6fcea-3a61-43bb-8326-6a41e9a95e23) @@ -1818,6 +1826,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 587d676a-1c8d-4cee-acf6-0a1abe69e135) ) + (wire (pts (xy 140.335 165.735) (xy 140.335 172.085)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 5a6073e0-e949-47ab-86a0-80967b3808cf) + ) (wire (pts (xy 193.675 27.94) (xy 192.405 27.94)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 5a7fba48-631c-48ee-835b-252803d65a63) @@ -1834,10 +1846,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 5d55eb00-517a-4a8d-9715-04ff6e82b188) ) - (wire (pts (xy 187.96 129.54) (xy 187.96 120.65)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 5d99135e-3d1b-4f1b-a335-abaabfab8dfd) - ) (polyline (pts (xy 287.655 56.515) (xy 287.655 11.43)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 600535a7-5c0f-4233-999f-46ded6168531) @@ -1867,10 +1875,14 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 68ce270a-d034-46bc-9580-78aca985eef8) ) - (wire (pts (xy 187.325 149.86) (xy 187.325 142.875)) + (wire (pts (xy 137.16 149.86) (xy 137.16 142.875)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 6a581b72-cb27-4650-bbf1-b725f4461183) ) + (wire (pts (xy 191.135 130.175) (xy 188.595 130.175)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6a6c3a43-87d3-47b4-9160-cf02dd3add09) + ) (wire (pts (xy 224.79 -22.225) (xy 247.015 -22.225)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 6cefbf8f-08a9-4ac9-8b56-33c9b9d97ec3) @@ -1905,6 +1917,19 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 766d1576-9f15-47f4-98ea-bf3d473e67b6) ) + (polyline (pts (xy 146.685 163.195) (xy 146.685 173.355)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 76703f4f-6f5d-49e9-bf2f-bb3490f5a5fe) + ) + + (wire (pts (xy 186.69 153.035) (xy 191.135 153.035)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 77713d61-5d06-4411-a9de-fca24076d65e) + ) + (wire (pts (xy 189.23 147.955) (xy 189.23 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 78d796b2-40a0-4a17-8cc9-6e30480f32db) + ) (polyline (pts (xy 278.765 -15.875) (xy 252.095 -15.875)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 7c786554-023e-43d4-aea3-38d4a9790738) @@ -1923,10 +1948,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 7fbea0f9-8bbd-489f-bc83-e3bbdd98b93a) ) - (wire (pts (xy 189.23 128.27) (xy 191.135 128.27)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 8017705b-c16b-4b2c-828f-4dc41e875b71) - ) (polyline (pts (xy 252.095 120.65) (xy 278.13 120.65)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8094e9a0-f317-45e3-8801-3f6e90bb03f9) @@ -1962,11 +1983,20 @@ (uuid 83e3846b-9cc5-4127-a2eb-ff24fa7e9321) ) + (wire (pts (xy 188.595 130.175) (xy 188.595 97.155)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 84e61d05-5d40-414b-82f3-1cd7e5efe402) + ) + (polyline (pts (xy 196.215 142.875) (xy 196.215 161.29)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 850db559-f714-4254-ae8b-0724c88df23c) + ) + (wire (pts (xy 102.235 114.935) (xy 125.095 114.935)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8531ff29-fc66-4c3f-88df-81b2dcb088d2) ) - (wire (pts (xy 191.77 144.78) (xy 190.5 144.78)) + (wire (pts (xy 141.605 144.78) (xy 140.335 144.78)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 866ff215-5a1e-48ab-a28c-a44fd9e4796a) ) @@ -1978,6 +2008,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 888ea59e-6997-4c36-84ce-22d97248d780) ) + (wire (pts (xy 187.96 117.475) (xy 191.135 117.475)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 894634c1-6ff0-4da1-8b03-fb59487852d4) + ) (polyline (pts (xy 252.095 69.215) (xy 252.095 87.63)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8a74fbe1-61f4-4aed-8878-a5e6e3e88868) @@ -2003,15 +2037,15 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8fee0a26-a054-4c55-8b57-23dda5494d0f) ) + (polyline (pts (xy 196.215 142.875) (xy 216.535 142.875)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 943f3e3e-4ec1-45dd-864a-ea7d228fe8f6) + ) (polyline (pts (xy 278.13 109.22) (xy 252.095 109.22)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 9468ad6b-291d-409b-ac7c-2757eaa1d14f) ) - (wire (pts (xy 178.435 147.32) (xy 178.435 97.155)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 9b44493a-beb1-4bb7-81f4-9ab55e308c8c) - ) (wire (pts (xy 243.84 -40.005) (xy 247.015 -40.005)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 9b8fc674-0fa3-4ad5-bb80-69be2a2aca72) @@ -2033,6 +2067,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a1aba52f-a70b-4a61-9ce9-a0a4f19128c7) ) + (wire (pts (xy 187.96 145.415) (xy 187.96 157.48)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid a1bee5dc-88f6-436a-80f5-a6d7651e4e9f) + ) (wire (pts (xy 251.46 50.165) (xy 251.46 50.8)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a32a2e95-9914-442f-8838-09134b8a249b) @@ -2079,9 +2117,9 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid aa4e7dc7-dfe8-4ad1-ad41-cc5037054d1f) ) - (wire (pts (xy 189.23 114.935) (xy 189.23 128.27)) + (wire (pts (xy 141.605 147.32) (xy 141.605 144.78)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid ab26ed0f-1f12-413f-b4fa-17311c490ba9) + (uuid ac4b071d-d395-4924-b48c-ed96dbdca65c) ) (wire (pts (xy 222.885 125.73) (xy 222.885 -19.685)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -2108,10 +2146,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid b4df9aab-bf44-4482-a268-7630a055a327) ) - (wire (pts (xy 186.69 125.73) (xy 191.135 125.73)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid b5671454-4981-4d9f-bb65-c2fefb0a2f53) - ) (polyline (pts (xy 218.44 55.245) (xy 198.755 55.245)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid b708e88d-6b5c-477b-b576-8771e57f06db) @@ -2129,11 +2163,19 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid bb4efc20-7f53-4eb5-a472-3306b322a899) ) + (wire (pts (xy 172.085 97.155) (xy 188.595 97.155)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bbc2922d-6906-4fc6-93d2-5f4aa7e41ea4) + ) (wire (pts (xy 125.095 127.635) (xy 111.76 127.635)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid bdb09452-b544-4059-b7a8-ea5c877d3ac5) ) - (wire (pts (xy 190.5 144.78) (xy 190.5 151.13)) + (wire (pts (xy 186.69 122.555) (xy 191.135 122.555)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bf3d581f-915a-42be-a794-7219c5d17a6f) + ) + (wire (pts (xy 140.335 144.78) (xy 140.335 151.13)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c0447185-9314-4035-b91d-55909a334e32) ) @@ -2150,10 +2192,18 @@ (uuid c2ceb4b3-97b6-4ae9-ba17-d0df094a7bcc) ) + (wire (pts (xy 183.515 158.115) (xy 183.515 84.455)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c479c5a0-bebb-461b-abc9-f6fe15a14cb1) + ) (wire (pts (xy 247.015 128.27) (xy 242.57 128.27)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c535be1b-494b-4285-bc2b-18a5a43e54be) ) + (wire (pts (xy 137.16 170.815) (xy 137.16 163.83)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c65f04b1-e014-4948-af87-ca5d4f45883f) + ) (wire (pts (xy 245.745 101.6) (xy 245.745 107.95)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c7b11a81-f21a-4ef6-9446-24f2c5f34416) @@ -2180,10 +2230,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cc027dd4-e5bf-404d-aaa1-983a5a486764) ) - (wire (pts (xy 186.69 123.19) (xy 191.135 123.19)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid cca262c4-2d94-43d3-9f55-a0fe39747d11) - ) (wire (pts (xy 93.345 42.545) (xy 93.345 43.18)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cd91ef9c-3543-461c-bb96-57fe0b6975db) @@ -2192,7 +2238,7 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cddf58dd-be33-4a27-994c-099f812886e4) ) - (polyline (pts (xy 216.535 152.4) (xy 196.85 152.4)) + (polyline (pts (xy 166.37 152.4) (xy 146.685 152.4)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cddf6873-1950-4b4b-8c83-b18e148efde9) ) @@ -2205,6 +2251,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cf6a39f5-dc75-47cc-89fd-635113fb1767) ) + (wire (pts (xy 189.23 120.015) (xy 189.23 114.935)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid d0eb12a3-d9c6-4662-bb77-8556e920ca9d) + ) (wire (pts (xy 250.19 22.86) (xy 255.27 22.86)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d2a25ceb-7d62-4206-92f5-a66090f4c974) @@ -2230,9 +2280,9 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d96467a4-491d-4110-8bfe-b39495e90c6a) ) - (wire (pts (xy 178.435 97.155) (xy 172.085 97.155)) + (wire (pts (xy 141.605 170.815) (xy 137.16 170.815)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid db7496d5-7b09-4254-8955-f60f54c981c0) + (uuid d9860e0c-cbde-4cdb-804b-784ec86b53f3) ) (wire (pts (xy 247.015 81.915) (xy 185.42 81.915)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -2250,6 +2300,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid dc961d1f-cc88-4186-885e-fc69bb040311) ) + (polyline (pts (xy 146.685 163.195) (xy 166.37 163.195)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid dcd640a5-01a2-444a-9dc6-be10c9154c8d) + ) (polyline (pts (xy 233.68 56.515) (xy 287.655 56.515)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid deb138ba-23d8-467c-b1f9-72fca85c802b) @@ -2259,6 +2313,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid df52d889-cffb-4e87-a43d-9f89d3ec69f6) ) + (wire (pts (xy 141.605 137.795) (xy 178.435 137.795)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e2a4a9e5-0fb4-43be-813c-4db42d5b3985) + ) (polyline (pts (xy 198.755 45.085) (xy 198.755 55.245)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e3c10976-0e58-4b4d-83d8-cc80ef9eac3a) @@ -2271,11 +2329,20 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e5ccea02-215c-4543-b16e-efee5f2e6d18) ) + + (wire (pts (xy 141.605 144.78) (xy 141.605 137.795)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid e5ef5687-1e17-48b7-9198-b455f3dfb20d) + ) (polyline (pts (xy 278.13 151.765) (xy 252.095 151.765)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid ea011c48-8d15-453d-ab14-6c6075e754dc) ) + (wire (pts (xy 172.085 104.775) (xy 179.705 104.775)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid eab982bc-9277-49b0-952e-3f1690a07093) + ) (wire (pts (xy 245.745 74.295) (xy 247.015 74.295)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f06f1584-7e76-4e0c-8c70-eac5457c39b7) @@ -2297,6 +2364,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f2db2e93-38ef-4f2e-8859-e3266416192d) ) + (wire (pts (xy 187.96 145.415) (xy 191.135 145.415)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f2e9fa78-d9af-428c-9ea6-f75a6baf5419) + ) (wire (pts (xy 189.23 33.02) (xy 189.23 26.035)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f3c6a8d2-f746-49cf-a3a9-034844900871) @@ -2335,6 +2406,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f6fdbb5c-e27a-4795-9d20-42c1c7e7f74a) ) + (wire (pts (xy 183.515 84.455) (xy 172.085 84.455)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f7ee1a98-6c4c-4bba-882e-b754d2615ab6) + ) (wire (pts (xy 135.89 33.655) (xy 139.065 33.655)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f89beaf3-c3ce-4bf2-a28b-e2657433efc0) @@ -2380,7 +2455,7 @@ (effects (font (size 1.55 1.55)) (justify left bottom)) (uuid 242dce60-78d5-453d-9ac5-926f69203eef) ) - (text "GND\nSCL\nSDA\nVcc" (at 197.485 129.54 0) + (text "GND\nVCC\nSCL\nSDA\nGPIO\nXSHUT" (at 197.485 131.445 0) (effects (font (size 1.55 1.55)) (justify left bottom)) (uuid 2e757b8f-25db-45fd-9581-455812bcf27a) ) @@ -2388,7 +2463,11 @@ (effects (font (size 1.55 1.55)) (justify left bottom)) (uuid 34172fca-9bca-4ca7-bd25-099be88f98d1) ) - (text "VL6180X\nToF\nDistance\nSensor" (at 206.375 128.27 0) + (text "GND\nOut\n5V" (at 147.955 172.085 0) + (effects (font (size 1.55 1.55)) (justify left bottom)) + (uuid 3f34cfdf-75ae-4e41-b0de-e2b06976f75e) + ) + (text "VL53L0X\nToF\nDistance\nSensor" (at 206.375 128.27 0) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid 601e999f-d182-499e-a6ca-51b198770314) ) @@ -2428,18 +2507,30 @@ (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid ae8912df-466b-4b6d-90f8-ef188bb35a22) ) - (text "GND\nOut\n5V" (at 198.12 151.13 0) + (text "GND\nOut\n5V" (at 147.955 151.13 0) (effects (font (size 1.55 1.55)) (justify left bottom)) (uuid bc58c3ce-4ac8-422b-ab9d-ee1f3daaadbe) ) - (text "YF-S201" (at 206.375 147.955 0) + (text "YF-S201" (at 156.21 147.955 0) (effects (font (size 1.27 1.27)) (justify left bottom)) (uuid dc089059-5779-4b52-a7c7-33fed8b51d9d) ) + (text "YF-S201" (at 156.21 168.91 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid deb4e8d1-af63-463d-9655-cec5e3558df4) + ) + (text "VL53L0X\nToF\nDistance\nSensor" (at 206.375 156.21 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid e041101e-d73f-4ba5-8af7-c492bc72bc7c) + ) (text "GND\nOut\n5V" (at 253.365 107.95 0) (effects (font (size 1.55 1.55)) (justify left bottom)) (uuid f21b4f43-3192-4fd7-b9f6-7b8a26e64afa) ) + (text "GND\nVCC\nSCL\nSDA\nGPIO\nXSHUT" (at 197.485 159.385 0) + (effects (font (size 1.55 1.55)) (justify left bottom)) + (uuid ffa0a84a-7807-49e5-9a8b-1c0691fbb2ba) + ) (label "12V" (at 36.195 34.925 0) (effects (font (size 1.27 1.27)) (justify left bottom)) @@ -2450,10 +2541,10 @@ (uuid f5b845d6-6d84-43eb-b692-4c8dc095ffc4) ) - (global_label "SCL" (shape input) (at 186.69 123.19 180) (fields_autoplaced) + (global_label "SCL" (shape input) (at 186.69 122.555 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) (uuid 0d7e513c-15c4-4496-a1e7-fd7947e0d520) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 180.7693 123.1106 0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 180.7693 122.4756 0) (effects (font (size 1.27 1.27)) (justify right) hide) ) ) @@ -2499,10 +2590,24 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "SDA" (shape input) (at 186.69 125.73 180) (fields_autoplaced) + (global_label "SDA" (shape input) (at 186.69 125.095 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) (uuid 608dd77b-1365-4a3d-9afd-1c112437a0aa) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 180.7088 125.6506 0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 180.7088 125.0156 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SCL" (shape input) (at 186.69 150.495 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 8424cb96-c803-4758-9462-123b35ab96a8) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 180.7693 150.4156 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "SDA" (shape input) (at 186.69 153.035 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 97408f7f-8dfd-456e-b439-a7cc5a67d1ad) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 180.7088 152.9556 0) (effects (font (size 1.27 1.27)) (justify right) hide) ) ) @@ -2602,6 +2707,22 @@ (pin "2" (uuid f3038d06-2a03-47f4-b946-437fc091bc37)) ) + (symbol (lib_id "power:GND") (at 140.335 172.085 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 103255ac-3e68-40aa-8071-3a37ea76c453) + (property "Reference" "#PWR?" (id 0) (at 140.335 178.435 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 140.335 177.165 0)) + (property "Footprint" "" (id 2) (at 140.335 172.085 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 140.335 172.085 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid ece83a93-ff24-48a6-913c-4d0b1f9452df)) + ) + (symbol (lib_id "Device:C_Polarized") (at 156.845 37.465 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 107c0f31-ae89-4160-bccb-0c7df08de912) @@ -2672,17 +2793,17 @@ (pin "3" (uuid 923e4642-a9c1-40de-b053-33a25f74ed20)) ) - (symbol (lib_id "power:GND") (at 190.5 151.13 0) (unit 1) + (symbol (lib_id "power:GND") (at 140.335 151.13 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 1a81cac8-4966-4048-9e1c-6f30d3e3365b) - (property "Reference" "#PWR?" (id 0) (at 190.5 157.48 0) + (property "Reference" "#PWR?" (id 0) (at 140.335 157.48 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "GND" (id 1) (at 190.5 156.21 0)) - (property "Footprint" "" (id 2) (at 190.5 151.13 0) + (property "Value" "GND" (id 1) (at 140.335 156.21 0)) + (property "Footprint" "" (id 2) (at 140.335 151.13 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "" (id 3) (at 190.5 151.13 0) + (property "Datasheet" "" (id 3) (at 140.335 151.13 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 4bc7bfb1-3680-4f24-9234-0fa0ee06eff4)) @@ -2781,17 +2902,17 @@ (pin "1" (uuid 01ecbcca-b791-4eeb-9027-2ce99f64e9b9)) ) - (symbol (lib_id "power:+5V") (at 187.325 142.875 0) (unit 1) + (symbol (lib_id "power:+5V") (at 137.16 142.875 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 2c93eb7c-facb-4883-8e42-043be7dbb19d) - (property "Reference" "#PWR?" (id 0) (at 187.325 146.685 0) + (property "Reference" "#PWR?" (id 0) (at 137.16 146.685 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "+5V" (id 1) (at 187.325 137.795 0)) - (property "Footprint" "" (id 2) (at 187.325 142.875 0) + (property "Value" "+5V" (id 1) (at 137.16 137.795 0)) + (property "Footprint" "" (id 2) (at 137.16 142.875 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "" (id 3) (at 187.325 142.875 0) + (property "Datasheet" "" (id 3) (at 137.16 142.875 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid d83f4ebc-cc56-41ab-a290-03c38df69dd3)) @@ -2831,6 +2952,29 @@ (pin "2" (uuid f78e6043-16db-4fef-94dd-5958d2d5cb6c)) ) + (symbol (lib_id "Connector_Generic:Conn_01x06") (at 196.215 122.555 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 3d95254f-4cdd-4081-99f9-782d0d7c58ee) + (property "Reference" "J?" (id 0) (at 194.945 113.03 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "WaterlevelA" (id 1) (at 193.04 114.3 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 196.215 122.555 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 196.215 122.555 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 1662552d-36a3-4d96-8451-b12aee75c20f)) + (pin "2" (uuid e9317438-c7ef-4bd0-911d-f77edf062069)) + (pin "3" (uuid bc9e8379-b7e4-413a-90a7-387bec4e6264)) + (pin "4" (uuid f68debc8-4388-4ceb-a935-72ee3ab8b43c)) + (pin "5" (uuid d42c04b1-9af8-4115-aa5f-9790b5e0ac4d)) + (pin "6" (uuid 67f52d28-73b0-44af-852e-ec9cd34ec8c1)) + ) + (symbol (lib_id "power:+5V") (at 234.95 68.58 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 3f46ae9c-b86c-4e80-82e5-b49cc1de72dd) @@ -3238,27 +3382,6 @@ (pin "1" (uuid 6f8a1c81-c22f-4862-a52a-a42524be9fa6)) ) - (symbol (lib_id "Connector_Generic:Conn_01x04") (at 196.215 123.19 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid 88e824d2-5db4-4eff-8b9f-713b03f28cb6) - (property "Reference" "J?" (id 0) (at 194.945 115.57 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "Conn_01x04" (id 1) (at 190.5 117.475 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "" (id 2) (at 196.215 123.19 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 196.215 123.19 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid d847fd9c-d0c5-4dc1-9034-c024842b0fcb)) - (pin "2" (uuid 04be0de6-e01f-46ec-b484-ce02d56e930a)) - (pin "3" (uuid dccbd544-3fae-4e2b-8786-73139108db44)) - (pin "4" (uuid 717ff7c1-ccaa-4609-af39-296a5095221d)) - ) - (symbol (lib_id "power:GND") (at 85.725 132.08 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 8a54bb4f-f96d-4fe1-a82d-f35d2581c379) @@ -3377,6 +3500,38 @@ (pin "2" (uuid 4556175c-a9f9-4425-8161-22d724c222b4)) ) + (symbol (lib_id "power:+5V") (at 137.16 163.83 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 96389d16-9231-45dc-ac3b-46e90d8d2fe2) + (property "Reference" "#PWR?" (id 0) (at 137.16 167.64 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 137.16 158.75 0)) + (property "Footprint" "" (id 2) (at 137.16 163.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 137.16 163.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b7acfa3f-61df-47cb-b371-94c9b6b06b95)) + ) + + (symbol (lib_id "power:GND") (at 187.96 157.48 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid 9bf716ac-6235-41af-9d7f-2e836725d1bc) + (property "Reference" "#PWR?" (id 0) (at 187.96 163.83 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (id 1) (at 187.96 161.29 0)) + (property "Footprint" "" (id 2) (at 187.96 157.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 187.96 157.48 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid bd55c48f-4ba8-44cc-8756-36366039c13f)) + ) + (symbol (lib_id "power:GND") (at 146.685 43.18 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid a80c5f47-0c3d-47be-9ba8-8baba7a70db7) @@ -3492,19 +3647,39 @@ (pin "1" (uuid fbee685c-c696-4cda-88c8-721ccbcb542d)) ) - (symbol (lib_id "Connector_Generic:Conn_01x03") (at 196.85 147.32 0) (unit 1) + (symbol (lib_id "Connector_Generic:Conn_01x03") (at 146.685 168.275 0) (unit 1) (in_bom yes) (on_board yes) - (uuid caff71ed-53ee-4d75-9aae-b13bbc22ffea) - (property "Reference" "J?" (id 0) (at 195.58 138.43 0) + (uuid bfcd556b-3f51-4c5c-ad8e-48cde0575403) + (property "Reference" "J?" (id 0) (at 145.415 159.385 0) (effects (font (size 1.27 1.27)) (justify left)) ) - (property "Value" "Flow" (id 1) (at 193.04 140.97 0) + (property "Value" "FlowB" (id 1) (at 142.875 161.925 0) (effects (font (size 1.27 1.27)) (justify left)) ) - (property "Footprint" "" (id 2) (at 196.85 147.32 0) + (property "Footprint" "" (id 2) (at 146.685 168.275 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "~" (id 3) (at 196.85 147.32 0) + (property "Datasheet" "~" (id 3) (at 146.685 168.275 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 9801dfd7-10c1-4963-8919-9bd98edf9a48)) + (pin "2" (uuid 3c7bd806-4067-445c-ac7a-bd10cb498654)) + (pin "3" (uuid be38396c-1bc3-4328-a1a5-3a2e5fc5520f)) + ) + + (symbol (lib_id "Connector_Generic:Conn_01x03") (at 146.685 147.32 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid caff71ed-53ee-4d75-9aae-b13bbc22ffea) + (property "Reference" "J?" (id 0) (at 145.415 138.43 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "FlowA" (id 1) (at 142.875 140.97 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 146.685 147.32 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 146.685 147.32 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 2e3f04ae-4994-4312-84cd-801811195ba1)) @@ -3612,6 +3787,29 @@ (pin "1" (uuid 8a77e51d-875d-4623-a75c-0c930364edc5)) ) + (symbol (lib_id "Connector_Generic:Conn_01x06") (at 196.215 150.495 0) (unit 1) + (in_bom yes) (on_board yes) + (uuid dbbdc8d0-715d-4edd-b0ba-f1e442377325) + (property "Reference" "J?" (id 0) (at 194.945 140.97 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "WaterlevelB" (id 1) (at 193.04 142.24 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 196.215 150.495 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 196.215 150.495 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 72f51130-24f2-4bb3-abb5-d959bcc838f4)) + (pin "2" (uuid 8eeab9a0-844d-4912-8112-bfdd68a48640)) + (pin "3" (uuid 8d5b0326-322b-4c3f-af8c-280b9a1e68ef)) + (pin "4" (uuid a7b2469b-ade5-43c3-a768-4888182a86fa)) + (pin "5" (uuid c711ae19-97f8-4de1-a025-dfab9527063e)) + (pin "6" (uuid 9bf5e0c7-6f90-4bd2-91e5-328e8d076830)) + ) + (symbol (lib_id "Connector_Generic:Conn_01x02") (at 240.03 50.165 180) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid dd5339fd-d4b2-46a2-9282-6b3c61f986c2) @@ -3663,6 +3861,22 @@ (pin "3" (uuid ca06a64e-6449-410b-a26b-c1a02c74b05f)) ) + (symbol (lib_id "power:+5V") (at 189.23 142.875 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid ebab1bf2-be7c-4498-b712-2771a8eb39a6) + (property "Reference" "#PWR?" (id 0) (at 189.23 146.685 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "+5V" (id 1) (at 189.23 137.795 0)) + (property "Footprint" "" (id 2) (at 189.23 142.875 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 189.23 142.875 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2eacb6b5-8ba6-4857-ae29-9bd037e8021d)) + ) + (symbol (lib_id "Device:R") (at 93.345 38.735 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid ed7ae94a-e454-49ed-b1cc-f33a121d8732) @@ -3690,6 +3904,9 @@ (path "/08882ad5-f088-4ddf-88fc-95cf6d167cce" (reference "#PWR?") (unit 1) (value "+5V") (footprint "") ) + (path "/103255ac-3e68-40aa-8071-3a37ea76c453" + (reference "#PWR?") (unit 1) (value "GND") (footprint "") + ) (path "/14e1624d-1343-4c28-8333-5cbe2fa47b7f" (reference "#PWR?") (unit 1) (value "+5V") (footprint "") ) @@ -3753,6 +3970,12 @@ (path "/8a54bb4f-f96d-4fe1-a82d-f35d2581c379" (reference "#PWR?") (unit 1) (value "GND") (footprint "") ) + (path "/96389d16-9231-45dc-ac3b-46e90d8d2fe2" + (reference "#PWR?") (unit 1) (value "+5V") (footprint "") + ) + (path "/9bf716ac-6235-41af-9d7f-2e836725d1bc" + (reference "#PWR?") (unit 1) (value "GND") (footprint "") + ) (path "/a80c5f47-0c3d-47be-9ba8-8baba7a70db7" (reference "#PWR?") (unit 1) (value "GND") (footprint "") ) @@ -3783,6 +4006,9 @@ (path "/e9492f6c-6406-45f3-9cd7-5ba4789120e7" (reference "#PWR?") (unit 1) (value "+5V") (footprint "") ) + (path "/ebab1bf2-be7c-4498-b712-2771a8eb39a6" + (reference "#PWR?") (unit 1) (value "+5V") (footprint "") + ) (path "/107c0f31-ae89-4160-bccb-0c7df08de912" (reference "C?") (unit 1) (value "100uF") (footprint "") ) @@ -3813,6 +4039,9 @@ (path "/25db92da-e33b-4811-8aee-180ed90d643e" (reference "J?") (unit 1) (value "EC_Sensor") (footprint "") ) + (path "/3d95254f-4cdd-4081-99f9-782d0d7c58ee" + (reference "J?") (unit 1) (value "WaterlevelA") (footprint "") + ) (path "/52fcea3f-2d19-4b28-8cb5-7429d27114e8" (reference "J?") (unit 1) (value "EC_Probe") (footprint "") ) @@ -3828,21 +4057,24 @@ (path "/78b0af65-351c-45b0-9849-6ddc2941ca62" (reference "J?") (unit 1) (value "ADS1115") (footprint "") ) - (path "/88e824d2-5db4-4eff-8b9f-713b03f28cb6" - (reference "J?") (unit 1) (value "Conn_01x04") (footprint "") - ) (path "/92d1ac2e-235c-4a3b-b1c6-000fa41ba508" (reference "J?") (unit 1) (value "12V In") (footprint "") ) (path "/b99f3d7f-19ab-4542-9b4d-dcb32f0f7fe3" (reference "J?") (unit 1) (value "Soil_Moisture") (footprint "") ) + (path "/bfcd556b-3f51-4c5c-ad8e-48cde0575403" + (reference "J?") (unit 1) (value "FlowB") (footprint "") + ) (path "/caff71ed-53ee-4d75-9aae-b13bbc22ffea" - (reference "J?") (unit 1) (value "Flow") (footprint "") + (reference "J?") (unit 1) (value "FlowA") (footprint "") ) (path "/cd91459e-68c7-412a-b592-1864faa83740" (reference "J?") (unit 1) (value "Soil_Moisture") (footprint "") ) + (path "/dbbdc8d0-715d-4edd-b0ba-f1e442377325" + (reference "J?") (unit 1) (value "WaterlevelB") (footprint "") + ) (path "/dd5339fd-d4b2-46a2-9282-6b3c61f986c2" (reference "J?") (unit 1) (value "EC_Probe") (footprint "") ) diff --git a/include/ec.h b/include/ec.h index 7b7f685..29e3715 100644 --- a/include/ec.h +++ b/include/ec.h @@ -18,13 +18,12 @@ bool ec_flag_measurement_available=false; #define EC_UNAVAILABLE -1 -#define EC_PIN_RELAY_PROBE 27 -#define EC_PIN_RELAY_PROBESELECT 26 +//#define EC_PIN_RELAY_PROBE 27 //moved to platformio.ini //#define EC_PIN_ADC 4 #define EC_ADS_CHANNEL 0 -#define EC_PIN_FREQ 5 +//#define EC_PIN_FREQ 5 //move to platformio.ini #define EC_PWM_CH 0 #define EC_RESOLUTION 8 #define EC_FREQUENCY 5000 @@ -51,22 +50,16 @@ unsigned long ec_last_change_relay=0; //millis of last relay change enum ECState{IDLE,MEASURE}; -uint8_t probeselect=0; -const uint8_t num_probes=2; + ECState ecstate=IDLE; float ec_calib_adc; -float ec_adc_A; -float ec_adc_adjusted_A; //adjusted for reference resistor -float ec_A; //ec value after adjustment for reference (at current temperature) -float ec25_A; //ec value but temperature adjusted for 25 degC - -float ec_adc_B; -float ec_adc_adjusted_B; //adjusted for reference resistor -float ec_B; //ec value after adjustment for reference (at current temperature) -float ec25_B; //ec value but temperature adjusted for 25 degC +float ec_adc; +float ec_adc_adjusted; //adjusted for reference resistor +float ec; //ec value after adjustment for reference (at current temperature) +float ec25; //ec value but temperature adjusted for 25 degC float ec_tempadjust_alpa=0.02; float ec_reference_adc=6016.88; //adc reference value for the calibration resistor measurement. @@ -78,21 +71,28 @@ float ec_reference_adc=6016.88; //adc reference value for the calibration resist //float ec_calibration_polynom[]={1033.928052655456,-3.8909104921922895,0.005627541436014758,-4.103988840997024e-06,1.7231981870816133e-09,-4.433707707721975e-13,7.203892111369395e-17,-7.406549810844244e-21,4.667420606439905e-25,-1.6439457516812463e-29,2.477292190335455e-34}; //20220505 //float ec_calibration_polynom[]={-323.68589929771457,0.5836096440900665,-0.000279737392438965,5.98673062873e-08,-5.4460235093798435e-12,1.8535134644431135e-16}; //20230509 //float ec_calibration_polynom[]={212.6826331524675,-0.6043878865263305,0.000571551634082491,-1.827897106718841e-07,2.682337041246909e-11,-1.8368511021965982e-15,4.8269168538877025e-20}; //20230509 manuell -float ec_calibration_polynom_A[]={8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13}; //20240423, graphite electrodes -float ec_calibration_linearize_below_adc_A=2000; //use linear approximation below this adc value. 0=disable -float ec_calibration_linear_lowADC_A=728; //x0 -float ec_calibration_linear_lowEC_A=0; //y0 +//float ec_calibration_polynom[]={8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13}; //20240423, graphite electrodes +// 20240423, graphite electrodes DB {8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13} +// 20240423, graphite electrodes NFT {18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13} +float ec_calibration_polynom[]=EC_CALIBRATION_POLYNOM; +float ec_calibration_linearize_below_adc=EC_CALIBRATION_LINEARIZE_BELOW_ADC; //use linear approximation below this adc value. 0=disable +float ec_calibration_linear_lowADC=EC_CALIBRATION_LINEAR_LOWADC; //x0 +float ec_calibration_linear_lowEC=EC_CALIBRATION_LINEAR_LOWEC; //y0 + +/* float ec_calibration_polynom_B[]={18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13}; //20240423, graphite electrodes float ec_calibration_linearize_below_adc_B=2000; //use linear approximation below this adc value. 0=disable float ec_calibration_linear_lowADC_B=728; //x0 float ec_calibration_linear_lowEC_B=0; //y0 +*/ + bool ec_measurementReady(); void ec_startMeasurement(); void ec_setRange(uint8_t range); -void ec_connectProbe(bool, uint8_t); +void ec_connectProbe(bool); void ec_releaseRelay(); float ec_getECfromADC(float adc, float ec_calibration_polynom[], size_t len_ec_calibration_polynom, float ec_calibration_linearize_below_adc, float ec_calibration_linear_lowADC, float ec_calibration_linear_lowEC); float ec_calculateEC25(float pEC,float pTemp); @@ -131,7 +131,6 @@ void ec_setup() { ledcWrite(EC_PWM_CH, 127); //50% duty cycle pinMode(EC_PIN_RELAY_PROBE,OUTPUT); //LOW=Calibration/idle, HIGH=Probe connected - pinMode(EC_PIN_RELAY_PROBESELECT,OUTPUT); //LOW=Probe A, HIGH=Probe B ec_releaseRelay(); } @@ -149,7 +148,7 @@ void ec_loop(unsigned long loopmillis) { last_measurement_ec=loopmillis; force_ec_measurement=false; ec_startMeasurement(); - ec_connectProbe(true,0); //Probe A + ec_connectProbe(true); ecstate=MEASURE; @@ -169,13 +168,10 @@ void ec_loop(unsigned long loopmillis) { if (isValueArrayOK(ec_calib_array,EC_CALIB_ARRAY_SIZE,EC_ADC_UNAVAILABLE)){ ec_calib_adc=getMean(ec_calib_array,EC_CALIB_ARRAY_SIZE); ec_adc_adjusted=mapf(ec_adc,0,ec_calib_adc,0,ec_reference_adc); - if (probeselect==0) { - ec=ec_getECfromADC(ec_adc_adjusted, ec_calibration_polynom_A, sizeof(ec_calibration_polynom_A), ec_calibration_linearize_below_adc_A, ec_calibration_linear_lowADC_A, ec_calibration_linear_lowEC_A); - ec25=ec_calculateEC25(ec,tempC_reservoir_a); - }else if (probeselect==1) { - ec=ec_getECfromADC(ec_adc_adjusted, ec_calibration_polynom_B, sizeof(ec_calibration_polynom_B), ec_calibration_linearize_below_adc_B, ec_calibration_linear_lowADC_B, ec_calibration_linear_lowEC_B); - ec25=ec_calculateEC25(ec,tempC_reservoir_b); - } + + ec=ec_getECfromADC(ec_adc_adjusted, ec_calibration_polynom, sizeof(ec_calibration_polynom), ec_calibration_linearize_below_adc, ec_calibration_linear_lowADC, ec_calibration_linear_lowEC); + ec25=ec_calculateEC25(ec,tempC_reservoir); + //Serial.println("DEBUG: EC OK"); }else{ @@ -185,32 +181,10 @@ void ec_loop(unsigned long loopmillis) { ec25=EC_UNAVAILABLE; //Serial.println("DEBUG: EC unavailable"); } - - if (probeselect==0) { - //Serial.println("DEBUG: Assigning to A"); - ec_adc_A=ec_adc; - ec_adc_adjusted_A=ec_adc_adjusted; - ec_A=ec; - ec25_A=ec25; - - last_measurement_ec=loopmillis; - force_ec_measurement=false; - ec_startMeasurement(); - probeselect=1; //Select Probe B - ec_connectProbe(true,probeselect); //Probe B - ecstate=MEASURE; - - }else if(probeselect==1) { - //Serial.println("DEBUG: Assigning to B"); - ec_adc_B=ec_adc; - ec_adc_adjusted_B=ec_adc_adjusted; - ec_B=ec; - ec25_B=ec25; - - probeselect=0; //Reset to Probe A - ec_flag_measurement_available=true; - ecstate=IDLE; - } + + ec_flag_measurement_available=true; + ecstate=IDLE; + } @@ -273,29 +247,17 @@ bool ec_measurementReady(){ } -void ec_connectProbe(bool relay, uint8_t probeselect) { +void ec_connectProbe(bool relay) { bool val=digitalRead(EC_PIN_RELAY_PROBE); - bool valsel=digitalRead(EC_PIN_RELAY_PROBESELECT); if (val!=relay) { //write only if different digitalWrite(EC_PIN_RELAY_PROBE,relay); //Serial.print("DEBUG: Set Relay to "); Serial.println(relay); ec_last_change_relay=millis(); } - if (valsel!=probeselect) { //write only if different - if (probeselect==0) { - digitalWrite(EC_PIN_RELAY_PROBESELECT,false); - //Serial.println("DEBUG: Selected Probe A"); - }else if (probeselect==1) { - digitalWrite(EC_PIN_RELAY_PROBESELECT,true); - //Serial.println("DEBUG: Selected Probe B"); - } - ec_last_change_relay=millis(); - } } void ec_releaseRelay() { digitalWrite(EC_PIN_RELAY_PROBE,LOW); - digitalWrite(EC_PIN_RELAY_PROBESELECT,LOW); //Serial.println("DEBUG: Released Relays"); ec_last_change_relay=millis(); } diff --git a/include/flow.h b/include/flow.h index 83f7a50..dd76932 100644 --- a/include/flow.h +++ b/include/flow.h @@ -1,73 +1,53 @@ #ifndef _FLOW_H_ #define _FLOW_H_ -mqttValueTiming timing_flow_a; -mqttValueTiming timing_flow_b; +mqttValueTiming timing_flow; -#define FLOW_A_PIN 16 -#define FLOW_B_PIN 17 -uint16_t flow_a_counter=0; //maximum counts/s measured with Eden 128 Pump was 171 -uint16_t flow_b_counter=0; //maximum counts/s measured with Eden 128 Pump was 171 -void IRAM_ATTR isr_flow_a(); -void IRAM_ATTR isr_flow_b(); -unsigned long last_read_flow_a=0; -unsigned long last_read_flow_b=0; +//#define FLOW_PIN 16 //move to platformio.ini +uint16_t flow_counter=0; //maximum counts/s measured with Eden 128 Pump was 171 + +void IRAM_ATTR isr_flow(); + +unsigned long last_read_flow=0; #define READINTERVAL_FLOW 10000 float flow_factor=7.5; //F=7.5*flowrate[L/min] -float flow_a; -float flow_b; +float flow; + +uint32_t flow_counter_sum=0; -uint32_t flow_a_counter_sum=0; -uint32_t flow_b_counter_sum=0; void flow_setup() { - timing_flow_a.minchange=0.0; - timing_flow_a.maxchange=0.3; - timing_flow_a.mintime=10*1000; - timing_flow_a.maxtime=30*60*1000; + timing_flow.minchange=0.0; + timing_flow.maxchange=0.3; + timing_flow.mintime=10*1000; + timing_flow.maxtime=30*60*1000; - timing_flow_b.minchange=0.0; - timing_flow_b.maxchange=0.3; - timing_flow_b.mintime=10*1000; - timing_flow_b.maxtime=30*60*1000; + - pinMode(FLOW_A_PIN, INPUT_PULLUP); - pinMode(FLOW_B_PIN, INPUT_PULLUP); - attachInterrupt(FLOW_A_PIN, isr_flow_a, CHANGE); - attachInterrupt(FLOW_B_PIN, isr_flow_b, CHANGE); + pinMode(FLOW_PIN, INPUT_PULLUP); + + attachInterrupt(FLOW_PIN, isr_flow, CHANGE); } void flow_loop(unsigned long loopmillis) { - if (loopmillis>=last_read_flow_a+READINTERVAL_FLOW) { - flow_a=flow_a_counter*1000.0/(loopmillis-last_read_flow_a)/2.0; //Frequency [Hz] - flow_a/=flow_factor; //[L/min] + if (loopmillis>=last_read_flow+READINTERVAL_FLOW) { + flow=flow_counter*1000.0/(loopmillis-last_read_flow)/2.0; //Frequency [Hz] + flow/=flow_factor; //[L/min] - flow_a_counter=0; - last_read_flow_a=loopmillis; + flow_counter=0; + last_read_flow=loopmillis; } - if (loopmillis>=last_read_flow_b+READINTERVAL_FLOW) { - flow_b=flow_b_counter*1000.0/(loopmillis-last_read_flow_b)/2.0; //Frequency [Hz] - flow_b/=flow_factor; //[L/min] - - flow_b_counter=0; - last_read_flow_b=loopmillis; - } } -void IRAM_ATTR isr_flow_a() { - flow_a_counter++; - flow_a_counter_sum++; +void IRAM_ATTR isr_flow() { + flow_counter++; + flow_counter_sum++; } -void IRAM_ATTR isr_flow_b() { - flow_b_counter++; - flow_b_counter_sum++; -} - #endif \ No newline at end of file diff --git a/include/temperature.h b/include/temperature.h index 671b95e..543d748 100644 --- a/include/temperature.h +++ b/include/temperature.h @@ -2,8 +2,7 @@ #define _TEMPERATURE_H_ -mqttValueTiming timing_temperature_reservoir_a; -mqttValueTiming timing_temperature_reservoir_b; +mqttValueTiming timing_temperature_reservoir; mqttValueTiming timing_temperature_case; #include @@ -14,12 +13,12 @@ void printAddress(DeviceAddress deviceAddress); //first address: 28FF6C1C7216058B //second address: -#define ONE_WIRE_BUS 18 //GPIO pin +//#define ONE_WIRE_BUS_PIN 18 //GPIO pin moved to platformio.ini #define TEMPERATURE_PRECISION 12 //max is 12 #define READINTERVAL_DS18B20 1000 //ms // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) -OneWire oneWire(ONE_WIRE_BUS); +OneWire oneWire(ONE_WIRE_BUS_PIN); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); @@ -28,21 +27,17 @@ DallasTemperature sensors(&oneWire); #define TEMPMEAN_SIZE 16 uint16_t tempCmean_pos=0; // arrays to hold device addresses -DeviceAddress thermometerReservoirA={0x28,0xFF,0x6F,0x19,0x72,0x16,0x05,0x44}; -float tempC_reservoir_a; //last reading -float tempCmean_reservoir_a_array[TEMPMEAN_SIZE]; -float tempCmean_reservoir_a=DEVICE_DISCONNECTED_C; - - //DeviceAddress thermometerAir={0x28,0xFF,0x6C,0x1C,0x72,0x16,0x05,0x8B}; +//DeviceAddress thermometerReservoirA={0x28,0xFF,0x6F,0x19,0x72,0x16,0x05,0x44}; //NFT +//DeviceAddress thermometerReservoirB={0x28,0xFF,0x30,0xBA,0x85,0x16,0x03,0xB5}; //DB +DeviceAddress thermometerReservoir=THERMOMETER_ADDR_RESERVOIR; +float tempC_reservoir; //last reading +float tempCmean_reservoir_array[TEMPMEAN_SIZE]; +float tempCmean_reservoir=DEVICE_DISCONNECTED_C; -DeviceAddress thermometerReservoirB={0x28,0xFF,0x30,0xBA,0x85,0x16,0x03,0xB5}; -float tempC_reservoir_b; //last reading -float tempCmean_reservoir_b_array[TEMPMEAN_SIZE]; -float tempCmean_reservoir_b=DEVICE_DISCONNECTED_C; -DeviceAddress thermometerCase={0x10,0x7E,0x22,0x99,0x01,0x08,0x00,0xA4}; +DeviceAddress thermometerCase=THERMOMETER_ADDR_CASE; float tempC_case; //last reading float tempCmean_case_array[TEMPMEAN_SIZE]; float tempCmean_case=DEVICE_DISCONNECTED_C; @@ -51,15 +46,10 @@ float tempCmean_case=DEVICE_DISCONNECTED_C; void temperature_setup() { - timing_temperature_reservoir_a.minchange=0.0; - timing_temperature_reservoir_a.maxchange=0.5; - timing_temperature_reservoir_a.mintime=2*1000; - timing_temperature_reservoir_a.maxtime=60*60*1000; - - timing_temperature_reservoir_b.minchange=0.0; - timing_temperature_reservoir_b.maxchange=0.5; - timing_temperature_reservoir_b.mintime=2*1000; - timing_temperature_reservoir_b.maxtime=60*60*1000; + timing_temperature_reservoir.minchange=0.0; + timing_temperature_reservoir.maxchange=0.5; + timing_temperature_reservoir.mintime=2*1000; + timing_temperature_reservoir.maxtime=60*60*1000; timing_temperature_case.minchange=0.0; @@ -69,8 +59,7 @@ void temperature_setup() { //initialize mean array for (uint16_t i=0;i=last_read_waterlevelA+READINTERVAL_WATERLEVEL) { - last_read_waterlevelA=loopmillis; - - - uint16_t distance=sensorA.readRangeSingleMillimeters(); //error=65535 - - //Serial.print("Distance reading A="); Serial.print(distance);Serial.println(); - - - if (distance!=WATERLEVEL_UNAVAILABLE && distance!=65535) { //successful - waterlevelAMean_array[waterlevelAMean_array_pos]=distance; - waterlevelAMean_array_pos++; - waterlevelAMean_array_pos%=WATERLEVELMEAN_SIZE; - distanceA_unsuccessful_count=0; - }else{ - distanceA_unsuccessful_count++; - if (distanceA_unsuccessful_count%20==0) { - String _text="Distance A unsuccessful count="; - _text.concat(distanceA_unsuccessful_count); - _text.concat(" distance="); - _text.concat(distance); - publishInfo("error/waterlevel",_text); - } - } - if (isValueArrayOKf(waterlevelAMean_array,WATERLEVELMEAN_SIZE,WATERLEVEL_UNAVAILABLE)){ - float _filteredDistance=getFilteredf(waterlevelAMean_array,WATERLEVELMEAN_SIZE,WATERLEVELMEAN_FILTER_CUTOFF); - //Serial.print("Filtered reading A="); Serial.print(_filteredDistance);Serial.println(); + static unsigned long last_read_waterlevelB; + if (loopmillis>=last_read_waterlevelB+READINTERVAL_WATERLEVEL) { + last_read_waterlevelB=loopmillis; + + + uint16_t distance=tofsensor.readRangeSingleMillimeters(); //out of range =255 + + //Serial.print("Distance reading B="); Serial.print(distance);Serial.println(); - //Invert distance and offset - waterlevelA=constrain(waterlevelA_calib_offset+waterlevelA_calib_factor*_filteredDistance,0,1000); - watervolumeA=waterlevelA_heightToVolume(waterlevelA); - //float _meanWaterlevel=getMeanf(waterlevelMean,WATERLEVELMEAN_SIZE); - //Serial.print("\t Dist="); Serial.print(_filteredWaterlevel); Serial.print("mm"); Serial.print("(+- "); Serial.print((getMaxf(waterlevelMean,WATERLEVELMEAN_SIZE)-getMinf(waterlevelMean,WATERLEVELMEAN_SIZE))/2.0); Serial.print(")"); Serial.print(" [mean="); Serial.print(_meanWaterlevel); Serial.print("]"); - }else{ - waterlevelA=WATERLEVEL_UNAVAILABLE; + if (distance!=WATERLEVEL_UNAVAILABLE && distance!=65535) { //successful + waterlevelMean_array[waterlevelMean_array_pos]=distance; + waterlevelMean_array_pos++; + waterlevelMean_array_pos%=WATERLEVELMEAN_SIZE; + distance_unsuccessful_count=0; + }else{ + distance_unsuccessful_count++; + if (distance_unsuccessful_count%20==0) { + String _text="Distance unsuccessful count="; + _text.concat(distance_unsuccessful_count); + _text.concat(" distance="); + _text.concat(distance); + publishInfo("error/waterlevel",_text); } } - waterlevel_loop_select++; - break; - case 1: - // ############ B - - static unsigned long last_read_waterlevelB; - if (loopmillis>=last_read_waterlevelB+READINTERVAL_WATERLEVEL) { - last_read_waterlevelB=loopmillis; + if (isValueArrayOKf(waterlevelMean_array,WATERLEVELMEAN_SIZE,WATERLEVEL_UNAVAILABLE)){ + float _filteredDistance=getFilteredf(waterlevelMean_array,WATERLEVELMEAN_SIZE,WATERLEVELMEAN_FILTER_CUTOFF); - uint16_t distance=sensorB.readRangeSingleMillimeters(); //out of range =255 - - //Serial.print("Distance reading B="); Serial.print(distance);Serial.println(); + //Invert distance and offset + waterlevel=constrain(waterlevel_calib_offset+waterlevel_calib_factor*_filteredDistance,0,1000); + watervolume=waterlevel_heightToVolume(waterlevel); + + //Serial.print("Filtered reading B="); Serial.print(_filteredDistance); Serial.print(" fixed="); Serial.println(waterlevelB); Serial.println(); - if (distance!=WATERLEVEL_UNAVAILABLE && distance!=65535) { //successful - waterlevelBMean_array[waterlevelBMean_array_pos]=distance; - waterlevelBMean_array_pos++; - waterlevelBMean_array_pos%=WATERLEVELMEAN_SIZE; - distanceB_unsuccessful_count=0; - }else{ - distanceB_unsuccessful_count++; - if (distanceB_unsuccessful_count%20==0) { - String _text="Distance B unsuccessful count="; - _text.concat(distanceB_unsuccessful_count); - _text.concat(" distance="); - _text.concat(distance); - publishInfo("error/waterlevel",_text); - } - } - - - if (isValueArrayOKf(waterlevelBMean_array,WATERLEVELMEAN_SIZE,WATERLEVEL_UNAVAILABLE)){ - float _filteredDistance=getFilteredf(waterlevelBMean_array,WATERLEVELMEAN_SIZE,WATERLEVELMEAN_FILTER_CUTOFF); - - - //Invert distance and offset - waterlevelB=constrain(waterlevelB_calib_offset+waterlevelB_calib_factor*_filteredDistance,0,1000); - watervolumeB=waterlevelB_heightToVolume(waterlevelB); - - //Serial.print("Filtered reading B="); Serial.print(_filteredDistance); Serial.print(" fixed="); Serial.println(waterlevelB); Serial.println(); - - - //float _meanWaterlevel=getMeanf(waterlevelMean,WATERLEVELMEAN_SIZE); - //Serial.print("\t Dist="); Serial.print(_filteredWaterlevel); Serial.print("mm"); Serial.print("(+- "); Serial.print((getMaxf(waterlevelMean,WATERLEVELMEAN_SIZE)-getMinf(waterlevelMean,WATERLEVELMEAN_SIZE))/2.0); Serial.print(")"); Serial.print(" [mean="); Serial.print(_meanWaterlevel); Serial.print("]"); - }else{ - waterlevelB=WATERLEVEL_UNAVAILABLE; - } - - waterlevel_loop_select=0; - break; + //float _meanWaterlevel=getMeanf(waterlevelMean,WATERLEVELMEAN_SIZE); + //Serial.print("\t Dist="); Serial.print(_filteredWaterlevel); Serial.print("mm"); Serial.print("(+- "); Serial.print((getMaxf(waterlevelMean,WATERLEVELMEAN_SIZE)-getMinf(waterlevelMean,WATERLEVELMEAN_SIZE))/2.0); Serial.print(")"); Serial.print(" [mean="); Serial.print(_meanWaterlevel); Serial.print("]"); + }else{ + waterlevel=WATERLEVEL_UNAVAILABLE; } - } + + } -float waterlevelA_heightToVolume(float distance){ - return waterlevelA_calib_reservoirArea/100 * distance/100; //area[cm^2] in dm^2 * height in dm = dm^3= L +float waterlevel_heightToVolume(float distance){ + return waterlevel_calib_reservoirArea/100 * distance/100; //area[cm^2] in dm^2 * height in dm = dm^3= L } -float waterlevelB_heightToVolume(float distance){ - return waterlevelB_calib_reservoirArea/100 * distance/100; //area[cm^2] in dm^2 * height in dm = dm^3= L -} #endif \ No newline at end of file diff --git a/include/waterlevel_hcsr04.h b/include/waterlevel_hcsr04.h deleted file mode 100644 index 84aaa35..0000000 --- a/include/waterlevel_hcsr04.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifndef _WATERLEVEL_H_ -#define _WATERLEVEL_H_ - - -#include -#define HCSR04_PIN_ECHO 17 -#define HCSR04_PIN_TRIGGER 16 -#define HCSR04_TIMEOUT 5000 //default is 100000 (uS) -#define READINTERVAL_HCSR04 200 - -#define WATERLEVELMEAN_SIZE 32 -#define WATERLEVELMEAN_FILTER_CUTOFF 8 //max value is around WATERLEVELMEAN_SIZE/2 -float waterlevelMean_array[WATERLEVELMEAN_SIZE]; -uint16_t waterlevelMean_array_pos=0; -#define WATERLEVEL_UNAVAILABLE -1 -float waterlevel=WATERLEVEL_UNAVAILABLE; //distance from floor to water surface [mm] -float watervolume=WATERLEVEL_UNAVAILABLE; //calculated Volume in Reservoir - -uint16_t waterlevel_failcounter=0; -#define WATERLEVEL_MAXFAILS 15 //maximum counter value -#define WATERLEVEL_FAILTHRESHOLD 10 //if failcounter is greater or equal this value waterlevel will not be valid - -//Calibration -float waterlevel_calib_offset_measured=0; //Sollwert -float waterlevel_calib_offset_sensor=178.67; //Istwert - -float waterlevel_calib_reservoirArea=27*36.5; //area in cm^2 - - -float waterlevel_heightToVolume(float distance); - - -void waterlevel_setup() { - - //HCSR04.begin(HCSR04_PIN_TRIGGER, HCSR04_PIN_ECHO); - HCSR04.begin(HCSR04_PIN_TRIGGER, HCSR04_PIN_ECHO,HCSR04_TIMEOUT, HCSR04.eUltraSonicUnlock_t::unlockSkip); - for (uint16_t i=0;i=last_read_hcsr04+READINTERVAL_HCSR04) { - last_read_hcsr04=loopmillis; - float temperature=20.0; - if (tempCmean_air!=DEVICE_DISCONNECTED_C) { //sensor ok - temperature=tempCmean_air; - } - - double* distances = HCSR04.measureDistanceMm(temperature); - double distance=distances[0]; - //Serial.print("Distance reading:"); Serial.println(distance); - - if (distance!=WATERLEVEL_UNAVAILABLE) { //successful - waterlevelMean_array[waterlevelMean_array_pos]=distance; - waterlevelMean_array_pos++; - waterlevelMean_array_pos%=WATERLEVELMEAN_SIZE; - if (waterlevel_failcounter>0) { //reduce failcounter if sucessfull - waterlevel_failcounter--; - } - }else{ - if (waterlevel_failcounter=WATERLEVEL_FAILTHRESHOLD) { //too many failed readings - waterlevel=WATERLEVEL_UNAVAILABLE; - watervolume=WATERLEVEL_UNAVAILABLE; - /*if (debug) { - Serial.print("Waterlevel Failcounter="); Serial.println(waterlevel_failcounter); - }*/ - } - - } -} - -float waterlevel_heightToVolume(float distance){ - return waterlevel_calib_reservoirArea/100 * distance/100; //area[cm^2] in dm^2 * height in dm = dm^3= L -} - -#endif \ No newline at end of file diff --git a/include/wifi_settings.h b/include/wifi_settings.h index e40520f..7ca4d58 100644 --- a/include/wifi_settings.h +++ b/include/wifi_settings.h @@ -3,4 +3,4 @@ const char ssid[] = "fischnetziot"; const char pass[] = "LiMkJ1sVcEAU68MPEgJ"; const char mqtt_host[] = "10.0.0.1"; -const char client_id[] = "hydroponic"; \ No newline at end of file +const char client_id[] = CLIENT_ID; \ No newline at end of file diff --git a/messung/approximate.py b/messung/approximate.py index deb85ad..ec61270 100644 --- a/messung/approximate.py +++ b/messung/approximate.py @@ -15,21 +15,31 @@ data = read_csv("20240423_EC_Calibration.csv") # converting column data to list solutionAdded = data['solutionAdded'].tolist() #in ml tempReservoir = data['tempReservoir'].tolist() #in C -adc = data['ECadcAdjusted_B'].tolist() #adc reading +adc = data['ECadcAdjusted_A'].tolist() #adc reading -#solutionConcentration=5924.8 #mg/L NaCl -solutionConcentration=5690 #mg/L NaCl + + +#solutionEC=5924.8 #mg/L NaCl +solutionEC=5690 #mg/L NaCl startWaterAmount=300 #mL (same unit as solutionAded) ppmToECfactor=1/0.46 + +## EC Calutation +''' concentration = [x*solutionConcentration/(startWaterAmount+x) for x in solutionAdded] ECcalculated = [x*ppmToECfactor for x in concentration] #uS/cm +''' +### OR +## EC of solution given +ECcalculated = [x*solutionEC/(startWaterAmount+x) for x in solutionAdded] #uS/cm + #ECmeasured = data['ecMeasured'].tolist() #in C -print("Concentration") -print(concentration) +#print("Concentration") +#print(concentration) print("") print("ECcalculated") print(ECcalculated) diff --git a/platformio.ini b/platformio.ini index 4d66040..011cb75 100644 --- a/platformio.ini +++ b/platformio.ini @@ -8,16 +8,72 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html -[env:esp32doit-devkit-v1] +[env:esp32doit-devkit-v1_NFT] platform = espressif32 board = esp32doit-devkit-v1 framework = arduino monitor_speed = 115200 +monitor_port = /dev/ttyUSB0 + +build_flags= + '-D CLIENT_ID="hydroponic-NFT"' + -D PIN_BUTTON=12 + -D PIN_LED=13 + -D EC_PIN_RELAY_PROBE=27 + -D EC_PIN_FREQ=5 + -D EC_CALIBRATION_POLYNOM={18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13} + -D EC_CALIBRATION_LINEARIZE_BELOW_ADC=2000 + -D EC_CALIBRATION_LINEAR_LOWADC=728 + -D EC_CALIBRATION_LINEAR_LOWEC=0 + -D FLOW_PIN=16 + -D ONE_WIRE_BUS_PIN=18 + -D THERMOMETER_ADDR_RESERVOIR={0x28,0xFF,0x6F,0x19,0x72,0x16,0x05,0x44} + -D THERMOMETER_ADDR_CASE={0x10,0x7E,0x22,0x99,0x01,0x08,0x00,0xA4} + -D PIN_SDA=21 + -D PIN_SCL=22 lib_deps = https://github.com/milesburton/Arduino-Temperature-Control-Library/ https://github.com/emilv/ArduinoSort/ robtillaart/ADS1X15@^0.3.9 256dpi/MQTT@^2.5.1 + pololu/VL53L0X@^1.3.1 + + + +[env:esp32-s3-devkitm-1_DB] +platform = platformio/espressif32@^6.7 +board = esp32-s3-devkitm-1 +framework = arduino + +monitor_speed = 115200 + + + +build_flags= + '-D CLIENT_ID="hydroponic-DB"' + -D PIN_BUTTON + + -D EC_PIN_RELAY_PROBE + -D EC_PIN_FREQ + + -D EC_CALIBRATION_POLYNOM={8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13} + -D EC_CALIBRATION_LINEARIZE_BELOW_ADC=2000 + -D EC_CALIBRATION_LINEAR_LOWADC=728 + -D EC_CALIBRATION_LINEAR_LOWEC=0 + + -D FLOW_PIN + -D ONE_WIRE_BUS_PIN + -D THERMOMETER_ADDR_RESERVOIR={0x28,0xFF,0x30,0xBA,0x85,0x16,0x03,0xB5} + -D THERMOMETER_ADDR_CASE + + -D PIN_SDA + -D PIN_SCL + +lib_deps = + https://github.com/milesburton/Arduino-Temperature-Control-Library/ + https://github.com/emilv/ArduinoSort/ + robtillaart/ADS1X15@^0.3.9 + 256dpi/MQTT@^2.5.2 pololu/VL53L0X@^1.3.1 \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 1f9df7f..58bc852 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,9 +51,6 @@ ADS1115 ADS(0x48); -#define PIN_BUTTON 12 -#define PIN_LED 13 - void setup() { pinMode(PIN_BUTTON,INPUT_PULLUP); @@ -69,7 +66,7 @@ void setup() { Serial.println("Setup Waterlevel"); - waterlevel_setup(); + //waterlevel_setup(); //Temporarily disabled //init ADS1115 @@ -101,12 +98,12 @@ void setup() { //Test adc to ec function output if (eccalibrationoutput) { Serial.println(); - Serial.print("adc"); Serial.print(","); Serial.print("ecA"); Serial.print(","); Serial.print("ecB"); Serial.println(); + Serial.print("adc"); Serial.print(","); Serial.print("ec"); Serial.println(); for (int i=728;i<14000;i+=100) { //float _ec=ec_getECfromADC(i); - float _ecA=ec_getECfromADC(i, ec_calibration_polynom_A, sizeof(ec_calibration_polynom_A), ec_calibration_linearize_below_adc_A, ec_calibration_linear_lowADC_A, ec_calibration_linear_lowEC_A); - float _ecB=ec_getECfromADC(i, ec_calibration_polynom_B, sizeof(ec_calibration_polynom_B), ec_calibration_linearize_below_adc_B, ec_calibration_linear_lowADC_B, ec_calibration_linear_lowEC_B); - Serial.print(i); Serial.print(","); Serial.print(_ecA); Serial.print(","); Serial.print(_ecB); Serial.println(); + float _ec=ec_getECfromADC(i, ec_calibration_polynom, sizeof(ec_calibration_polynom), ec_calibration_linearize_below_adc, ec_calibration_linear_lowADC, ec_calibration_linear_lowEC); + + Serial.print(i); Serial.print(","); Serial.print(_ec); Serial.println(); } delay(100000); } @@ -130,7 +127,7 @@ void loop() { temperature_loop(loopmillis); if (!ec_measurementRunning()){ //skip tof read when ec measurement running, because vlxx sensor reading takes quite long per cycle - waterlevel_loop(loopmillis); + //Temporarily disabled waterlevel_loop(loopmillis); } flow_loop(loopmillis); @@ -185,13 +182,10 @@ void loop() { getReading=false; digitalWrite(PIN_LED,LOW); Serial.print(loopmillis); Serial.print(","); - Serial.print(tempCmean_reservoir_a); Serial.print(","); - Serial.print(tempCmean_reservoir_b); Serial.print(","); + Serial.print(tempCmean_reservoir); Serial.print(","); Serial.print(ec_calib_adc); Serial.print(","); - Serial.print(ec_adc_A); Serial.print(","); - Serial.print(ec_adc_adjusted_A); Serial.print(","); - Serial.print(ec_adc_B); Serial.print(","); - Serial.print(ec_adc_adjusted_B); + Serial.print(ec_adc); Serial.print(","); + Serial.print(ec_adc_adjusted); Serial.print(","); Serial.println(); } @@ -202,15 +196,11 @@ void loop() { bool _noErrorsDuringLoop=true; - if (tempCmean_reservoir_a==DEVICE_DISCONNECTED_C || tempCmean_reservoir_b==DEVICE_DISCONNECTED_C || tempCmean_case==DEVICE_DISCONNECTED_C) { + if (tempCmean_reservoir==DEVICE_DISCONNECTED_C || tempCmean_case==DEVICE_DISCONNECTED_C) { if (!valueError && valuesStabilized) { //error just appeared - if (tempCmean_reservoir_a==DEVICE_DISCONNECTED_C) { - Serial.println("valueError tempCmean_reservoir_a"); - publishInfo("error/temperature","valueError tempCmean_reservoir_a"); - } - if (tempCmean_reservoir_b==DEVICE_DISCONNECTED_C) { - Serial.println("valueError tempCmean_reservoir_b"); - publishInfo("error/temperature","valueError tempCmean_reservoir_b"); + if (tempCmean_reservoir==DEVICE_DISCONNECTED_C) { + Serial.println("valueError tempCmean_reservoir"); + publishInfo("error/temperature","valueError tempCmean_reservoir"); } if (tempCmean_case==DEVICE_DISCONNECTED_C) { Serial.println("valueError tempCmean_case"); @@ -227,15 +217,11 @@ void loop() { if (sm_mean1==SM_DISCONNECTED || sm_mean2==SM_DISCONNECTED) { valueError=true; }*/ - if (ec_A==EC_UNAVAILABLE || ec_B==EC_UNAVAILABLE){ + if (ec==EC_UNAVAILABLE){ if (!valueError && valuesStabilized) { //error just appeared - if (ec_A==EC_UNAVAILABLE){ - Serial.println("valueError ecA"); - publishInfo("error/ec","valueError ecA"); - } - if (ec_B==EC_UNAVAILABLE){ - Serial.println("valueError ecB"); - publishInfo("error/ec","valueError ecB"); + if (ec==EC_UNAVAILABLE){ + Serial.println("valueError ec"); + publishInfo("error/ec","valueError ec"); } } valueError=true; @@ -244,18 +230,10 @@ void loop() { - if (distanceA_unsuccessful_count>20) { + if (distance_unsuccessful_count>20) { if (!valueError && valuesStabilized) { //error just appeared - Serial.println("valueError distanceA"); - publishInfo("error/waterlevel","valueError distanceA"); - } - valueError=true; - _noErrorsDuringLoop=false; - } - if (distanceB_unsuccessful_count>20) { - if (!valueError && valuesStabilized) { //error just appeared - Serial.println("valueError distanceB"); - publishInfo("error/waterlevel","valueError distanceB"); + Serial.println("valueError distance"); + publishInfo("error/waterlevel","valueError distance"); } valueError=true; _noErrorsDuringLoop=false; @@ -273,8 +251,8 @@ void loop() { Serial.println("_______________________"); Serial.print(millis()/1000.0,2); Serial.println(":"); - Serial.print("temperature reservoir_a,reservoir_b = "); - Serial.print(tempCmean_reservoir_a); Serial.print(","); Serial.print(tempCmean_reservoir_b); + Serial.print("temperature reservoir = "); + Serial.print(tempCmean_reservoir); Serial.println(); @@ -306,37 +284,24 @@ void loop() { //Serial.print(getMax(sm_mean3array,SM_SIZE)); Serial.println(); */ - Serial.print("Flow a= "); Serial.print(flow_a); - Serial.print(", b= "); Serial.print(flow_b); + Serial.print("Flow = "); Serial.print(flow); Serial.println(); - Serial.print("EC ec_calib_adc,ec_adc_A,ec_adc_adjusted_A = "); + Serial.print("EC ec_calib_adc,ec_adc,ec_adc_adjusted = "); Serial.print(ec_calib_adc); Serial.print(","); - Serial.print(ec_adc_A); Serial.print(","); - Serial.print(ec_adc_adjusted_A); + Serial.print(ec_adc); Serial.print(","); + Serial.print(ec_adc_adjusted); Serial.println(); - Serial.print("EC ec_A,ec25_A = "); - Serial.print(ec_A); Serial.print(","); - Serial.print(ec25_A); + Serial.print("EC ec,ec25 = "); + Serial.print(ec); Serial.print(","); + Serial.print(ec25); Serial.println(); - Serial.print("EC ec_calib_adc,ec_adc_B,ec_adc_adjusted_B = "); - Serial.print(ec_calib_adc); Serial.print(","); - Serial.print(ec_adc_B); Serial.print(","); - Serial.print(ec_adc_adjusted_B); - Serial.println(); - Serial.print("EC ec_B,ec25_B = "); - Serial.print(ec_B); Serial.print(","); - Serial.print(ec25_B); - Serial.println(); - Serial.print("A Waterlevel,Volume = "); - Serial.print(waterlevelA); Serial.print(","); - Serial.print(watervolumeA); Serial.println(); - Serial.print("B Waterlevel,Volume = "); - Serial.print(waterlevelB); Serial.print(","); - Serial.print(watervolumeB); + Serial.print("Waterlevel,Volume = "); + Serial.print(waterlevel); Serial.print(","); + Serial.print(watervolume); Serial.println(); Serial.println(); @@ -351,11 +316,8 @@ void loop() { enableTiming=false; } - if (tempCmean_reservoir_a!=DEVICE_DISCONNECTED_C) { - publishValueTimed("nft/temperature/reservoir",tempCmean_reservoir_a,2,timing_temperature_reservoir_a,loopmillis); - } - if (tempCmean_reservoir_b!=DEVICE_DISCONNECTED_C) { - publishValueTimed("db/temperature/reservoir",tempCmean_reservoir_b,2,timing_temperature_reservoir_b,loopmillis); + if (tempCmean_reservoir!=DEVICE_DISCONNECTED_C) { + publishValueTimed("temperature/reservoir",tempCmean_reservoir,2,timing_temperature_reservoir,loopmillis); } if (tempCmean_case!=DEVICE_DISCONNECTED_C) { publishValueTimed("case/temperature",tempCmean_case,2,timing_temperature_case,loopmillis); @@ -374,42 +336,25 @@ void loop() { - static float last_flow_a=0; + static float last_flow=0; if (valuesStabilized){ - if (flow_a==0.0 && last_flow_a!=flow_a) { - publishValueTimedOverride("nft/flow",flow_a,2,timing_flow_a,loopmillis); //publish without waiting if flow is 0 + if (flow==0.0 && last_flow!=flow) { + publishValueTimedOverride("flow",flow,2,timing_flow,loopmillis); //publish without waiting if flow is 0 }else{ - publishValueTimed("nft/flow",flow_a,2,timing_flow_a,loopmillis); + publishValueTimed("flow",flow,2,timing_flow,loopmillis); } - last_flow_a=flow_a; - } - - static float last_flow_b=0; - if (valuesStabilized){ - if (flow_b==0.0 && last_flow_b!=flow_b) { - publishValueTimedOverride("db/flow",flow_b,2,timing_flow_b,loopmillis); //publish without waiting if flow is 0 - }else{ - publishValueTimed("db/flow",flow_b,2,timing_flow_b,loopmillis); - } - last_flow_b=flow_b; + last_flow=flow; } - if (waterlevelA!=WATERLEVEL_UNAVAILABLE) { - bool _published=publishValueTimed("nft/waterlevel/height",waterlevelA,2,timing_waterlevelA,loopmillis); + if (waterlevel!=WATERLEVEL_UNAVAILABLE) { + bool _published=publishValueTimed("waterlevel/height",waterlevel,2,timing_waterlevel,loopmillis); if (_published) { //use height for timing. send calculated volume with it - publishValue("nft/waterlevel/volume",watervolumeA,2); + publishValue("waterlevel/volume",watervolume,2); } } - if (waterlevelB!=WATERLEVEL_UNAVAILABLE) { - bool _published=publishValueTimed("db/waterlevel/height",waterlevelB,2,timing_waterlevelB,loopmillis); - if (_published) { //use height for timing. send calculated volume with it - publishValue("db/waterlevel/volume",watervolumeB,2); - } - } - if (ec_flag_measurement_available){ ec_flag_measurement_available=false; @@ -419,30 +364,18 @@ void loop() { } //Probe A - if (ec_adc_A!=0) { - publishValue("db/ec/adc",ec_adc_A,0); + if (ec_adc!=0) { + publishValue("ec/adc",ec_adc,0); } - if (ec_adc_adjusted_A!=0) { - publishValue("db/ec/adcadjusted",ec_adc_adjusted_A,0); + if (ec_adc_adjusted!=0) { + publishValue("ec/adcadjusted",ec_adc_adjusted,0); } - if (ec_A!=EC_UNAVAILABLE){ - publishValue("db/ec/ec",ec_A,0); - publishValue("db/ec/sc",ec25_A,0); + if (ec!=EC_UNAVAILABLE){ + publishValue("ec/ec",ec,0); + publishValue("ec/sc",ec25,0); } - //Probe B - if (ec_adc_B!=0) { - publishValue("nft/ec/adc",ec_adc_B,0); - } - - if (ec_adc_adjusted_B!=0) { - publishValue("nft/ec/adcadjusted",ec_adc_adjusted_B,0); - } - if (ec_B!=EC_UNAVAILABLE){ - publishValue("nft/ec/ec",ec_B,0); - publishValue("nft/ec/sc",ec25_B,0); - } }