Das kann nicht sein, da pressure ein uint16_t ist.
Oder willst du Liter * 100 rechnen ?
1960 Liter * 100 = 196000 und das ist größer als ein uint16_t werden kann (65536).
Hab deinen Code nur flüchtig überflogen
Moderator: Co-Administratoren
Das kann nicht sein, da pressure ein uint16_t ist.
Code: Alles auswählen
+Pressure (#1) Analogwert: 251
09:54:02.222 -> +Pressure (#1) Fuellstand in Prozent: 23.3666706085
09:54:02.222 -> +Pressure (#1) Fuellstand in Litern: 1964.8845214843
09:54:02.222 -> +Pressure (#1) Messung: 6.0753340721
09:54:02.222 -> +Pressure (#1) sens_val: 251
09:54:02.222 -> +Pressure (#1) ContentTotal: 8.4089193344
09:54:02.222 -> +Pressure (#1) Pressure: 19648
<- 0E 01 84 53 E90101 424242 00 C1 01 C0 C0 - 3180
ignore 0C CD 86 5A 391C84 000000 78 BF 28 - 3194
...
Code: Alles auswählen
Readings
pressure 493.44 2019-03-13 09:54:04
state 493.44 2019-03-13 09:54:04
Code: Alles auswählen
<- 0E 01 84 53 E90101 424242 00 C1 01 C0 C0 - 3180
Korrekt.
Code: Alles auswählen
class WeatherEventMsg : public Message {
public:
void init(uint8_t msgcnt, uint8_t channel, uint32_t pressure) {
DPRINT("XXX ");DDECLN(pressure);
Message::init(0x10, msgcnt, 0x53, BCAST , 0x00, 0xc1);
pload[0] = channel & 0xff;
pload[1] = (pressure >> 24) & 0xff;
pload[2] = (pressure >> 16) & 0xff;
pload[3] = (pressure >> 8) & 0xff;
pload[4] = pressure & 0xff;
}
};
Code: Alles auswählen
<parameter type="integer" index="12.0" size="4.0" param="UNI_PRESSURE" />
möglicherweise hat sie einen zu großen Vorwiderstand weil sie für höhere Spannung ausgelegt ist