InfluxDB和Grafana使用笔记
HomeAssistant自带的数据库是SQLite
可能我加入的十几个传感器采样速度过快,没几天home-assistant_v2.db
就400多M了
回看历史数据的速度惨不忍睹,经过一番调研决定更换时序型的数据库InfluxDB
同时自带的图表实在太简陋,也更换了Grafana
InfluxDB
在群晖Docker的注册表里搜索并下载influxdb
在高级设置
里勾选启动自动重新启动
在卷
里设置/docker/influxdb
映射装载路径/var/lib/influxdb
在网络
里勾选使用与Docker Host相同的网络
在控制台启动bash
,运行influxdb
创建数据库
1 | CREATE DATABASE home_assistant |
修改configuration.yaml
增加如下内容
1 | influxdb: |
重启服务
至此,HomeAssistant数据库切换成功
Grafana
在群晖Docker的注册表里搜索并下载grafana/grafana
在高级设置
里勾选启动自动重新启动
在卷
里设置/docker/grafana
映射装载路径/var/lib/grafana
在网络
里勾选使用与Docker Host相同的网络
注意如果启动失败,可以为文件夹添加权限
访问http://群晖IP:3000
,用户名密码均为admin
添加数据源,类型选择InfluxDB
设置里URL填写http://127.0.0.1:8086
数据库名称home_assistant
点击Save & Test
,出现Data source is working
即可
在Dashboard里
选择Query的数据库,修改第一行为
1 | From ppm WHERE entity_id = mb_co2 |
即可连接数据库,绘制出而二氧化碳的数值曲线
可添加多条Query语句
最后保存Dashboard
引用
https://registry.hub.docker.com/_/influxdb/
https://registry.hub.docker.com/r/grafana/grafana
https://bbs.hassbian.com/thread-4185-1-1.html
https://blog.yxwang.me/2017/10/smart-home-2/
盖革计数器笔记
硬件
看了HBO的《切尔诺贝利》之后,觉得是时候重新填坑了
把前两年买的盖格计数器翻出来Geiger-Counter-RadiationD-v1.1-CAJOE
它和NodeMCU连接如下
NodeMCU | geiger(p3) |
---|---|
Vin(5V) | 5V |
GND | GND |
D2(IO4) | VIN |
加了块OLED显示器,连接如下
NodeMCU | OLED |
---|---|
3V3 | 3V3 |
GND | GND |
D4(IO2) | SCL |
D3(IO0) | SDA |
软件
程序如下
1 | #include <ESP8266WiFi.h> |
修改homeassistantconfiguration.yaml
编辑/docker/homeassistantconfiguration.yaml
在末尾加入
1 | sensor: |
重启服务即可
引用
https://github.com/SensorsIot/Geiger-Counter-RadiationD-v1.1-CAJOE-/
https://www.youtube.com/watch?v=K28Az3-gV7E&feature=youtu.be
https://zh.wikipedia.org/wiki/%E8%A5%BF%E5%BC%97
https://github.com/SensorsIot/Geiger-Counter-RadiationD-v1.1-CAJOE-/blob/master/Geiger_Counter.ino
TrinityCore笔记
准备工作
在群晖的Virtual Machine Manager
里创建新的虚拟机
在Debian官网下载镜像(https://www.debian.org/distrib/)
建议内存4GB/硬盘40GB
服务器安装
最好先安装lnmp
之前的工作看这里
- LNMP安装笔记
接着做环境准备下载3.3.5源码
1
2
3
4$ sudo apt-get update
$ sudo apt-get install git clang cmake make gcc g++ libmariadbclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev p7zip-full
$ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
$ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100配置1
2$ cd ~/
$ git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git1
$ sudo cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server
- DTOOLS=0 是不编译地图提取工具的选项
编译后续可以拉取git代码更新1
2$ sudo make
$ sudo make install1
2$ cd ~/TrinityCore/
$ git pull origin 3.3.5服务器设置
上传客户端到~/wow_client
提取DBC和Maps提取vmaps(可选)1
2
3
4$ cd ~/wow_client/
$ /home/wow/server/bin/mapextractor
$ mkdir /home/wow/server/data
$ cp -r dbc maps /home/wow/server/data提取mmaps(可选,我用了6个多小时)1
2
3
4
5$ cd ~/wow_client/
$ /home/wow/server/bin/vmap4extractor
$ mkdir vmaps
$ /home/wow/server/bin/vmap4assembler Buildings vmaps
$ cp -r vmaps /home/wow/server/data拷贝配置文件1
2
3
4$ cd ~/wow_client/
$ mkdir mmaps
$ /home/wow/server/bin/mmaps_generator
$ cp -r mmaps /home/wow/server/data编辑worldserver.conf1
2
3$ cd ~/server/etc/
$ cp worldserver.conf.dist worldserver.conf
$ cp authserver.conf.dist authserver.conf还有数据库配置(帐号wow,密码trinity)1
DataDir = "../data"
编辑authserver.conf1
2
3LoginDatabaseInfo = "127.0.0.1;3306;wow;trinity;auth" #worldserver.conf
WorldDatabaseInfo = "127.0.0.1;3306;wow;trinity;world" #worldserver.conf
CharacterDatabaseInfo = "127.0.0.1;3306;wow;trinity;characters" #worldserver.conf1
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
安装数据库
这三个数据库的说明如下1
2
3
4
5
6CREATE DATABASE `world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON `world` . * TO 'wow'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `characters` . * TO 'wow'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `auth` . * TO 'wow'@'localhost' WITH GRANT OPTION;auth - holds account data - usernames, passwords, GM access, realm information, etc.
characters - holds character data - created characters, inventory, bank items, auction house, tickets, etc.
world - holds game-experience content such as NPCs, quests, objects, etc
hotfixes (master only) - holds fixes not already added to the core or other official databases.
下载最新的数据库文件(https://github.com/TrinityCore/TrinityCore/releases)
把它放在server/bin
目录下
1 | $ cd ~/server/bin/ |
执行结束,数据库导入完成
配置修改
修改本机客户端文件\Data\zhCN\realmlist.wtf
,改为服务器地址
1 | set realmlist xxx.xxx.xxx.xxx |
修改数据库auth
表realmlist
name
是服务器名称address
是服务器地址gamebuild
是客户端版本号(客户端启动时左下角可见)
测试
启动服务器
1 | $ cd ~/server/bin/ |
创建帐号并设置为gm(3级权限)
1 | account create user password |
如果要和朋友一起玩,就映射一个域名上去
frp映射好本地服务器的3724
和8085
端口
frp服务器开对应的防火墙端口即可
gm指令请惠存
(https://trinitycore.atlassian.net/wiki/spaces/tc/pages/2130065/GM+Commands)
优秀插件
(https://rochet2.github.io/downloads/)
引用
https://trinitycore.atlassian.net/wiki/spaces/tc/pages/2130077/Installation+Guide
LNMP安装笔记
安装Nginx
1 | # apt update |
控制服务状态
1 | # systemctl start nginx |
安装MariaDB
1 | # apt install mariadb-server |
安全配置全部Yes
1 | # mysql_secure_installation |
安装PHP-FPM (Fast Process Manager)
1 | # apt install php-fpm php-mysqli |
查看启动状态
1 | # systemctl status php7.3-fpm |
修改PHP-FPM配置文件/etc/php/7.3/fpm/php.ini
取消如下内容的注释,并改为0
1 | cgi.fix_pathinfo=0 |
修改Nginx配置文件/etc/nginx/sites-available/default
取消如下内容的注释
1 | location ~ \.php$ { |
同时添加主页index.php
重启服务
1 | # systemctl restart php7.3-fpm |
在/var/www/html/
下编写测试页
1 | <?php phpinfo(); ?> |
测试正常后继续
下载phpMyAdmin,并解压到/var/www/html/
目录下
进入mysql命令行创建phpmyadmin用户
1 | CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'password'; |
使用phpmyadmin登录成功即可
引用
https://www.tecmint.com/install-lemp-on-debian-10-server/
https://www.centos.bz/2017/07/mysql5-7-phpmyadmin-access-denied-for-user-rootlocalhost/
在KiCad5中使用FreeRouting
升级了新版的KiCad5,感觉好用很多
我布线多用FreeRouter因为人工智能终究会取代我们
新版的FreeRouting打包在LayoutEditor这款软件里
下载程序压缩包后,提取其中的freeRouting.jar
我是在Ubuntu上运行Kicad的
所以还需要安装OpenJava的运行环境
1 | $ sudo apt install default-jre |
只要在pcbnew里面导出.DSN文件File → Export → Specctra DSN
导入到FreeRouting中,布好线之后再导出.SES文件
再次导入到pcbnew程序里即可File → Import → Spectra Session
二氧化碳传感器使用笔记
介绍
DS-CO2-20 是一款基于非分光红外吸收原理的数字式二氧化碳浓度传感器,可连续采集并计算单位体积内空气中的二氧化碳浓度,并以通用数字接口形式输出。
本传感器可嵌入各种与二氧化碳浓度相关的仪器仪表或环境改善设备,为其提供及时准确的浓度数据。
硬件部分
它的针脚是2mm间距,接口朝下俯视角从左到右分别是pin1到pin7,需要注意的是5V供电
管脚 | 标号 | 说明 |
---|---|---|
pin1 | VCC | 5V |
pin2 | GND | |
pin3 | RXD | TTL_3.3V |
pin4 | TXD | TTL_3.3V |
pin5 | RESET | TTL_3.3V |
pin6 | NC | |
pin7 | NC |
把NodeMCU和它连接使用,接法如下
NodeMCU | DS-CO2-20 |
---|---|
Vin(5V) | VCC |
GND | GND |
D5(IO14) | RXD |
D6(IO12) | TXD |
软件部分
通讯方式是串口通讯,默认波特率:9600bps,校验位:无,停止位:1 位
通讯协议是应答式,主机发送0x42, 0x4d, 0xe3, 0x00, 0x00, 0x01, 0x72
其中前两位是特征字节,第三位是指令字节,最后两位是校验字节
从机应答格式协议长度为12字节,从0x42, 0x4d
开始二氧化碳数值的高低八位分别在第5、6位
最后两位是校验字节
程序如下
1 | #include <ESP8266WiFi.h> |
添加传感器到HomeAssistant
之前的工作看这里
修改homeassistantconfiguration.yaml
编辑/docker/homeassistantconfiguration.yaml
在末尾加入
1 | sensor: |
esp8266程序
将DHT22连接到NodeMCU的D2
口也就是IO4
上
烧写程序如下
1 | #include <ESP8266WiFi.h> |
测试
在开发者工具/MQTT
中
订阅主题Topic
为esp/sensor1
注意监听
在主页面中右上角选择配置UI
在右下角选择添加卡片
在实体
里选择sensor.temperature
和sensor.humidity
完成添加到主页
在iPhone的家庭APP里可以看到
注意
湿度传感器需要在修改homeassistantconfiguration.yaml的时候加入device_class: humidity
Device Class支持的传感器类型有
None: Generic sensor. This is the default and doesn’t need to be set.
battery: Percentage of battery that is left.
humidity: Percentage of humidity in the air.
illuminance: The current light level in lx or lm.
signal_strength: Signal strength in dB or dBm.
temperature: Temperature in °C or °F.
power: Power in W or kW.
pressure: Pressure in hPa or mbar.
timestamp: Datetime object or timestamp string.
Debian添加自动补全
安装bash-completion
1 | apt-get install bash-completion |
编辑~/.bashrc 文件,添加如下内容:
1 | if [ -f /etc/bash_completion ]; then |
重新登录
群晖搭建HomeAssistant连接HomeKit
安装HomeAssistant
在群晖Docker的注册表里搜索并下载homeassistant/home-assistant
在高级设置
里勾选启动自动重新启动
在卷
里设置/docker/homeassistant
映射装载路径/config
在网络
里勾选使用与Docker Host相同的网络
在环境
里设置TZ
数值为Asia/Shanghai
浏览器访问http://群晖的ip:8123
即可完成剩下的设置
添加HomeKit支持
编辑/docker/homeassistantconfiguration.yaml
在末尾加入
1 | homekit: |
末尾有空格
返回HomeAssistant页面,会收到HomeKit的配置代码
如果忘记了此代码,可以删除.homekit.state
文件
安装MQTT服务器
在群晖Docker的注册表里搜索并下载ncarlier/mqtt
在高级设置
里勾选启动自动重新启动
在网络
里勾选使用与Docker Host相同的网络
完成设置
编辑/docker/homeassistantconfiguration.yaml
在末尾加入
1 | mqtt: |
烧写esp8266程序
基础设置参考这里
(https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/)
此外安装库PubSubClient
烧写程序如下
1 | #include <ESP8266WiFi.h> |
测试
编辑/docker/homeassistantconfiguration.yaml
在末尾加入
1 | switch: |
在开发者工具/MQTT
中
填写主题Topic
为esp/switch1
分别发送有效负载为ON
或OFF
进行测试
注意在客户端监听
在主页面中右上角选择配置UI
在右下角选择添加卡片
在实体
里选择switch.light
完成添加到主页
最后在iPhone的家庭APP里添加配件,简单配置后即可使用Siri控制开关
引用
(https://www.instructables.com/id/Using-an-Esp8266-Arduino-to-Control-a-Relay-Using-/)