O.P.
这可能也属于编程论坛。模组请适当移动它。
我在连接 Orion 2kW 逆变器(由 Hippie 提供)时遇到问题。在让 Hippie 的暴徒在我的 Trannergy 中安装他们的 audrino 设备后,这个 bug 被咬了,所以我尝试使用 Rasperry Pi 和一些 Perl(从这里)记录我的 Other Half 的两个 Orion 逆变器。串口->USB 电缆来自 umart(串口端的 LED 每隔几秒闪烁一次)。
经过一番折腾(我不是程序员)和拍脑袋后,Perl 似乎几乎 工作,直到它尝试与逆变器通信。
cd /opt/solar/2kw
perl inverter.pl
启动at 11/04/2016 08:38:50 running on linux ...
Initialise Serial Port... port = /dev/ttyUSB0
Send -> req init inverter: 55aa000000000004000103
Send -> req序列号:55aa0000000000000000ff
等了 2 秒,从未看到 55aa0000000000800a
noTalks=1,reInits=0。
睡眠:15 秒,截至 11/04/2016 08:38:52 ...
在放弃之前,它会继续这样持续几分钟。
我已经编辑了 pvout.pl 文件以包含逆变器序列号(来自逆变器侧面的标签)、PVO API 密钥和 PVO 系统 ID。但是,在 config.ini 文件中还有其他对“串行”的引用(在“[sendhex]”和“[recvhex]”部分),它们是十六进制的,我没有编辑这些。有谁知道这两个密钥是否需要相同(但在配置中为十六进制),还是它们完全不同?
如果序列号与标签上的不一样,我该怎么办着手获取这个(ProControl 由于某种原因无法安装在我的笔记本电脑上)?
提前致谢。
评论
Draffa 写道...
我已经编辑了 pvout.pl 文件以包含逆变器序列号
该脚本从逆变器请求序列号,因此不需要硬编码。 ..
我的 CMS2000(基本上是一个克隆)使用了相同的脚本,从外观上看,该脚本没有从逆变器获得响应...
我想我记得一些关于握手的事情?关于串口线和逆变器不支持这个选项
评论
O.P.
Scotty990 writes...
那个脚本要求来自逆变器的序列号,因此不需要硬编码...
根据 Klaverstyn wiki 上的指南,您必须将这些详细信息输入到 pvoutput.pl(不是 pvout.pl,抱歉那)。 inverter.pl 似乎正在尝试使用不同的序列号联系逆变器?
在任何情况下,pvoutput.pl 文件不应该在收集数据之前发挥作用?
评论
关于此的一些想法:
确保应用程序/脚本使用正确的设备(它可能不会将自己显示为 /dev/ttyUSB0,或被识别根本)。检查dmesg |grep 'serial|ttyS|ttyU'确保每一端的串口配置匹配。例如Orion配置端口为38000 8N1,PI串口也应该配置相同(使用setserial配置,minicom、cu或tip测试)评论
Draffa 写道...
您必须将这些详细信息输入到 pvoutput.pl(不是 pvout.pl,对此感到抱歉)
这是正确的,但是pvout.pl 脚本在成功连接并读取数据后被调用。
评论
O.P.这篇文章已编辑
newlook 写道... p>
dmesg |grep 'serial|ttyS|ttyU'
不返回任何内容。但是,在启动后(插入串口->USB 电缆),'dmesg -wH' 返回
。
[ +0.375618] systemd-udevd[91]: starting版本 215
[+1.827459] gpiomem-bcm2835 20200000.gpiomem:初始化:注册在 0x20200000
[+0.037954] EXT4-fs (mmcblk0p2):重新安装。 Opts: (null)
[+0.852518] bcm2835-rng 20104000.rng: hwrng registered
[+0.916709] usbcore: registered new interface driver usbserial
[ +0.000160] usbcore: registered new interface driver usbserial_generic< br>[+0.000145] usbserial:注册了通用的 USB 串行支持
[+0.055626] usbcore:注册了新的接口驱动程序 pl2303
[+0.004416] usbserial:注册了 pl2303 的 USB 串行支持
[+0.000188] pl2303 1-1.3:1.0:检测到 pl2303 转换器
[+0.010099] usb 1-1.3:pl2303 转换器现在连接到 ttyUSB0
[+1.418010] systemd-journald[89]:收到从 PID 刷新运行时日志的请求1
[+0.817684] 随机:非阻塞池已初始化
[+0.865722] usbcore:已注册新接口驱动程序 rtl8192cu
[+0.237612] bcm2708_i2c 20804000.i2c:BSC1 控制器位于 0x20804000(irq 79)(波特率100000)
[ +1.391452] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
如果我 boot,然后 插入电缆,然后“dmesg -wH”,我得到
[Apr11 12:57] usb 1-1.3:使用 dwc_otg 的新全速 USB 设备编号 5
[+0.102704] usb 1-1.3:找到新 USB 设备,idVendor=0557,idProduct=2008
[+0.000045] usb 1-1.3:新 USB 设备字符串: Mfr=1, Product=2, SerialNumber=0
[ +0.000020] usb 1-1.3: Product: USB-Serial Controller D
[ +0.000018] usb 1-1.3: Manufacturer: Prolific Technology Inc.< br>[+0.088911] usbcore:注册了新的接口驱动程序 usbserial
[+0.000168] usbcore:注册了新的接口驱动程序 usbserial_generic
[+0.000151] usbserial:注册了通用的 USB 串行支持
[+0.004123] usbcore :注册了新的接口驱动程序 pl2303
[+0.000172] usbserial:为 pl2303 注册了 USB 串行支持
[+0.000147] pl2303 1-1.3:1.0:检测到 pl2303 转换器
[+0.037729] usb 1-1.3: pl2303 converter now attached to ttyUSB0
So it's there, and attached to ttyUSB0, it seems.
Zh确保每一端的串行端口配置匹配。例如Orion配置端口为38000 8N1
Orion的手册说串口为9600/8/N/1/无流控
pi@SmithPV :~ $ stty -F /dev/ttyUSB0
速度 9600 波特; line = 0;
-brkint -imaxbel
所以匹配,我猜?
Scotty990 写入...
获取在成功连接并读取数据后调用。
这就是我的想法。我可以忽略它,除非它在后面的序列中有问题。
评论
O.P.
万一它是一根坏电缆,我把它换成另一根(都是 NIB)。不用找了。 :(
评论
你能把电缆插入一台 windows 计算机并安装 perl 和串行库吗...我认为在脚本中它会询问它的 windows 或linux..
评论
O.P.
Scotty990 writes...
你能把电缆插入windows电脑并安装perl吗和串行库...
可以。我已经安装了 Strawberry Perl。什么是串行库?是 Win32::SerialPort 吗?
进一步测试:
我把树莓派、电源适配器和 USB-> 串行电缆带到了我母亲的房子。她还有两个她想要记录的逆变器;一个 Clenergy 和一个 Solar River。我知道 Solar River 在内部与 Orions 基本相同.
我首先插入 Clenergy,正如预期的那样,没有得到任何结果:
pi@SmithPV:~ $ cd /opt/solar/2kw
pi@SmithPV:/opt/solar /2kw $ perl inverter.pl
Starting up at 12/04/2016 09:33:34 running on linux ...
Initialise Serial Port... port = /dev/ttyUSB0
发送 ->要求初始投资rter: 55aa000000000004000103
Send -> req serial: 55aa0000000000000000ff
等待 5 秒,从未看到 55aa0000000000800a
noTalks=1,reInits=0。
睡眠:60 秒,截至 12/64/92 33:40 ...
等等。然后我连接到 Solar River,再次运行 inverter/pl,但一无所获。直到我意识到我没有重新打开逆变器。 :) 一旦我这样做了,我得到了即时响应:
Re-Init attempt 2...
Starting up at 12/04/2016 09:13:15 running on linux ...
初始化串口... port = /dev/ttyUSB0
Send -> req init inverter: 55aa000000000004000103
Send -> req serial: 55aa0000000000000000ff
Recv <- 55aa00000000000800a533234e3134c393
confirm serial: 55aa0000000000010b5332383132334e343936010350
Recv <- 55aa00010000008101060188
Send -> req version: 55aa000000010103000104
Recv <- 55aa000100000183403120203236303056312e3030536f6c6172526976 657220322e384b5753414d494c50 4f57455220202020202053323831 32334e3439360000000000003336 3030104555aa0000000000800a533231324e343903
* 版本信息:
asciiVers=U¦@1 2600V1.00SolarRiver 2.8KWSAMILPOWER S28123N4963600EU¦¦
S212N49
容量:2600
固件:V1.00
MANUF:SAMILPOWER
型号: SolarRiver 2.8KW
其他 : 3600
序列号 : S28123N496
发送 -> 请求参数格式:55aa0000 00010101000158
等了 5 秒,从未看到 55aa000100000181
noTalks=1,reInits=2。
睡眠:60 秒,截至 12/04/2016 09:13:25 ...
不是我想要的。我再次关闭了一切。启动 Pi 并登录。然后启动 SR,等一分钟让它完成,然后再次运行 inverter.pl:
pi@SmithPV:~ $ cd /opt/solar/2kw
pi@SmithPV:/opt/solar/2kw $ perl inverter.pl
Starting up at 12/04/2016 09:22:02 running on linux ...
Initialise Serial Port... port = / dev/ttyUSB0
Send -> req init inverter: 55aa000000000004000103
Send -> req serial: 55aa0000000000000000ff
Recv <- 55aa0000000000800a5332383132334e34393603cd
Send -> confirm serial: 55aa0000000000010b5332383132334e343936010350
Recv <- 55aa00010000008101060188
Send -> req version: 55aa000000010103000104
Recv <- 55aa000100000183403120203236303056312e3030536f6c6172526976 657220322e384b5753414d494c50 4f57455220202020202053323831 32334e343936000000000000333630301045
* Version info:
asciiVers=U¦¦@ 1 2600V1.00SolarRiver 2.8KWSAMILPOWER S28123N4963600E
容量:2600
固件:V1.00
制造商:SAMILPOWER
型号:SolarRiver 2.8KW
其他:3600
序列号:S28123N496
发送 -> 请求参数格式:55aa000000010101000158
接收 <- 55aa00010000018101000183
* 参数格式:
dataToFollow = hex(01) = 1
9 = 00
发送 -> 请求参数:55aa000000001015b br> recv <-55AA00010000018401000186
*参数:
send-> req数据格式:55AAA00000000010100000101
recv <-55AAA000100000100000180180180140A0A0A0ABOR = 20
9 = 00 = TEMP = 0 = 内部温度
10 = 01 = VPV1 = 1 = 面板 1 电压
11 = 04 = IPV1 = 2 = 面板 1 直流电流
12 = 09 = ETOTALH = 3 = 累积能量(高位)
13 = 0a = HTOTALL = 4 = 工作时间(低位)
14 = 0c = MODE = 5 = 工作模式
15 = 11 = ETODAY = 6 = 今天累计能量
16 = 12 = HTOTALH = 7 = 工作时间(高位)
17 = 13 = ERR_GV = 8 = 错误消息:GV 故障值?
18 = 16 = ERR_GF = 9 = 错误消息:GF 故障值?
19 = 17 = ERR_GZ = 10 = 错误消息:GZ 故障值?
20 = 18 = ERR_TEMP = 11 = 错误消息:Tmp 故障值?
21 = 31 = IAC = 12 = 电网电流
22 = 32 = VAC = 13 = 电网电压
23 = 33 = FAC = 14 = 电网频率
24 = 34 = PAC = 15 = 输出功率
25 = 35 = ERR_PV1 = 16 = 错误消息:PV1 故障值?
26 = 36 = ETOTALL = 17 = 累积能量(低位)< br>27 = 37 = ERR_GFC1 = 18 = 错误消息:GFC1 故障值?
28 = 38 = ERR_MODE = 19 = 错误模式?
发送 -> 截至 12/04/2016 09:22 的请求数据: 09:55aa000000 010102000103
Recv <- 55aa0001000001822801430e1f000000003076021c0000000000000000 a8000000000000000000000000016bd20000000004c6
* Data:
TEMP : 32.3 deg C = Internal Temperature
VPV1 : 361.5 V = Panel 1 Voltage
IPV1 : 0 A = 面板 1 直流电流
ETOTALH:0 kWh = 累积能量(高位)
HTOTALL:12406 小时 = 工作时间(低位)
MODE:540 = 操作模式
ETODAY:0 kWh = 今天累计能量
HTOTALH : 0 小时 = 工作时间(高位)
ERR_GV : 0 = 错误信息:GV 故障值?
ERR_GF :0 = 错误信息:GF 故障值?
ERR_GZ :43008 = 错误消息:GZ 故障值?
ERR_TEMP:0 = 错误消息:Tmp 故障值?
IAC:0 A = 电网电流
VAC:0 V = 电网电压
FAC:0 Hz = 电网频率
PAC:0 W = 输出功率
ERR_PV1: 1 = 错误消息:PV1 故障值?
ETOTALL:2760.2 kWh = 累积能量(低位)
ERR_GFC1:0 = 错误消息:GFC1 故障值?
ERR_MODE:0 = 错误模式?
记录到:/opt/solar/2kw/logs/20160412.csv
睡眠:59 秒,截至 12/04/2016 09:22:10 ...
发送 -> 请求数据,截至 12/04 /2016 09:23:09:55AA000000010102000103
recv <-55AA00000100000182228013E0F15000000003076021C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来1 电压
IPV1:0 A = 面板 1 直流电流
ETOTALH:0 kWh = 累积能量(高位)
HTOTALL:12406 小时 = 工作时间(低位)
MODE:540 = 运行模式
ETODAY:0 kWh = 今天的累计能量
HTOTALH:0 hrs = 工作时间(高位)
ERR_GV:0 = 错误消息:GV 故障值?
ERR_GF :0 = 错误消息:GF 故障值?
ERR_GZ :43008 = 错误消息:GZ 故障值?
ERR_TEMP:0 = 错误消息:Tmp 故障值?
IAC :0 A = 电网电流
VAC:0 V = 电网电压
FAC:0 Hz = 电网频率
PAC:0 W = 输出功率
ERR_PV1:1 = 错误消息:PV1 故障值?
ETOTALL:2760.2 kWh =累积能量(低位)
ERR_GFC1:0 = 错误消息:GFC1 故障值?
ERR_MODE:0 = 错误模式?
记录到:/opt/solar/2kw/logs/20160412.csv
睡眠:59 秒,截至 12/04/2016 09:23:10 ...
等等。成功!过了一会儿,它也运行了 pvoutput.pl,但是由于主电源已关闭并且没有网络连接,所以没有任何东西被发送出去。
因此,RPi、电缆或脚本似乎都没有问题。这让我怀疑 Orion 固件发生了一些变化,这意味着十六进制请求被忽略了或其他什么。请注意,Solar River 的固件版本是 V1.00,我这里的 Orions 固件是 VA1.12(原文如此)。
评论
O.P.
OH !更多谷歌搜索。在我发布上面的内容之后,我去阅读了我打开的另一个选项卡,来自相关 Perl 的原始作者。我无意中发现了这篇文章:
Solar Freaks 上的 perl inverter.pl 脚本适用于几种不同类型的逆变器并且有 3 个不同的配置文件...这是我目前知道它适用的文件,但是现在进行更多更改(进一步发布 #52 :)):
程序员分别列出了三种主要类型的逆变器。请注意,猎户座与 Solar River 不在同一组。
我检查了默认配置文件:
# 应该与 SAMILPOWER 制造的逆变器一起工作:Solar River 等。
< p>因此配置文件适用于 SamilPower 逆变器。在被忽略的“配置”文件夹中有三个配置:SamilPower、Phoenixtec 和 KLNE 各一个。所以我将 phoenixtec 配置复制到默认配置之上,对路径和端口进行快速编辑,然后运行逆变器。 pl
pi@SmithPV:/opt/solar/2kw $ nano config.ini
pi@SmithPV:/opt/solar/2kw $ perl inverter.pl
04 月 12 日启动/2016 14:38:28 running on linux ...
Initialise Serial Port... port = /dev/ttyUSB0
Send -> req init inverter: aaaa010000000004000159
Send -> req serial: aaaa010000000000000155< br>Recv <- aaaa0000010000800a3131303455303030383203f4
Send -> confirm serial: aaaa0100000000010b31313034553030303832010377
Recv <- aaaa000101000081010601de
Send -> req version: aaaa01000001010300015a
Recv <- aaaa000101000183403120203230303041312e31325053323230415534 332020202020202050484f454e49 5854454320202020202031313034 553030303832202020202020333630300eb9
* 版本信息:
asciiVers=waah waah waah @1 2000A1.12PS220AU43 PHOE NIXTEC 1104U00082 3600waah
容量:2000
固件:A1.12PS
制造商:PHOENIXTEC
型号:220AU43
其他:3600
序列号:1104U00082
发送 -> 请求参数格式: aaaa010000010101000158
Recv <- aaaa000101000181064041444546470375
* 参数格式:
dataToFollow = hex(06) = 6
9 = 40 = VPV-START = 0 = PV 启动电压
10 = 41 = T-START = 1 = 连接电网的时间
11 = 44 = VAC-MIN = 2 = 最小电网运行电压
12 = 45 = VAC-MAX = 3 = 最大电网运行电压
13 = 46 = FAC-MIN = 4 = 最小工作频率
14 = 47 = FAC-MAX = 5 = 最大工作频率
发送 -> 请求参数:aaaa01000001010400015b
Recv <- aaaa0001010001840c05dc003c080c0a50133d13d304a8VPV-START : 150 V = PV 启动电压
T-START : 60 Sec = 连接电网的时间
VAC-MIN : 206 V = 最小运行电网电压
VAC-MAX : 264 V = 最大最大运行电网电压
FAC-MIN : 49.25 Hz = 最小运行频率
FAC-MAX : 50.75 Hz = 最大运行频率
发送 -> 请求数据格式:aaaa010000010100000157
Recv <- aaaa00010100018015000d4041424344454748494a4c78797a7b7c7d7e7f08d2
* 数据格式:
dataToFollow = hex(15) = 21
9 = 00 = TEMP = 0 = 内部温度
10 = 0d = ETODAY = 1 = 今天累计能量
11 = 40 = VPV = 2 = 面板电压
12 = 41 = IAC = 3 = 电网电流
13 = 42 = VAC = 4 = 电网电压
14 = 43 = FAC = 5 = 电网频率
br>15 = 44 = PAC = 6 = 输出功率
16 = 45 = ZAC = 7 = 电网阻抗
17 = 47 = ETOTALH = 8 = 累积能量(高位)
18 = 48 = ETOTALL = 9 = 累计能量(低位)
19 = 49 = HTOTALH = 10 = 工作时间(高位)
20 = 4a = HTOTALL = 11 = 工作时间(低位)
21 = 4c = MODE = 12 = 操作模式
22 = 78 = ERR_GV = 13 = 错误 m消息:GV 故障值
23 = 79 = ERR_GF = 14 = 错误消息:GF 故障值
24 = 7a = ERR_GZ = 15 = 错误消息:GZ 故障值
25 = 7b = ERR_TEMP = 16 =错误信息:Tmp 故障值
26 = 7c = ERR_PV1 = 17 = 错误信息:PV1 故障值
27 = 7d = ERR_GFC1 = 18 = 错误信息:GFC1 故障值
28 = 7e = ERR_MODE = 19 = Error mode
29 = 7f = UNK10 = 20 = Unknown
Send -> req data as at 12/04/2016 14:38:36 : aaaa010000010102000159
Recv <- aaaa0001010001822a017300ca0f8b0000000000000000ffff000114b0 00002ecc00020000000000000000000000002002020007be
* 数据:
温度:37.1 摄氏度 = 内部温度
ETODAY:2.02 千瓦时 = 累积能量y 今天
VPV:397.9 V = 面板电压
IAC:0 A = 电网电流
VAC:0 V = 电网电压
FAC:0 Hz = 电网频率
PAC:0 W =输出功率
ZAC:65535 mOhm = 电网阻抗
ETOTALH:256 kWh = 累积能量(高位)
ETOTALL:529.6 kWh = 累积能量(低位)
HTOTALH:0 小时 = 工作时间(高位)
HTOTALL:11980 小时 = 工作时间(低位)
MODE:2 = 操作模式
ERR_GV:0 = 错误消息:GV 故障值
ERR_GF:0 = 错误消息: GF 故障值
ERR_GZ:0 = 错误消息:GZ 故障值
ERR_TEMP:0 = 错误消息:Tmp 故障值
ERR_PV1:0 = 错误消息:PV1 故障值
ERR_GFC1:0 = 错误消息:GFC1 故障值
ERR_MODE:8194 = 错误模式
UNK10:512 = 未知
*** WARNIN G 无法打开日志文件:/opt/solar/logs/20160412.csv
睡眠:59 秒,截至 12/04/2016 14:38:37 ...
/猛撞到桌子上.
我花了四天时间试图解决这个问题,但一直都是 PEBKAC 错误!
只需完成编辑配置文件以获得正确的路径,看起来会很好走吧。
FSM 我现在觉得自己很蠢。 :)
评论
Draffa 写道...
所以我将 phoenixtec 配置复制到默认配置之上,执行快速编辑路径和端口,然后运行 inverter.pl
我不敢相信我错过了,但我很久以前就做了我的并删除了其他配置文件....我还编辑了逆变器脚本大量...我的日志到 PVOUTPUT 以及我在 Pi 上的一个迷你数据库,可以在这里看到:
Http://solarscotty.ddns.net
评论
O.P.
Scotty990 写...
还有我在 Pi 上的一个迷你数据库,可以在这里看到:
Http://solarscotty .ddns.net
非常可爱!你用什么做图表? rddtool?
评论
这篇文章被编辑了
Draffa 写...
你用什么做图表
它是一个名为 highcharts 的 javascript 库,与 pvoutput 相同...我只是在数据库中有数字并对其运行查询
我的数据库中有 3 个表。
1.用于 5 分钟生成数据
2。是一天中每半小时生成、导入、导出。通过脚本完成
3。是一张每日表格,列出了发电、进口、出口以及 3 种不同关税结构总计的数据总计
评论
您好,你们是否设法获得了CMS2000 将数据记录到 Raspberry 上的 PVOUTPUT?我不想使用 PC 来使用太多功率来执行此操作。你介意和我分享一下做这件事的步骤吗?我有一个树莓派 3 型号 B(wifi 型号)以及串口转 USB 电缆。谢谢
澳洲中文论坛热点
- 悉尼部份城铁将封闭一年,华人区受影响!只能乘巴士(组图)
- 据《逐日电讯报》报导,从明年年中开始,因为从Bankstown和Sydenham的城铁将因Metro South West革新名目而
- 联邦政客们具有多少房产?
- 据本月早些时分报导,绿党副首领、参议员Mehreen Faruqi已获准在Port Macquarie联系其房产并建造三栋投资联