首页
关于
Search
1
服务器折腾笔记
678 阅读
2
智能家居改造&HomeAssistant使用
280 阅读
3
树莓派折腾指南
239 阅读
4
本地部署LLM大语言模型
114 阅读
5
FRP端口映射
104 阅读
默认分类
it
算法学习
力扣每日解题
Liunx
前端学习
HTML+CSS
JS
VUE
后端学习
java
python
兴趣爱好
魔方
花切&魔术
折纸
3d打印
航拍
硬件学习
树莓派
刷机经验
esp8266
arduino
生活日记
奇思妙想
琐事吐槽
感慨万千
服务器折腾
登录
Search
标签搜索
小程序
微信
前端
博客
尘埃啊
累计撰写
13
篇文章
累计收到
3
条评论
首页
栏目
默认分类
it
算法学习
力扣每日解题
Liunx
前端学习
HTML+CSS
JS
VUE
后端学习
java
python
兴趣爱好
魔方
花切&魔术
折纸
3d打印
航拍
硬件学习
树莓派
刷机经验
esp8266
arduino
生活日记
奇思妙想
琐事吐槽
感慨万千
服务器折腾
页面
关于
搜索到
4
篇与
硬件学习
的结果
2024-02-21
arduino开发板学习
Arduino开发板arduino官网 https://www.arduino.cc/arduino 内置函数文档说明 https://docs.arduino.cc/learn/programming/reference/太极中文对照价函数文档说明 http://www.taichi-maker.com/homepage/reference-index/arduino-code-reference/一、认识arduino 图为arduion uno开发板在Arduino中,PWM(脉冲宽度调制)数字端口和模拟(Analog)端口具有不同的功能和特点。PWM(脉冲宽度调制)数字端口:PWM数字端口是指能够产生PWM信号的特殊数字引脚,如Arduino Uno的3、5、6、9、10和11号引脚。其他Arduino板可能有不同的PWM引脚。PWM引脚通过模拟输出的方式产生模拟信号,但它们仍然是数字引脚,只能输出逻辑高或逻辑低电平。PWM信号的特点是可以通过改变脉冲的占空比来模拟出不同的模拟电压,从而控制外部设备的亮度、速度等,例如控制LED的亮度或舵机的位置。模拟端口:模拟端口是指能够读取模拟信号的引脚,如Arduino Uno的A0到A5引脚。这些引脚可以接收来自传感器、电位器等模拟信号,并将它们转换为数字值。模拟端口上的模拟输入被Arduino内置的ADC(模拟数字转换器)转换为数字值。这些数字值的范围通常是0到1023(10位ADC),代表输入模拟信号的电压在0到5V之间的值。模拟端口还可以通过使用PWM来模拟模拟输出。虽然这些引脚通常用于模拟输入,但是某些Arduino板上的模拟端口也具有PWM功能。例如,Arduino Uno的引脚A0到A5也可以产生PWM信号。总的来说,PWM数字端口用于产生PWM信号以控制外部设备的亮度、速度等,而模拟端口用于读取传感器信号并将其转换为数字值。某些Arduino板上的模拟端口也可以用于产生PWM信号,但是它们的主要功能还是模拟输入。二、C++前置知识2.1创建变量名要求变量名称注意事项变量名不能有空格变量名不能有特殊符号不能以数字开头不能使用关键字只能使用数字字母以及下划线命名,且不能以数字开头三、物理,电路硬件前置知识3.1欧姆定律V=I*R V表示电压(单位为伏特),I表示电流(单位为安培),R表示电阻(单位为欧姆)3.2电子元件3.2.1 发光二极管区分正负极,长边为正极,短边为负极,电流很小可以忽略不计(20mA),因此需要在电路中配合电阻使用3.2.2 四角微动开关相连不同侧,同侧不相连3.2.3 上拉电阻当外部信号未连接到输入引脚时,输入引脚处于悬空状态,容易受到干扰而产生不确定的电平。这种情况下,如果没有上拉电阻,输入引脚可能会随机地处于高电平或低电平状态,从而导致系统错误或不可预测的行为上拉电阻的作用是确保输入引脚在未连接外部信号时保持在逻辑高电平状态,以防止悬空状态引发不确定的电平,从而提高系统的稳定性和可靠性。上拉电阻在不同的电路中取值不同,通常在arduino中使用10kΩ的电阻3.2.4 数码管3.2.5 电位器四、arduino小实验(数字引脚)arduino函数总结void setup() {} 只执行一次,通电或rest后执行一次void loop() {} 反复执行pinMode(引脚值,初始化设置)OUTPUT模式 此时引脚为低阻抗状态,可以向其他电路原件提供电流(通常为40mA以内)当引脚配置为输出模式时,它可以向外部设备发送电信号。这意味着它可以控制外部设备的状态。在输出模式下,可以通过编程将引脚设置为逻辑高电平(通常是电源电压,如5V)或逻辑低电平(通常是接地电压,如0VINPUT模式 引脚设为数字输入INPUT 状态时,此时引脚为高阻抗状态,可以识别两种状态 HIGH(高电平) LOW(低电平)当引脚配置为输入模式时,它被用于接收外部信号。这意味着它可以读取外部传感器的值或监测外部设备的状态。在输入模式下,引脚可以读取外部电平,比如读取按钮的状态(按下或释放)或读取其他数字信号。在输入模式下,引脚的电平由外部信号确定。INPUT_PULLUP模式 arduino将开启内部的上拉电阻,设置为输入上拉以后,请勿将该引脚与负压或者高于5v的电压相连,否则会损坏Arduino\这种模式下的输入引脚与普通输入模式相似,但是在此模式下引脚连接了一个内部上拉或下拉电阻,以确保在外部信号未连接时,引脚的电平稳定。当引脚配置为输入模式(带上拉电阻)时,如果外部信号未连接,则引脚会被拉向逻辑高电平(通常是电源电压,如5V)。当引脚配置为输入模式(带下拉电阻)时,如果外部信号未连接,则引脚会被拉向逻辑低电平(通常是接地电压,如0V)。digitalRead(引脚值) 读取当前引脚状态digitalWrite(引脚值, HIGH);HIGH 高电平 5vLOW 低电平 0Vdelay(1000); 等待时间,毫秒值串口函数Serial.begin(9600); 初始化串口通信,波特率调为9600Serial.println(buttonState); 串口输出语句analogWrite(引脚值,范围值) 必须是pwm引脚将一个模拟信号值写入arduino引脚,这个操作可以用来控制LED亮度,或者电机转速在调用analogWrite()前,无需使用pinMode()函数来设置引脚(设置也不影响,可以省略)4.1点亮uno内置LED实例让板载LED灯珠闪烁//当给开发板通点或者执行复位按钮后,setup函数会执行一次 void setup() { pinMode(LED_BUILTIN, OUTPUT);//初始化LED_BUILTIN数字引脚为输出模式,在uno中就是13数字引脚 } //函数会永久反复的执行 void loop() { digitalWrite(LED_BUILTIN, HIGH); // 设置高电平 点亮LED delay(1000); //等待一秒 digitalWrite(LED_BUILTIN, LOW); // 设置低电平 熄灭LED delay(1000); // 等待一秒 }4.2点亮LED让外置LED灯珠闪烁void setup() { pinMode(5, OUTPUT);//将数字5引脚设为输出引脚 } void loop() { digitalWrite(5, HIGH); //高电平 delay(1000); digitalWrite(5, LOW); //低电平 delay(1000); }电路接线 (上拉电阻选用10kΩ ,不加上拉电阻板子会烧掉ardino)4.3通过开关控制 进行数字输入,点亮LED按下开关点亮内置IED灯珠,串口输出由1变为0//读取引脚2的数字输入,将结果显示在串口监视器中 //引脚2连接有按键开关,给它一个名字: int pushButton = 2; //当你按下复位按钮后,setup流程运行一次: void setup() { //串口通讯初始化,每秒9600位 Serial.begin(9600); //设置按键引脚为输入 pinMode(pushButton, INPUT); } // loop 流程会永远的反复运行 void loop() { //读取输入引脚: int buttonState = digitalRead(pushButton); // 显示按键状态 Serial.println(buttonState); //可以在arduion串口窗口查看输出值 delay(1); // 为确保程序稳定运行进行短暂停止 }4.4按键控制Arduino ide灯开关按下开关才会点亮内置IED,使用引脚上拉模式,注意,在上拉模式下,按钮逻辑是反的,因此读数高电平1 灯灭 ,低电平0灯亮// 本示例展示如何使用pinMode(INPUT_PULLUP)。通过本程序,Arduino将读取引脚2 // 的数字输入并将结果显示在串口监视器中。 // 电路: // * 引脚2连接轻触开关,开关另一端接地 // * 引脚13上安装有开发板内置LED //与使用pinMode(INPUT)不同,我们在使用pinMode(INPUT_PULLUP)时不需要外接上拉或下拉电阻。 //开发板内置一个20K欧姆电阻,该电阻将引脚上拉到5V。开关在打开时,引脚读取到高电平。开关闭合后,引脚读取到低电平 void setup() { //开始串口通讯 Serial.begin(9600); //将引脚2设置为输入上拉模式 pinMode(2, INPUT_PULLUP); pinMode(13, OUTPUT);//关于引脚,在arduino uno中 13号引脚用LED_BUILTIN表示 } void loop() { //将开关状态数值读取到变量中 int sensorVal = digitalRead(2); //输出开关状态数值 Serial.println(sensorVal); //请留意在上拉模式下,按钮的逻辑状态是反的。 //即:开关断开时引脚读取到高电平。开关被按下后引脚读取到低电平。 //按钮被按下后,引脚13连接的LED将被点亮。按钮没有按下时,LED熄灭。 //如果按钮没有按下,熄灭LED。否则,点亮LED if (sensorVal == HIGH) { //按钮没有按下 digitalWrite(13, LOW); //熄灭LED } else { //否则 digitalWrite(13, HIGH); //点亮LED } }//代码优化 void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); pinMode(LED_BUILTIN, OUTPUT); } void loop() { Serial.println(digitalRead(2)); digitalRead(2)?digitalWrite(LED_BUILTIN, LOW):digitalWrite(LED_BUILTIN, HIGH);//三元运算 }4.5双控制开关测试同时按下两个按键,才能点亮uno内置ledbool b1; //设定变量 bool b2; void setup() { pinMode(2, INPUT_PULLUP); //设置引脚 pinMode(3, INPUT_PULLUP); pinMode(LED_BUILTIN, OUTPUT); } void loop() { b1 = digitalRead(2); b2 = digitalRead(3); if(!b1 && !b2){ //必须两个都是低电平才能亮灯 digitalWrite(LED_BUILTIN, HIGH); }else{ //否则都不亮 digitalWrite(LED_BUILTIN, LOW); } }4.6双控制开关,外置LED灯珠两个按键都不按下,只显示红灯,按下一个,内置LED闪烁,全部按下显示绿灯//两个按键都不按下,只显示红灯,按下一个,内置LED闪烁,全部按下显示绿灯 bool b1; bool b2; void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP);//用于读取开关变化状态 pinMode(3, INPUT_PULLUP); pinMode(4, OUTPUT); //用于给小LED供电 接红灯 pinMode(5, OUTPUT); //接绿灯 } void loop() { b1 = digitalRead(2);//把状态值存入变量,注意开关状态 按下是0 不按是1 b2 = digitalRead(3); Serial.print(b1); Serial.println(b2); if(b1 && b2){//都没按 digitalWrite(4,HIGH); }else if(!b1 && !b2){//都按下 digitalWrite(5,HIGH); }else{//只按一个 digitalWrite(4,LOW); digitalWrite(5,LOW); } } //TODO 有一定概率红绿灯同时亮起五、arduino小实验(模拟引脚)调整小LED亮度只能使用pwm引脚(3,5,6,9,19,11)5.1 通过按键控制LED灯珠亮度bool b1; bool b2; int ledPin = 9; //led引脚 int brightness = 128;//led亮度参数 void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); pinMode(ledPin, OUTPUT); } void loop() { b1 = digitalRead(2);//把状态值存入变量,注意开关状态 按下是0 不按是1 b2 = digitalRead(8); if(!b1 && brightness>0){//按1 并且 亮度大于0 变暗 brightness--; }else if(!b2 && brightness<255){////按2 并且 亮度小于255 变亮 brightness++; } analogWrite(ledPin,brightness);//改变亮点 Serial.println(brightness); delay(10);//等待10毫秒,提高稳定性 }总结,为什么可以控制LED的亮度LED灯实际上调节的是灯明暗的时间比,只不过明暗交替非常快人眼感觉不出来,当明暗交替比50的时候,亮度就是50%。调节参数0-254,实际就是二进制一个字节的大小 时间间隔大的时候,人眼感觉灯的状态是闪烁 时间间隔小的话,人眼感觉的就是明暗的变化了5.2 使用for循环实现呼吸灯效果让led灯慢慢变亮再慢慢变暗int ledPin = 9; //led引脚 void setup() { Serial.begin(9600); } void loop() { //由暗到明 for(int brightness =0;brightness=<255;brightness++){ analogWrite(ledPin,brightness);//改变亮点 Serial.println(brightness); delay(10);//等待10毫秒,提高稳定性 } //由明道暗 for(int brightness =255;brightness>=0;brightness--){ analogWrite(ledPin,brightness);//改变亮点 Serial.println(brightness); delay(10);//等待10毫秒,提高稳定性 } }
2024年02月21日
99 阅读
0 评论
0 点赞
2023-03-02
服务器折腾笔记
服务器折腾笔记最近沉迷ai绘画,想着组装一台服务器跑ai绘画模型用,鉴于最近R730xd骨折,就打算自己装一台,正好也学习一下硬件知识一 、服务器硬件组装1.1R730XD介绍戴尔易安信PowerEdge R730XD发布于2014年,是一款产品结构为2U(1U=4.445厘米)的机架式服务器具体参数:处理器:CPU支持E5 2600系 v3 v4处理器内存:有24个内存扩展槽,最大支持768G硬盘: 有多种组合,常见的是12个3.5盘位+2个2.5盘位阵列卡 支持H330和H730,H730可组RAID0、1、5、6、10、50、60扩展槽:6个PCI接口,可放一张全尺寸显卡电源: 最大双电750w或495w,热拔插冗余电源尺寸:705*483*87mm (需要1000深的机柜)1.2硬件选购在咸鱼斗志斗勇,捡垃圾砍价买齐了所有配件,中间也是折腾了很久,毕竟二手货,但是还好没有翻车,一切都是自己摸索着来的服务器准系统 :戴尔R730xd 1400¥H730阵列卡,12*3.5盘位+2*2.5盘位 全盘架,双散,双电750w,4*千兆网口,带背板CPU : E5 2698bV3 *2 450¥16核心 32线程,主频2.0G 打鸡血满载可到3.0 性价比U 并且支持D4和D3内存cpu测评显卡 : 特斯拉p40 24g缓存 949¥sdwebUI标准尺寸跑图12秒内存: 镁光d4 2rx4 2133 16G*8 1040¥需要购买ecc专用内存,可以错误检查和纠正硬盘:固态: 京造 480g 2.5盘固态 187¥机械:日立4t sas * 5 660¥ (也支持stat接口硬盘,stat为sas的一种子协议,只不过sas服务器专用的二手盘更便宜)配件:螺丝:15.4¥显卡供电线: 38¥总价 :4740¥,一套高性价比服务器就搭好了1.2.1后续 2023.3.2cpu这玩意水太深,买来一个月贬值一半,最开始用的2698bv3,后来出掉换的2680V4这个U.功耗稍微低一点,买价300一颗还不包邮,两颗600块,现在已经不到140一颗了,然后又配了一台服务器直接上的2696v4也是一周内单颗降了50块,系统盘还是换了raid1阵列安全一些,毕竟现在固态也不贵,国产固态崛起,国外的大厂也就不容易起火了第一台服务器配置服务器准系统 :戴尔R730xd 1400¥CPU : E5 2680v4 *2 450¥显卡 :特斯拉P40 24g缓存 949¥特斯拉P4 8g缓存 380¥内存: 镁光d4 2rx4 2133 16G8 1040¥ + 海力士d4 2rx4 2133 16G16 1688¥硬盘:固态:京造 960g 2.5盘固态 *2 (raid1) 685¥机械:日立4t sas * 5 (raid5) 660¥合计: 7252第二台服务器配置服务器准系统 :戴尔R730xd 1100¥ (跟之前同配置,价格也跌了)CPU : E5 2696v4 *2 1700¥显卡 : 特斯拉T40 24g缓存 775¥ (跌的心疼)内存: 三星d4 4rx4 2133 32G*8 1720¥硬盘:固态:三星780evo 1t 2.5盘固态 *2 (raid1) 1200¥机械:希捷4t stat * 3 (raid5) 660¥合计: 7155其他配件机柜买的 1.2m*600宽*1000深的 745¥导轨买了四对静态导轨 *2 240¥动态导轨*2 440 ¥备用sas硬盘 日立4t *2 280¥螺丝:15.4¥显卡供电线*2 76¥注册机及其他软件 :46.8 ¥合计:1843总计:16250 不算不知道一算吓一跳,再加上电费,专线费一年两三万出去了1.3组装硬件硬盘 cpu 内存 显卡都提前到了,主机从北京发潍坊等了足足五天,可把我急坏了来自五湖四海的配件合照开搞之前还仔细看了一遍戴尔R730XD手册和结构图,生怕整错了1.3.1 开搞拿到服务器后,先拆下R730xd盖子,取出风道板,拆下散热器,其中一个散热器螺丝还滑丝了,废了好大劲才弄开,把散热器残留硅脂擦干净然后装上了CPU(CPU如果只装一个的话要装在CPU1槽)内存条全部插白色槽位(然后黑色最后绿色),组8通道 (R730xd这外观是真的好看,虽然是8年前的老古董了,设计还是可以的)机械硬盘一开始还插错了位置,没有用螺丝固定,后面又买了m3*5的镀锌沉头螺丝固态的螺丝没到的时候,直接插上面了,盘架都省了显卡是最折腾人的,一开始不会装,怎么装都装不下,后来又重试可以装,差点把显卡卖掉.送的转接线又不行,又重新买的转接线默认pcie接口识别不了p40显卡,所以无法预估发热量,风扇就会100%转速,需要手动设置风扇转速,这里我用github上的一个大佬的软件把风扇设置到了30%,软件下载地址,需要注意的是,解压文件要在英文路径下,打开软件使用管理员权限,服务器要打开impi权限网络通讯功能才可以,点击应用会有一点延迟,耐心等待即可,每次重启会失效,需要重新设置最后:装完以后一定要盖上盖板再开机,不然影响风道风扇也会以100%的转速吹,噪音贼大如果硬件读取不正确 需要到bios中清一下idrac的日志缓存启动按F10进入配置界面选择系统设置高级硬件设置idrac设置选择系统事件日志清除选择是,保存然后重启引导1.3.2细节图1.3.3指示灯异常总结正常情况下应该是运行状况指示灯蓝色常亮异常情况运行状况灯和硬盘灯黄灯闪烁,raid组硬盘丢失运行状况灯和电气灯黄灯闪烁,双电源只插了一个,冗余丢失CPU异常CPU 内部错误 (CPU IERR) 或 CPU 机器检查错误通常不是 CPU 本身的错误。而是 CPU 在系统中检测到错误或从系统组件接收到错误指令的迹象。它是由诸如固件不匹配、系统总线中断或内存读/写中断之类的非 CPU 事件引起。理论上,错误可能由任何系统组件、软件或硬件引起。警告:请勿卸下 CPU!CPU IERR 错误很少由 CPU 故障引起,对 CPU 的引用完全基于已报告错误的模块。尽管您可能在一些故障排除网站或论坛上看到这些内容,但除非经过培训并配备了相应的设备,否则请勿卸下CPU解决 CPU IERR要解决此错误,请按照故障处理的结构化计划确定哪个组件导致了该错误以及如何解决该错误。1.检查系统事件日志以查找是否有与CPU IERR同时发生的任何其他错误。2.如果发现任何其他错误,请先解决这些错误。解决错误的方式将取决于所发现的错误。3.将BIOS和iDRAC固件更新为最新版本。4.清除系统事件日志。也就是说,在Open Manage Server Administrator或iDRAC(对于两者,打开事件日志,滚动到底部并按“clear log”[清除日志]),除非从系统事件日志中清除了旧的CPU IERR错误,否则在错误解决后,它们将引起警报。5.如果未发现错误,或CPU IERR重现,请关闭系统、拔下电源线并按住服务器电源按钮20秒,然后再插回电源线并重新打开系统。这个过程被称为释放残余电量 (方法5解决)6.重新引导 f2进bios选system Setup - System BIOS ,选择 system profile Settings,进入后将右边的 Performance Per Watt(DAPC)改为 Custom内存条插满以后会降频,可以在上图memory Frequency中设置内存频率二、服务器系统&磁盘阵列配置组装好硬件第一步就是开机测试,插好键盘鼠标显示器,视频输出用的是vga接口,在家里翻了半天才找出来两根.连接外设开机,这一刻心里还挺忐忑万一硬件有故障还得退换货,而且都是散件谁出的问题都不一定按开机键后屏幕有输出,但是雪花屏还闪烁,一开始还以为是板载核显有啥问题,后来换了根线和显示器解决问题了2.1idrac设置显示器能正常显示以后,第一步是设置idacr接口IDRAC又称为Integrated Dell Remote Access Controller,也就是集成戴尔远程控制卡,这是戴尔服务器的独有功能,iDRAC卡相当于是附加在服务器上的一计算机,可以实现一对一的服务器远程管理与监控,通过与服务器主板上的管理芯片BMC进行通信,监控与管理服务器的硬件状态信息。它拥有自己的系统和IP地址,与服务器上的OS无关。是管理员进行远程访问和管理的利器开机按F10进入,先设置语言为中文,然后找到系统设置,IDRAC设置,设置好内网IP地址和网关,因为我没有插idarc网卡,所以启用nic那要选自己使用的网口,设置好以后保存重启即可(没有网的情况下可以用网线插idarc网口另一头插笔记本连接)通过自己刚刚设置的静态ip直接登录即可,默认用户名root密码是calvin,第一次登录后会让你更改默认用户名和密码(一开始连不上网也是折腾了半天,以为是ip设置冲突了,后来发现是交换机坏了,再后来发现网线头也坏了,又重新做了一个水晶头,仔细看网口的两个灯是否都正常)登录以后可以查看详细的设备信息,和服务器状态,以及开关机服务器,也可以登录虚拟控制台,这样就无须使用外设设置了虚拟控制台设置我用java打开一直提示网络中断,本地装的是jdk8.0不知道是不是版本有冲突,就使用的html5模式如果提示连接被拒重新登录一下idrac后,更改下视频加密启用状态再连接就可以了可以在idrac更新选项里更新驱动,R730XD驱动下载地址 ,更新bios和idrac登录 iDRAC转至 概览 > iDRAC 设置 > 更新和回滚 。此时会显示 Firmware Update(固件更新)页面。在Update(更新)选项卡中,选择Local(本地)作为File Location(文件位置)。单击Browse(浏览),选择所需组件的固件映像文件,然后单击Upload(上传)。上传完成后,Update Details 部分会显示上传到 iDRAC 的每个固件文件及其状态。如果固件映像文件有效且已成功上传, 则 Contents 列会在固件映像文件名旁边显示 (+) 图标。展开该名称可查看Device Name(设备名称)、Current(当前)和Available firmware version(可用固件版本)信息。选择所需的固件文件,然后执行以下操作之一:对于不需要主机系统重新启动的固件映像,请单击Install(安装)。例如,iDRAC固件文件。对于需要主机系统重新启动的固件映像,请单击Install and Reboot(安装并重启)或Install Next Reboot(下次重新启动时安装)。要取消固件更新,请单击Cancel(取消)。当您单击安装和重新引导或安装下次重新引导时, 会显示消息更新作业队列单击 Job Queue 以显示 Job Queue 页面,您可以在此页面查看和管理待处理的固件更新。您还可以单击 确定 以刷新当前页面并查看固件更新的状态。2.2设置raid阵列服务器系统只能装在阵列卡的盘组上,哪怕只有一块硬盘也要组raid0才能用,这里先讲一下阵列卡区别和raid的阵列,然后再讲一下怎么设置2.2.1阵列卡对比H330阵列卡(咸鱼大多数准系统带的卡)无缓存的,支持RAID 0 1 5 10 50入门级硬件阵列卡,不具备板载缓存,因此不要拿来做为RAID5 使用,典型的3盘RAID5配置读取速度在300-400M左右,还算正常,但写入速度最高不足20M/s IOPS相当低,连单块硬盘1/5的速度都不到,在较高业务IO应用场景,会严重影响系统运行效率H730阵列卡(当时做完功课才价钱买的带H730阵列卡的准系统)1G的缓存和电池 支持RAID 0 1 5 6 10 50 60缓存主要是用于硬盘写入加速,其工作原理主要是将大量的写IO请求数据先缓存起来,等缓存快用满时,再批量刷到磁盘上,降低机械硬盘同时读写而导致IO偏低的影响,后备电池则是防止服务器突然断电,缓存数据未刷到硬盘会导致数据丢失设计的,未写入硬盘的数据会在下次开机后自动回写同时RAID 5不建议超过8块机械硬盘 RAID0 1 5 6 10 50 60 模式 磁盘高速缓存:关闭 写策略:回写 预读策略:自适应预读固态硬盘 RAID0 5 模式 磁盘高速缓存:开启 写策略:直写 预读策略:不预读H730P阵列卡2G的缓存和电池 支持RAID 0 1 5 6 10 50 60此型号为H730的增强版,缓存增加到了2G,硬件处理能力也更高一点,对机械硬盘读写速度也有一定的提升,但区别没有H330和H730大,如果计划使用24盘位的机型并满配机械硬盘用于数据存储,或者用于大块文件读写,建议选择使用2.2.2 RAID组对比RAID全称Redundant Array of Independent Disks,中文简称磁盘冗余阵列,多个物理硬盘组成一块虚拟硬盘,从而达到安全且提高读写性能的要求raid0:采用剥离,数据将在几个磁盘上进行分割。数据被分成很多数据块,每一数据块会被写入不同的磁盘。从而,每一磁盘的工作负荷都得到了降低,这有助于加速数据传输最少需要两块硬盘,硬盘损坏会导致数据丢失存储量 100%raid1:通过磁盘镜像来实现,主要用来确保数据的可靠性。同样的数据将被复制存储到不同的磁盘上,如果某个磁盘出现故障,还可以在阵列内的某个磁盘上找到相应的数据,因此可以很容易地进行恢复最少需要两块硬盘,硬盘允许损坏一块,不会影响IO速率存储量 50%raid10:RAID-10是RAID-1和RAID-0的结合。在所有RAID等级中,性能、保护功能及容量都是最佳的求至少四块硬盘,硬盘允许损坏一块存储量 50%raid5:RAID-5通过一种称为奇偶检验的技术保持数据的冗余。在多个磁盘上进行数据剥离时,奇偶位数据也会包括在内并分布于阵列内的所有磁盘上。奇偶数据用于保持数据的完整性并在磁盘出现故障时进行重建。如果阵列内的某个磁盘出现故障,丢失的数据可以根据其它磁盘上的奇偶位数据进行重建最少需要三块硬盘,硬盘允许损坏一块,坏盘后严重影响IO速度存储量为(n-1)/n%,硬盘越多存储量百分比越大raid50RAID-50是RAID-5与RAID-0的结合。此配置在RAID-5的子磁盘组的每个磁盘上进行包括奇偶信息在内的数据的剥离。每个RAID-5子磁盘组要求三个硬盘,允许某个组内有一个磁盘出现故障,而不会造成数据丢失RAID-5子磁盘组至少两组,每个盘组至少三块,最小组合需要六块,硬盘允许损坏一块存储量为(n-x)/n%,x为RAID-5子磁盘组数量raid6raid6是在raid5的基础上为了加强数据保护而设计的求至少四块硬盘,硬盘允许损坏两块存储量为(n-2)/n%2.2.3 设置raid详细步骤因为我对速率没啥太大要求,为了节省硬盘选的raid5阵列,固态硬盘用来存放系统选的raid1先进入idrac虚拟控制台,然后选择冷引导,按F10进入设置(按键要是没反应,用虚拟键盘的按键),修改引导方式为bios引导,然后保存重新引导(默认是bios引导可以省略这一步)bios引导重启时 出现黑窗口界面 按ctrl+R进入阵列卡设置界面选中阵列按F2对阵列进行操作,新加阵列选择阵列卡按F2进行操作格式化一下阵列配置好的界面,可以看到整个阵列卡信息,有两个盘组两个虚拟磁盘五个物理磁盘,这样就配置好了,按esc退出,ctrl+alt+del重启2.2.4 其他硬盘问题硬盘状态变为foreign https://blog.csdn.net/weixin_44265882/article/details/117014559DELL的服务器有一块硬盘坏了,需要更换。把旧的硬盘拔下,插入新的硬盘,由于这块硬盘不是之前做阵列的时候的。所以插上去会提示foreign,只要把新的硬盘加入到阵列中即可。2.进入PD Mgmt中查看故障盘的状态(foreign:外来的,online:正常,missing:磁盘未找到,failed:失败)导入硬盘,点确定即可,然后保存退出把引导重新改回uef面板信息若依然异常,检查日志和硬件信息.都无异常断电重启即可恢复三 、安装ESXI系统系统我选的是exis,当然也可以选用pve这个看个人喜好,要注意的是安装linux和exis需要把引导模式设为uef,安装win需要把引导模式改为bios,所以上一步组阵列设置了bios还需要再改回uef才能正常安装2.1烧录镜像准备好系统盘 ,修改引导为uefi重启按f11 选择启动盘开始安装回车下一步,再按F11选择安装磁盘,回车确认键盘回车,然后输入esxiroot用户密码 需要8位以上包含数字字母特殊字符,确认下一步按F11安装等安装完后会提示你拔下U盘并重启,就会启动esxi了(如果卡黑窗口按F1 进入系统)启动以后可以在界面查看esix的部署信息,以及ip地址通过ip地址访问esxi系统界面,安装完成(用户为root,密码为前面自己设定的)2.2 获取认证证书使用注册机或以下许可证获取esxi长期支持,并检查是否生效(过期时间永不失效)exsi6.7许可证 0A65P-00HD0-3Z5M1-M097M-22P7H exsi7许可证 JJ2WR-25L9P-H71A8-6J20P-C0K3F HN2X0-0DH5M-M78Q1-780HH-CN214 JH09A-2YL84-M7EC8-FL0K2-3N2J22.3 esxi离线升级步骤升级前需要先停用所有已启用虚拟机,开启维护模式和ssh 然后用xshell连接 ,升级补丁提前上传到服务器 ,复制好服务器硬盘路径 (可以去[vm官网](https://customerconnect.vmware.com/patch)找,需要注册,注册失败可以试试选美国,province选择California,city填Sacramento,邮政编码94205)通过ip地址和用户名密码连接到esix的sshcd 刚刚复制的磁盘路径 #ll查看补丁是否存在 vmware -v #查看当前版本 esxcli software vib install -d "/vmfs/volumes/63f8e66e-a8244c0c-a8aa-ecf4bbd445c8/ESXi670-202201001updeta.zip" #""中为补丁在硬盘中的路径 如果安装失败则使用 -f强制安装,或手动删除依赖冲突 reoot #安装完后重启,从esxi web界面查看是否升级成功2.4安装虚拟机首先把准备好的镜像文件上传到硬盘存储中虚拟机点击创建虚拟机选择创建新虚拟机,然后设置名称跟兼容性以及系统版本配置虚拟机硬件引导默认efi改为bios,然后保存打开电源设置,就会进行winodws系统安装步骤设置完以后需要安装VMware Tools,否则默认显卡无法使用关闭虚拟机,然后点击设置安装tools系统会自动重启并挂载vmtools的镜像,打开我的电脑的光驱,点击安装镜像文件,然后无脑一下步即可,重启完成安装重启依旧虚拟机常见问题默认不添加声卡,需要手动添加无法修改硬盘容量是因为有快照,删除快照就好了无法启动的虚拟机,维护模式下sshvim-cmd vmsvc/unregister 13 #13为标识2.5安装esxi显卡驱动vgpu授权只支持14.4 -14.2 的驱动,分别需要esxi7.0.3和exis7.0.2,这里我装的7.0.3所以装14.4的驱动P40设置为禁用直通上传esxi显卡驱动的vib文件(7.0.2的驱动向上兼容 8.0也能兼容)到服务器硬盘,记住硬盘的地址,关闭所有虚拟机打开维护模式,启用ssh连接esxi,这里ssh连接工具使用xshell,输入ip地址,用户名密码连接,密码必须键盘手动输入才行安装驱动命令 esxcli software vib install -v vib文件路径,注意必须使用绝对路径否则报错更新驱动命令esxcli software vib update -v vib文件路径reboot 重启,时间久一点而且需要重新打开ssh权限nvidia-smi重启后验证是否装好 若ecc不为off 输入 nvidia-smi -e 0关闭ecc,启用或者关闭ECC都需要重启主机检查驱动 lspci | grep NVIDIA关闭维护模式和ssh四 、安装VCSA和vgpu全步骤4.1 esxi和VCSA关系vSphere 的两个核心组件是ESXi和vCenter ServerESXi 用于创建并运行虚拟机和虚拟设备的虚拟化平台,ESXi是直接安装在物理机器上的,是采用Linux内核的虚拟化专用操作系统vCenter Server是一项服务,用于管理网络中连接的多个主机,并将主机资源池化。一个vcsa可以管理多个esxi主机4.2 安装vcsa镜像参考链接https://baijiahao.baidu.com/s?id=1718644330105702853&wfr=spider&for=pchttps://blog.csdn.net/sj349781478/article/details/121172209https://zhuanlan.zhihu.com/p/359001834vcsa必须跟esxi版本一致,7.0.3的esxi就需要7.0的vcsa,vm官网下载对应的镜像,然后挂载到本机电脑上,这里用win电脑举例下好以后,双击镜像挂载到DVD驱动器,找到vcsa-ui-install/win32/install 安装点击安装,然后下一步,确认已知配置VCSA安装位置配置VCSA名称 ssh密码根据需求选择自己的大小,我就两台服务器所以选微型选择安装硬盘位置配置VCSA网络,然后点击完成等待第一阶段部署继续第二阶段与主机同步,禁用ssh然后下一步sso配置vsphere.local不加入客户体验提升计划,并下一步,然后点击完成,开始第二阶段安装通过ip地址访问管理界面,输入用户密码登录administrator@vsphere.local4.3 绑定esxi主机新建数据中心这里我不搭集群直接添加主机即可输入ip地址,然后下一步继续输入用户名密码确定,下一步先分配试用证书即可配置登录权限,这里我用的禁止,可以根据自己需求来选继续下一步,点确定,到此绑定完成4.4分配许可证使用注册机生成激活码,添加许可证添加完成(有!是因为还没有分配证书)分配许可证VCSA分配证书ESXI主机分配证书 4.5 配置P40显卡共享类型默认情况下vSphere会使用vsga模式在主机硬件类里找到图形,选择直接共享主机开启维护模式开启ssh 输入nvidia-smi查看是否生效五.安装授权服务器licserve英伟达vdws vgpu lic授权200个(可多开叠加) 永久有效 无限时间!此bin文件适用于14.2 14.3 14.4的licserver,可授权的驱动版本最高到2022年11月的515,524版本。支持m60,rtx6000,rtx8000显卡等具体官网了解NVIDIA GRID 授权许可 vDWS vws vPC vApp永久许可适用于V100 A100 A40 A10RTX600 RTX 8000 RTX A6000 RTX A5000 M60 M6 M10 P100 P6 P4 P40 T4等所有GRID系列.安装授权请先打开下面网站了解详细介绍 https://docs.nvidia.com/grid/5.1 安装centos精简版系统使用centos7精简版,占用小本身做授权服务器也无需多高配置,1h2g即可提前准备好镜像上传到服务器,创建好centos虚拟机因为部署VCSA,所有esxi统一被管理,只能在vcsa上创建新的虚拟机,大体步骤基本上一致,这里不再赘述修改虚拟机网卡选择手动 8a:50:13:0c:ae:06 (200个授权 76:A5:48:4D:7E:20)开启虚拟机后,在系统设置中,关闭虚拟机的时间自动同步,将时间改为 2018年7月19号(200个授权的日期为2020-02-04 18:40:00),并关闭NTP自动同步连接网络,自行配置IP以及其他网络信息然后打开以太网进行下一步设置root密码并等待系统安装完成并重启5.2 安装授权服务通过ssh远程连接到contos(直接html5页面访问虚拟机也可以),安装必要软件yum update -y #更新系统 yum install java -y #安装java8&tomcat yum install tomcat tomcat-webapps -y上传licserve文件centos ssh创建文件夹 mkdir zhaoyongbin本机移动到文件解压目录执行CMD指令 scp setup.bin root@centosIP地址:刚刚创建的文件夹名称 输入密码上传centos ssh 移动到创建的文件夹中输入ll检查文件在不在创建的文件夹里运行授权服务chmod 777 setup.bin 设置文件最高权限./setup.bin 启动服务一路按回车,有确认就同意Y填写tomcat路径 默认安装路径 /usr/share/tomcat ,默认端口 7070授权端口 8080管理端口,然后继续回车等待服务启动5.3 关闭防火墙设置服务自启systemctl stop firewalld #停止防护墙 systemctl disable firewalld #禁用防火墙自启服务 systemctl start tomcat.service #启动tomcat服务 systemctl enable tomcat.service #设置tomcat服务自启 systemctl status tomcat.service #查看服务状态 systemctl list-unit-files #查看所有自启服务 we前后 q退出5.4 验证授权服务器并导入授权文件验证服务是否正常运行,访问 http://192.168.32.203:8080/licserver导入授权文件5.5 打开NTP自动同步改回正确的时间上传完成后改回正确的时间并打开NTP自动同步 参考连接yum -y install chrony #安装软件 systemctl enable chronyd #开机自启 systemctl start chronyd #启动 timedatectl status #查看时间同步状态 timedatectl set-ntp true #开启网络时间同步 date #查看系统时间是否正确5.6 设置虚拟机自启参考链接VCSA和licserve都是必需虚拟机,每次重启服务器手动开启太麻烦,因此我们设置自启选择esxi中的管理-系统-自动启动-编辑设置选择为启用,启动延迟改为30秒,停止延迟改为0秒,默认都为120秒,可根据自己或客户需求更改,然后保存将虚拟机配置开机启动可根据需求设置自启顺序重启esxi主机测试虚拟机自启服务是否正常,以及授权服务是否自启正常六、配置win10虚拟机之前已经搭好了一个win虚拟机,但是需要配置一下才能正常使用P40显卡6.1 备份虚拟机手动在esxi界面中添加声卡 不然没有声音win10虚拟机更新系统安装VMwaretools 不然没有默认显示处理器安装向日葵和驱动之前克隆虚拟机,原虚拟机作为备份可以修改硬件配置确认完成后等待虚拟机复制完成6.2 安装向日葵等远程软件打开刚刚复制好的镜像,安装向日葵软件,设置开启自启并记好登录密码,因为装好P40驱动后重启默认连接的是副屏,导致虚拟机无法正常操作安装parsec (parsec移动网会连不上)6.3 安装GUID显卡驱动安装完远程软件就可以配置显卡了,关闭虚拟机,添加pci设备虚拟化vgpu分配6g显存重启虚拟机,在设备管理器中看一下显卡是否已经识别下载对应版本的GUID驱动,并安装无脑下一步安装完成以后重启虚拟机 (安装失败有可能系统未更新导致)6.4 配置代理服务器安装完驱动以后,就只能通过远程软件访问,这里我们使用向日葵连接打开英伟达驱动面板,输入授权服务器IP地址和端口号然后应用可以看到授权成功在授权服务器页面也能看到认证信息6.5 解锁144帧率P40为了保证稳定性默认限制锁60帧,我们需借助软件解锁144帧率,来达到完整的性能释放虚拟机配置文件加一行pciPassthru0.cfg.frame_rate_limiter = 0解锁60帧限制使用cru添加1080P 144帧 屏幕参数让配置生效在设置-系统-屏幕中 找到高级显示设置确认完后保留更改,此时帧率已设置为144把该屏幕设置为主屏幕且仅在该屏显示可以通过鲁大师跑分测试帧率6.6 其他设置&问题系统设置里设置禁止主机自动休眠,不然长时间待机向日葵连不上需要重启才能连接vmware EXSI虚拟机加NVIDIA VGPU后,内存大于32GB无法开机,虚拟机需要加入参数
2023年03月02日
678 阅读
2 评论
4 点赞
2022-10-13
智能家居改造&HomeAssistant使用
智能家居改造&HomeAssistant使用事情是这样的,辞职回家以后,就一直想搞一下智能家居,以前总是跟女朋友为了谁下床关灯而吵架,现在已经结婚了依然没有改变这个问题,想了半天决定搞一手1.房屋硬件改造1.1智能灯控家里装修的时候除了装了一个智能门锁就没有其他智能家居了,想实现最基础的房屋灯控要么换灯要么换开关,还需要加装蓝牙网关,看了一圈还是小米的性价比不错方案选择换灯泡的优点是可以直接控制灯泡开关而且可以改变灯泡色温,多个灯泡之间可以形成灯泡组,缺点是灯泡一旦在app上关了使用原本开关是无法再打开的,对于家里年长的人来说使用是及其不方便的,所以这个pass掉 (在出租屋用比较方便,总不能给房东卸开关以后再装回去吧,自己一个人住也不影响)换智能开关就简单多了,把原本物理开关换成继电器开关,在不影响原本功能的情况下实现智能化硬件准备小米paly智能音箱 (购买价119) 作为蓝牙和红外网关,pro款音质更好但价格也更贵(299),如果只是做网关paly足以小米智能开关替换原本物理开关 (单开单控59,双开单控69 三开单控89),注意区分单控版和零火版,零火版价格更贵一些,多了接地线接口,但是没有接地线用不了,原本开关有接地线的可以用单火版也可以用零火版,零火版更安全稳定.如果不知道自己家开关是什么类型,可以用螺丝刀撬开看看引线或者直接买单火版(我就买错了,到货后傻眼)替换开关断电 断电 断电 ,换开关之前一定要断电,有电笔的最好断电以后再测一下,一般红色的是火线.用平口螺丝刀撬开原先开关然后拧下螺丝,再卸下来电线.再把智能开关螺丝拧下接上电线,然后上电测试,没问题以后再拧上其他问题:小米的暂时没有四开开关,第三方的四开开关怕不支持米家也没敢买,最后把家里的射灯灯组直接两线并一线使用了测试 :打开米家app绑定,然后绑定智能开关,再给开关起个名,即可在app上实现灯的开关,也可以直接喊小爱帮忙开关1.2 红外控制家电前面买的小爱音箱,不仅可以作为小米智能家居的蓝牙网关,同样也是红外网关(paly和pro都支持),家中所有支持红外遥控的设备都可以控制,让老家电也可以实现智能化开关,你甚至可以自己DIY加装红外接收来达到控制的效果,实际体验下来,还是电视空调这类的识别使用方便,大部分可以直接匹配成功.对于不识别的红外设备,可以通过红外学习功能来映射某个按键(我闺女的宝宝椅支持红外遥控器,我就映射了开关键,其他的功能键一一映射就太麻烦了)优点:同屋所有支持红外的家电设备都可以控制缺点:红外网关不像蓝牙网关一样范围广泛,只能在同屋可发射红外信号的距离使用,你总不能每个屋都配一个小爱音箱,这样成本太高1.3智能插座&空调伴侣经过上面的步骤,已经可以实现大部分家电智能控制了吧,但是也有很多家电是没有红外的.拿我家鱼缸灯举例,灯条插电亮不插电就不亮,这种情况下如果房间有小爱音箱,或者隔着不是很远,就可以买一个智能插座(49),让原插孔插智能插座,再由智能插座插插排,设备绑定米家app通过wifi控制插排实现开关功能,自己本身也是一个蓝牙网关,而且这玩意还有电量统计功能,直接就可以在app上看非常方便(打那以后我就没开过鱼缸灯了,太费电)还有种情况,如果其他屋也有空调,但又没有小爱同学还想实现智能控制咋办呢,上面的插座只能实现开关,并不能控制空调的温度模式以及摆风等等,这里就需要空调伴侣智能开关(68)了,它甚至不需要小爱同学,支持wifi连接和红外控制,只要把它插在原先空调的插孔上就可以了,然后连上wifi绑定米家app即可,支持睡后调温,电量统计功能总结只需要逻辑开关的设备 ->小米智能插座 (也可以买那种入墙式的替换原本老插座)没有小爱音箱的房间的空调 -> 米家空调伴侣21.4 加入传感器实现智能场景上面杂七杂八的一装,基本上家里的蓝牙网关就全覆盖了把,这里推荐我用的一些小传感器,小米传感器性价比真的超级高啊,可以搭配实现一些自动化场景小米温湿计2 (19.5) 需要蓝牙网关,可以在手机上查看温度,我在客厅和卧室基本上都放了这个小米门窗传感器2(44) 需要蓝牙网关 + 小米人体传感器2(59) 需要蓝牙网关,实现晚上回家开门自动亮灯功能不过我这个有个BUG,因为没有用小米的智能门锁,是无法判断你的动作是回家还是出门,也就是说晚上要是出门的话,灯会给你全打开,得开门然后人快出去才行,或者干脆站在门外从门缝喊小爱让她给你开,要是被邻居看见了...奇奇怪怪小米浸水传感器(57)和烟雾传感器(140)我没有买,感觉这两样平时用处不大,需要的也可以自行购买配合米家app实现自动预警的效果小米夜灯2(59) 需要蓝牙网关,这玩意实际跟人体传感器差不多,都可以移动检测和环境光检测,唯一的区别可能就人体传感器更小巧一些吧,但怎么说小夜灯2还带个灯啊,晚上起床上厕所在床脚,或者门口拐角放一个还是很安全的不至于摸黑绊倒家里的楼梯灯,楼下放了一个小米人体传感器,楼上放了一个小夜灯,实现人来亮灯30秒后自动熄灯,延迟大概一秒左右,但是基本上我就再也没手动开关过楼梯灯了 1.5 其他小米智能设备小米夜灯(29)需要蓝牙网关,这款跟2的区别就在于它只能插在插座上没有内置电源也就不能随处摆放,只有环境光检测,到了晚上就会自动常亮,说实话是有点费电的,当然app可以设置定时关,但是你不能保证晚上几点会起床上厕所吧,所以这个看个人需求小米挂灯1s(249) 主要是加在显示器上用,屏幕看起来更舒服,晚上敲代码也不会伤眼,可以直接接入wifi无需蓝牙网关实现灯控,并且配备一个蓝牙开关,旋钮还能调亮度非常方便小米摄像头(199) 这个还是在北京的时候买的,那时候住出租屋怕哪天进去人了给抄家了,实际用着也不错,有红外夜视功能,在手机上可以直接看监控,可转角度也非常大,支持本地存储和云存储,家里有nas可以直接给备份到nas中小米饮水机(229) 说实话这玩意智不智能都没啥关系,喝水倒是挺方便 1秒出热水,只不过谁又会盯着每天的饮水记录做数据分析呢小米青春版投影仪2 不推荐,妥妥智商税,500明度看着伤眼睛,投影仪还是买专业品牌的比较好,基本上都支持红外遥控,可以用小爱音箱实现开关功能1.6 后期准备加装电动窗帘,新房子最好装修的时候就处理好接电问题,不然后期加很麻烦,要么走线丑,要么只能用锂电池版,不过续航也不行最多半年不能实现一劳永逸,小米的有线自动窗帘电机799,锂电池版本999,价格实在太贵,我媳妇说宁愿用小镔同学关,也不想话这个钱.电动窗帘配合环境光监测实现白天开窗帘晚上拉窗帘的智能化场景还是比较方便的扫地机器人 一直想整一个但是不知道效果咋样,反正现在还是传统拖把拖地,等以后有钱再说吧2.软件环境 HomeAssistant开源的智能家居管理系统经过前面的折腾,相信你已经弄的八九不离十了吧,米家APP确实挺好用,配合起来也非常方便,但是它却也有几个缺点不支持本地化部署,今年七八月份米家APP崩了,直接导致所有智能设备无法语音控制,app更是进不去,我一开始还以为是自己的问题,手机和小爱都重启了好几次依然没用,上微博一搜,好家伙原来是米家app宕机了,隔了半天才修复.事后谈到为什么不能本地化部署,也明白了,本地化部署你就不能远程控制你的设备了.通俗说,出了家门你就不知道你的灯是开还是关的,这不也就失去了智能化的意义,在没有很好的解决方案之前,米家还是只能全程联网部署不支持大多数第三方智能设备 小米对第三方设备的支持非常有限,你想接入米家你就得给我钱,厂商肯定就不乐意,大厂基本都有自己的智能家居app,我自己用过的美的微波炉就有自己的app还有海信空调也是有单独的app,但是基本上没用过,总不能为了一样家电整一套生态吧,这也说明小米入局智能家居足够早,配合小米手机有其他家电厂没有的优势而且性价比也确实可以.只能米家app和小爱音箱控制 如果你是小米手机用户,或者有小米智能手表平板啥的那么可以直接用设备上的小爱进行控制.但是如果你是个苹果用户呢或者我干脆不想用米家app,想用siri控制家电,用苹果家庭APP软件控制设备,但是苹果又只能用自己的一套音箱和智能设备(买homePad音箱和支持homeKit的家居贼贵)2.1 HomeAssistant 介绍Home Assistant 是一个基于Python 3开发的开源家庭自动化平台,可以跟踪和控制家庭中的所有设备,并实现自动化控制,可以完美的运行在树莓派中,并且完美解决上面三个问题官网网址 https://home-assistant-china.github.io/Home Assistant可以实现完全本地化部署Home Assistant 支持大部分第三方智能家居并整合,这其中就包含小米和苹果2.2 Home Assistant 安装安装有两种方式,直接在物理机上安装或者通过Docker容器安装,具体可以参考 安装地址.这里我们以docker容器举例,只要是装了docker的设备都可安装2.2.1 硬件准备树莓派(建议3b以上型号)或x86主机(自己用过锐角云还不错价格大概300左右),提前装好linux系统,树莓派安装可以看树莓派折腾指南这篇,x86安装要么让卖家装好,要么自行安装,安装过程大致跟电脑重装系统类似,后面我也会单独发一篇教学2.2.2 安装Docker通过ssh连接linux设备,或在linux桌面版中打开终端软件输入以下指令安装sudo curl -sSL https://get.docker.com | sh #一键安装脚本 sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #国内镜像安装 docker run hello-world #测试是否安装成功Docker换源国内源地址https://registry.docker-cn.com #Docker官方中国区 http://hub-mirror.c.163.com #网易 https://docker.mirrors.ustc.edu.cn #中国科技大学 https://y0qd3iq.mirror.aliyuncs.com #阿里云 (实测阿里云的最快)新增配置文件 nano /etc/docker/daemon.json{ "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"] }重启Docker服务 sudo service docker restart然后通过以下命令查看配置是否生效 docker info|grep Mirrors -A 1 ,看到如下的输出: Registry Mirrors: https://y0qd3iq.mirror.aliyuncs.com/ 就表示镜像配置成功2.2.3 在Docker中安装 Home Assistant先使用search指令查询一下Home Assistant的镜像列表docker pull 镜像名称 下载对应型号的镜像运行以下命令完成HA启动 (不下载直接运行也可以,docker会在run之前自动帮你执行pull操作)docker run -d --name HA -p 8123:8123 --privileged --restart=unless-stopped -e TZ=Asia/Shanghai -v /home/zyb/ha:/config --network=host ghcr.io/home-assistant/raspberrypi4-homeassistant:stablerun 运行该镜像的一个容器-d 后台运行容器--name 给容器起别名,便于操作容器,不起会给随机名称-p 宿主机端口:容器接口 映射端口,直接用默认的8123即可--privileged 获取宿主机root权限--restart=unless-stopped 容器退出时重启-e TZ=Asia/Shanghai 设置环境变量时区-v 宿主机地址:/config 把容器配置文件路径挂载到宿主机路径,便于修改,这里也可以根据自己的实际位置修改--network=host 主机网络模式,直接使用宿主机的IP地址与外界进行通信,不再需要额外进行NAT转换最后一个参数就是下载的镜像名称根据自己实际下载的名称替换安装完成后通过你设备的 ip:8123就可以访问HA的web页面了创建用户,然后设置一下基本信息,就会进入到界面了,这时候界面空空如也啥也没有,因为我们还没有集成插件,不同的第三方厂商只要用对应的插件就可以实现在HA上的统一管控2.2.4 安装hacs商店 (hacs中集成了很多第三方插件)hacs: hacs下载地址 运行以下指令 (HA替换成你的镜像别名)docker exec -it HA bash wget -O - https://get.hacs.xyz | bash - exit安装完后重启 HA使用指令 sudo docker restart HA 或使用管理页面重启服务(配置 ->系统 ->右上角 重新启动)在配置中找到设备与服务然后再点击添加集成 搜索hacs进行添加,添加后再重启 提交以后会弹出个8位设备码,需要绑定你的github账户,(没有github账户的注册一个就行)没有科学上网的话访问github会比较慢,这里需要耐心等一下到这里HACS就安装好了,接下来我们要在HACS中安装对接小米的插件小米mlot安装小米mlot在hacs中选择集成然后点击浏览并下载存储库,搜索xiaomi mlot下载下载比较慢需要多等一会或者多试两次,如果实在不行,下载界面还提供了手动安装的方法安装完以后需要再重启一次(参照前面方法),不然识别不到xiaomiMlot插件米家中提前绑定好智能家居设备在配置中添加xiaomiMlot插件,并登陆小米账户这样米家中所有的设备就都可以在HA中添加并查看了刚同步过来以后,排版及名称显示是有问题的(多控开关没有读取具体的每个开关名称),可以自己修改名称或者删减显示项后期添加新设备肯定要米家中先绑定点击配置中的设备与服务,再选择xiaomiMlot这个插件点击自己的账号选择选项,添加即可2.2.5 安装homekit集成插件作为苹果用户,前面的操作远远是不够的,小爱,siri我全要,homeKit米家都想用,继续整在集成中搜索安装homekit添加成功后左边通知点开 然后用iphone上的 homeKit(家庭)扫码桥接起来,然后设备全部添加进来就好了(每次集成完记得重启)至此 小米的设备就全部桥接到homeKit中,你可以使用你的任意苹果设备进行语音或APP控制2.2.6 HA自身UI界面及APPHA强大之处并不是仅仅可以把设备桥接到homeKit,而是可以集成众多第三方智能家居以及自己diy的智能家居实现本地化统一管控,本身UI做的也非常好,还可以高度的定制化,苹果安卓PC端都有配套的HA软件使用,哪怕不用软件web界面也足够使用了.今后学习的HA高度定制化开发将会同步更新在这一章节来跟大家分享交流分享一下其他大佬做的HA界面图片3.待续本人刚学习智能家居,本着学习与分享的精神完成这篇博客,文章中有啥错误也希望大佬能够帮忙指出,后续有啥内容迭代博客也会同步更新.
2022年10月13日
280 阅读
0 评论
6 点赞
2022-07-30
树莓派折腾指南
树莓派折腾指南1.树莓派简介树莓派(raspberryPi),最早是由英国慈善基金会开发用于学习计算机编程教育而设计的,基于arm架构,系统为linux,外观小却五脏俱全各类接口丰富树莓派官网 www.raspberrypi.org可以干什么作为低功耗Linux服务器搭建各种服务(只有5w功率)刷入游戏机系统,变为复古游戏盒子(lakka等系统)搭建gitea私服搭建OMV家庭nas系统(需要4b或400树莓派,有千兆网口和usb3.0接口)搭建HA开源智能家居管理系统(可以整合第三方智能家居统一管理)学习树莓派GPIO进行硬件开发刷入openWrt做软路由刷入影音系统做电视机顶盒使用树莓派进行各种嵌入式开发,学习opencv,diy机器人等等等等距今为止产品线已经非常丰富用于计算的cm模块系列 (相当于砍掉了所有接口,做成类似内存条的样子方便集成开发)用于单片机的pico更小尺寸的zero系列键盘外观的树莓派400树莓派B型(A型为B型的廉价版,阉割了部分接口)2.树莓派基础使用2.1 第一次上手&开机首先,肯定是要有一块树莓派的,树莓派近两年由于疫情导致产量下降,国内价格疯涨.在没有明确学习目标的情况下还是先不要购买,如果想学习的话,也是建议去某鱼淘一块二手,这样性价比最高,至于二手如何测试我后面会讲到2.1.1 需要准备的物品树莓派B型任意型号 (A是B的廉价版,同型号B型接口更为丰富)tf卡 读卡器 电源线显示器&hdmi数据线 可选(无网络有屏幕情况)有wifi环境或网线直连 可选(有网络无屏幕情况)2.1.2 烧录具体步骤烧录SD卡:先下载镜像烧录软件 win版本 ,macOS版本下载对应镜像 镜像下载地址 ,推荐下载种子然后用迅雷下载,这样速度比较快.版本分了debian11和10,64位32位 有桌面版,无桌面版,刚上手看着眼花缭乱,这里推荐第一次使用直接下载 debain11 32位桌面版和带推荐软件的镜像以便于学习使用使用烧录器进行烧录电脑插上读卡器,打开烧录软件,选择我们需要写入的操作系统滑到最下面选择使用自定义镜像,然后选择我们刚刚下载好的镜像即可存储卡选择插入的tf卡,一定要看清楚再选,血的教训点开齿轮图标设置wifi配置,设备名称,普通用户,ssh权限等点击烧录,输入电脑用户密码等待烧录完成,至此烧录就完成了,tf卡插入树莓派,然后接通电源2.1.3 有屏幕连接树莓派准备好后,直接接入显示器和外设就可以正常使用了2.1.4 无屏幕连接查看路由器管理页面新接入设备的ip地址,通过SSH进行远程连接,win系统下载xshell,苹果端可以用termius,这里使用termius演示选择页面服务器,然后点击新增服务器,输入刚刚查看的ip地址和自己设置的用户名密码保存连接即可通过SSH打开vnc远程桌面输入 sudo raspi-config 进入设置,选择Interfacing Options VNC YES 即可用VNC viewer连接,新建连接再输入ip连接,然后输入用户名密码即可成功登陆桌面2.2基础设置通过前面的步骤我们已经可以成功的进入的系统桌面了,但是还需要一些设置才更好的使用,接下来的操作都将在ssh的中进行,也就是桌面版的终端里设置2.2.1修改本地化语言用桌面版肯定中文比英文更加直观,所以这里先修改系统语言,(早期的树莓派系统中甚至没有内置中文字体,需要先自己安装一个开源的中文字体后再设置,不然调中文全是框框)打开树莓派系统配置工具sudo raspi-config选择本地化设置(Localisation Options)选择区域设置(Locale)取消en_GB UTF-8,选择zh_CN UTF-8 (空格选择或取消 回车确认)设置完后重启生效sudo reboot2.2.2 修改软件源因为树莓派是国外开发的,所以默认的软件源也是国外地址,在国内下载起来非常缓慢,因此我们要换成对应的国内镜像网址,这里以清华源举例,其他镜像网址可自行搜索(软件源就是让树莓派选择从哪下载更新软件的地址)32位debian11源 (前面烧录的镜像选择这个)编辑 sources.list 文件 (nano是linux的一个文本编辑器 crtl+o保存 回车确认写入 ctrl+x退出)sudo nano /etc/apt/sources.list 删除源文件所有内容,用以下内容取代deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi # deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi #默认注释了源码以加快下载速度 # armv7l 用户如果需要开启 multi-arch 使用 arm64 软件源,可以去加上下面的地址 deb [arch=arm64] http://mirrors.tuna.tsinghua.edu.cn/raspbian/multiarch/ bullseye main编辑 raspi.list 文件sudo nano /etc/apt/sources.list.d/raspi.list删除源文件所有内容,用以下内容取代deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main64位debian11源编辑 sources.list 文件sudo nano /etc/apt/sources.list 删除源文件所有内容,用以下内容取代deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free编辑 raspi.list 文件sudo nano /etc/apt/sources.list.d/raspi.list删除源文件所有内容,用以下内容取代deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main32位debian10源编辑 sources.list 文件sudo nano /etc/apt/sources.list 删除源文件所有内容,用以下内容取代deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi # deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi # armv7l 用户如果需要开启 multi-arch 使用 arm64 软件源,可以去加上下面的地址 deb [arch=arm64] http://mirrors.tuna.tsinghua.edu.cn/raspbian/multiarch/ buster main编辑 raspi.list 文件sudo nano /etc/apt/sources.list.d/raspi.list删除源文件所有内容,用以下内容取代deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main64位debian10源编辑 sources.list 文件sudo nano /etc/apt/sources.list 删除源文件所有内容,用以下内容取代deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free编辑 raspi.list 文件sudo nano /etc/apt/sources.list.d/raspi.list删除源文件所有内容,用以下内容取代deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main2.2.3更新软件默认root用户是没有密码的,如果你不想每次指令都要输入sudo,可以直接切换为root用户进行操作sudo su上一步已经换好源了,接下来我们更新系统apt-get update apt-get upgrade -y reboot2.2.4设置静态IP如果你使用显示器进行学习树莓派可以不用设置静态IP,但如果是通过ssh或者VNC进行连接树莓派使用,是需要设置静态IP的,不然下次重启以后ip地址就可能变为其他的,原IP就再也连接不上了,需要重新查看设备IP,并修改修改配置文件sudo nano /etc/dhcpcd.conf输入以下内容interface wlan0 #如果是宽带设置eth0 static ip_address=192.168.31.248/24 #修改成自己需要的IP static routers=192.168.31.1 #网关地址 static domain_name_servers=114.114.114.114 8.8.8.8 #dnssudo reboot 重启后生效2.2.5 自定义快捷指令每个登陆用户都有一份指令配置文件,这里我们用普通用户来示范,修改自定义指令可以让操作更佳快捷修改bashrc文件 nano ~/.bashrcalias ll='ls -l' alias la='ls -A' alias lla='ls -la' alias l='ls -CF' #alias 简写指令 ="全指令内容"2.2.6 设置root用户密码默认root无密码,可以设置root账户密码以增加安全性sudo su sudo passwd root //输入两遍密码即可2.2.7 修改设备名称修改 sudo nano /etc/hosts 和 sudo nano /etc/hostname 中的设备名称重启即可生效2.2.8 修改wifi配置使用显示器的情况下直接在桌面切换wifi即可,无桌面环境需要通过命令行才能修改,注意不能在使用静态IP的情况下修改wifi,要先删除静态IP的相关配置,否则wifi不在同一网段会造成无法联网ssh操作搜索wifi iwlist scan修改wifi配置 nano /etc/wpa_supplicant/wpa_supplicant.conf改为需要的wifi名和密码,保存文件后几秒钟应该就会自动连接到该wifi network={ ssid="wifi名称" psk="wifi密码" }查看是否连接成功 ifconfig wlan0tf卡重置wifi取消tf卡插入电脑 新建wpa_supplicant.conf文件编辑保存以下内容,并放入根目录country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="wifi名" psk="密码" key_mgmt=WPA-PSK priority=1 }2.3 树莓派(debian Linux)常用指令2.3.1 系统操作类sudo 管理员权限su 用户 切换到指定用户halt关机 reboot重启 shutdown -r 关机重启 -h 关机不重启 -now立刻关机free -m 查看内存df -h 查看硬盘容量lsblk 列出硬盘ifconfig 查看网络clear 清屏uname -a 查看内核信息getconf LONG_BIT 查看操作系统位数cat /etc/os-release 查看系统版本lscpu 显示cpu架构信息pinout 查看树莓派参数,老版本镜像没有这个指令dmesg 查看所有硬件详细信息lsb_release -a 查看linux系统top 查看进程信息lsof -i:端口号 查看端口占用ps -ef|grep 关键字 查询进程ping 地址 测试网络连接vcgencmd measure_temp 查看树莓派cpu温度mkdir 新建文件夹chmod 777 授予最高权限sudo systemctlstart 软件名 启动stop 软件名 关闭status 软件名 查看状态enable 软件名 设置软件开机启动list-unit-files 查看开机启动项service --status-all || grep running 查看正在运行的服务apt-get 可以直接简写 aptupdate 获取更新列表upgrade -y 更新并确认install 软件名 安装软件remove 软件名 卸载软件但不删除配置purge 软件名 卸载软件并且删除相关配置startx 进入图形界面 ctrl+alt+f1 进入命令行tail -f 看持续输出的日志less 看日志不会宕机ln -s 软连接指定可执行命令.注意使用绝对路径例如有一个脚本a.sh 他的绝对路径执行方式为 /A/a.sh,但是不想这样执行 想用/B/b.sh 方式执行,可以执行 ln -s /A/a.sh /B/b.sh,ll /B/b.sh命令时会显示出软连接的状态带 → 标识 左侧为软连接名称 右侧为实际执行脚本,删除软连接 rm 软连接 注意他是个软连接后面不要加/2.3.2 解压缩操作压缩打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 tar -jcvf pack.tar.bz2 pack/ #打包压缩为一个.bz2格式的压缩包 tar -Jcvf pack.tar.xz pack/ #打包压缩为一个.xz格式的压缩包解压tar -zxvf pack.tar.gz /pack #解包解压.gz格式的压缩包到pack文件夹 tar -jxvf pack.tar.bz2 /pack #解包解压.bz2格式的压缩包到pack文件夹 tar -Jxvf pack.tar.xz /pack #解包解压.xz格式的压缩包到pack文件夹 unzip #解压zip2.3.3 接口请求类指令get请求使用curl命令:curl “http://www.baidu.com” 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地curl -i “http://www.baidu.com” 显示全部信息curl -l “http://www.baidu.com” 只显示头部信息curl -v “http://www.baidu.com” 显示get请求全过程解析使用wget命令:wget “http://www.baidu.com”也可以post请求使用curl命令(通过-d参数,把访问参数放在里面):curl -d “param1=value1¶m2=value2” “http://www.baidu.com”使用wget命令:(--post-data参数来实现)wget --post-data ‘user=foo&password=bar’ http://www.baidu.com2.3.4 jar包运行指令java -jar xxx.jar 最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出java -jar xxx.jar & &代表在后台运行 ,ctrl+c 后程序也会继续运行nohup java -jar xxx.jar & nohup 即 no hang up 不挂断 ,关闭SSH客户端连接,程序不会中止运行缺省情况下该作业的所有输出被重定向到nohup.out的文件中nohup java -jar xxx.jar >aaa.log & 将commandd 输出重定向到out.flie文件,即输出内容不打印到屏幕上,而是输出到out.file文件中nohup java -jar xxx.jar >> xxx.log 2>&1 &nohup java -jar /home/java_jar/PhotoBed-0.0.1-SNAPSHOT.jar >> /home/logs/photo_bed.log 2>&1 &nohup java -jar spring-boot-demo.jar > /dev/null 2>&1 & 不输出日志2.4 常用软件安装2.4.1 安装JDKjdk为java的开发运行环境,装了jdk便可以运行各种jar包确保是最新系统,如果不是最好先更新一遍系统sudo apt install default-jdk -y 默认版本为JDK11安装完后 java -version 检查版本信息安装jdk8版本 (这里使用南天大佬博客上的压缩包)sudo su #切换到root用户 #根据自己系统选择arm32或者arm64 #arm32 wget https://linuxer.top/usr/uploads/2020/07/jdk-8u261-linux-arm32-vfp-hflt.tar.gz tar -zxvf jdk-8u261-linux-arm32-vfp-hflt.tar.gz -C /usr/local/ #arm64 wget https://linuxer.top/usr/uploads/2020/07/jdk-8u261-linux-arm64-vfp-hflt.tar.gz tar -zxvf jdk-8u261-linux-arm64-vfp-hflt.tar.gz -C /usr/local/ #创建软连接,方便升级 ln -sf /usr/local/jdk1.8.0_261/ /usr/local/jdk1.8增加环境变量,编辑文件nano /etc/profile,在最后增加以下内容并保存:export JAVA_HOME=/usr/local/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH使环境变量生效:source /etc/profile 安装完后 java -version 检查版本信息2.4.2 安装VIMvim是vi的升级版,是linux上效率非常高的文本编辑软件,精简版系统默认只装了vi没有vimsudo apt-get remove vim-commo //卸载预装的vi sudo apt-get install vim //安装vim 2.4.3 安装nginxnginx为俄罗斯战斗民族程序员开发,是一个高性能web服务器和反向代理服务器,具体的使用会单独发一篇文章介绍下载软件 sudo apt-get install nginx启动 sudo systemctl start nginx查看状态 sudo systemctl status nginx设置nginx开机启动:sudo systemctl enable nginx重新加载Nginx,使配置生效 sudo systemctl reload nginxnginx 默认80口 测试是否正常 输入ip地址访问,看到如下界面就证明启动成功了默认的网站根目录:/var/www/htmlnginx配置文件目录:/etc/nginx/nginx主配置文件位置:/etc/nginx/nginx.conf日志地址 vim /var/log/nginx/error.log新增端口映射文件放/etc/nginx/conf.d 中server { listen 81; #映射端口 server_name photo_bed.com; #服务名称 root /var/www/photo_bed.com; #资源路径 index index.html index.htm; #请求头 location / { try_files $uri $uri/ =404; #404页面 } }2.4.4 安装Dockerdocker是一种虚拟化容器技术,类似于虚拟机,但是传统虚拟机是利用机器硬件进行虚拟化,而docker是在软件层面进行虚拟化,这个后面也会详细单独讲一篇,这里只介绍安装以及换源安装sudo curl -sSL https://get.docker.com | sh #一键安装脚本 sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #国内镜像安装 docker run hello-world #测试是否安装成功Docker换源国内源地址https://registry.docker-cn.com #Docker官方中国区 http://hub-mirror.c.163.com #网易 https://docker.mirrors.ustc.edu.cn #中国科技大学 https://y0qd3iq.mirror.aliyuncs.com #阿里云 (实测阿里云的最快)新增配置文件 nano /etc/docker/daemon.json{ "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"] }重启Docker服务 sudo service docker restart然后通过以下命令查看配置是否生效 docker info|grep Mirrors -A 1 ,看到如下的输出: Registry Mirrors: https://y0qd3iq.mirror.aliyuncs.com/ 就表示镜像配置成功
2022年07月30日
239 阅读
1 评论
5 点赞