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 | ||||
|  | ||||
| Open/close sensor on ATmega168/328 + RF24. | ||||
| Open/close sensor on ATmega168/328 + nRF24. | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| @@ -11,27 +11,6 @@ Open/close sensor on ATmega168/328 + RF24. | ||||
|  | ||||
| ## 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 | ||||
|  | ||||
| ```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 | ||||
| ``` | ||||
| Any feedback via [e-mail](mailto:github@zh.com.ru) would be appreciated. Or... [Buy me a coffee](https://paypal.me/aZholtikov). | ||||
|   | ||||
							
								
								
									
										24
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/main.cpp
									
									
									
									
									
								
							| @@ -8,8 +8,7 @@ | ||||
|  | ||||
| void sendButtonStatus(void *pvParameters); | ||||
| float getBatteryLevelCharge(void); | ||||
| void loadConfig(void); | ||||
| void saveConfig(void); | ||||
| void loadId(void); | ||||
|  | ||||
| int16_t id{abs((int16_t)ID)}; | ||||
|  | ||||
| @@ -18,6 +17,8 @@ SemaphoreHandle_t buttonSemaphore; | ||||
|  | ||||
| void setup() | ||||
| { | ||||
|   loadId(); | ||||
|  | ||||
|   EICRA |= (1 << ISC00); | ||||
|   EIMSK |= (1 << INT0); | ||||
|   ADCSRA &= ~(1 << ADEN); | ||||
| @@ -73,26 +74,19 @@ float getBatteryLevelCharge() | ||||
|   while (bit_is_set(ADCSRA, ADSC)) | ||||
|     ; | ||||
|   ADCSRA &= ~(1 << ADEN); | ||||
|   float value = ((1024 * 1.1) / (ADCL + ADCH * 256)); | ||||
|   return value; | ||||
|   return (1024 * 1.1) / (ADCL + ADCH * 256); | ||||
| } | ||||
|  | ||||
| void loadConfig() | ||||
| void loadId() | ||||
| { | ||||
|   cli(); | ||||
|   if (EEPROM.read(511) == 254) | ||||
|     EEPROM.get(0, id); | ||||
|   else | ||||
|     saveConfig(); | ||||
|   delay(50); | ||||
|   sei(); | ||||
| } | ||||
|  | ||||
| void saveConfig() | ||||
| { | ||||
|   cli(); | ||||
|   EEPROM.write(511, 254); | ||||
|   EEPROM.put(0, id); | ||||
|   { | ||||
|     EEPROM.write(511, 254); | ||||
|     EEPROM.put(0, id); | ||||
|   } | ||||
|   delay(50); | ||||
|   sei(); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user