mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	fix percentage handling (#1094)
* fix percentage handling * add test * fix lint errors Co-authored-by: Samuel Sieb <samuel@sieb.net>
This commit is contained in:
		| @@ -838,9 +838,16 @@ def percentage(value): | |||||||
|  |  | ||||||
|  |  | ||||||
| def possibly_negative_percentage(value): | def possibly_negative_percentage(value): | ||||||
|     has_percent_sign = isinstance(value, str) and value.endswith('%') |     has_percent_sign = False | ||||||
|     if has_percent_sign: |     if isinstance(value, str): | ||||||
|         value = float(value[:-1].rstrip()) / 100.0 |         try: | ||||||
|  |             if value.endswith('%'): | ||||||
|  |                 has_percent_sign = False | ||||||
|  |                 value = float(value[:-1].rstrip()) / 100.0 | ||||||
|  |             else: | ||||||
|  |                 value = float(value) | ||||||
|  |         except ValueError: | ||||||
|  |             raise Invalid("invalid number") | ||||||
|     if value > 1: |     if value > 1: | ||||||
|         msg = "Percentage must not be higher than 100%." |         msg = "Percentage must not be higher than 100%." | ||||||
|         if not has_percent_sign: |         if not has_percent_sign: | ||||||
|   | |||||||
| @@ -14,6 +14,8 @@ esphome: | |||||||
| substitutions: | substitutions: | ||||||
|   devicename: test3 |   devicename: test3 | ||||||
|   devicecomment: test3 device |   devicecomment: test3 device | ||||||
|  |   min_sub: "0.03" | ||||||
|  |   max_sub: "12.0%" | ||||||
|  |  | ||||||
| api: | api: | ||||||
|   port: 8000 |   port: 8000 | ||||||
| @@ -769,6 +771,8 @@ servo: | |||||||
|   id: my_servo |   id: my_servo | ||||||
|   output: out |   output: out | ||||||
|   restore: true |   restore: true | ||||||
|  |   min_level: $min_sub | ||||||
|  |   max_level: $max_sub | ||||||
|  |  | ||||||
| ttp229_lsf: | ttp229_lsf: | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user