Version 1.1
Added saving device ID to EEPROM.
This commit is contained in:
		
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| # RF open/close sensor | # RF open/close sensor | ||||||
|  |  | ||||||
| Open/close sensor on ATmega168/328 + RF24. | Open/close sensor on ATmega168/328 + nRF24. | ||||||
|  |  | ||||||
| ## Features | ## Features | ||||||
|  |  | ||||||
| @@ -11,27 +11,6 @@ Open/close sensor on ATmega168/328 + RF24. | |||||||
|  |  | ||||||
| ## Note | ## Note | ||||||
|  |  | ||||||
| A gateway is required. For details see "RF Gateway". | A gateway is required. For details see [RF Gateway](https://github.com/aZholtikov/RF-Gateway). | ||||||
|  |  | ||||||
| ## Full config example for Home Assistant | Any feedback via [e-mail](mailto:github@zh.com.ru) would be appreciated. Or... [Buy me a coffee](https://paypal.me/aZholtikov). | ||||||
|  |  | ||||||
| ```yml |  | ||||||
| mqtt: |  | ||||||
|   sensor: |  | ||||||
|     - name: "NAME" |  | ||||||
|       device_class: "voltage" |  | ||||||
|       unit_of_measurement: "V" |  | ||||||
|       state_topic: "homeassistant/rf_sensor/ID/open_close" |  | ||||||
|       value_template: "{{ value_json.battery }}" |  | ||||||
|       force_update: true |  | ||||||
|       qos: 2 |  | ||||||
|   binary_sensor: |  | ||||||
|     - name: "NAME" |  | ||||||
|       device_class: "door" |  | ||||||
|       state_topic: "homeassistant/rf_sensor/ID/open_close" |  | ||||||
|       value_template: "{{ value_json.state }}" |  | ||||||
|       payload_on: "OPEN" |  | ||||||
|       payload_off: "CLOSE" |  | ||||||
|       force_update: true |  | ||||||
|       qos: 2 |  | ||||||
| ``` |  | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/main.cpp
									
									
									
									
									
								
							| @@ -8,8 +8,7 @@ | |||||||
|  |  | ||||||
| void sendButtonStatus(void *pvParameters); | void sendButtonStatus(void *pvParameters); | ||||||
| float getBatteryLevelCharge(void); | float getBatteryLevelCharge(void); | ||||||
| void loadConfig(void); | void loadId(void); | ||||||
| void saveConfig(void); |  | ||||||
|  |  | ||||||
| int16_t id{abs((int16_t)ID)}; | int16_t id{abs((int16_t)ID)}; | ||||||
|  |  | ||||||
| @@ -18,6 +17,8 @@ SemaphoreHandle_t buttonSemaphore; | |||||||
|  |  | ||||||
| void setup() | void setup() | ||||||
| { | { | ||||||
|  |   loadId(); | ||||||
|  |  | ||||||
|   EICRA |= (1 << ISC00); |   EICRA |= (1 << ISC00); | ||||||
|   EIMSK |= (1 << INT0); |   EIMSK |= (1 << INT0); | ||||||
|   ADCSRA &= ~(1 << ADEN); |   ADCSRA &= ~(1 << ADEN); | ||||||
| @@ -73,26 +74,19 @@ float getBatteryLevelCharge() | |||||||
|   while (bit_is_set(ADCSRA, ADSC)) |   while (bit_is_set(ADCSRA, ADSC)) | ||||||
|     ; |     ; | ||||||
|   ADCSRA &= ~(1 << ADEN); |   ADCSRA &= ~(1 << ADEN); | ||||||
|   float value = ((1024 * 1.1) / (ADCL + ADCH * 256)); |   return (1024 * 1.1) / (ADCL + ADCH * 256); | ||||||
|   return value; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void loadConfig() | void loadId() | ||||||
| { | { | ||||||
|   cli(); |   cli(); | ||||||
|   if (EEPROM.read(511) == 254) |   if (EEPROM.read(511) == 254) | ||||||
|     EEPROM.get(0, id); |     EEPROM.get(0, id); | ||||||
|   else |   else | ||||||
|     saveConfig(); |   { | ||||||
|   delay(50); |     EEPROM.write(511, 254); | ||||||
|   sei(); |     EEPROM.put(0, id); | ||||||
| } |   } | ||||||
|  |  | ||||||
| void saveConfig() |  | ||||||
| { |  | ||||||
|   cli(); |  | ||||||
|   EEPROM.write(511, 254); |  | ||||||
|   EEPROM.put(0, id); |  | ||||||
|   delay(50); |   delay(50); | ||||||
|   sei(); |   sei(); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user