mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-10 07:26:38 +02:00
Merge pull request #76 from stefan123t/main
Raspberry Pi pyRF24 build instructions from mslookup
This commit is contained in:
commit
425ffdfc58
11 changed files with 199 additions and 77 deletions
|
@ -8,6 +8,12 @@
|
|||
|
||||
#include "hmDefines.h"
|
||||
|
||||
#ifdef DEBUG_HMINVERTER
|
||||
#define DBGINV(f,...) do { Serial.printf(PSTR(f), ##__VA_ARGS__); } while (0)
|
||||
#else
|
||||
#define DBGINV(x...) do { (void)0; } while (0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* For values which are of interest and not transmitted by the inverter can be
|
||||
* calculated automatically.
|
||||
|
@ -86,7 +92,7 @@ class Inverter {
|
|||
}
|
||||
|
||||
void init(void) {
|
||||
DPRINTLN(F("hmInverter.h:init"));
|
||||
DBGINV(F("hmInverter.h:init"));
|
||||
getAssignment();
|
||||
toRadioId();
|
||||
record = new RECORDTYPE[listLen];
|
||||
|
@ -96,7 +102,7 @@ class Inverter {
|
|||
}
|
||||
|
||||
uint8_t getPosByChFld(uint8_t channel, uint8_t fieldId) {
|
||||
//DPRINTLN(F("hmInverter.h:getPosByChFld"));
|
||||
//DBGINV(F("hmInverter.h:getPosByChFld"));
|
||||
uint8_t pos = 0;
|
||||
for(; pos < listLen; pos++) {
|
||||
if((assign[pos].ch == channel) && (assign[pos].fieldId == fieldId))
|
||||
|
@ -106,22 +112,22 @@ class Inverter {
|
|||
}
|
||||
|
||||
const char *getFieldName(uint8_t pos) {
|
||||
//DPRINTLN(F("hmInverter.h:getFieldName"));
|
||||
//DBGINV(F("hmInverter.h:getFieldName"));
|
||||
return fields[assign[pos].fieldId];
|
||||
}
|
||||
|
||||
const char *getUnit(uint8_t pos) {
|
||||
//DPRINTLN(F("hmInverter.h:getUnit"));
|
||||
//DBGINV(F("hmInverter.h:getUnit"));
|
||||
return units[assign[pos].unitId];
|
||||
}
|
||||
|
||||
uint8_t getChannel(uint8_t pos) {
|
||||
//DPRINTLN(F("hmInverter.h:getChannel"));
|
||||
//DBGINV(F("hmInverter.h:getChannel"));
|
||||
return assign[pos].ch;
|
||||
}
|
||||
|
||||
void addValue(uint8_t pos, uint8_t buf[]) {
|
||||
//DPRINTLN(F("hmInverter.h:addValue"));
|
||||
//DBGINV(F("hmInverter.h:addValue"));
|
||||
uint8_t ptr = assign[pos].start;
|
||||
uint8_t end = ptr + assign[pos].num;
|
||||
uint16_t div = assign[pos].div;
|
||||
|
@ -138,12 +144,12 @@ class Inverter {
|
|||
}
|
||||
|
||||
RECORDTYPE getValue(uint8_t pos) {
|
||||
//DPRINTLN(F("hmInverter.h:getValue"));
|
||||
//DBGINV(F("hmInverter.h:getValue"));
|
||||
return record[pos];
|
||||
}
|
||||
|
||||
void doCalculations(void) {
|
||||
//DPRINTLN(F("hmInverter.h:doCalculations"));
|
||||
//DBGINV(F("hmInverter.h:doCalculations"));
|
||||
for(uint8_t i = 0; i < listLen; i++) {
|
||||
if(CMD_CALC == assign[i].div) {
|
||||
record[i] = calcFunctions<RECORDTYPE>[assign[i].start].func(this, assign[i].num);
|
||||
|
@ -153,12 +159,12 @@ class Inverter {
|
|||
}
|
||||
|
||||
bool isAvailable(uint32_t timestamp) {
|
||||
//DPRINTLN(F("hmInverter.h:isAvailable"));
|
||||
//DBGINV(F("hmInverter.h:isAvailable"));
|
||||
return ((timestamp - ts) < INACT_THRES_SEC);
|
||||
}
|
||||
|
||||
bool isProducing(uint32_t timestamp) {
|
||||
//DPRINTLN(F("hmInverter.h:isProducing"));
|
||||
//DBGINV(F("hmInverter.h:isProducing"));
|
||||
if(isAvailable(timestamp)) {
|
||||
uint8_t pos = getPosByChFld(CH0, FLD_PAC);
|
||||
return (getValue(pos) > INACT_PWR_THRESH);
|
||||
|
@ -167,13 +173,13 @@ class Inverter {
|
|||
}
|
||||
|
||||
uint32_t getLastTs(void) {
|
||||
//DPRINTLN(F("hmInverter.h:getLastTs"));
|
||||
//DBGINV(F("hmInverter.h:getLastTs"));
|
||||
return ts;
|
||||
}
|
||||
|
||||
private:
|
||||
void toRadioId(void) {
|
||||
//DPRINTLN(F("hmInverter.h:toRadioId"));
|
||||
//DBGINV(F("hmInverter.h:toRadioId"));
|
||||
radioId.u64 = 0ULL;
|
||||
radioId.b[4] = serial.b[0];
|
||||
radioId.b[3] = serial.b[1];
|
||||
|
@ -183,7 +189,7 @@ class Inverter {
|
|||
}
|
||||
|
||||
void getAssignment(void) {
|
||||
//DPRINTLN(F("hmInverter.h:getAssignment"));
|
||||
//DBGINV(F("hmInverter.h:getAssignment"));
|
||||
if(INV_TYPE_1CH == type) {
|
||||
listLen = (uint8_t)(HM1CH_LIST_LEN);
|
||||
assign = (byteAssign_t*)hm1chAssignment;
|
||||
|
@ -216,7 +222,7 @@ class Inverter {
|
|||
|
||||
template<class T=float>
|
||||
static T calcYieldTotalCh0(Inverter<> *iv, uint8_t arg0) {
|
||||
//DPRINTLN(F("hmInverter.h:calcYieldTotalCh0"));
|
||||
//DBGINV(F("hmInverter.h:calcYieldTotalCh0"));
|
||||
if(NULL != iv) {
|
||||
T yield = 0;
|
||||
for(uint8_t i = 1; i <= iv->channels; i++) {
|
||||
|
@ -230,7 +236,7 @@ static T calcYieldTotalCh0(Inverter<> *iv, uint8_t arg0) {
|
|||
|
||||
template<class T=float>
|
||||
static T calcYieldDayCh0(Inverter<> *iv, uint8_t arg0) {
|
||||
//DPRINTLN(F("hmInverter.h:calcYieldDayCh0"));
|
||||
//DBGINV(F("hmInverter.h:calcYieldDayCh0"));
|
||||
if(NULL != iv) {
|
||||
T yield = 0;
|
||||
for(uint8_t i = 1; i <= iv->channels; i++) {
|
||||
|
@ -244,7 +250,7 @@ static T calcYieldDayCh0(Inverter<> *iv, uint8_t arg0) {
|
|||
|
||||
template<class T=float>
|
||||
static T calcUdcCh(Inverter<> *iv, uint8_t arg0) {
|
||||
//DPRINTLN(F("hmInverter.h:calcUdcCh"));
|
||||
//DBGINV(F("hmInverter.h:calcUdcCh"));
|
||||
// arg0 = channel of source
|
||||
for(uint8_t i = 0; i < iv->listLen; i++) {
|
||||
if((FLD_UDC == iv->assign[i].fieldId) && (arg0 == iv->assign[i].ch)) {
|
||||
|
@ -257,7 +263,7 @@ static T calcUdcCh(Inverter<> *iv, uint8_t arg0) {
|
|||
|
||||
template<class T=float>
|
||||
static T calcPowerDcCh0(Inverter<> *iv, uint8_t arg0) {
|
||||
//DPRINTLN(F("hmInverter.h:calcPowerDcCh0"));
|
||||
//DBGINV(F("hmInverter.h:calcPowerDcCh0"));
|
||||
if(NULL != iv) {
|
||||
T dcPower = 0;
|
||||
for(uint8_t i = 1; i <= iv->channels; i++) {
|
||||
|
@ -271,7 +277,7 @@ static T calcPowerDcCh0(Inverter<> *iv, uint8_t arg0) {
|
|||
|
||||
template<class T=float>
|
||||
static T calcEffiencyCh0(Inverter<> *iv, uint8_t arg0) {
|
||||
//DPRINTLN(F("hmInverter.h:calcEfficiencyCh0"));
|
||||
//DBGINV(F("hmInverter.h:calcEfficiencyCh0"));
|
||||
if(NULL != iv) {
|
||||
uint8_t pos = iv->getPosByChFld(CH0, FLD_PAC);
|
||||
T acPower = iv->getValue(pos);
|
||||
|
@ -288,7 +294,7 @@ static T calcEffiencyCh0(Inverter<> *iv, uint8_t arg0) {
|
|||
|
||||
template<class T=float>
|
||||
static T calcIrradiation(Inverter<> *iv, uint8_t arg0) {
|
||||
//DPRINTLN(F("hmInverter.h:calcIrradiation"));
|
||||
//DBGINV(F("hmInverter.h:calcIrradiation"));
|
||||
// arg0 = channel
|
||||
if(NULL != iv) {
|
||||
uint8_t pos = iv->getPosByChFld(arg0, FLD_PDC);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue