How to correct values of energy counters

Moderator: leecollings

Post Reply
marcelvandorp
Posts: 3
Joined: Friday 01 February 2019 16:30
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

How to correct values of energy counters

Post by marcelvandorp »

Hi,

I have Domoticz with smartmeter P1 and a 5-channel S0 interface. There are 4 youless S0 energy counters connected. Due to an (user) error, Domoticz stopped processing the S0 values. The P1 meter supplies the counter values, but the S0 interface only give pulses. I've missed pulses, and the domoticz values are now not the same as the values on the youless units.

I've tried /json.htm?type=command&param=udevice&idx=IDX&svalue=COUNTER to adjust the counters, but then it appears the counter isn't working any more. )IDX is index number in devices list)

I would like to see (almost) the same values both in Domoticz and on the counters itself. How can I achieve that?
I'm on an rPi3, domoticz 2020.2, S0meter USB and P1 Smart Meter USB

Any help is greatly appreciated.

Marcel

On a side note: Is there somewhere a description of the structure of the database tables, and the relations between the different tables? I can see the structure (with a sqlite browser), but I don't quite understand the meaning of all tables and fields
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: How to correct values of energy counters

Post by waaren »

marcelvandorp wrote: Wednesday 28 October 2020 12:21 I would like to see (almost) the same values both in Domoticz and on the counters itself. How can I achieve that?

On a side note: Is there somewhere a description of the structure of the database tables, and the relations between the different tables? I can see the structure (with a sqlite browser), but I don't quite understand the meaning of all tables and fields
The questions are kind of related.

I guess the only way to adjust the (historic) counter values is to modify them directly in the database.
You will find the historic counters in the tables

Code: Select all

Meter and Meter_Calendar  -- short log history - long term history of single value counters
MultiMeter and MultiMeter_Calendar --  short log history - long term history of multiple value counters (eg P1 smart meter)
The link between current values is the ID field in table DeviceStatus. That links to DeviceRowID in the history tables.

The full schema or the domoticz database below. It is pretty straight forward so most of it should be easy to follow. If you have any questions about it please ask here and I will try to come with an answer
Spoiler: show

Code: Select all

CREATE TABLE [DeviceStatus] ([ID] INTEGER PRIMARY KEY, [HardwareID] INTEGER NOT NULL, [DeviceID] VARCHAR(25) NOT NULL, [Unit] INTEGER DEFAULT 0, [Name] VARCHAR(100
) DEFAULT Unknown, [Used] INTEGER DEFAULT 0, [Type] INTEGER NOT NULL, [SubType] INTEGER NOT NULL, [SwitchType] INTEGER DEFAULT 0, [Favorite] INTEGER DEFAULT 0, [Si
gnalLevel] INTEGER DEFAULT 0, [BatteryLevel] INTEGER DEFAULT 0, [nValue] INTEGER DEFAULT 0, [sValue] VARCHAR(200) DEFAULT null, [LastUpdate] DATETIME DEFAULT (date
time('now','localtime')),[Order] INTEGER BIGINT(10) default 0, [AddjValue] FLOAT DEFAULT 0, [AddjMulti] FLOAT DEFAULT 1, [AddjValue2] FLOAT DEFAULT 0, [AddjMulti2]
 FLOAT DEFAULT 1, [StrParam1] VARCHAR(200) DEFAULT '', [StrParam2] VARCHAR(200) DEFAULT '', [LastLevel] INTEGER DEFAULT 0, [Protected] INTEGER DEFAULT 0, [CustomIm
age] INTEGER DEFAULT 0, [Description] VARCHAR(200) DEFAULT '', [Options] TEXT DEFAULT null, [Color] TEXT DEFAULT NULL);
CREATE TABLE [LightingLog] ([DeviceRowID] BIGINT(10) NOT NULL, [nValue] INTEGER DEFAULT 0, [sValue] VARCHAR(200), [User] VARCHAR(100) DEFAULT (''), [Date] DATETIME
 DEFAULT (datetime('now','localtime')));
CREATE TABLE [SceneLog] ([SceneRowID] BIGINT(10) NOT NULL, [nValue] INTEGER DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localtime')), [User] VARCHAR(100) D
EFAULT (''));
CREATE TABLE [Rain] ([DeviceRowID] BIGINT(10) NOT NULL, [Total] FLOAT NOT NULL, [Rate] INTEGER DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [Rain_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Total] FLOAT NOT NULL, [Rate] INTEGER DEFAULT 0, [Date] DATE NOT NULL);
CREATE TABLE [Temperature] ([DeviceRowID] BIGINT(10) NOT NULL, [Temperature] FLOAT NOT NULL, [Chill] FLOAT DEFAULT 0, [Humidity] INTEGER DEFAULT 0, [Barometer] INT
EGER DEFAULT 0, [DewPoint] FLOAT DEFAULT 0, [SetPoint] FLOAT DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [Temperature_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Temp_Min] FLOAT NOT NULL, [Temp_Max] FLOAT NOT NULL, [Temp_Avg] FLOAT DEFAULT 0, [Chill_Mi
n] FLOAT DEFAULT 0, [Chill_Max] FLOAT, [Humidity] INTEGER DEFAULT 0, [Barometer] INTEGER DEFAULT 0, [DewPoint] FLOAT DEFAULT 0, [SetPoint_Min] FLOAT DEFAULT 0, [Se
tPoint_Max] FLOAT DEFAULT 0, [SetPoint_Avg] FLOAT DEFAULT 0, [Date] DATE NOT NULL);
CREATE TABLE [Timers] ([ID] INTEGER PRIMARY KEY, [Active] BOOLEAN DEFAULT true, [DeviceRowID] BIGINT(10) NOT NULL, [Date] DATE DEFAULT 0, [Time] TIME NOT NULL, [Ty
pe] INTEGER NOT NULL, [Cmd] INTEGER NOT NULL, [Level] INTEGER DEFAULT 15, [Hue] INTEGER DEFAULT 0, [UseRandomness] INTEGER DEFAULT 0, [TimerPlan] INTEGER DEFAULT 0
, [Days] INTEGER NOT NULL, [Month] INTEGER DEFAULT 0, [MDay] INTEGER DEFAULT 0, [Occurence] INTEGER DEFAULT 0, [Color] TEXT DEFAULT NULL);
CREATE TABLE [SetpointTimers] ([ID] INTEGER PRIMARY KEY, [Active] BOOLEAN DEFAULT true, [DeviceRowID] BIGINT(10) NOT NULL, [Date] DATE DEFAULT 0, [Time] TIME NOT N
ULL, [Type] INTEGER NOT NULL, [Temperature] FLOAT DEFAULT 0, [TimerPlan] INTEGER DEFAULT 0, [Days] INTEGER NOT NULL, [Month] INTEGER DEFAULT 0, [MDay] INTEGER DEFA
ULT 0, [Occurence] INTEGER DEFAULT 0);
CREATE TABLE [UV] ([DeviceRowID] BIGINT(10) NOT NULL, [Level] FLOAT NOT NULL, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [UV_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Level] FLOAT, [Date] DATE NOT NULL);
CREATE TABLE [Wind] ([DeviceRowID] BIGINT(10) NOT NULL, [Direction] FLOAT NOT NULL, [Speed] INTEGER NOT NULL, [Gust] INTEGER NOT NULL, [Date] DATETIME DEFAULT (dat
etime('now','localtime')));
CREATE TABLE [Wind_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Direction] FLOAT NOT NULL, [Speed_Min] INTEGER NOT NULL, [Speed_Max] INTEGER NOT NULL, [Gust_Min]
 INTEGER NOT NULL, [Gust_Max] INTEGER NOT NULL, [Date] DATE NOT NULL);
CREATE TABLE [Meter] ([DeviceRowID] BIGINT NOT NULL, [Value] BIGINT NOT NULL, [Usage] INTEGER DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [Meter_Calendar] ([DeviceRowID] BIGINT NOT NULL, [Value] BIGINT NOT NULL, [Counter] BIGINT DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localti
me')));
CREATE TABLE [MultiMeter] ([DeviceRowID] BIGINT(10) NOT NULL, [Value1] BIGINT NOT NULL, [Value2] BIGINT DEFAULT 0, [Value3] BIGINT DEFAULT 0, [Value4] BIGINT DEFAU
LT 0, [Value5] BIGINT DEFAULT 0, [Value6] BIGINT DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [MultiMeter_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Value1] BIGINT NOT NULL, [Value2] BIGINT NOT NULL, [Value3] BIGINT NOT NULL, [Value4] BIGIN
T NOT NULL, [Value5] BIGINT NOT NULL, [Value6] BIGINT NOT NULL, [Counter1] BIGINT DEFAULT 0, [Counter2] BIGINT DEFAULT 0, [Counter3] BIGINT DEFAULT 0, [Counter4] B
IGINT DEFAULT 0, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [Notifications] ([ID] INTEGER PRIMARY KEY, [DeviceRowID] BIGINT(10) NOT NULL, [Params] VARCHAR(100), [CustomMessage] VARCHAR(300) DEFAULT (''), [Activ
eSystems] VARCHAR(200) DEFAULT (''), [Priority] INTEGER default 0, [SendAlways] INTEGER default 0, [LastSend] DATETIME DEFAULT 0);
CREATE TABLE [Users] ([ID] INTEGER PRIMARY KEY, [Active] INTEGER NOT NULL DEFAULT 0, [Username] VARCHAR(200) NOT NULL, [Password] VARCHAR(200) NOT NULL, [Rights] I
NTEGER DEFAULT 255, [TabsEnabled] INTEGER DEFAULT 255, [RemoteSharing] INTEGER DEFAULT 0);
CREATE TABLE [LightSubDevices] ([ID] INTEGER PRIMARY KEY, [DeviceRowID] INTEGER NOT NULL, [ParentID] INTEGER NOT NULL);
CREATE TABLE [Cameras] ([ID] INTEGER PRIMARY KEY, [Name] VARCHAR(200) NOT NULL, [Enabled] INTEGER DEFAULT 1, [Address] VARCHAR(200), [Port] INTEGER, [Protocol] INT
EGER DEFAULT 0, [Username] VARCHAR(100) DEFAULT (''), [Password] VARCHAR(100) DEFAULT (''), [ImageURL] VARCHAR(200) DEFAULT (''));
CREATE TABLE [CamerasActiveDevices] ([ID] INTEGER PRIMARY KEY, [CameraRowID] INTEGER NOT NULL, [DevSceneType] INTEGER NOT NULL, [DevSceneRowID] INTEGER NOT NULL, [
DevSceneWhen] INTEGER NOT NULL, [DevSceneDelay] INTEGER NOT NULL);
CREATE TABLE [DeviceToPlansMap] ([ID] INTEGER PRIMARY KEY, [DeviceRowID] BIGINT NOT NULL, [DevSceneType] INTEGER DEFAULT 0, [PlanID] BIGINT NOT NULL, [Order] INTEG
ER BIGINT(10) DEFAULT 0, [XOffset] INTEGER default 0, [YOffset] INTEGER default 0);
CREATE TABLE [Plans] ([ID] INTEGER PRIMARY KEY, [Order] INTEGER BIGINT(10) default 0, [Name] VARCHAR(200) NOT NULL, [FloorplanID] INTEGER default 0, [Area] VARCHAR
(200) DEFAULT '');
CREATE TABLE [Scenes] (
[ID] INTEGER PRIMARY KEY,
[Name] VARCHAR(100) NOT NULL,
[Favorite] INTEGER DEFAULT 0,
[Order] INTEGER BIGINT(10) default 0,
[nValue] INTEGER DEFAULT 0,
[SceneType] INTEGER DEFAULT 0,
[Protected] INTEGER DEFAULT 0,
[OnAction] VARCHAR(200) DEFAULT '', [OffAction] VARCHAR(200) DEFAULT '', [Description] VARCHAR(200) DEFAULT '', [Activators] VARCHAR(200) DEFAULT '', [LastUpdate]
DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [SceneDevices] ([ID] INTEGER PRIMARY KEY, [Order] INTEGER BIGINT(10) default 0, [SceneRowID] BIGINT NOT NULL, [DeviceRowID] BIGINT NOT NULL, [Cmd] INT
EGER DEFAULT 1, [Level] INTEGER DEFAULT 100, [Hue] INTEGER DEFAULT 0, [OnDelay] INTEGER DEFAULT 0, [OffDelay] INTEGER DEFAULT 0, [Color] TEXT DEFAULT NULL);
CREATE TABLE [TimerPlans] ([ID] INTEGER PRIMARY KEY, [Name] VARCHAR(200) NOT NULL);
CREATE TABLE [SceneTimers] ([ID] INTEGER PRIMARY KEY, [Active] BOOLEAN DEFAULT true, [SceneRowID] BIGINT(10) NOT NULL, [Date] DATE DEFAULT 0, [Time] TIME NOT NULL,
 [Type] INTEGER NOT NULL, [Cmd] INTEGER NOT NULL, [Level] INTEGER DEFAULT 15, [Hue] INTEGER DEFAULT 0, [UseRandomness] INTEGER DEFAULT 0, [TimerPlan] INTEGER DEFAU
LT 0, [Days] INTEGER NOT NULL, [Month] INTEGER DEFAULT 0, [MDay] INTEGER DEFAULT 0, [Occurence] INTEGER DEFAULT 0);
CREATE TABLE [SharedDevices] ([ID] INTEGER PRIMARY KEY,  [SharedUserID] BIGINT NOT NULL, [DeviceRowID] BIGINT NOT NULL, [Favorite] INTEGER DEFAULT 0);
CREATE TABLE [EventMaster] ([ID] INTEGER PRIMARY KEY,  [Name] VARCHAR(200) NOT NULL, [Interpreter] VARCHAR(10) DEFAULT 'Blockly', [Type] VARCHAR(10) DEFAULT 'All',
 [XMLStatement] TEXT NOT NULL, [Status] INTEGER DEFAULT 0);
CREATE TABLE [EventRules] ([ID] INTEGER PRIMARY KEY, [EMID] INTEGER, [Conditions] TEXT NOT NULL, [Actions] TEXT NOT NULL, [SequenceNo] INTEGER NOT NULL, FOREIGN KE
Y (EMID) REFERENCES EventMaster(ID));
CREATE TABLE [ZWaveNodes] ([ID] INTEGER PRIMARY KEY, [HardwareID] INTEGER NOT NULL, [HomeID] INTEGER NOT NULL, [NodeID] INTEGER NOT NULL, [Name] VARCHAR(100) DEFAU
LT Unknown, [ProductDescription] VARCHAR(100) DEFAULT Unknown, [PollTime] INTEGER DEFAULT 0);
CREATE TABLE [WOLNodes] ([ID] INTEGER PRIMARY KEY, [HardwareID] INTEGER NOT NULL, [Name] VARCHAR(100) DEFAULT Unknown, [MacAddress] VARCHAR(50) DEFAULT Unknown, [T
imeout] INTEGER DEFAULT 5);
CREATE TABLE [Percentage] ([DeviceRowID] BIGINT(10) NOT NULL, [Percentage] FLOAT NOT NULL, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [Percentage_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Percentage_Min] FLOAT NOT NULL, [Percentage_Max] FLOAT NOT NULL, [Percentage_Avg] FLOAT DEF
AULT 0, [Date] DATE NOT NULL);
CREATE TABLE [Fan] ([DeviceRowID] BIGINT(10) NOT NULL, [Speed] INTEGER NOT NULL, [Date] DATETIME DEFAULT (datetime('now','localtime')));
CREATE TABLE [Fan_Calendar] ([DeviceRowID] BIGINT(10) NOT NULL, [Speed_Min] INTEGER NOT NULL, [Speed_Max] INTEGER NOT NULL, [Speed_Avg] INTEGER DEFAULT 0, [Date] D
ATE NOT NULL);
CREATE TABLE [BackupLog] ([Key] VARCHAR(50) NOT NULL, [nValue] INTEGER DEFAULT 0);
CREATE TABLE [EnoceanSensors] ([ID] INTEGER PRIMARY KEY, [HardwareID] INTEGER NOT NULL, [DeviceID] VARCHAR(25) NOT NULL, [Manufacturer] INTEGER NOT NULL, [Profile]
 INTEGER NOT NULL, [Type] INTEGER NOT NULL);
CREATE TABLE [UserVariables] ([ID] INTEGER PRIMARY KEY, [Name] VARCHAR(200), [ValueType] INT NOT NULL, [Value] VARCHAR(200), [LastUpdate] DATETIME DEFAULT(datetime
('now', 'localtime')));
CREATE TABLE [CustomImages](    [ID] INTEGER PRIMARY KEY,       [Base] VARCHAR(80) NOT NULL,    [Name] VARCHAR(80) NOT NULL,    [Description] VARCHAR(80) NOT NULL,
        [IconSmall] BLOB,       [IconOn] BLOB,  [IconOff] BLOB);
CREATE TABLE [MySensors]( [HardwareID] INTEGER NOT NULL, [ID] INTEGER NOT NULL, [Name] VARCHAR(100) DEFAULT Unknown, [SketchName] VARCHAR(100) DEFAULT Unknown, [Sk
etchVersion] VARCHAR(40) DEFAULT(1.0));
CREATE TABLE [MySensorsVars]( [HardwareID] INTEGER NOT NULL, [NodeID] INTEGER NOT NULL, [ChildID] INTEGER NOT NULL, [VarID] INTEGER NOT NULL, [Value] VARCHAR(100)
NOT NULL);
CREATE TABLE [MySensorsChilds]( [HardwareID] INTEGER NOT NULL, [NodeID] INTEGER NOT NULL, [ChildID] INTEGER NOT NULL, [Name] VARCHAR(100) DEFAULT '', [Type] INTEGE
R NOT NULL, [UseAck] INTEGER DEFAULT 0, [AckTimeout] INTEGER DEFAULT 1200);
CREATE TABLE [ToonDevices]( [HardwareID] INTEGER NOT NULL, [UUID] VARCHAR(100) NOT NULL);
CREATE TABLE [MobileDevices]([ID] INTEGER PRIMARY KEY, [Active] BOOLEAN DEFAULT false, [Name] VARCHAR(100) DEFAULT '',[DeviceType] VARCHAR(100) DEFAULT '',[SenderI
D] TEXT NOT NULL,[UUID] TEXT NOT NULL, [LastUpdate] DATETIME DEFAULT(datetime('now', 'localtime')));
CREATE TABLE sqlite_stat1(tbl,idx,stat);
CREATE TABLE [Floorplans]([ID] INTEGER PRIMARY KEY, [Name] VARCHAR(200) NOT NULL, [Image] BLOB, [Order] INTEGER BIGINT(10) default 0, [ScaleFactor] Float default 1
.0);
CREATE TABLE [UserSessions]( [SessionID] VARCHAR(100) NOT NULL, [Username] VARCHAR(100) NOT NULL, [AuthToken] VARCHAR(100) UNIQUE NOT NULL, [ExpirationDate] DATETI
ME NOT NULL, [RemoteHost] VARCHAR(50) NOT NULL, [LastUpdate] DATETIME DEFAULT(datetime('now', 'localtime')), PRIMARY KEY([SessionID]));
CREATE TABLE [Hardware] ([ID] INTEGER PRIMARY KEY, [Name] VARCHAR(200) NOT NULL, [Enabled] INTEGER DEFAULT 1, [Type] INTEGER NOT NULL, [Address] VARCHAR(200), [Por
t] INTEGER, [SerialPort] TEXT DEFAULT (''), [Username] VARCHAR(100), [Password] VARCHAR(100), [Extra] TEXT DEFAULT (''),[Mode1] CHAR DEFAULT 0, [Mode2] CHAR DEFAUL
T 0, [Mode3] CHAR DEFAULT 0, [Mode4] CHAR DEFAULT 0, [Mode5] CHAR DEFAULT 0, [Mode6] CHAR DEFAULT 0, [DataTimeout] INTEGER DEFAULT 0, [Configuration] TEXT DEFAULT
(''));
CREATE TABLE [PushLink] ([ID] INTEGER PRIMARY KEY, [PushType] INTEGER, [DeviceRowID] BIGINT NOT NULL, [DelimitedValue] INTEGER DEFAULT 0, [TargetType] INTEGER DEFA
ULT 0, [TargetVariable] VARCHAR(100), [TargetDeviceID] INTEGER, [TargetProperty] VARCHAR(100), [Enabled] INTEGER DEFAULT 1, [IncludeUnit] INTEGER default 0);
CREATE TABLE [Preferences] ([Key] VARCHAR(50) PRIMARY KEY, [nValue] INTEGER DEFAULT 0, [sValue] VARCHAR(200));
CREATE INDEX ds_hduts_idx    on DeviceStatus(HardwareID, DeviceID, Unit, Type, SubType);
CREATE INDEX f_id_idx        on Fan(DeviceRowID);
CREATE INDEX f_id_date_idx   on Fan(DeviceRowID, Date);
CREATE INDEX fc_id_idx       on Fan_Calendar(DeviceRowID);
CREATE INDEX fc_id_date_idx  on Fan_Calendar(DeviceRowID, Date);
CREATE INDEX ll_id_idx       on LightingLog(DeviceRowID);
CREATE INDEX ll_id_date_idx  on LightingLog(DeviceRowID, Date);
CREATE INDEX sl_id_idx       on SceneLog(SceneRowID);
CREATE INDEX sl_id_date_idx  on SceneLog(SceneRowID, Date);
CREATE INDEX m_id_idx        on Meter(DeviceRowID);
CREATE INDEX m_id_date_idx   on Meter(DeviceRowID, Date);
CREATE INDEX mc_id_idx       on Meter_Calendar(DeviceRowID);
CREATE INDEX mc_id_date_idx  on Meter_Calendar(DeviceRowID, Date);
CREATE INDEX mm_id_idx       on MultiMeter(DeviceRowID);
CREATE INDEX mm_id_date_idx  on MultiMeter(DeviceRowID, Date);
CREATE INDEX mmc_id_idx      on MultiMeter_Calendar(DeviceRowID);
CREATE INDEX mmc_id_date_idx on MultiMeter_Calendar(DeviceRowID, Date);
CREATE INDEX p_id_idx        on Percentage(DeviceRowID);
CREATE INDEX p_id_date_idx   on Percentage(DeviceRowID, Date);
CREATE INDEX pc_id_idx       on Percentage_Calendar(DeviceRowID);
CREATE INDEX pc_id_date_idx  on Percentage_Calendar(DeviceRowID, Date);
CREATE INDEX r_id_idx        on Rain(DeviceRowID);
CREATE INDEX r_id_date_idx   on Rain(DeviceRowID, Date);
CREATE INDEX rc_id_idx       on Rain_Calendar(DeviceRowID);
CREATE INDEX rc_id_date_idx  on Rain_Calendar(DeviceRowID, Date);
CREATE INDEX t_id_idx        on Temperature(DeviceRowID);
CREATE INDEX t_id_date_idx   on Temperature(DeviceRowID, Date);
CREATE INDEX tc_id_idx       on Temperature_Calendar(DeviceRowID);
CREATE INDEX tc_id_date_idx  on Temperature_Calendar(DeviceRowID, Date);
CREATE INDEX u_id_idx        on UV(DeviceRowID);
CREATE INDEX u_id_date_idx   on UV(DeviceRowID, Date);
CREATE INDEX uv_id_idx       on UV_Calendar(DeviceRowID);
CREATE INDEX uv_id_date_idx  on UV_Calendar(DeviceRowID, Date);
CREATE INDEX w_id_idx        on Wind(DeviceRowID);
CREATE INDEX w_id_date_idx   on Wind(DeviceRowID, Date);
CREATE INDEX wc_id_idx       on Wind_Calendar(DeviceRowID);
CREATE INDEX wc_id_date_idx  on Wind_Calendar(DeviceRowID, Date);
CREATE TRIGGER devicestatusupdate AFTER INSERT ON DeviceStatus
BEGIN
        UPDATE DeviceStatus SET [Order] = (SELECT MAX([Order]) FROM DeviceStatus)+1 WHERE DeviceStatus.ID = NEW.ID;
END;
CREATE TRIGGER deviceplantatusupdate AFTER INSERT ON DeviceToPlansMap
BEGIN
        UPDATE DeviceToPlansMap SET [Order] = (SELECT MAX([Order]) FROM DeviceToPlansMap)+1 WHERE DeviceToPlansMap.ID = NEW.ID;
END;
CREATE TRIGGER planordertrigger AFTER INSERT ON Plans
BEGIN
        UPDATE Plans SET [Order] = (SELECT MAX([Order]) FROM Plans)+1 WHERE Plans.ID = NEW.ID;
END;
CREATE TRIGGER scenesupdate AFTER INSERT ON Scenes
BEGIN
        UPDATE Scenes SET [Order] = (SELECT MAX([Order]) FROM Scenes)+1 WHERE Scenes.ID = NEW.ID;
END;
CREATE TRIGGER scenedevicesupdate AFTER INSERT ON SceneDevices
BEGIN
        UPDATE SceneDevices SET [Order] = (SELECT MAX([Order]) FROM SceneDevices)+1 WHERE SceneDevices.ID = NEW.ID;
END;
CREATE TRIGGER floorplanordertrigger AFTER INSERT ON Floorplans
BEGIN
        UPDATE Floorplans SET [Order] = (SELECT MAX([Order]) FROM Floorplans)+1 WHERE Floorplans.ID = NEW.ID;
END;

Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
BartSr
Posts: 395
Joined: Sunday 03 July 2016 16:16
Target OS: Raspberry Pi / ODroid
Domoticz version: V2024.7
Location: Netherlands
Contact:

Re: How to correct values of energy counters

Post by BartSr »

Further to this old post:
Is there somewhere documentation about the function of each field in a table?
I am currently quit curious about values in table Devicestatus.
-Bart
Raspberry pi 3b
Arduino
KAKU
RfxCom
Zwave2MQTT
OTGW
Chinese sensors temp (Dallas),movement
Tasmota
Esp8266 / 32 espeasy
Zigbee2MQTT
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest