提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2018-08-13 15:27:23.000|阅读 1731 次
概述:本教程介绍了Raspberry Pi上的远程开发,需要的可以收藏分享哦~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
互联网连接的关键指标之一是它对互联网上其他主机的ping时间。因此,编写一个程序,定期ping其他主机并记录结果。对于那些想要在其他远程计算机上远程执行代码的人,例如AWS实例或DigitalOcean Droplet,过程完全相同。
本教程是在Windows上创建的,代码是在RPi上执行的,RPi是一台Linux计算机。在其他受支持的操作系统上,某些路径和工作流程可能略有不同。
确保满足以下先决条件:
您还需要一些额外的软件:
要一次安装所有这些,请运行以下命令:
sudo apt-get update && sudo apt-get install -y postgresql libpq-dev python-dev
构建的应用程序包含两部分:
由于希望以后能够查看带有结果的网页,因此在网络中为Pi提供固定IP非常重要。 为此,请编辑/ etc / network / interfaces。
将Pi设置为使用静态IP后,请raspi-config在命令行中使用。转到“ 高级选项”,选择“ SSH”,然后选择“ 是”。当你完成这项工作后,你就可以开始使用PyCharm了。
创建一个纯Python项目:选择File | New Project。将项目命名为“raspberry.pi”。
然后按照 Configuring Remote Interpreters via SSH中所述添加SSH远程解释器。配置SSH服务器时,请指定Pi(主机)的IP地址,例如172.27.120.177。另外,指定登录到设备的凭据。
接下来,在PyCharm中,按Ctrl+Shift+A,开始输入“启动SSH会话”:
然后从主机列表中选择您的Raspberry Pi,您应该连接。
接下来,安装其他软件。
现在需要在PostgreSQL中设置权限。最简单的方法是返回SSH终端,并运行以下命令以获得Postgres用户的SQL提示:
sudo -u postgres psql
现在创建一个用户(Postgres术语中的 ‘role’),其名称与运行该过程的用户的名称相同:
CREATE ROLE pi WITH LOGIN PASSWORD ‘hunter2’;
重要注意事项!请确保PostgreSQL中的角色与Linux用户名具有相同的名称。您可能还需要替换更好的密码。在PSQL中用分号(;)来结束SQL语句是很重要的,因为它会假定您正在编写多行语句,直到用分号终止。授予PI用户登录权限,这意味着用户可以登录。没有登录权限的角色用于创建组。
接下来,创建一个数据库:
CREATE DATABASE pi WITH OWNER pi;
其次,出口psql用\q。
要获取有关Internet连接质量的信息,请使用系统的ping实用程序ping服务器 ,然后使用正则表达式读取结果。输出 ping:
所有具有单独往返时间的行都以64字节开头。 所以让我们创建一个文件ping.pyFile | New - Python File),然后开始编码。
这里可以先获取ping的输出,然后遍历这些行,选择以数字开头,后跟“bytes from”字样的行:
此时,如果您运行代码(Ctrl+Shift+F10),您应该看到此代码在Raspberry Pi上远程运行:
要检查部署设置是否已正确设置,请指向主菜单上的Tools | Deployment 。应检查检查命令“ Automatic Upload”。
如果要存储ping PostgreSQL,为它们创建一个表。首先,需要创建一个PostgreSQL数据库:
选择PostgreSQL后,将打开数据源页面:
在此页面上,下载所需的驱动程序,输入所需的凭据,然后单击“Test Connection”按钮以确保已连接。
由于我们的数据库只暴露给localhost,所以需要使用SSH隧道:
在连接之后,通过执行setup_db.sql脚本来创建表 。从GitHub复制粘贴脚本,连接后立即打开SQL控制台,然后使用绿色播放按钮执行。
现在已经有了这个工作,然后扩展脚本,将ping记录到数据库中。要从Python连接到数据库,需要安装psycopg2。为此,请指向 File | Settings(对于Windows和Linux)或PyCharm / Preferences (对于macOS用户),然后单击Project Interpreter页面,然后使用"+"图标来安装包
实际上会定期记录ping,需要安排运行此脚本。为此,将使用cron。当对数据库使用对等身份验证时,需要确保脚本以pi用户身份运行。因此,打开一个SSH会话(确保已登录 pi),然后运行crontab -e以编辑用户crontab。然后在文件的底部添加以下行:
*/5 * * * * /home/pi/raspberryping/ping.py jetbrains.com >> /var/log/raspberryping.log 2>&1
确保文件末尾有换行符!
第一个*/5意味着脚本将每5分钟运行一次。如果您想要不同的频率,您可以了解有关crontabs的更多信息。现在还需要创建日志文件并确保脚本可以写入它:
sudo touch /var/log/raspberryping.log
sudo chown pi:pi /var/log/raspberryping.log
此时花点时间,当您稍后再回来时,应该记录一些ping时间。让查看PyCharm的数据库工具。打开 Database tool window 在屏幕右侧),然后双击该表。您应该看到它包含值:
如果看不到有关它们的统计数据,那么记录ping是没有好处的。因此,编写一个小型Flask应用程序(安装Flask,pip install在终端中使用),并使用 matplotlib绘制最近ping时间的图表。
在Flask应用程序中,将创建两个路径:
该路线很简单:只是执行一个查询来获取感兴趣的数据,并传递给模板。为了确保一切正常,在调用时设置一个断点 render_template:
然后启动调试会话(图标动作startDebugger svg)并在浏览器中查看结果。/ graphs / <destination>路线要复杂得多。首先,必须在合理大小的垃圾箱中获得过去三个小时的平均值(比方说,10分钟)。其次,必须绘制图形。
要寻找的数据是:
第一部分使这个查询相当复杂。即使PostgreSQL支持间隔,日期范围以及生成一系列日期的方法,也无法生成一系列范围。这个问题的一个解决方案是公用表表达式(CTE),这是一种执行子查询的方法,您可以在以后将其称为真实表。
要以10分钟的间隔获取过去三小时的一系列timestamps很简单:
select begin_time from generate_series(now() - interval '3 hours', now(), interval '10 minutes') begin_time;
该generate_series函数有三个参数:begin,end和step。该功能适用于数字和timestamps,因此可以轻松实现。需要两个timestamps之间的时间。可以使用另一个SQL magic: window functions,它允许在当前所在的行之前或之后处理行。所以添加 end_time到查询中:
LEAD获取结果中下一行的值,按照OVER子句中指定的方式排序 。您可以使用LAG以类似方式获取上一行。所以现在可以用这个查询包装WITH intervals as ( … query goes here … )使它成为一个CTE。然后可以加入ping表并获得正在寻找的结果:
接下来,执行此查询。右键单击 editor background,然后在context菜单中选择Execute:
(如果您没有看到Execute,请选择 Attach Console让PyCharm知道您要执行查询的数据库)。
您可以使查询工作速度提高30倍。要实现此显着加速,请将此索引添加到查询中:
CREATE INDEX pings_recorded_at ON pings(recorded_at);
获取数据后,matplotlib用于生成一个折线图,其中包含每个bin的最小,平均和最大ping时间。Matplotlib可以使用plot_date function轻松绘制基于时间的数据。
当绘图准备好后,它将作为.png文件“保存” 到StringIO对象,然后用于创建HTTP响应。通过设置content_type标题image/png,一切都安排好了。
所以最终的结果是:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:慧都本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢