数据库
必威是什么Home Assistant使用数据库存储事件和参数以进行历史记录和跟踪。使用的默认数据库是sqlite并且数据库文件存储在您的配置目录(例如。,
);但是,可以使用其他数据库。如果您喜欢运行数据库服务器(例如PostgreSQL),请使用录音机
零件。
要从命令行手动使用SQLite数据库,您将需要一个安装的sqlite3
。或者sqlite的DB浏览器提供了一个查看器,用于探索数据库数据和执行SQL命令的编辑器。首先加载数据库sqlite3
:
$sqlite3 home-Assistant_v2.db sqlite版本3.13.0 2016-05-18 10:57:30输入“。帮助”为了用法提示。sqlite>
它有助于设置一些选项以使输出更可读:
sqlite> .hader在sqlite上> .mode列
你也可以开始sqlite3
并稍后附加数据库。不确定您正在使用什么数据库?检查它,特别是如果您要删除数据。
sqlite> .databasesseq名称文件------------------------------------------------------------------------------------------------------------------------0 main/home/fab/.homeassistant/home-assistant_v2.db
模式
从您当前的家庭助理数据库中获取所有可用表:必威是什么
sqlite>从sqlite_master选择SQL;-------------------------------------------------------------------------------------------------------------------------------------创建表事件((event_id integer而不是null,event_type varchar((32),event_data文本,原点varchar((32),Time_fired DateTime,创建的DateTime,Context_ID Varchar((36),context_user_id varchar((36),context_parent_id字符((36), 首要的关键((event_id))创建表Recorder_runs((run_id integer而不是null,启动dateTime,“结尾”DateTime,loss_correct boolean,创建了DateTime,主键((run_id), 查看((cleast_cormect in((0,1)))创建表Schema_changes((change_id integer而不是null,schema_version Integer,更改DateTime,主键((change_id))创建表状态((state_id integer而不是null,域varchar((64),entity_id varchar((255),状态varchar((255),属性text,event_id integer,last_changed dateTime,last_updated dateTime,创建的dateTime,context_id varchar((36),context_user_id varchar((36),context_parent_id字符((36),old_state_id Integer,主键((state_id),外键((event_id)参考事件((event_id))创建表Sqlite_stat1((TBL,IDX,Stat)在事件上创建索引ix_events_context_user_id((context_user_id)在事件上创建索引ix_events_event_type((事件类型)在事件上创建索引ix_events_context_id((context_id)在事件上创建索引ix_events_time_time_fired((time_fired)创建index ix_recorder_runs_start_end在recorder_runs上((开始,“结尾”)在状态上创建索引ix_states_entity_id((ENTITY_ID)在状态上创建索引ix_states_context_user_id((context_user_id)创建索引IX_STATES_LAST_UPDED在状态上((最近更新时间)在状态上创建索引ix_states_event_id((event_id)创建索引IX_STATES_ENTITY_ID_LAST_UPDED在状态上((entity_id,last_upded)在状态上创建索引ix_states_context_id((context_id)在状态上创建索引IX_STATES_CONTEXT_PARENT_ID((context_parent_id)在事件上创建索引ix_events_context_parent_id((context_parent_id)
仅显示有关状态
表(因为我们在下一个示例中使用了该表):
sqlite>从sqlite_master选择SQL类型='桌子'和tbl_name='状态';
询问
表中的可用列的识别已完成,我们现在能够创建一个查询。让我们列出您的十大实体:
sqlite> .width 30,10,sqlite>选择entity_id,计数((*)按照entity_id订单从国家组计数,计数desc limit 10;entity_id计数------------------------------------------------------sensor.cpu 28874 sun.sun 21238 sensor.time 18415 sensor.new_york 18393 cover.kitchen_cover 17811 switch.mystrom_switch 14101 sensor.internet_time 12963 sensor.solar_angle1 11397 sensor.solar_angle 10440 group.all_switches 8018
删除
如果您不想保留某些实体,则可以通过使用该实体永久删除它们录音机提供的服务。
有关与数据库合作的更具交互式方式,请检查数据科学门户网站。