ents 2.3.2__py3-none-any.whl → 2.3.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ents/cli.py +3 -3
- ents/demo/demoPullRequests.py +119 -0
- ents/proto/decode.py +4 -2
- ents/proto/soil_power_sensor_pb2.py +47 -29
- {ents-2.3.2.dist-info → ents-2.3.4.dist-info}/METADATA +2 -2
- {ents-2.3.2.dist-info → ents-2.3.4.dist-info}/RECORD +9 -9
- ents/calibrate/requirements.txt +0 -9
- {ents-2.3.2.dist-info → ents-2.3.4.dist-info}/WHEEL +0 -0
- {ents-2.3.2.dist-info → ents-2.3.4.dist-info}/entry_points.txt +0 -0
- {ents-2.3.2.dist-info → ents-2.3.4.dist-info}/licenses/LICENSE +0 -0
ents/cli.py
CHANGED
|
@@ -464,9 +464,9 @@ def calibrate(args):
|
|
|
464
464
|
V_STOP = 2.0
|
|
465
465
|
V_STEP = 0.5
|
|
466
466
|
|
|
467
|
-
I_START = -0.
|
|
468
|
-
I_STOP = 0.
|
|
469
|
-
I_STEP = 0.
|
|
467
|
+
I_START = -0.0009
|
|
468
|
+
I_STOP = 0.0009
|
|
469
|
+
I_STEP = 0.00045
|
|
470
470
|
|
|
471
471
|
def record_calibrate(start, stop, step, name: str):
|
|
472
472
|
"""Record and calibrate
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
from datetime import datetime, timezone
|
|
3
|
+
import pandas as pd
|
|
4
|
+
from tabulate import tabulate
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DirtVizClient:
|
|
8
|
+
BASE_URL = "https://dirtviz.jlab.ucsc.edu/api/"
|
|
9
|
+
|
|
10
|
+
def __init__(self):
|
|
11
|
+
self.session = requests.Session()
|
|
12
|
+
|
|
13
|
+
def cell_from_name(self, name, start=None, end=None):
|
|
14
|
+
"""Get power data for a specific cell"""
|
|
15
|
+
|
|
16
|
+
def get_power_data(self, cell_id, start=None, end=None):
|
|
17
|
+
"""Get power data for a specific cell"""
|
|
18
|
+
endpoint = f"power/{cell_id}"
|
|
19
|
+
params = {}
|
|
20
|
+
|
|
21
|
+
if start and end:
|
|
22
|
+
params = {
|
|
23
|
+
"startTime": start.strftime("%a, %d %b %Y %H:%M:%S GMT"),
|
|
24
|
+
"endTime": end.strftime("%a, %d %b %Y %H:%M:%S GMT"),
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
response = self.session.get(f"{self.BASE_URL}{endpoint}", params=params)
|
|
28
|
+
response.raise_for_status()
|
|
29
|
+
return response.json()
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def format_data_display(df, cell_id):
|
|
33
|
+
"""Format the data output with timestamp as first column"""
|
|
34
|
+
|
|
35
|
+
# Ensure timestamp exists and is first column
|
|
36
|
+
if "timestamp" in df.columns:
|
|
37
|
+
cols = ["timestamp"] + [col for col in df.columns if col != "timestamp"]
|
|
38
|
+
df = df[cols]
|
|
39
|
+
|
|
40
|
+
# Format timestamp nicely
|
|
41
|
+
df["timestamp"] = pd.to_datetime(df["timestamp"])
|
|
42
|
+
df["timestamp"] = df["timestamp"].dt.strftime("%m-%d-%Y %H:%M:%S")
|
|
43
|
+
|
|
44
|
+
# Calculate statistics
|
|
45
|
+
stats = {
|
|
46
|
+
"Cell ID": cell_id,
|
|
47
|
+
"Time Range": (
|
|
48
|
+
f"{df['timestamp'].iloc[0]} to {df['timestamp'].iloc[-1]}"
|
|
49
|
+
if len(df) > 0
|
|
50
|
+
else "N/A"
|
|
51
|
+
),
|
|
52
|
+
"Data Points": len(df),
|
|
53
|
+
"Avg Voltage (mV)": f"{df['v'].mean():.2f}" if "v" in df.columns else "N/A",
|
|
54
|
+
"Max Voltage (mV)": f"{df['v'].max():.2f}" if "v" in df.columns else "N/A",
|
|
55
|
+
"Avg Current (µA)": f"{df['i'].mean():.2f}" if "i" in df.columns else "N/A",
|
|
56
|
+
"Avg Power (µW)": f"{df['p'].mean():.2f}" if "p" in df.columns else "N/A",
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
column_rename = {
|
|
60
|
+
"timestamp": "Measurement Times",
|
|
61
|
+
"v": "Voltage (mV)",
|
|
62
|
+
"i": "Current (µA)",
|
|
63
|
+
"p": "Power (µW)",
|
|
64
|
+
}
|
|
65
|
+
# Apply renaming
|
|
66
|
+
df = df.rename(columns=column_rename)
|
|
67
|
+
|
|
68
|
+
# Display header
|
|
69
|
+
print("\n" + "=" * 60)
|
|
70
|
+
print(f"CELL {cell_id} POWER DATA SUMMARY".center(60))
|
|
71
|
+
for key, value in stats.items():
|
|
72
|
+
print(f"• {key:<20}: {value}") # Display the summary information
|
|
73
|
+
print("=" * 60 + "\n")
|
|
74
|
+
|
|
75
|
+
# Display sample data with timestamp first
|
|
76
|
+
if len(df) > 0:
|
|
77
|
+
print("DATA BY TIMESTAMPS:")
|
|
78
|
+
print(
|
|
79
|
+
tabulate(
|
|
80
|
+
df,
|
|
81
|
+
headers="keys",
|
|
82
|
+
tablefmt="grid", # Changed to grid for better column alignment
|
|
83
|
+
stralign="center", # Right-align numbers
|
|
84
|
+
showindex=False,
|
|
85
|
+
numalign="center",
|
|
86
|
+
)
|
|
87
|
+
)
|
|
88
|
+
else:
|
|
89
|
+
print("No data available to display")
|
|
90
|
+
|
|
91
|
+
print("\n" + "=" * 80)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
if __name__ == "__main__":
|
|
95
|
+
client = DirtVizClient()
|
|
96
|
+
|
|
97
|
+
try:
|
|
98
|
+
cell_id = 893 # Figure out how to do by name on DirtViz
|
|
99
|
+
start = datetime(2025, 8, 12, tzinfo=timezone.utc)
|
|
100
|
+
end = datetime.now(timezone.utc)
|
|
101
|
+
|
|
102
|
+
print(f"\nFetching power data for cell {cell_id}...")
|
|
103
|
+
data = client.get_power_data(cell_id, start, end)
|
|
104
|
+
|
|
105
|
+
if data:
|
|
106
|
+
df = pd.DataFrame(data)
|
|
107
|
+
format_data_display(df, cell_id)
|
|
108
|
+
|
|
109
|
+
# Save to CSV with timestamp first
|
|
110
|
+
# df.to_csv(f"cell_{cell_id}_power_data.csv", index=False)
|
|
111
|
+
# print(f"Data saved to cell_{cell_id}_power_data.csv")
|
|
112
|
+
else:
|
|
113
|
+
print("No data received for the specified time range.")
|
|
114
|
+
|
|
115
|
+
except requests.exceptions.HTTPError as e:
|
|
116
|
+
print(f"\nHTTP Error: {e}")
|
|
117
|
+
print(f"Response: {e.response.text[:500]}...")
|
|
118
|
+
except Exception as e:
|
|
119
|
+
print(f"\n⚠️ Unexpected error: {str(e)}")
|
ents/proto/decode.py
CHANGED
|
@@ -51,13 +51,15 @@ def decode_measurement(data: bytes, raw: bool = True) -> dict:
|
|
|
51
51
|
# convert meta into dict
|
|
52
52
|
if not meas.HasField("meta"):
|
|
53
53
|
raise KeyError("Measurement missing metadata")
|
|
54
|
-
meta_dict = MessageToDict(meas.meta)
|
|
54
|
+
meta_dict = MessageToDict(meas.meta, always_print_fields_with_no_presence=True)
|
|
55
55
|
|
|
56
56
|
# decode measurement
|
|
57
57
|
if not meas.HasField("measurement"):
|
|
58
58
|
raise KeyError("Measurement missing data")
|
|
59
59
|
measurement_type = meas.WhichOneof("measurement")
|
|
60
|
-
measurement_dict = MessageToDict(
|
|
60
|
+
measurement_dict = MessageToDict(
|
|
61
|
+
getattr(meas, measurement_type), always_print_fields_with_no_presence=True
|
|
62
|
+
)
|
|
61
63
|
|
|
62
64
|
# store measurement type
|
|
63
65
|
meta_dict["type"] = measurement_type
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
4
|
# source: soil_power_sensor.proto
|
|
5
|
-
# Protobuf Python Version: 6.
|
|
5
|
+
# Protobuf Python Version: 6.31.1
|
|
6
6
|
"""Generated protocol buffer code."""
|
|
7
7
|
from google.protobuf import descriptor as _descriptor
|
|
8
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
@@ -12,7 +12,7 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
13
|
_runtime_version.Domain.PUBLIC,
|
|
14
14
|
6,
|
|
15
|
-
|
|
15
|
+
31,
|
|
16
16
|
1,
|
|
17
17
|
'',
|
|
18
18
|
'soil_power_sensor.proto'
|
|
@@ -24,17 +24,17 @@ _sym_db = _symbol_database.Default()
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17soil_power_sensor.proto\"E\n\x13MeasurementMetadata\x12\x0f\n\x07\x63\x65ll_id\x18\x01 \x01(\r\x12\x11\n\tlogger_id\x18\x02 \x01(\r\x12\n\n\x02ts\x18\x03 \x01(\r\"4\n\x10PowerMeasurement\x12\x0f\n\x07voltage\x18\x02 \x01(\x01\x12\x0f\n\x07\x63urrent\x18\x03 \x01(\x01\"P\n\x12Teros12Measurement\x12\x0f\n\x07vwc_raw\x18\x02 \x01(\x01\x12\x0f\n\x07vwc_adj\x18\x03 \x01(\x01\x12\x0c\n\x04temp\x18\x04 \x01(\x01\x12\n\n\x02\x65\x63\x18\x05 \x01(\r\"6\n\x12Teros21Measurement\x12\x12\n\nmatric_pot\x18\x01 \x01(\x01\x12\x0c\n\x04temp\x18\x02 \x01(\x01\"<\n\x13Phytos31Measurement\x12\x0f\n\x07voltage\x18\x01 \x01(\x01\x12\x14\n\x0cleaf_wetness\x18\x02 \x01(\x01\"L\n\x11\x42ME280Measurement\x12\x10\n\x08pressure\x18\x01 \x01(\r\x12\x13\n\x0btemperature\x18\x02 \x01(\x05\x12\x10\n\x08humidity\x18\x03 \x01(\r\"\
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17soil_power_sensor.proto\"E\n\x13MeasurementMetadata\x12\x0f\n\x07\x63\x65ll_id\x18\x01 \x01(\r\x12\x11\n\tlogger_id\x18\x02 \x01(\r\x12\n\n\x02ts\x18\x03 \x01(\r\"4\n\x10PowerMeasurement\x12\x0f\n\x07voltage\x18\x02 \x01(\x01\x12\x0f\n\x07\x63urrent\x18\x03 \x01(\x01\"P\n\x12Teros12Measurement\x12\x0f\n\x07vwc_raw\x18\x02 \x01(\x01\x12\x0f\n\x07vwc_adj\x18\x03 \x01(\x01\x12\x0c\n\x04temp\x18\x04 \x01(\x01\x12\n\n\x02\x65\x63\x18\x05 \x01(\r\"6\n\x12Teros21Measurement\x12\x12\n\nmatric_pot\x18\x01 \x01(\x01\x12\x0c\n\x04temp\x18\x02 \x01(\x01\"<\n\x13Phytos31Measurement\x12\x0f\n\x07voltage\x18\x01 \x01(\x01\x12\x14\n\x0cleaf_wetness\x18\x02 \x01(\x01\"L\n\x11\x42ME280Measurement\x12\x10\n\x08pressure\x18\x01 \x01(\r\x12\x13\n\x0btemperature\x18\x02 \x01(\x05\x12\x10\n\x08humidity\x18\x03 \x01(\r\"7\n\x12SEN0308Measurement\x12\x0f\n\x07voltage\x18\x01 \x01(\x01\x12\x10\n\x08humidity\x18\x02 \x01(\x01\"7\n\x12SEN0257Measurement\x12\x0f\n\x07voltage\x18\x01 \x01(\x01\x12\x10\n\x08pressure\x18\x02 \x01(\x01\"\"\n\x12YFS210CMeasurement\x12\x0c\n\x04\x66low\x18\x01 \x01(\x01\"\xfc\x02\n\x0bMeasurement\x12\"\n\x04meta\x18\x01 \x01(\x0b\x32\x14.MeasurementMetadata\x12\"\n\x05power\x18\x02 \x01(\x0b\x32\x11.PowerMeasurementH\x00\x12&\n\x07teros12\x18\x03 \x01(\x0b\x32\x13.Teros12MeasurementH\x00\x12(\n\x08phytos31\x18\x04 \x01(\x0b\x32\x14.Phytos31MeasurementH\x00\x12$\n\x06\x62me280\x18\x05 \x01(\x0b\x32\x12.BME280MeasurementH\x00\x12&\n\x07teros21\x18\x06 \x01(\x0b\x32\x13.Teros21MeasurementH\x00\x12&\n\x07sen0308\x18\x07 \x01(\x0b\x32\x13.SEN0308MeasurementH\x00\x12&\n\x07sen0257\x18\x08 \x01(\x0b\x32\x13.SEN0257MeasurementH\x00\x12&\n\x07yfs210c\x18\t \x01(\x0b\x32\x13.YFS210CMeasurementH\x00\x42\r\n\x0bmeasurement\"X\n\x08Response\x12$\n\x04resp\x18\x01 \x01(\x0e\x32\x16.Response.ResponseType\"&\n\x0cResponseType\x12\x0b\n\x07SUCCESS\x10\x00\x12\t\n\x05\x45RROR\x10\x01\"\xe9\x01\n\x0c\x45sp32Command\x12$\n\x0cpage_command\x18\x01 \x01(\x0b\x32\x0c.PageCommandH\x00\x12$\n\x0ctest_command\x18\x02 \x01(\x0b\x32\x0c.TestCommandH\x00\x12$\n\x0cwifi_command\x18\x03 \x01(\x0b\x32\x0c.WiFiCommandH\x00\x12*\n\x0fmicrosd_command\x18\x04 \x01(\x0b\x32\x0f.MicroSDCommandH\x00\x12\x30\n\x12irrigation_command\x18\x05 \x01(\x0b\x32\x12.IrrigationCommandH\x00\x42\t\n\x07\x63ommand\"\xb6\x01\n\x0bPageCommand\x12.\n\x0c\x66ile_request\x18\x01 \x01(\x0e\x32\x18.PageCommand.RequestType\x12\x17\n\x0f\x66ile_descriptor\x18\x02 \x01(\r\x12\x12\n\nblock_size\x18\x03 \x01(\r\x12\x11\n\tnum_bytes\x18\x04 \x01(\r\"7\n\x0bRequestType\x12\x08\n\x04OPEN\x10\x00\x12\t\n\x05\x43LOSE\x10\x01\x12\x08\n\x04READ\x10\x02\x12\t\n\x05WRITE\x10\x03\"\x82\x01\n\x0bTestCommand\x12\'\n\x05state\x18\x01 \x01(\x0e\x32\x18.TestCommand.ChangeState\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x05\"<\n\x0b\x43hangeState\x12\x0b\n\x07RECEIVE\x10\x00\x12\x13\n\x0fRECEIVE_REQUEST\x10\x01\x12\x0b\n\x07REQUEST\x10\x02\"\xfe\x01\n\x0bWiFiCommand\x12\x1f\n\x04type\x18\x01 \x01(\x0e\x32\x11.WiFiCommand.Type\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x0e\n\x06passwd\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x0c\n\x04port\x18\x08 \x01(\r\x12\n\n\x02rc\x18\x05 \x01(\r\x12\n\n\x02ts\x18\x06 \x01(\r\x12\x0c\n\x04resp\x18\x07 \x01(\x0c\"o\n\x04Type\x12\x0b\n\x07\x43ONNECT\x10\x00\x12\x08\n\x04POST\x10\x01\x12\t\n\x05\x43HECK\x10\x02\x12\x08\n\x04TIME\x10\x03\x12\x0e\n\nDISCONNECT\x10\x04\x12\x0e\n\nCHECK_WIFI\x10\x05\x12\r\n\tCHECK_API\x10\x06\x12\x0c\n\x08NTP_SYNC\x10\x07\"\x86\x03\n\x0eMicroSDCommand\x12\"\n\x04type\x18\x01 \x01(\x0e\x32\x14.MicroSDCommand.Type\x12\x10\n\x08\x66ilename\x18\x02 \x01(\t\x12&\n\x02rc\x18\x03 \x01(\x0e\x32\x1a.MicroSDCommand.ReturnCode\x12\x1c\n\x04meas\x18\x04 \x01(\x0b\x32\x0c.MeasurementH\x00\x12 \n\x02uc\x18\x05 \x01(\x0b\x32\x12.UserConfigurationH\x00\" \n\x04Type\x12\x08\n\x04SAVE\x10\x00\x12\x0e\n\nUSERCONFIG\x10\x01\"\xab\x01\n\nReturnCode\x12\x0b\n\x07SUCCESS\x10\x00\x12\x11\n\rERROR_GENERAL\x10\x01\x12\x1e\n\x1a\x45RROR_MICROSD_NOT_INSERTED\x10\x02\x12#\n\x1f\x45RROR_FILE_SYSTEM_NOT_MOUNTABLE\x10\x03\x12\x1d\n\x19\x45RROR_PAYLOAD_NOT_DECODED\x10\x04\x12\x19\n\x15\x45RROR_FILE_NOT_OPENED\x10\x05\x42\x06\n\x04\x64\x61ta\"\x94\x01\n\x11IrrigationCommand\x12%\n\x04type\x18\x01 \x01(\x0e\x32\x17.IrrigationCommand.Type\x12\'\n\x05state\x18\x02 \x01(\x0e\x32\x18.IrrigationCommand.State\"\x11\n\x04Type\x12\t\n\x05\x43HECK\x10\x00\"\x1c\n\x05State\x12\x08\n\x04OPEN\x10\x00\x12\t\n\x05\x43LOSE\x10\x01\"\xdc\x02\n\x11UserConfiguration\x12\x11\n\tlogger_id\x18\x01 \x01(\r\x12\x0f\n\x07\x63\x65ll_id\x18\x02 \x01(\r\x12$\n\rUpload_method\x18\x03 \x01(\x0e\x32\r.Uploadmethod\x12\x17\n\x0fUpload_interval\x18\x04 \x01(\r\x12\'\n\x0f\x65nabled_sensors\x18\x05 \x03(\x0e\x32\x0e.EnabledSensor\x12\x15\n\rVoltage_Slope\x18\x06 \x01(\x01\x12\x16\n\x0eVoltage_Offset\x18\x07 \x01(\x01\x12\x15\n\rCurrent_Slope\x18\x08 \x01(\x01\x12\x16\n\x0e\x43urrent_Offset\x18\t \x01(\x01\x12\x11\n\tWiFi_SSID\x18\n \x01(\t\x12\x15\n\rWiFi_Password\x18\x0b \x01(\t\x12\x18\n\x10\x41PI_Endpoint_URL\x18\x0c \x01(\t\x12\x19\n\x11\x41PI_Endpoint_Port\x18\r \x01(\r*O\n\rEnabledSensor\x12\x0b\n\x07Voltage\x10\x00\x12\x0b\n\x07\x43urrent\x10\x01\x12\x0b\n\x07Teros12\x10\x02\x12\x0b\n\x07Teros21\x10\x03\x12\n\n\x06\x42ME280\x10\x04*\"\n\x0cUploadmethod\x12\x08\n\x04LoRa\x10\x00\x12\x08\n\x04WiFi\x10\x01\x62\x06proto3')
|
|
28
28
|
|
|
29
29
|
_globals = globals()
|
|
30
30
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
31
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'soil_power_sensor_pb2', _globals)
|
|
32
32
|
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
33
|
DESCRIPTOR._loaded_options = None
|
|
34
|
-
_globals['_ENABLEDSENSOR']._serialized_start=
|
|
35
|
-
_globals['_ENABLEDSENSOR']._serialized_end=
|
|
36
|
-
_globals['_UPLOADMETHOD']._serialized_start=
|
|
37
|
-
_globals['_UPLOADMETHOD']._serialized_end=
|
|
34
|
+
_globals['_ENABLEDSENSOR']._serialized_start=2759
|
|
35
|
+
_globals['_ENABLEDSENSOR']._serialized_end=2838
|
|
36
|
+
_globals['_UPLOADMETHOD']._serialized_start=2840
|
|
37
|
+
_globals['_UPLOADMETHOD']._serialized_end=2874
|
|
38
38
|
_globals['_MEASUREMENTMETADATA']._serialized_start=27
|
|
39
39
|
_globals['_MEASUREMENTMETADATA']._serialized_end=96
|
|
40
40
|
_globals['_POWERMEASUREMENT']._serialized_start=98
|
|
@@ -47,26 +47,44 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
47
47
|
_globals['_PHYTOS31MEASUREMENT']._serialized_end=350
|
|
48
48
|
_globals['_BME280MEASUREMENT']._serialized_start=352
|
|
49
49
|
_globals['_BME280MEASUREMENT']._serialized_end=428
|
|
50
|
-
_globals['
|
|
51
|
-
_globals['
|
|
52
|
-
_globals['
|
|
53
|
-
_globals['
|
|
54
|
-
_globals['
|
|
55
|
-
_globals['
|
|
56
|
-
_globals['
|
|
57
|
-
_globals['
|
|
58
|
-
_globals['
|
|
59
|
-
_globals['
|
|
60
|
-
_globals['
|
|
61
|
-
_globals['
|
|
62
|
-
_globals['
|
|
63
|
-
_globals['
|
|
64
|
-
_globals['
|
|
65
|
-
_globals['
|
|
66
|
-
_globals['
|
|
67
|
-
_globals['
|
|
68
|
-
_globals['
|
|
69
|
-
_globals['
|
|
70
|
-
_globals['
|
|
71
|
-
_globals['
|
|
50
|
+
_globals['_SEN0308MEASUREMENT']._serialized_start=430
|
|
51
|
+
_globals['_SEN0308MEASUREMENT']._serialized_end=485
|
|
52
|
+
_globals['_SEN0257MEASUREMENT']._serialized_start=487
|
|
53
|
+
_globals['_SEN0257MEASUREMENT']._serialized_end=542
|
|
54
|
+
_globals['_YFS210CMEASUREMENT']._serialized_start=544
|
|
55
|
+
_globals['_YFS210CMEASUREMENT']._serialized_end=578
|
|
56
|
+
_globals['_MEASUREMENT']._serialized_start=581
|
|
57
|
+
_globals['_MEASUREMENT']._serialized_end=961
|
|
58
|
+
_globals['_RESPONSE']._serialized_start=963
|
|
59
|
+
_globals['_RESPONSE']._serialized_end=1051
|
|
60
|
+
_globals['_RESPONSE_RESPONSETYPE']._serialized_start=1013
|
|
61
|
+
_globals['_RESPONSE_RESPONSETYPE']._serialized_end=1051
|
|
62
|
+
_globals['_ESP32COMMAND']._serialized_start=1054
|
|
63
|
+
_globals['_ESP32COMMAND']._serialized_end=1287
|
|
64
|
+
_globals['_PAGECOMMAND']._serialized_start=1290
|
|
65
|
+
_globals['_PAGECOMMAND']._serialized_end=1472
|
|
66
|
+
_globals['_PAGECOMMAND_REQUESTTYPE']._serialized_start=1417
|
|
67
|
+
_globals['_PAGECOMMAND_REQUESTTYPE']._serialized_end=1472
|
|
68
|
+
_globals['_TESTCOMMAND']._serialized_start=1475
|
|
69
|
+
_globals['_TESTCOMMAND']._serialized_end=1605
|
|
70
|
+
_globals['_TESTCOMMAND_CHANGESTATE']._serialized_start=1545
|
|
71
|
+
_globals['_TESTCOMMAND_CHANGESTATE']._serialized_end=1605
|
|
72
|
+
_globals['_WIFICOMMAND']._serialized_start=1608
|
|
73
|
+
_globals['_WIFICOMMAND']._serialized_end=1862
|
|
74
|
+
_globals['_WIFICOMMAND_TYPE']._serialized_start=1751
|
|
75
|
+
_globals['_WIFICOMMAND_TYPE']._serialized_end=1862
|
|
76
|
+
_globals['_MICROSDCOMMAND']._serialized_start=1865
|
|
77
|
+
_globals['_MICROSDCOMMAND']._serialized_end=2255
|
|
78
|
+
_globals['_MICROSDCOMMAND_TYPE']._serialized_start=2041
|
|
79
|
+
_globals['_MICROSDCOMMAND_TYPE']._serialized_end=2073
|
|
80
|
+
_globals['_MICROSDCOMMAND_RETURNCODE']._serialized_start=2076
|
|
81
|
+
_globals['_MICROSDCOMMAND_RETURNCODE']._serialized_end=2247
|
|
82
|
+
_globals['_IRRIGATIONCOMMAND']._serialized_start=2258
|
|
83
|
+
_globals['_IRRIGATIONCOMMAND']._serialized_end=2406
|
|
84
|
+
_globals['_IRRIGATIONCOMMAND_TYPE']._serialized_start=2359
|
|
85
|
+
_globals['_IRRIGATIONCOMMAND_TYPE']._serialized_end=2376
|
|
86
|
+
_globals['_IRRIGATIONCOMMAND_STATE']._serialized_start=2378
|
|
87
|
+
_globals['_IRRIGATIONCOMMAND_STATE']._serialized_end=2406
|
|
88
|
+
_globals['_USERCONFIGURATION']._serialized_start=2409
|
|
89
|
+
_globals['_USERCONFIGURATION']._serialized_end=2757
|
|
72
90
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ents
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: Python package for Environmental NeTworked Sensor (ENTS)
|
|
5
5
|
Project-URL: Homepage, https://github.com/jlab-sensing/soil-power-sensor-firmware
|
|
6
6
|
Project-URL: Issues, https://github.com/jlab-sensing/soil-power-sensor-firmware/issues
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: >=3.11
|
|
13
13
|
Requires-Dist: matplotlib
|
|
14
14
|
Requires-Dist: pandas
|
|
15
|
-
Requires-Dist: protobuf
|
|
15
|
+
Requires-Dist: protobuf==6.31.1
|
|
16
16
|
Requires-Dist: pyserial
|
|
17
17
|
Requires-Dist: requests
|
|
18
18
|
Requires-Dist: scikit-learn
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
ents/__init__.py,sha256=KyqH3dz_BdFHWxD9n4DFItgsrxO7rDtt2IObWkdLsns,582
|
|
2
|
-
ents/cli.py,sha256=
|
|
2
|
+
ents/cli.py,sha256=O071Ot2u7yeMFZyoOY--hp4UepXOHEX2nNiiQ5TxpI4,16573
|
|
3
3
|
ents/calibrate/PingSMU.py,sha256=1iXozKaPE0ucgB3qsTI5mVk__n6pqC8Z2nV_GRfU2gA,1253
|
|
4
4
|
ents/calibrate/PingSPS.py,sha256=pNQN1ngWQ2Z7Q1DoWCIe4DN02hZfNOrKpLH7I0bAd8U,1876
|
|
5
5
|
ents/calibrate/README.md,sha256=ctdpfS5tN-PnDBn8sCTAn4gi0E-ZLUDXYnLZuqleDmM,109
|
|
@@ -7,20 +7,20 @@ ents/calibrate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
7
7
|
ents/calibrate/linear_regression.py,sha256=U-m55mRn-kMj9m-lP-YsbVwIU5ZuA8PiHfNiibefokY,1717
|
|
8
8
|
ents/calibrate/plots.py,sha256=RmuvyL_oTxA4oMNqDR5k82XelvF6whRfYKXNmFbeYeo,2411
|
|
9
9
|
ents/calibrate/recorder.py,sha256=fce5cW2DiCSOMQ-CSRL7raghbR2Yeg8Nx9obyY-0yOg,18416
|
|
10
|
-
ents/calibrate/requirements.txt,sha256=zgyk2vKGVKLGatxI_q9Eik4JIOdtTAc6Gkuo-E7zbRI,87
|
|
11
10
|
ents/config/README.md,sha256=SRtr5YuM64MSZQdy60F8Ib_AI2MR-MbbAdjS3jcjVD4,4447
|
|
12
11
|
ents/config/__init__.py,sha256=3eyHUKg-ZPx82h2CGiNyzaaI7Y7koEOUX9pzrlnVcJw,51
|
|
13
12
|
ents/config/adv_trace.py,sha256=hEDBNbVslJ2lJ-8tfJhPXxQMZN9Nylqv8RK42waRhsM,1290
|
|
14
13
|
ents/config/user_config.py,sha256=SAudV12wyE-5Z0weZJQzBELRXR3-oevIgbrimUF2TmI,39198
|
|
14
|
+
ents/demo/demoPullRequests.py,sha256=YSTVa59puMtER8sjOppiMshUCDjdsIikXLNOM0U6zmU,3864
|
|
15
15
|
ents/proto/__init__.py,sha256=5THafGlxirjEUATIXB2EVpdOY5APEjztzOAHlRGNG2c,720
|
|
16
|
-
ents/proto/decode.py,sha256=
|
|
16
|
+
ents/proto/decode.py,sha256=_dn9Agv41YgUtMVHZ7l5-Y13ci3hnjyXrRPGKDIHzvo,2964
|
|
17
17
|
ents/proto/encode.py,sha256=kPAD5-bL6zNEjh6z1n1FusdM9z5UretypxHHAiuGGA4,7753
|
|
18
18
|
ents/proto/esp32.py,sha256=4QOHZNH1SqkJg4TLvJgrAbhdJg88ZNtqoMNLBcWUX2U,4657
|
|
19
|
-
ents/proto/soil_power_sensor_pb2.py,sha256=
|
|
19
|
+
ents/proto/soil_power_sensor_pb2.py,sha256=sNf-97udroXqmimooH0x1IWOTSm-4IoRsFzbyb9aLRg,9491
|
|
20
20
|
ents/simulator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
ents/simulator/node.py,sha256=vDdt_Q2BiEo1Z-aMZnm9_Y-aAtPU_lhcWW-xSDYR54c,4444
|
|
22
|
-
ents-2.3.
|
|
23
|
-
ents-2.3.
|
|
24
|
-
ents-2.3.
|
|
25
|
-
ents-2.3.
|
|
26
|
-
ents-2.3.
|
|
22
|
+
ents-2.3.4.dist-info/METADATA,sha256=FMxd6PnezpUeq3ZBVty08iRL-CzgVo5YTugULlzxHZ4,5258
|
|
23
|
+
ents-2.3.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
24
|
+
ents-2.3.4.dist-info/entry_points.txt,sha256=1U6ViZDTy4vv1jFp5RisBPC0NFqmtV3f18eUnWKX0Nk,95
|
|
25
|
+
ents-2.3.4.dist-info/licenses/LICENSE,sha256=2WLObzfS99jXXcPS5INqnmDVZ1nlO8Rj8mzQn2xkn14,1086
|
|
26
|
+
ents-2.3.4.dist-info/RECORD,,
|
ents/calibrate/requirements.txt
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|