mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-04-17 01:05:30 +00:00
Pulse meter
This commit is contained in:
@@ -1195,6 +1195,13 @@ bool readHanPort() {
|
||||
if(pulseMc != NULL) {
|
||||
pulseMc->onPulse(pulses);
|
||||
pulses = 0;
|
||||
if(meterState.getListType() < 3) {
|
||||
time_t now = time(nullptr);
|
||||
if(now > FirmwareVersion::BuildEpoch) {
|
||||
ImpulseAmsData init = ImpulseAmsData(ds.getEstimatedImportCounter());
|
||||
meterState.apply(init);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!mc->loop()) {
|
||||
meterState.setLastError(mc->getLastError());
|
||||
|
||||
@@ -14,3 +14,8 @@ ImpulseAmsData::ImpulseAmsData(AmsData& state, uint16_t pulsePerKwh, uint8_t pul
|
||||
lastUpdateMillis = state.getLastUpdateMillis();
|
||||
}
|
||||
}
|
||||
|
||||
ImpulseAmsData::ImpulseAmsData(double activeImportCounter) {
|
||||
this->activeImportCounter = activeImportCounter;
|
||||
this->listType = 3;
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
class ImpulseAmsData : public AmsData {
|
||||
public:
|
||||
ImpulseAmsData(AmsData &state, uint16_t pulsePerKwh, uint8_t pulses);
|
||||
ImpulseAmsData(double activeImportCounter);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -48,10 +48,10 @@ void PulseMeterCommunicator::setupGpio() {
|
||||
if(meterConfig.rxPin != NOT_A_PIN) {
|
||||
pinMode(meterConfig.rxPin, meterConfig.rxPinPullup ? INPUT_PULLUP : INPUT);
|
||||
}
|
||||
if(meterConfig.txPin != NOT_A_PIN) {
|
||||
pinMode(meterConfig.txPin, OUTPUT);
|
||||
digitalWrite(meterConfig.txPin, HIGH);
|
||||
}
|
||||
// Export counter?
|
||||
// if(meterConfig.txPin != NOT_A_PIN) {
|
||||
// pinMode(meterConfig.txPin, meterConfig.rxPinPullup ? INPUT_PULLUP : INPUT);
|
||||
// }
|
||||
}
|
||||
|
||||
void PulseMeterCommunicator::onPulse(uint8_t pulses) {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
class PulseMeterCommunicator : public MeterCommunicator {
|
||||
public:
|
||||
PulseMeterCommunicator(RemoteDebug* debugger);
|
||||
void configure(MeterConfig&, Timezone*);
|
||||
void configure(MeterConfig& config, Timezone* tz);
|
||||
bool loop();
|
||||
AmsData* getData(AmsData& meterState);
|
||||
int getLastError();
|
||||
|
||||
Reference in New Issue
Block a user