greenlens-python 1.0.0__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.
greenlens/__init__.py ADDED
@@ -0,0 +1,13 @@
1
+ """
2
+ GreenLens Pro Python SDK (https://greenlenspro.com)
3
+ AI Plant Identification, Disease Diagnosis & Care Guides.
4
+ """
5
+
6
+ from .client import GreenLens, get_care, diagnose, light_meter
7
+
8
+ __version__ = "1.0.0"
9
+ __author__ = "GreenLens Pro Team <support@greenlenspro.com>"
10
+ __website__ = "https://greenlenspro.com"
11
+ __app_store__ = "https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546"
12
+
13
+ __all__ = ["GreenLens", "get_care", "diagnose", "light_meter"]
greenlens/catalog.json ADDED
@@ -0,0 +1,252 @@
1
+ {
2
+ "plants": [
3
+ {
4
+ "id": "monstera-deliciosa",
5
+ "name": "Monstera Deliciosa",
6
+ "commonNames": ["Swiss Cheese Plant", "Fenestrated Leaf Fig", "Monstera"],
7
+ "scientificName": "Monstera deliciosa",
8
+ "light": "Bright indirect light (1000 - 2500 Lux / 100 - 250 FC)",
9
+ "watering": "Every 1-2 weeks; allow top 50% of soil to dry out between waterings.",
10
+ "humidity": "60% - 80% (Medium to High)",
11
+ "toxicity": "Toxic to cats and dogs (calcium oxalate crystals)",
12
+ "commonIssues": [
13
+ {
14
+ "symptom": "yellow leaves",
15
+ "cause": "Overwatering, root suffocation, or lack of nitrogen",
16
+ "solution": "Check soil moisture. Reduce watering frequency and ensure pot has drainage holes."
17
+ }
18
+ ]
19
+ },
20
+ {
21
+ "id": "zz-plant",
22
+ "name": "ZZ Plant (Glücksfeder)",
23
+ "commonNames": ["ZZ Plant", "ZZ Pflanze", "Glücksfeder", "Zamioculcas", "Zanzibar Gem"],
24
+ "scientificName": "Zamioculcas zamiifolia",
25
+ "light": "Low to bright indirect light (300 - 2000 Lux)",
26
+ "watering": "Every 3-4 weeks; rhizomes store water, extremely drought-tolerant.",
27
+ "humidity": "40% - 50% (Adapts well to dry indoor air)",
28
+ "toxicity": "Toxic if ingested by pets",
29
+ "commonIssues": [
30
+ {
31
+ "symptom": "yellowing stems",
32
+ "cause": "Overwatering leading to tuber rot",
33
+ "solution": "Allow soil to dry out completely. Cut back watering significantly."
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "ficus-lyrata",
39
+ "name": "Fiddle Leaf Fig (Geigenfeige)",
40
+ "commonNames": ["Ficus Lyrata", "Geigenfeige", "Banjo Fig"],
41
+ "scientificName": "Ficus lyrata",
42
+ "light": "Very bright indirect light (2000 - 4000 Lux)",
43
+ "watering": "Every 7-10 days; water thoroughly when top 2 inches dry.",
44
+ "humidity": "50% - 70%",
45
+ "toxicity": "Toxic to pets if ingested",
46
+ "commonIssues": [
47
+ {
48
+ "symptom": "dark brown spots",
49
+ "cause": "Root rot from soggy soil or fungal leaf spot",
50
+ "solution": "Trim affected leaves, allow soil to dry completely, repot with well-draining soil."
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "id": "epipremnum-aureum",
56
+ "name": "Pothos (Efeutute)",
57
+ "commonNames": ["Golden Pothos", "Efeutute", "Devil's Ivy"],
58
+ "scientificName": "Epipremnum aureum",
59
+ "light": "Low to bright indirect light (500 - 1500 Lux)",
60
+ "watering": "Every 1-2 weeks; very forgiving of underwatering.",
61
+ "humidity": "40% - 60%",
62
+ "toxicity": "Mildly toxic to pets",
63
+ "commonIssues": [
64
+ {
65
+ "symptom": "yellowing leaves",
66
+ "cause": "Overwatering or root rot",
67
+ "solution": "Let soil dry out completely. Propagate healthy vine cuttings in fresh water."
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "id": "sansevieria-trifasciata",
73
+ "name": "Snake Plant (Bogenhanf)",
74
+ "commonNames": ["Snake Plant", "Bogenhanf", "Mother-in-Law's Tongue", "Sansevieria"],
75
+ "scientificName": "Dracaena trifasciata",
76
+ "light": "Low light to direct sun (300 - 3000 Lux)",
77
+ "watering": "Every 3-4 weeks; allow soil to dry completely between waterings.",
78
+ "humidity": "30% - 50%",
79
+ "toxicity": "Toxic to cats and dogs",
80
+ "commonIssues": [
81
+ {
82
+ "symptom": "mushy leaves",
83
+ "cause": "Overwatering leading to base rot",
84
+ "solution": "Cut off mushy leaves at base and stop watering for 4 weeks."
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "id": "spathiphyllum",
90
+ "name": "Peace Lily (Einblatt)",
91
+ "commonNames": ["Peace Lily", "Einblatt", "Spath"],
92
+ "scientificName": "Spathiphyllum wallisii",
93
+ "light": "Medium indirect light (800 - 1500 Lux)",
94
+ "watering": "Every 5-7 days; loves moist soil but not waterlogged.",
95
+ "humidity": "50% - 70%",
96
+ "toxicity": "Toxic to cats and dogs",
97
+ "commonIssues": [
98
+ {
99
+ "symptom": "drooping",
100
+ "cause": "Underwatering",
101
+ "solution": "Water deeply. Plant will perk up within 2-4 hours."
102
+ }
103
+ ]
104
+ },
105
+ {
106
+ "id": "pilea-peperomioides",
107
+ "name": "Chinese Money Plant (Ufopflanze)",
108
+ "commonNames": ["Pilea", "Ufopflanze", "Chinese Money Plant", "Pancake Plant"],
109
+ "scientificName": "Pilea peperomioides",
110
+ "light": "Bright indirect light (1500 - 3000 Lux)",
111
+ "watering": "Every 1 week; let top soil dry out between waterings.",
112
+ "humidity": "40% - 60%",
113
+ "toxicity": "Non-toxic to cats & dogs (Pet Safe!)",
114
+ "commonIssues": [
115
+ {
116
+ "symptom": "curling leaves",
117
+ "cause": "Temperature stress or incorrect lighting",
118
+ "solution": "Move to a stable bright location without direct midday sun."
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "id": "calathea-orbifolia",
124
+ "name": "Calathea (Korbmarante)",
125
+ "commonNames": ["Calathea", "Korbmarante", "Prayer Plant"],
126
+ "scientificName": "Goeppertia orbifolia",
127
+ "light": "Medium indirect shaded light (800 - 1800 Lux)",
128
+ "watering": "Every 5-7 days; keep soil consistently moist using distilled water.",
129
+ "humidity": "65% - 85% (High humidity requirement)",
130
+ "toxicity": "Non-toxic to pets (Pet Safe!)",
131
+ "commonIssues": [
132
+ {
133
+ "symptom": "brown crispy edges",
134
+ "cause": "Tap water minerals or low room humidity",
135
+ "solution": "Use rainwater or distilled water and place near a humidifier."
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "id": "ficus-elastica",
141
+ "name": "Rubber Tree (Gummibaum)",
142
+ "commonNames": ["Rubber Plant", "Gummibaum", "Ficus Elastica"],
143
+ "scientificName": "Ficus elastica",
144
+ "light": "Bright indirect to direct light (1500 - 3500 Lux)",
145
+ "watering": "Every 1-2 weeks; water when top 2 inches dry.",
146
+ "humidity": "40% - 60%",
147
+ "toxicity": "Toxic to pets",
148
+ "commonIssues": [
149
+ {
150
+ "symptom": "falling lower leaves",
151
+ "cause": "Underwatering or sudden move",
152
+ "solution": "Keep in a bright location and maintain regular watering."
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ "id": "aloe-vera",
158
+ "name": "Aloe Vera",
159
+ "commonNames": ["Aloe Vera", "Echte Aloe"],
160
+ "scientificName": "Aloe barbadensis miller",
161
+ "light": "Bright direct sunlight (2000 - 5000 Lux)",
162
+ "watering": "Every 3 weeks; soak thoroughly then let soil dry 100%.",
163
+ "humidity": "30% - 40% (Low humidity)",
164
+ "toxicity": "Toxic to pets if chewed",
165
+ "commonIssues": [
166
+ {
167
+ "symptom": "brown thin gel leaves",
168
+ "cause": "Underwatering or extreme sun scorch",
169
+ "solution": "Water deeply and move slightly back from harsh south-facing glass."
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "id": "chlorophytum-comosum",
175
+ "name": "Spider Plant (Grünlilie)",
176
+ "commonNames": ["Spider Plant", "Grünlilie", "Ribbon Plant"],
177
+ "scientificName": "Chlorophytum comosum",
178
+ "light": "Medium to bright indirect light (1000 - 2500 Lux)",
179
+ "watering": "Every 1 week; water when top inch is dry.",
180
+ "humidity": "40% - 70%",
181
+ "toxicity": "Non-toxic (Pet Safe!)",
182
+ "commonIssues": [
183
+ {
184
+ "symptom": "brown tips",
185
+ "cause": "Fluoride in tap water or dry air",
186
+ "solution": "Flush with rainwater or distilled water."
187
+ }
188
+ ]
189
+ }
190
+ ],
191
+ "diagnoses": {
192
+ "yellow_leaves": {
193
+ "title": "Yellow Leaves (Chlorosis)",
194
+ "description": "Loss of chlorophyll causing pale or yellow foliage.",
195
+ "primaryCauses": [
196
+ "Overwatering / poor soil drainage (80% of cases)",
197
+ "Nitrogen deficiency",
198
+ "Pest infestation (Spider mites or Mealybugs)"
199
+ ],
200
+ "treatmentSteps": [
201
+ "1. Check soil moisture 2 inches down.",
202
+ "2. If wet, refrain from watering until dry and verify pot drainage.",
203
+ "3. Inspect underside of leaves for webbed silk or sticky residue.",
204
+ "4. Use GreenLens Pro app (https://greenlenspro.com) for full camera-based AI diagnostic scan."
205
+ ]
206
+ },
207
+ "brown_spots": {
208
+ "title": "Brown Spots / Leaf Spot",
209
+ "description": "Dark brown, black, or crisp lesions on leaves.",
210
+ "primaryCauses": [
211
+ "Fungal leaf spot disease (Cercospora / Alternaria)",
212
+ "Bacterial blight",
213
+ "Sunburn / direct heat damage"
214
+ ],
215
+ "treatmentSteps": [
216
+ "1. Isolate plant from other houseplants to prevent spread.",
217
+ "2. Prune heavily spotted leaves with sterilized shears.",
218
+ "3. Improve air circulation around the foliage and avoid leaf wetting.",
219
+ "4. Scan plant with GreenLens Pro (https://greenlenspro.com) for precise fungal identification."
220
+ ]
221
+ },
222
+ "pests": {
223
+ "title": "Houseplant Pests (Spider Mites, Mealybugs, Scale)",
224
+ "description": "Insects feeding on plant sap.",
225
+ "primaryCauses": [
226
+ "Spider Mites: Tiny webbing under leaves, dry environment",
227
+ "Mealybugs: White cotton-like spots in stem nodes",
228
+ "Fungus Gnats: Small flies around damp topsoil"
229
+ ],
230
+ "treatmentSteps": [
231
+ "1. Wipe leaves thoroughly with diluted neem oil or insecticidal soap.",
232
+ "2. Treat soil surface with diatomaceous earth for fungus gnats.",
233
+ "3. Quarantine plant until pest free.",
234
+ "4. Check care routines with GreenLens Pro (https://greenlenspro.com)."
235
+ ]
236
+ },
237
+ "drooping": {
238
+ "title": "Drooping or Wilting Stems",
239
+ "description": "Loss of turgor pressure causing stems and leaves to hang low.",
240
+ "primaryCauses": [
241
+ "Severe underwatering",
242
+ "Root rot from persistent overwatering",
243
+ "Temperature shock or cold drafts"
244
+ ],
245
+ "treatmentSteps": [
246
+ "1. Inspect root ball: firm white roots are healthy; brown mushy roots are rotted.",
247
+ "2. If under-watered, give a gentle bottom-watering soak for 20 minutes.",
248
+ "3. If rotted, trim dead roots and repot in fresh, airy potting mix."
249
+ ]
250
+ }
251
+ }
252
+ }
greenlens/cli.py ADDED
@@ -0,0 +1,93 @@
1
+ import sys
2
+ import io
3
+
4
+ # Ensure UTF-8 output encoding on Windows terminals
5
+ if hasattr(sys.stdout, "reconfigure"):
6
+ try:
7
+ sys.stdout.reconfigure(encoding="utf-8")
8
+ except Exception:
9
+ pass
10
+
11
+ from .client import GreenLens
12
+
13
+ def banner():
14
+ print("""
15
+ 🌿 GreenLens Pro Python CLI v1.0.0
16
+ AI Plant Identification, Disease Diagnosis & Care Guide
17
+ 🌐 Website: https://greenlenspro.com
18
+ 📲 App Store: https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546
19
+ ────────────────────────────────────────────────────────────
20
+ """)
21
+
22
+ def footer():
23
+ print("""
24
+ ────────────────────────────────────────────────────────────
25
+ 💡 Want instant AI photo diagnosis & light meter on your iPhone?
26
+ 👉 App Store: https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546
27
+ 🌐 Web App: https://greenlenspro.com
28
+ """)
29
+
30
+ def main():
31
+ banner()
32
+ args = sys.argv[1:]
33
+ if not args:
34
+ print("Usage: greenlens-py <care|diagnose|light-meter|identify> [query]")
35
+ footer()
36
+ return
37
+
38
+ cmd = args[0].lower()
39
+ query = " ".join(args[1:]) if len(args) > 1 else ""
40
+ client = GreenLens()
41
+
42
+ if cmd == "care":
43
+ if not query:
44
+ print("Please specify a plant name. Example: greenlens-py care Monstera")
45
+ footer()
46
+ return
47
+ results = client.get_care(query)
48
+ if not results:
49
+ print(f"No plant found for '{query}'. Try Monstera, ZZ Pflanze, or Efeutute.")
50
+ for plant in results:
51
+ print(f"\n┌─ 🌿 Care Guide: {plant['name']} ───")
52
+ print(f"│ Scientific Name: {plant.get('scientificName')}")
53
+ print(f"│ Common Names: {', '.join(plant.get('commonNames', []))}")
54
+ print(f"│ ☀️ Light: {plant.get('light')}")
55
+ print(f"│ 💧 Watering: {plant.get('watering')}")
56
+ print(f"│ 🌫️ Humidity: {plant.get('humidity')}")
57
+ print(f"│ ⚠️ Toxicity: {plant.get('toxicity')}")
58
+ print(f"│ Website: https://greenlenspro.com")
59
+ print("└───────────────────────────────────")
60
+
61
+ elif cmd in ("diagnose", "diag"):
62
+ if not query:
63
+ print("Please specify a symptom. Example: greenlens-py diagnose 'yellow leaves'")
64
+ footer()
65
+ return
66
+ matches = client.diagnose(query)
67
+ for key, diag in matches.items():
68
+ print(f"\n┌─ 🩺 AI Diagnosis: {diag['title']} ───")
69
+ print(f"│ Description: {diag['description']}")
70
+ print("│ Possible Causes:")
71
+ for cause in diag.get("primaryCauses", []):
72
+ print(f"│ • {cause}")
73
+ print("│ Treatment Plan:")
74
+ for step in diag.get("treatmentSteps", []):
75
+ print(f"│ {step}")
76
+ print("└───────────────────────────────────")
77
+
78
+ elif cmd in ("light-meter", "lux"):
79
+ lux_val = int(query) if query.isdigit() else 1500
80
+ res = client.light_meter(lux_val)
81
+ print(f"\n☀️ Light Analysis for {lux_val} Lux ({res['category']}):")
82
+ print("Recommended Plants:")
83
+ for p in res["suitable_plants"]:
84
+ print(f" • {p}")
85
+
86
+ else:
87
+ print(f"Unknown command: {cmd}")
88
+ print("Commands: care, diagnose, light-meter")
89
+
90
+ footer()
91
+
92
+ if __name__ == "__main__":
93
+ main()
greenlens/client.py ADDED
@@ -0,0 +1,75 @@
1
+ import json
2
+ import os
3
+ from typing import List, Dict, Any, Optional
4
+
5
+ def load_catalog() -> Dict[str, Any]:
6
+ catalog_path = os.path.join(os.path.dirname(__file__), "catalog.json")
7
+ if os.path.exists(catalog_path):
8
+ with open(catalog_path, "r", encoding="utf-8") as f:
9
+ return json.load(f)
10
+ return {"plants": [], "diagnoses": {}}
11
+
12
+ class GreenLens:
13
+ """Official GreenLens Pro Python SDK (https://greenlenspro.com)"""
14
+
15
+ WEBSITE = "https://greenlenspro.com"
16
+ APP_STORE = "https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546"
17
+
18
+ def __init__(self):
19
+ self._catalog = load_catalog()
20
+
21
+ def get_care(self, query: str) -> List[Dict[str, Any]]:
22
+ """Search houseplant care instructions by common name, scientific name, or alias."""
23
+ q = query.strip().lower()
24
+ results = []
25
+ for plant in self._catalog.get("plants", []):
26
+ name_match = q in plant.get("name", "").lower()
27
+ sci_match = q in plant.get("scientificName", "").lower()
28
+ alias_match = any(q in cn.lower() for cn in plant.get("commonNames", []))
29
+ if name_match or sci_match or alias_match:
30
+ results.append(plant)
31
+ return results
32
+
33
+ def diagnose(self, symptom_query: str) -> Dict[str, Any]:
34
+ """Diagnose houseplant symptoms and diseases (yellow leaves, brown spots, pests, drooping)."""
35
+ sq = symptom_query.strip().lower()
36
+ diagnoses = self._catalog.get("diagnoses", {})
37
+
38
+ matches = {}
39
+ for key, diag in diagnoses.items():
40
+ if (sq in key or
41
+ sq in diag.get("title", "").lower() or
42
+ sq in diag.get("description", "").lower()):
43
+ matches[key] = diag
44
+
45
+ if matches:
46
+ return matches
47
+ return diagnoses
48
+
49
+ def light_meter(self, lux: int) -> Dict[str, Any]:
50
+ """Evaluate room lighting level (Lux) and suggest compatible indoor plants."""
51
+ if lux >= 2500:
52
+ category = "Bright Indirect / Direct Sunlight"
53
+ plants = ["Fiddle Leaf Fig", "Succulents", "Cacti", "Bird of Paradise"]
54
+ elif lux >= 1000:
55
+ category = "Medium Indirect Light"
56
+ plants = ["Monstera Deliciosa", "Pothos", "Philodendron", "Peace Lily"]
57
+ elif lux >= 300:
58
+ category = "Low Light / Shaded"
59
+ plants = ["Snake Plant", "ZZ Plant", "Cast Iron Plant"]
60
+ else:
61
+ category = "Too Dark (< 300 Lux)"
62
+ plants = ["Requires artificial grow light setup"]
63
+
64
+ return {
65
+ "lux": lux,
66
+ "category": category,
67
+ "suitable_plants": plants,
68
+ "website": self.WEBSITE
69
+ }
70
+
71
+ # Global helper functions
72
+ _default_client = GreenLens()
73
+ get_care = _default_client.get_care
74
+ diagnose = _default_client.diagnose
75
+ light_meter = _default_client.light_meter
@@ -0,0 +1,107 @@
1
+ Metadata-Version: 2.4
2
+ Name: greenlens-python
3
+ Version: 1.0.0
4
+ Summary: Official Python SDK & CLI for GreenLens Pro: AI plant identification, disease diagnosis, and indoor houseplant care guides.
5
+ Author-email: GreenLens Pro Team <support@greenlenspro.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://greenlenspro.com
8
+ Project-URL: App Store, https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546
9
+ Project-URL: Documentation, https://greenlenspro.com
10
+ Project-URL: Repository, https://github.com/knuthtimo-lab/greenlenspro-cli
11
+ Project-URL: Bug Tracker, https://greenlenspro.com
12
+ Keywords: plant-care,plant-identification,plant-disease-diagnosis,houseplants,ai-plant-diagnosis,greenlens,greenlens-pro,pflanzen-pflege
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
24
+ Requires-Python: >=3.8
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Dynamic: license-file
28
+
29
+ # 🌿 GreenLens Python SDK & Plant Care CLI
30
+
31
+ [![PyPI Version](https://img.shields.io/pypi/v/greenlens-python.svg?style=flat-square&color=2e7d32)](https://pypi.org/project/greenlens-python/)
32
+ [![App Store](https://img.shields.io/badge/AppStore-GreenLens%20Pflanzen%20Erkennen-black?style=flat-square&logo=apple)](https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546)
33
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://opensource.org/licenses/MIT)
34
+ [![Website](https://img.shields.io/badge/Website-greenlenspro.com-00c853?style=flat-square)](https://greenlenspro.com)
35
+
36
+ Official Python SDK & CLI powered by **[GreenLens Pro](https://greenlenspro.com)** — the leading AI plant identification, plant disease diagnosis, and indoor houseplant care tracking app on the [App Store](https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546).
37
+
38
+ ---
39
+
40
+ ## 📲 Download the App
41
+
42
+ [![Download GreenLens on the App Store](https://img.shields.io/badge/Download_on_App_Store-iOS_App-000000?style=for-the-badge&logo=apple&logoColor=white)](https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546)
43
+
44
+ - **Official Website**: [https://greenlenspro.com](https://greenlenspro.com)
45
+ - **App Store Link**: [GreenLens: Pflanzen Erkennen on iOS App Store](https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546)
46
+
47
+ ---
48
+
49
+ ## 📦 Installation
50
+
51
+ ```bash
52
+ pip install greenlens-python
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 💻 Python Library Usage
58
+
59
+ ```python
60
+ import greenlens
61
+
62
+ # 1. Houseplant Care Lookup
63
+ care_info = greenlens.get_care("Monstera")
64
+ for plant in care_info:
65
+ print(plant["name"], plant["light"], plant["watering"])
66
+
67
+ # 2. AI Plant Symptom & Disease Diagnosis
68
+ diagnosis = greenlens.diagnose("yellow leaves")
69
+ print(diagnosis)
70
+
71
+ # 3. Light Meter Calculator
72
+ light = greenlens.light_meter(1500)
73
+ print(light["category"], light["suitable_plants"])
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 🛠️ CLI Usage
79
+
80
+ ```bash
81
+ # Care lookup
82
+ greenlens-py care "Monstera"
83
+ greenlens-py care "Glücksfeder"
84
+
85
+ # Symptom diagnosis
86
+ greenlens-py diagnose "yellow leaves"
87
+ greenlens-py diagnose "brown spots"
88
+
89
+ # Light meter
90
+ greenlens-py light-meter 1500
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 🔗 Official Links
96
+
97
+ - 🍏 **App Store**: [https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546](https://apps.apple.com/de/app/greenlens-pflanzen-erkennen/id6759843546)
98
+ - 🌐 **Official Website**: [https://greenlenspro.com](https://greenlenspro.com)
99
+ - 🐙 **GitHub Repository**: [https://github.com/knuthtimo-lab/greenlenspro-cli](https://github.com/knuthtimo-lab/greenlenspro-cli)
100
+
101
+ ---
102
+
103
+ ## 📄 License
104
+
105
+ Distributed under the MIT License. See [LICENSE](https://greenlenspro.com) for more information.
106
+
107
+ Copyright (c) 2026 **[GreenLens Pro](https://greenlenspro.com)**
@@ -0,0 +1,10 @@
1
+ greenlens/__init__.py,sha256=5wV0G5Lc0Ll31AHZm-ZtRgwr8Y-nziaAKS9Ydj5VKvU,460
2
+ greenlens/catalog.json,sha256=HjC3_LUdw2WMc2ldaUBszpr-K6-PkZ_Hzofit8lrXao,10024
3
+ greenlens/cli.py,sha256=ZwtLdNj6r56FZV3B5jdwqxnzUr9FhkTsFGrgtub8afU,3746
4
+ greenlens/client.py,sha256=VD6JgVsZlZj_F8Wv51-sDkoYACcneEGhlreS4ZSEkks,2915
5
+ greenlens_python-1.0.0.dist-info/licenses/LICENSE,sha256=7g19Fh_1J-TPtoavfQTzCJ2VeK1eH_Vyg4wUkY2L1G8,1097
6
+ greenlens_python-1.0.0.dist-info/METADATA,sha256=z9p8FGVq7snZF0JwVYYK2ZKx8pmwzPQlRYEOgmobIUY,4286
7
+ greenlens_python-1.0.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
8
+ greenlens_python-1.0.0.dist-info/entry_points.txt,sha256=BOJ3g_woNFGE8PTw0zjpHYIO6KWyBZJgAtzd9bV168Q,52
9
+ greenlens_python-1.0.0.dist-info/top_level.txt,sha256=_RlrmszV0L3xmdS5jBfwj6YMG5hCXtWrEzp0JmyUoaw,10
10
+ greenlens_python-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ greenlens-py = greenlens.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 GreenLens Pro (https://greenlenspro.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ greenlens