Version 1.1
Added saving device ID to EEPROM.
This commit is contained in:
parent
603efb8a08
commit
b2bc757c37
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
|
|
||||||
```
|
|
||||||
|
18
src/main.cpp
18
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);
|
|
||||||
sei();
|
|
||||||
}
|
|
||||||
|
|
||||||
void saveConfig()
|
|
||||||
{
|
{
|
||||||
cli();
|
|
||||||
EEPROM.write(511, 254);
|
EEPROM.write(511, 254);
|
||||||
EEPROM.put(0, id);
|
EEPROM.put(0, id);
|
||||||
|
}
|
||||||
delay(50);
|
delay(50);
|
||||||
sei();
|
sei();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user