I have some 433MHz temperature sensors that I log. One of these is used for the furnace hot water circuit which goes to my radiators and water heater. Since I cannot recalibrate the sensor, and I am measuing the temperature with a probe mashed in between the insulation and the pipe, I get a measurement that is 10°C off, compared to the analog, properly calibrated sensor which come with the insulation.
I store the values in a MySQL database, and for future use, I prefer to store the raw data. I have a separate table for the sensor metadata.
I want to do something like
select
sd.sensorid,
sd.unittype,
sd.value * sm.modifier as realvalue
from
telldus.sensorData sd
left join sensormeta sm
on sensorData.id = sensormeta.id
group by
sm.id,
unittype
(I want to be able to do this, because i think that it might be a multiplier not just an addition)
But this would require me havinb an int
value - I'd like to store the operator in the field as well. (*1.1
/ 10
, etc). I don't see this as possible...
Sensor metadata
id | type | modifier | name |
---|---|---|---|
135 | temperature/humidity | 0 | Soveværelse 1 |
136 | temperature/humidity | 0 | Udendørs østvendt |
147 | temperature/humidity | 10 | varmtvandskreds |
166 | temperature/humidity | 0 | Stue 1 |
167 | temperature/humidity | 0 | Soveværelse 2 |
Sensordata
id | unittype | time | value |
---|---|---|---|
135 | temperature | 01:00 | 21.2 |
135 | humidity | 01:00 | 51 |
136 | temperature | 01:00 | -0.3 |
147 | temperature | 01:02 | 22.2 |
147 | humidity | 01:02 | 41 |
166 | temperature | 01:00 | 20.7 |
166 | humidity | 01:00 | 31 |
167 | temperature | 01:00 | 11.7 |
167 | humidity | 01:00 | 64 |
199 | temperature | 00:50 | 51.2 |
215 | temperature | 01:01 | 4.1 |
CodePudding user response:
Use another column to hold the operation.
id | type | modifier | operation | name |
---|---|---|---|---|
135 | temperature/humidity | 0 | none | Soveværelse 1 |
136 | temperature/humidity | 0 | none | Udendørs østvendt |
147 | temperature/humidity | 10 | add | varmtvandskreds |
166 | temperature/humidity | 1.1 | multiply | Stue 1 |
167 | temperature/humidity | 0 | none | Soveværelse 2 |
Then the query will begin:
select
sd.sensorid,
sd.unittype,
CASE sm.operation
WHEN 'multiply' THEN sd.value * sm.modifier
WHEN 'add' THEN sd.value sm.modifier
ELSE sd.value
END as realvalue