Re: Reported values got stuck sometimes
Posted: 01 Aug 2018 21:31
yes, looks right for your application
Best regards
Michael
Best regards
Michael
Code: Select all
ZUNO_LOGGING_EVENT_START = 0x00,
ZUNO_LOGGING_EVENT_GOSLEEP = 0x01,
ZUNO_LOGGING_EVENT_RESCUEMODE = 0x10,
ZUNO_LOGGING_EVENT_SETDEFAULT = 0x11,
ZUNO_LOGGING_EVENT_LEARNCOMPLETE = 0x12,
ZUNO_LOGGING_EVENT_EEPROMRESET = 0x13,
ZUNO_LOGGING_EVENT_WRONGCONFIGDATA = 0x20,
ZUNO_LOGGING_EVENT_ASSOCIATIONSEND_DROPPED = 0x90,
ZUNO_LOGGING_EVENT_OUTGOING_POLICY_DROPPED = 0x91,
ZUNO_LOGGING_EVENT_INCOMING_POLICY_DROPPED = 0x92,
ZUNO_LOGGING_EVENT_STACKOVERFLOW = 0xA0,
ZUNO_LOGGING_EVENT_PARAMSTACKOVERFLOW = 0xA1,
ZUNO_LOGGING_EVENT_PARAMSTACKUNDERFLOW = 0xA2,
ZUNO_LOGGING_EVENT_NOSENDCALLBACK = 0xA5,
ZUNO_LOGGING_EVENT_CHANNELNOTFOUND = 0xA7,
ZUNO_LOGGING_EVENT_WRONGUSERCODE = 0xB0,
ZUNO_LOGGING_EVENT_WRONGSYSFUNC = 0xB1,
ZUNO_LOGGING_EVENT_SENDQUEUE_OVERFLOW = 0xC0
Code: Select all
/*
Testing ZunoSendReport with multiple multilevel channels
All the debug messages are logged to USB Serial console. USB Serial console servers as input device, too.
1) When a Z-Wave controller polls a device, event for each Getter is logged.
2) When "a" is pressed, values are incremented AND ZunoSendReport for every channel is called.
3) When some other key is pressed, values are incremented ONLY, without calling ZunoSendReport.
*/
ZUNO_SETUP_CHANNELS(
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_VOLTAGE, SENSOR_MULTILEVEL_SCALE_VOLT, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, getter1), // PV1InputVoltage
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_CURRENT, SENSOR_MULTILEVEL_SCALE_AMPERE, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS, getter2), // PV1InputAmps
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_VOLTAGE, SENSOR_MULTILEVEL_SCALE_VOLT, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, getter3), // PV2InputVoltage
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_CURRENT, SENSOR_MULTILEVEL_SCALE_AMPERE, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS, getter4), // PV2InputAmps
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE, SENSOR_MULTILEVEL_SCALE_CELSIUS, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS, getter5), // InnerTemperature
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_CURRENT, SENSOR_MULTILEVEL_SCALE_AMPERE, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, getter6), // ChargingCurrent, pozor muze nabyvat i negativnich hodnot pri vybijeni baterie
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_VOLTAGE, SENSOR_MULTILEVEL_SCALE_VOLT, SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, getter7) // BatteryVoltage
);
#define LED1_PIN 13
#define SERIAL_Console Serial // Seriovy interface pro DEBUG.Serial=USB.Serial0=UART0.Serial1=UART1.
long VAL_PV1InputVoltage = 0;
long VAL_PV2InputVoltage = 0;
long VAL_PV1InputAmps = 0;
long VAL_PV2InputAmps = 0;
long VAL_BatteryVoltage = 0;
long VAL_InnerTemperature = 0;
signed long VAL_ChargingCurrent = 0;
void setup ()
{
SERIAL_Console.begin (9600);
pinMode(LED1_PIN, OUTPUT);
} // end of setup
void processIncomingByte (byte inByte) // Tato funkce bude zavolana pokazde, kdyz na seriove rozhrani prijde novy znak
{
digitalWrite(LED1_PIN, HIGH);
delay (50);
digitalWrite(LED1_PIN, LOW);
SERIAL_Console.println();
SERIAL_Console.println();
SERIAL_Console.println("**********************************************************");
SERIAL_Console.print("*KEY PRESSED: "); SERIAL_Console.print(inByte); SERIAL_Console.print(" "); SERIAL_Console.println(char(inByte));
SERIAL_Console.println("*INCREMENTING VALUES");
++VAL_PV1InputVoltage;
++VAL_PV1InputAmps;
++VAL_PV2InputVoltage;
++VAL_PV2InputAmps;
++VAL_InnerTemperature;
++VAL_ChargingCurrent;
++VAL_BatteryVoltage;
SERIAL_Console.print("*VAL_PV1InputVoltage "); SERIAL_Console.println(VAL_PV1InputVoltage);
SERIAL_Console.print("*VAL_PV1InputAmps "); SERIAL_Console.println(VAL_PV1InputAmps);
SERIAL_Console.print("*VAL_PV2InputVoltage "); SERIAL_Console.println(VAL_PV2InputVoltage);
SERIAL_Console.print("*VAL_PV2InputAmps "); SERIAL_Console.println(VAL_PV2InputAmps);
SERIAL_Console.print("*VAL_InnerTemperature "); SERIAL_Console.println(VAL_InnerTemperature);
SERIAL_Console.print("*VAL_ChargingCurrent "); SERIAL_Console.println(VAL_ChargingCurrent);
SERIAL_Console.print("*VAL_BatteryVoltage "); SERIAL_Console.println(VAL_BatteryVoltage);
if (char(inByte) == 'a')
{
SERIAL_Console.println("*SENDING REPORTS");
zunoSendReport(1); // pv1 volts, lifeline
zunoSendReport(2); // pv1 amps
zunoSendReport(3); // pv2 volts
zunoSendReport(4); // pv2 amps
zunoSendReport(5); // Inner Temperature
zunoSendReport(6); // Charging Current
zunoSendReport(7); // Battery Voltage
}
SERIAL_Console.println("**********************************************************");
SERIAL_Console.println();
SERIAL_Console.println();
}
void loop() // Main loop
{
while (SERIAL_Console.available () > 0)
{
processIncomingByte (SERIAL_Console.read ());
}
} // End of main loop
word getter1()
{
SERIAL_Console.println("-----------------------------------");
SERIAL_Console.print("Getter1 called. VAL_PV1InputVoltage "); SERIAL_Console.println(VAL_PV1InputVoltage);
return VAL_PV1InputVoltage;
}
word getter2(){
SERIAL_Console.print("Getter2 called. VAL_PV1InputAmps "); SERIAL_Console.println(VAL_PV1InputAmps);
return VAL_PV1InputAmps;
}
word getter3(){
SERIAL_Console.print("Getter3 called. VAL_PV2InputVoltage "); SERIAL_Console.println(VAL_PV2InputVoltage);
return VAL_PV2InputVoltage;
}
word getter4(){
SERIAL_Console.print("Getter4 called. VAL_PV2InputAmps "); SERIAL_Console.println(VAL_PV2InputAmps);
return VAL_PV2InputAmps;
}
word getter5(){
SERIAL_Console.print("Getter5 called. VAL_InnerTemperature "); SERIAL_Console.println(VAL_InnerTemperature);
return VAL_InnerTemperature;
}
signed long getter6(){
SERIAL_Console.print("Getter6 called. VAL_ChargingCurrent "); SERIAL_Console.println(VAL_ChargingCurrent);
return VAL_ChargingCurrent;
}
word getter7(){
SERIAL_Console.print("Getter7 called. VAL_BatteryVoltage "); SERIAL_Console.println(VAL_BatteryVoltage);
SERIAL_Console.println("-----------------------------------");
SERIAL_Console.println();
return VAL_BatteryVoltage;
}