mirror of
https://github.com/uhi22/pyPLC.git
synced 2024-11-20 01:13:58 +00:00
Merge branch 'master' into mqtt_backend
# Conflicts: # doc/pyPlc.ini.template # fsmEvse.py # hardwareInterface.py
This commit is contained in:
commit
c3c73f9f74
43 changed files with 36676 additions and 71 deletions
234
MacLog.txt
Normal file
234
MacLog.txt
Normal file
|
@ -0,0 +1,234 @@
|
|||
2024-05-21T17:29:08.611520 SECC MAC B8:27:EB:27:33:53 RaspiAtHome
|
||||
2024-05-21T17:29:18.323217 SECC MAC B8:27:EB:27:33:53 RaspiAtHome
|
||||
2024-05-21T17:29:27.135444 SECC MAC B8:27:EB:27:33:53 RaspiAtHome
|
||||
2024-05-21T18:49:37.757557 SECC MAC F6:E7:B0:0F:77:EA Alpi SWI 130 001
|
||||
2024-05-21T18:50:25.760260 SECC MAC F6:E7:B0:0F:77:EA Alpi SWI 130 001
|
||||
2024-05-21T18:51:55.456487 SECC MAC E6:B1:46:CF:43:B2 Alpi SWI 132 001
|
||||
2024-05-21T18:52:12.778818 SECC MAC E6:B1:46:CF:43:B2 Alpi SWI 132 001
|
||||
2024-05-21T18:53:01.312392 SECC MAC 96:C1:03:C4:0D:92 Alpi SWI 131 001
|
||||
2024-05-21T18:54:05.902683 SECC MAC 7A:8E:92:F2:83:56 Alpi SWI 129 001
|
||||
2024-05-21T18:56:02.876738 SECC MAC 22:BE:FE:DB:A6:61 Alpi SWI 133 001
|
||||
2024-05-21T18:57:27.677160 SECC MAC 9E:ED:27:37:7C:1C Alpi SWI 128 001
|
||||
2024-05-21T18:58:40.036657 SECC MAC 7E:0B:F8:B2:F5:06 Alpi SWI 127 001
|
||||
2024-05-21T18:59:59.629666 SECC MAC 56:01:60:30:5F:B4 Alpi SWI 126 001
|
||||
2024-05-21T19:27:36.811935 SECC MAC DC:44:27:1F:E3:BD SucV3 PafStraas 2B
|
||||
2024-05-21T19:30:45.194020 SECC MAC DC:44:27:1F:4C:64 SucV3 PafStraas 2A
|
||||
2024-05-21T19:32:13.577084 SECC MAC DC:44:27:1F:26:9A SucV3 PafStraas 1D
|
||||
2024-05-21T19:33:42.682369 SECC MAC DC:44:27:1F:BA:CC SucV3 PafStraas 1C
|
||||
2024-05-21T19:35:01.448255 SECC MAC DC:44:27:1F:F1:EC SucV3 PafStraas 1B
|
||||
2024-05-21T19:36:12.499604 SECC MAC DC:44:27:1F:91:15 SucV3 PafStraas 1A
|
||||
2024-05-21T19:38:00.999068 SECC MAC DC:44:27:1F:49:18 SucV3 PafStraas 5C
|
||||
2024-05-21T19:38:41.779243 SECC MAC DC:44:27:1F:24:60 SucV3 PafStraas 5D
|
||||
2024-05-21T19:39:53.001016 SECC MAC DC:44:27:1F:54:AF SucV3 PafStraas 6A
|
||||
2024-05-21T19:40:36.505826 SECC MAC DC:44:27:1F:84:D1 SucV3 PafStraas 6B
|
||||
2024-05-21T19:41:24.828225 SECC MAC DC:44:27:1F:2C:7C SucV3 PafStraas 6C
|
||||
2024-05-21T19:42:07.672527 SECC MAC DC:44:27:1F:80:25 SucV3 PafStraas 6D
|
||||
2024-05-21T19:45:52.619427 SECC MAC DC:44:27:1F:0D:E7 SucV3 PafStraas 5B
|
||||
2024-05-21T19:46:44.658812 SECC MAC DC:44:27:1F:A2:68 SucV3 PafStraas 5A
|
||||
2024-05-21T19:48:27.111030 SECC MAC DC:44:27:1F:F8:6A SucV3 PafStraas 4B
|
||||
2024-05-21T19:54:40.934214 SECC MAC DC:44:27:1F:86:C7 SucV3 PafStraas 3B
|
||||
2024-05-21T19:56:34.924301 SECC MAC DC:44:27:1F:11:24 SucV3 PafStraas 3A
|
||||
2024-05-21T20:19:42.843730 SECC MAC DC:44:27:1F:6D:0F SucV3 PafStraas 3C
|
||||
2024-05-21T20:23:02.386877 SECC MAC DC:44:27:1F:2C:07 SucV3 PafStraas 2C
|
||||
2024-05-21T20:24:48.143401 SECC MAC DC:44:27:1F:60:7A SucV3 PafStraas 4D
|
||||
2024-05-21T20:25:44.826400 SECC MAC DC:44:27:1F:4A:BF SucV3 PafStraas 4C
|
||||
2024-05-21T20:35:05.955387 SECC MAC DC:44:27:1F:34:0D SucV2 PAF 3A
|
||||
2024-05-21T20:36:44.534922 SECC MAC DC:44:27:1F:02:A6 SucV2 PAF 2B
|
||||
2024-05-21T20:38:59.715684 SECC MAC DC:44:27:1F:07:14 SucV2 PAF 2A
|
||||
2024-05-21T20:46:56.759175 SECC MAC DC:44:27:1F:07:0C SucV2 PAF 1B
|
||||
2024-05-21T20:47:44.061312 SECC MAC DC:44:27:1F:05:56 SucV2 PAF 1A
|
||||
2024-05-21T21:09:42.692251 SECC MAC DC:44:27:1F:A0:00 SucV3 Langenbruck 5D
|
||||
2024-05-21T21:13:26.238880 SECC MAC DC:44:27:1F:73:7E SucV3 Langenbruck 5B
|
||||
2024-05-21T21:14:45.797955 SECC MAC DC:44:27:1F:46:86 SucV3 Langenbruck 5C
|
||||
2024-05-21T21:16:01.388233 SECC MAC DC:44:27:1F:8E:46 SucV3 Langenbruck 5A
|
||||
2024-05-21T21:17:15.274683 SECC MAC DC:44:27:1F:78:C6 SucV3 Langenbruck 4D
|
||||
2024-05-21T21:17:56.490544 SECC MAC DC:44:27:1F:86:2E SucV3 Langenbruck 4C
|
||||
2024-05-21T21:18:43.260660 SECC MAC DC:44:27:1F:4A:F5 SucV3 Langenbruck 4B
|
||||
2024-05-21T21:19:44.476534 SECC MAC DC:44:27:1F:95:40 SucV3 Langenbruck 4A
|
||||
2024-05-21T21:21:16.073879 SECC MAC DC:44:27:1F:CD:C5 SucV3 Langenbruck 1A
|
||||
2024-05-21T21:21:58.197231 SECC MAC DC:44:27:1F:1D:74 SucV3 Langenbruck 1B
|
||||
2024-05-21T21:22:31.537197 SECC MAC DC:44:27:1F:D8:36 SucV3 Langenbruck 1C
|
||||
2024-05-21T21:23:05.512881 SECC MAC DC:44:27:1F:0F:D2 SucV3 Langenbruck 1D
|
||||
2024-05-21T21:24:32.939673 SECC MAC DC:44:27:1F:C2:E0 SucV3 Langenbruck 2A
|
||||
2024-05-21T21:25:06.257572 SECC MAC DC:44:27:1F:19:E2 SucV3 Langenbruck 2B
|
||||
2024-05-21T21:25:41.183515 SECC MAC DC:44:27:1F:AB:A2 SucV3 Langenbruck 2C
|
||||
2024-05-21T21:26:18.795473 SECC MAC DC:44:27:1F:7E:46 SucV3 Langenbruck 2D
|
||||
2024-05-21T21:27:05.616048 SECC MAC DC:44:27:1F:3C:48 SucV3 Langenbruck 3A
|
||||
2024-05-21T21:27:42.196006 SECC MAC DC:44:27:1F:22:DB SucV3 Langenbruck 3B
|
||||
2024-05-21T21:28:28.692548 SECC MAC DC:44:27:1F:67:73 SucV3 Langenbruck 3D
|
||||
2024-05-21T21:29:03.930426 SECC MAC DC:44:27:1F:9A:BB SucV3 Langenbruck 3C
|
||||
2024-05-21T21:36:34.994428 SECC MAC 8A:01:92:D6:35:87 Alpi EnBW 906470*1
|
||||
2024-05-21T21:38:43.729181 SECC MAC 9E:54:DB:34:84:E7 Alpi EnBW 906470*2
|
||||
2024-06-06T08:36:43.604386 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:36:43.641907 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:37:58.603693 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:38:03.720823 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:38:27.603540 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:38:27.604233 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:39:48.604985 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:39:48.605626 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:58:51.609927 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:58:51.615653 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:59:42.610360 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-06T08:59:42.612265 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-07T17:55:43.186237 SECC MAC 32:FE:79:B3:61:01
|
||||
2024-06-07T18:20:29.163076 SECC MAC E8:EB:1B:1A:E4:7E
|
||||
2024-06-07T18:20:29.166374 SECC MAC E8:EB:1B:1A:E4:7E
|
||||
2024-06-07T18:21:24.534619 SECC MAC E8:EB:1B:1B:50:54
|
||||
2024-06-07T18:22:30.532220 SECC MAC E8:EB:1B:1A:F8:20
|
||||
2024-06-07T18:23:31.171289 SECC MAC E8:EB:1B:1B:57:85
|
||||
2024-06-08T11:19:28.588317 SECC MAC EA:C4:79:95:0B:D3
|
||||
2024-06-08T11:19:28.593545 SECC MAC EA:C4:79:95:0B:D3
|
||||
2024-06-08T12:44:11.623276 SECC MAC 00:13:95:31:C1:01
|
||||
2024-06-08T12:44:11.626572 SECC MAC 00:13:95:31:C1:01
|
||||
2024-06-08T12:47:24.625720 SECC MAC 00:13:95:2D:C2:76
|
||||
2024-06-08T12:47:24.628601 SECC MAC 00:13:95:2D:C2:76
|
||||
2024-06-08T12:54:15.638666 SECC MAC 00:13:95:2D:C2:76
|
||||
2024-06-08T14:25:43.617552 SECC MAC 12:E2:D2:34:33:5B
|
||||
2024-06-08T14:25:43.620688 SECC MAC 12:E2:D2:34:33:5B
|
||||
2024-06-08T18:14:11.560344 SECC MAC A0:B0:C0:D2:04:BC
|
||||
2024-06-08T21:09:16.620238 SECC MAC FE:72:15:6F:41:5E
|
||||
2024-06-08T21:09:16.625180 SECC MAC FE:72:15:6F:41:5E
|
||||
2024-06-09T15:00:08.542914 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-09T15:00:08.544561 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-09T15:00:19.543071 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-09T15:00:19.542938 SECC MAC DC:0E:A1:11:67:08
|
||||
2024-06-09T15:55:44.166842 SECC MAC 54:10:EC:A1:F3:E2
|
||||
2024-06-09T15:55:44.171041 SECC MAC 54:10:EC:A1:F3:E2
|
||||
2024-06-09T16:00:47.177083 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:00:47.180574 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:00:47.183825 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:00:47.187118 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:00:47.190439 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:00:47.193700 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:00:47.196967 SECC MAC 8A:60:56:40:34:56
|
||||
2024-06-09T16:14:58.352666 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.356125 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.359664 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.362933 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.366195 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.369560 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.373012 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.376418 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.379720 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:14:58.382940 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:15:01.292283 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:15:01.295799 SECC MAC 82:92:6E:C7:67:7D
|
||||
2024-06-09T16:21:07.559381 SECC MAC 7A:2B:E9:0B:69:25
|
||||
2024-06-22T14:05:30.206426 SECC MAC EA:C4:79:95:0B:D3
|
||||
2024-06-22T14:05:30.212026 SECC MAC EA:C4:79:95:0B:D3
|
||||
2024-06-22T15:35:54.306023 SECC MAC DC:44:27:1F:33:FF
|
||||
2024-06-22T15:35:55.817336 SECC MAC DC:44:27:1F:33:FF
|
||||
2024-06-22T15:44:17.617459 SECC MAC DC:44:27:1F:33:FB
|
||||
2024-06-23T14:35:14.443031 SECC MAC CA:43:ED:EC:E5:1B
|
||||
2024-06-23T19:11:27.184648 SECC MAC 0A:39:46:FF:76:D3
|
||||
2024-06-23T19:11:27.189713 SECC MAC 0A:39:46:FF:76:D3
|
||||
2024-06-23T19:37:40.578736 SECC MAC DC:44:27:1F:02:03
|
||||
2024-06-23T19:37:40.582165 SECC MAC DC:44:27:1F:02:03
|
||||
2024-07-19T12:49:28.186474 SECC MAC 0E:A6:E1:05:C5:84
|
||||
2024-07-19T12:49:28.191176 SECC MAC 0E:A6:E1:05:C5:84
|
||||
2024-07-19T12:52:20.303500 SECC MAC CE:3A:F0:9A:64:E9
|
||||
2024-07-19T18:19:37.167094 SECC MAC DC:44:27:1F:33:FB
|
||||
2024-07-19T18:19:37.238901 SECC MAC DC:44:27:1F:33:FB
|
||||
2024-07-19T18:21:04.587969 SECC MAC DC:44:27:1F:33:FB
|
||||
2024-07-19T18:21:04.591318 SECC MAC DC:44:27:1F:33:FB
|
||||
2024-07-19T18:27:25.289527 SECC MAC 98:ED:5C:FE:A8:E4
|
||||
2024-07-19T18:27:25.292817 SECC MAC 98:ED:5C:FE:A8:E4
|
||||
2024-07-21T21:22:28.630366 SECC MAC 54:F8:F0:70:25:86
|
||||
2024-07-21T21:22:30.766302 SECC MAC 54:F8:F0:70:25:86
|
||||
2024-07-26T23:18:29.171274 SECC MAC A6:2F:7F:EF:D8:74
|
||||
2024-07-26T23:18:29.175468 SECC MAC A6:2F:7F:EF:D8:74
|
||||
2024-07-27T12:18:26.541599 SECC MAC 54:F8:F0:70:25:BE
|
||||
2024-07-27T12:18:26.546673 SECC MAC 54:F8:F0:70:25:BE
|
||||
2024-07-27T14:37:44.568246 SECC MAC DC:44:27:1F:36:8D
|
||||
2024-07-27T14:37:44.572753 SECC MAC DC:44:27:1F:36:8D
|
||||
2024-07-27T17:35:08.587575 SECC MAC 54:F8:F0:70:29:A4
|
||||
2024-07-27T17:35:08.591013 SECC MAC 54:F8:F0:70:29:A4
|
||||
2024-07-27T17:37:43.584566 SECC MAC 54:F8:F0:70:29:9E
|
||||
2024-07-27T19:46:56.610307 SECC MAC DC:44:27:1F:23:63
|
||||
2024-07-27T19:46:56.613948 SECC MAC DC:44:27:1F:23:63
|
||||
2024-07-27T19:49:07.606741 SECC MAC DC:44:27:1F:23:5F
|
||||
2024-07-27T19:49:07.609367 SECC MAC DC:44:27:1F:23:5F
|
||||
2024-07-28T11:06:06.538773 SECC MAC 00:14:2D:77:AD:3A
|
||||
2024-07-28T16:58:31.665432 SECC MAC 80:34:28:2D:E4:DA
|
||||
2024-07-30T10:23:38.166140 SECC MAC 0A:44:59:EE:7F:09
|
||||
2024-07-30T10:23:38.171354 SECC MAC 0A:44:59:EE:7F:09
|
||||
2024-07-31T11:19:35.324804 SECC MAC E2:98:AC:80:F3:CF
|
||||
2024-07-31T11:19:35.328931 SECC MAC E2:98:AC:80:F3:CF
|
||||
2024-07-31T13:50:19.205422 SECC MAC 54:F8:F0:70:33:BA
|
||||
2024-07-31T13:50:19.209187 SECC MAC 54:F8:F0:70:33:BA
|
||||
2024-07-31T13:52:50.697656 SECC MAC 54:F8:F0:70:33:7C
|
||||
2024-07-31T16:21:23.596017 SECC MAC DC:44:27:1F:2F:8D
|
||||
2024-07-31T19:32:59.601194 SECC MAC 54:F8:F0:70:35:84
|
||||
2024-07-31T19:32:59.604332 SECC MAC 54:F8:F0:70:35:84
|
||||
2024-07-31T19:48:18.624222 SECC MAC 54:F8:F0:70:35:84
|
||||
2024-07-31T22:23:52.696936 SECC MAC DC:44:27:1F:D4:53
|
||||
2024-07-31T22:23:52.700841 SECC MAC DC:44:27:1F:D4:53
|
||||
2024-08-01T01:14:37.603690 SECC MAC DC:44:27:1F:17:F0
|
||||
2024-08-01T01:14:37.607273 SECC MAC DC:44:27:1F:17:F0
|
||||
2024-08-01T01:18:13.584473 SECC MAC DC:44:27:1F:17:F0
|
||||
2024-08-01T02:53:11.565478 SECC MAC DC:44:27:1F:21:F5
|
||||
2024-08-01T02:53:11.569617 SECC MAC DC:44:27:1F:21:F5
|
||||
2024-08-01T02:56:07.564853 SECC MAC DC:44:27:1F:21:F5
|
||||
2024-08-01T02:56:07.568331 SECC MAC DC:44:27:1F:21:F5
|
||||
2024-08-01T05:04:20.613758 SECC MAC DC:44:27:1F:26:0D
|
||||
2024-08-01T05:04:20.622375 SECC MAC DC:44:27:1F:26:0D
|
||||
2024-08-01T06:06:52.591226 SECC MAC DC:44:27:1F:C3:85
|
||||
2024-08-01T06:06:52.594888 SECC MAC DC:44:27:1F:C3:85
|
||||
2024-08-01T06:10:09.600840 SECC MAC DC:44:27:1F:C3:85
|
||||
2024-08-01T06:10:19.602558 SECC MAC DC:44:27:1F:C3:85
|
||||
2024-08-01T06:10:22.602021 SECC MAC DC:44:27:1F:C3:85
|
||||
2024-08-01T06:12:43.589424 SECC MAC DC:44:27:1F:2E:9D
|
||||
2024-08-01T06:12:43.592785 SECC MAC DC:44:27:1F:2E:9D
|
||||
2024-08-01T06:20:39.605350 SECC MAC DC:44:27:1F:2E:9D
|
||||
2024-08-01T15:58:52.174196 SECC MAC 98:ED:5C:FF:CD:71
|
||||
2024-08-01T15:58:52.179097 SECC MAC 98:ED:5C:FF:CD:71
|
||||
2024-08-01T18:46:19.185707 SECC MAC DC:44:27:1F:B7:2C
|
||||
2024-08-01T18:46:19.189284 SECC MAC DC:44:27:1F:B7:2C
|
||||
2024-08-01T18:50:40.188330 SECC MAC DC:44:27:1F:B7:2C
|
||||
2024-08-01T18:50:40.191480 SECC MAC DC:44:27:1F:B7:2C
|
||||
2024-08-01T21:15:53.090234 SECC MAC DC:44:27:1F:12:5C
|
||||
2024-08-01T21:15:53.095090 SECC MAC DC:44:27:1F:12:5C
|
||||
2024-08-01T22:54:03.577868 SECC MAC DC:44:27:1F:11:9E
|
||||
2024-08-01T22:54:03.581042 SECC MAC DC:44:27:1F:11:9E
|
||||
2024-08-01T22:55:53.576779 SECC MAC DC:44:27:1F:12:6E
|
||||
2024-08-01T23:00:17.612357 SECC MAC DC:44:27:1F:01:88
|
||||
2024-08-01T23:05:56.614355 SECC MAC 98:ED:5C:EF:CD:71
|
||||
2024-08-02T15:58:53.635701 SECC MAC 3E:6A:54:19:94:15
|
||||
2024-08-02T15:58:53.640101 SECC MAC 3E:6A:54:19:94:15
|
||||
2024-08-02T16:07:59.038214 SECC MAC 3E:6A:54:19:94:15
|
||||
2024-08-02T19:10:57.564547 SECC MAC DC:44:27:1F:08:72
|
||||
2024-08-02T19:10:57.569819 SECC MAC DC:44:27:1F:08:72
|
||||
2024-08-02T20:37:21.619641 SECC MAC DC:44:27:1F:11:74
|
||||
2024-08-02T20:37:21.622558 SECC MAC DC:44:27:1F:11:74
|
||||
2024-08-02T20:41:47.620796 SECC MAC DC:44:27:1F:11:74
|
||||
2024-08-02T22:15:40.621796 SECC MAC DC:44:27:1F:24:17
|
||||
2024-08-02T22:15:40.625113 SECC MAC DC:44:27:1F:24:17
|
||||
2024-08-03T00:00:34.624697 SECC MAC DC:44:27:1F:9C:5E
|
||||
2024-08-03T00:00:34.627945 SECC MAC DC:44:27:1F:9C:5E
|
||||
2024-08-03T09:40:49.545588 SECC MAC DC:44:27:1F:17:E2
|
||||
2024-08-03T09:40:49.550171 SECC MAC DC:44:27:1F:17:E2
|
||||
2024-08-03T12:09:59.574201 SECC MAC 98:ED:5C:8C:A9:61
|
||||
2024-08-03T12:09:59.577547 SECC MAC 98:ED:5C:8C:A9:61
|
||||
2024-08-03T14:53:27.200706 SECC MAC DC:44:27:1F:19:18
|
||||
2024-08-03T14:53:27.205120 SECC MAC DC:44:27:1F:19:18
|
||||
2024-08-03T14:55:42.315826 SECC MAC DC:44:27:1F:19:18
|
||||
2024-08-03T16:58:38.177141 SECC MAC B2:8D:AB:55:4D:BC
|
||||
2024-08-03T16:58:38.180231 SECC MAC B2:8D:AB:55:4D:BC
|
||||
2024-08-03T18:48:01.686057 SECC MAC 70:B3:D5:1A:ED:E7
|
||||
2024-08-03T18:48:03.368764 SECC MAC 70:B3:D5:1A:ED:E7
|
||||
2024-08-03T21:13:46.299408 SECC MAC 54:F8:F0:13:7F:DE
|
||||
2024-08-03T21:13:46.302899 SECC MAC 54:F8:F0:13:7F:DE
|
||||
2024-08-03T21:21:37.357054 SECC MAC 54:F8:F0:13:7F:DE
|
||||
2024-08-03T23:12:03.191374 SECC MAC 00:01:87:05:27:25
|
||||
2024-08-03T23:12:03.194739 SECC MAC 00:01:87:05:27:25
|
||||
2024-08-03T23:36:25.183816 SECC MAC 86:AF:94:C2:68:B4
|
||||
2024-08-03T23:36:25.187195 SECC MAC 86:AF:94:C2:68:B4
|
||||
2024-08-03T23:50:39.607805 SECC MAC 86:AF:94:C2:68:B4
|
||||
2024-08-04T01:39:11.186496 SECC MAC 54:F8:F0:70:25:92
|
||||
2024-08-04T01:39:11.191096 SECC MAC 54:F8:F0:70:25:92
|
||||
2024-08-04T01:42:47.546590 SECC MAC 54:F8:F0:70:25:92
|
||||
2024-08-04T01:45:16.540948 SECC MAC 54:F8:F0:70:25:62
|
||||
2024-08-04T01:45:16.544722 SECC MAC 54:F8:F0:70:25:62
|
||||
2024-08-04T19:43:53.556227 SECC MAC B2:F0:CD:25:67:3C
|
||||
2024-08-04T19:46:27.610413 SECC MAC 42:B6:54:5E:05:97
|
18
RawExiLog.txt
Normal file
18
RawExiLog.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b46001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828568101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828568101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0bc6001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828568101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0bc6001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e000c300a081828568101818000000060a1e806030303e028386c04800
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0bc6001810580480c08360100c143340800
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0a00100a081828568101818000000060a1e806030303e028386c04800
|
585
RawExiLog.txt.decoded.txt
Normal file
585
RawExiLog.txt.decoded.txt
Normal file
|
@ -0,0 +1,585 @@
|
|||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b46001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "45",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "302",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "46",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "302",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "46",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "302",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "46",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828570101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "302",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "46",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828568101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "301",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0b86001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "46",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828568101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "301",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0bc6001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "47",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0004080a001828568101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "1",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "1",
|
||||
"EVSEStatusCode_text": "EVSE_Ready",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "0",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "301",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0bc6001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "47",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e000c300a081828568101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "OK",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "3",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "6",
|
||||
"EVSEStatusCode_text": "EVSE_Malfunction",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "1",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "301",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
||||
01fe800100000023809a0203af96e35a4fb8de50d1401240c0c0bc6001810580480c08360100c143340800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandReq",
|
||||
"info": "35 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"DC_EVStatus.EVReady": "1",
|
||||
"DC_EVStatus.EVErrorCode": "0",
|
||||
"DC_EVErrorCodeText": "NO_ERROR",
|
||||
"DC_EVStatus.EVRESSSOC": "73",
|
||||
"EVTargetCurrent.Multiplier": "0",
|
||||
"EVTargetCurrent.Value": "47",
|
||||
"EVTargetCurrent.Unit": "A",
|
||||
"EVMaximumVoltageLimit_isUsed": "0",
|
||||
"EVMaximumCurrentLimit_isUsed": "0",
|
||||
"EVMaximumPowerLimit_isUsed": "0",
|
||||
"ChargingComplete": "0",
|
||||
"EVTargetVoltage.Multiplier": "0",
|
||||
"EVTargetVoltage.Value": "333",
|
||||
"EVTargetVoltage.Unit": "V",
|
||||
"debug": "Line9057Line9260Line436"
|
||||
}
|
||||
01fe800100000029809a0203af96e35a4fb8de50e0a00100a081828568101818000000060a1e806030303e028386c04800 means:
|
||||
{
|
||||
"msgName": "CurrentDemandRes",
|
||||
"info": "41 bytes to convert",
|
||||
"error": "",
|
||||
"result": "",
|
||||
"schema": "DIN",
|
||||
"g_errn": "0",
|
||||
"header.SessionID": "0ebe5b8d693ee379",
|
||||
"header.Notification_isUsed": "0",
|
||||
"header.Signature_isUsed": "0",
|
||||
"ResponseCode": "FAILED_SequenceError",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus": "0",
|
||||
"DC_EVSEStatus.EVSEIsolationStatus_isUsed": "1",
|
||||
"DC_EVSEStatus.EVSEStatusCode": "2",
|
||||
"EVSEStatusCode_text": "EVSE_Shutdown",
|
||||
"DC_EVSEStatus.NotificationMaxDelay": "10",
|
||||
"DC_EVSEStatus.EVSENotification": "1",
|
||||
"EVSEPresentVoltage.Multiplier": "0",
|
||||
"EVSEPresentVoltage.Value": "301",
|
||||
"EVSEPresentVoltage.Unit": "V",
|
||||
"EVSEPresentCurrent.Multiplier": "0",
|
||||
"EVSEPresentCurrent.Value": "0",
|
||||
"EVSEPresentCurrent.Unit": "A",
|
||||
"EVSECurrentLimitAchieved": "0",
|
||||
"EVSEVoltageLimitAchieved": "0",
|
||||
"EVSEPowerLimitAchieved": "0",
|
||||
"EVSEMaximumVoltageLimit.Multiplier": "0",
|
||||
"EVSEMaximumVoltageLimit.Value": "500",
|
||||
"EVSEMaximumVoltageLimit.Unit": "V",
|
||||
"EVSEMaximumCurrentLimit.Multiplier": "0",
|
||||
"EVSEMaximumCurrentLimit.Value": "62",
|
||||
"EVSEMaximumCurrentLimit.Unit": "A",
|
||||
"EVSEMaximumPowerLimit.Multiplier": "2",
|
||||
"EVSEMaximumPowerLimit.Value": "1240",
|
||||
"EVSEMaximumPowerLimit.Unit": "W",
|
||||
"debug": "Line442"
|
||||
}
|
|
@ -27,6 +27,8 @@ class addressManager():
|
|||
self.pevIp=""
|
||||
self.SeccIp=""
|
||||
self.SeccTcpPort = 15118 # just a default. Will be overwritten during SDP if we are pev.
|
||||
self.evseMacIsUpdated = False
|
||||
self.evseMac = [0, 0, 0, 0, 0, 0]
|
||||
pass
|
||||
|
||||
def findLinkLocalIpv6Address(self):
|
||||
|
@ -122,10 +124,12 @@ class addressManager():
|
|||
if (len(self.localIpv6Addresses)==0):
|
||||
print("[addressManager] Error: No local Ipv6 address was found.")
|
||||
self.localIpv6Address = "localhost"
|
||||
cfg_exitIfNoLocalLinkAddressIsFound = 1
|
||||
cfg_exitIfNoLocalLinkAddressIsFound = getConfigValueBool("exit_if_no_local_link_address_is_found")
|
||||
if (cfg_exitIfNoLocalLinkAddressIsFound!=0):
|
||||
print("Exiting, because it does not make sense to continue without IPv6 address");
|
||||
sys.exit(1);
|
||||
print("Exiting, because it does not make sense to continue without IPv6 address")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Error: It does not make sense to continue without IPv6 address, but exit_if_no_local_link_address_is_found says you want to continue");
|
||||
else:
|
||||
# at least one address was found. Take the first one (this may be the wrong adaptor).
|
||||
self.localIpv6Address = self.localIpv6Addresses[0]
|
||||
|
@ -155,8 +159,16 @@ class addressManager():
|
|||
def setEvseMac(self, evseMac):
|
||||
# During the SLAC, the MAC of the EVSE was found out. Store it, maybe we need it later.
|
||||
self.evseMac = evseMac
|
||||
self.evseMacIsUpdated = True
|
||||
print("[addressManager] evse has MAC " + prettyMac(self.evseMac))
|
||||
|
||||
def getEvseMacAsStringAndClearUpdateFlag(self):
|
||||
self.evseMacIsUpdated = False
|
||||
return prettyMac(self.evseMac)
|
||||
|
||||
def isEvseMacNew(self):
|
||||
return self.evseMacIsUpdated
|
||||
|
||||
def setPevIp(self, pevIp):
|
||||
# During SDP, the IPv6 of the PEV was found out. Store it, maybe we need it later.
|
||||
if (type(pevIp)==type(bytearray([0]))):
|
||||
|
|
|
@ -27,7 +27,7 @@ from helpers import combineValueAndMultiplier
|
|||
import json
|
||||
|
||||
# The path where the script will search for pcap files:
|
||||
directory = 'local/pcaps_to_convert'
|
||||
directory = '../clara-logs'
|
||||
|
||||
# stop the evaluation after this number of packets. Set to zero to have no limit.
|
||||
nLimitNumberOfPackets = -1
|
||||
|
@ -42,11 +42,16 @@ nLimitNumberOfPackets = -1
|
|||
def convertClaralogToTxt(inputFileName):
|
||||
global nLimitNumberOfPackets
|
||||
global directory
|
||||
fileIn = open(inputFileName, 'r')
|
||||
fileOut = open(inputFileName + '.decoded.txt', 'w')
|
||||
outputFileName = inputFileName + '.decoded.txt'
|
||||
# todo: if output file exists
|
||||
if (os.path.isfile(os.path.join(directory, outputFileName))):
|
||||
print("output file " + outputFileName + " already exists. Nothing to do.")
|
||||
return
|
||||
fileIn = open(inputFileName, 'r', encoding="Latin-1")
|
||||
fileOut = open(outputFileName, 'w', encoding="Latin-1")
|
||||
print("# generated by claralogConverter.py", file=fileOut)
|
||||
print("# https://github.com/uhi22/pyPLC", file=fileOut)
|
||||
fileOutValues = open(inputFileName + '.values.txt', 'w')
|
||||
fileOutValues = open(inputFileName + '.values.txt', 'w', encoding="Latin-1")
|
||||
print("# generated by claralogConverter.py", file=fileOutValues)
|
||||
print("# https://github.com/uhi22/pyPLC", file=fileOutValues)
|
||||
fileOutStatistics = open(directory + '/pcap_statistics.txt', 'a')
|
||||
|
@ -60,12 +65,13 @@ def convertClaralogToTxt(inputFileName):
|
|||
numberOfPackets+=1
|
||||
#print(packet)
|
||||
print(line.strip(), file=fileOut)
|
||||
posTcpPayload = line.find(": 01 fe 80 01 00")
|
||||
lineWithoutBlanks = line.replace(" ", "")
|
||||
posTcpPayload = lineWithoutBlanks.find(":01fe800100")
|
||||
if posTcpPayload>0:
|
||||
# we found the V2GTP header.
|
||||
tcppayload = line[posTcpPayload + 2:] # everything until the end of the line is the data
|
||||
# this gives a string of hex values, separated by " ", e.g. "01 fe 80 01"
|
||||
s = tcppayload.replace(" ", "") # remove spaces
|
||||
tcppayload = lineWithoutBlanks[posTcpPayload + 1:] # everything until the end of the line is the data
|
||||
# this gives a string of hex values, separated by " ", e.g. "01fe8001"
|
||||
s = tcppayload
|
||||
if (s[0:8]=="01fe8001"):
|
||||
# it is a V2GTP header with EXI content
|
||||
strExi = s[16:] # remove V2GTP header (8 bytes, means 16 hex characters)
|
||||
|
|
|
@ -15,6 +15,16 @@ To convince the car, that a CCS charger is connected, several preconditions need
|
|||
|
||||
![image](EvseMode_BlockDiagram.jpg)
|
||||
|
||||
![image](foto_MiniEvse1.jpg)
|
||||
![image](foto_MiniEvse2.jpg)
|
||||
![image](foto_MiniEvse3.jpg)
|
||||
![image](foto_MiniEvse4.jpg)
|
||||
![image](foto_MiniEvse5.jpg)
|
||||
![image](foto_MiniEvse6.jpg)
|
||||
|
||||
An example schematic, the bill-of-material and a 3D model for the housing is available [here](../hardware/plc_evse/)
|
||||
|
||||
|
||||
## Software
|
||||
|
||||
### Configuring the HomePlug modem as Charging Station
|
||||
|
|
BIN
doc/foto_MiniEvse1.jpg
Normal file
BIN
doc/foto_MiniEvse1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 MiB |
BIN
doc/foto_MiniEvse2.jpg
Normal file
BIN
doc/foto_MiniEvse2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 MiB |
BIN
doc/foto_MiniEvse3.jpg
Normal file
BIN
doc/foto_MiniEvse3.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 MiB |
BIN
doc/foto_MiniEvse4.jpg
Normal file
BIN
doc/foto_MiniEvse4.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 831 KiB |
BIN
doc/foto_MiniEvse5.jpg
Normal file
BIN
doc/foto_MiniEvse5.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 978 KiB |
BIN
doc/foto_MiniEvse6.jpg
Normal file
BIN
doc/foto_MiniEvse6.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1 MiB |
|
@ -36,7 +36,7 @@ The open-plc-utils report the version MAC-QCA7500-2.8.0.30-01-20190707-CS.
|
|||
Contra:
|
||||
- Even with the modified configuration for pev (according to https://openinverter.org/forum/viewtopic.php?p=55120#p55120), the QCA7500 does not send SLAC parameter requests. This means: Cannot be used as pev.
|
||||
|
||||
### TPlink TL-PA4010P
|
||||
### TPlink TL-PA4010P v5.0
|
||||
This adaptor was suggested by https://openinverter.org/forum/viewtopic.php?p=37085#p37085 and there,
|
||||
successfully used to establish a communication to the CCS charger.
|
||||
|
||||
|
@ -67,6 +67,12 @@ How to modify:
|
|||
- connect cables to supply the device. Works with 12V, also works with 5V from an USB power bank.
|
||||
- connect cables and circuit (1nF and 150ohms in series) for connecting to the pilot line.
|
||||
|
||||
#### TPlink TL-PA4010P v2.3
|
||||
![image](https://github.com/user-attachments/assets/c98d100c-f7fc-4e41-a183-1b5eeebd43fa)
|
||||
![image](https://github.com/user-attachments/assets/6fef8096-4373-42d9-9688-7d284f587940)
|
||||
|
||||
Confirmed to be working as EVSE (needs patching via open-plc-utils) and supplied with 5V.
|
||||
|
||||
## Controller for the PEV
|
||||
|
||||
Besides the homeplug modem, there are additional parts necessary for a vehicle to perform CCS charging. Two of these are: 1. The inlet voltage measurement. 2. The control of CP state and relays.
|
||||
|
|
|
@ -241,3 +241,23 @@ https://strobelstefan.org/2019/10/16/zugriff-via-ssh-ohne-passworteingabe-anmeld
|
|||
- in connection->SSH->Auth, browse to the private key generated above.
|
||||
- in session, give a name for the session, and click "safe" to store the connection settings
|
||||
- next time, the connection to the pi works just by clicking the saved session.
|
||||
|
||||
## Optional: MAC logging with GPS coordinates
|
||||
|
||||
0. connect GPS module to the raspberry. This needs only 3 wires: 3V3, GND, RXD. The TXD of the module needs to be connected to the RXD of the raspberry. https://tutorials-raspberrypi.de/raspberry-pi-gps-ortung-navigation/
|
||||
1. `sudo apt-get install minicom gpsd gpsd-clients`
|
||||
2. in the raspberry pi config, enable the serial port and disable the serial console
|
||||
3. reboot
|
||||
4. `ls -ltr /dev/ser* # should show all serial devices`
|
||||
5. `cat /dev/serial0` Get the the raw NMEA data from the serial line and shows it. Processing of them works also without the daemon.
|
||||
6. configure the gsd: `nano /etc/default/gpsd`
|
||||
|
||||
```
|
||||
USBAUTO=“false“
|
||||
DEVICES=“/dev/serial0″
|
||||
GPSD_OPTIONS=“-n“
|
||||
```
|
||||
|
||||
start the GPS daemon: `sudo service gpsd start`
|
||||
|
||||
Now this works: `cgps -s`
|
||||
|
|
77
doc/plcSignalAmplitude.md
Normal file
77
doc/plcSignalAmplitude.md
Normal file
|
@ -0,0 +1,77 @@
|
|||
# PLC signal amplitudes
|
||||
|
||||
To have comparable results, we measure the peak-to-peak voltage of the preamble of the homeplug packet.
|
||||
|
||||
1. Homeplug modem with AR7420, supplied by 5V
|
||||
10Vpp at the transformer
|
||||
|
||||
2. Homeplug modem with AR7420, supplied by 5V, with 150ohm series resistor between transformer and CP.
|
||||
Foccci v3 (including transformer with RIK10, 2x5 turns) connected via 1m twisted pair.
|
||||
3Vpp at the CP line
|
||||
|
||||
3. Like 2, but in the homeplug modem two additional series resistors 680ohms in the transmit path, between
|
||||
the power amplifier and the transformer.
|
||||
|
||||
- EVSE packet: 250mVpp at the CP line
|
||||
- Foccci packet: 500mVpp at the CP line
|
||||
|
||||
4. Like 3, but in the homeplug modem the two 680ohm in serial and a 10ohm in parallel to the transformer.
|
||||
|
||||
- Foccci packet: 500mVpp at the CP line (no change, normal)
|
||||
- EVSE packet: hardly measurable, in the 20mVpp range.
|
||||
- Communication still works perfect.
|
||||
|
||||
5. Compleo 20kW triple charger
|
||||
|
||||
Sends very loud packets, even if no vehicle is connected.
|
||||
17Vpp
|
||||
|
||||
6. ISO 15118-3
|
||||
|
||||
On both, EVSE side and EV side of the charging cable, the typical voltage is
|
||||
1.3Vpp.
|
||||
This is specified as "power spectral density" of typical -75dBm/Hz at 1.8MHz to 30MHz, receiver band width 9kHz with 50 ohms.
|
||||
|
||||
Example states the following levels:
|
||||
- Transceiver output: -72dBm/Hz
|
||||
- CP on EVSE: -76dBm/Hz
|
||||
- CP on PEV: -78dBm/Hz
|
||||
- Transceiver modem input: -81dBm/Hz
|
||||
This would be 9dB between transmitter output and receiver input.
|
||||
|
||||
7. Output of the QCA7005
|
||||
|
||||
4Vpp. Each output (TX+ and TX-) sit at ~1.6V statically, and move 1V up and 1V down. So the differential voltage
|
||||
reaches from -2V to +2V, which is 4Vpp.
|
||||
|
||||
8. Foccci 5.1 transmit level
|
||||
|
||||
with 120ohm termination
|
||||
|
||||
270mVpp
|
||||
|
||||
9. Foccci 5.1 receive limit test
|
||||
|
||||
- Foccci sees the EVSE, starting to become instable, if 400mVpp -36dB. This is 400mVpp / 64 = 6mVpp.
|
||||
- Foccci sees single messages, if 400mVpp -42dB. This is 3mV.
|
||||
- Foccci does not see the EVSE (modem goes to sleep) if 400mVpp -44dB. This is 400mVpp/158 = 2.5mVpp.
|
||||
|
||||
10. Foccci 5.1 transformerless patch, R25=100ohms, receive limit
|
||||
|
||||
- 400mV -32dB stable connection.
|
||||
- 400mV -38dB still works, starting to become instable.
|
||||
- 400mV -44dB sometimes modem sleep, sometimes not.
|
||||
- 400mV -50dB modem sleep.
|
||||
|
||||
11. Foccci 5.1 transformerless patch, R25=100ohms, transmit level
|
||||
|
||||
210mVpp
|
||||
|
||||
|
||||
# Attenuation calculator
|
||||
|
||||
https://www.digikey.de/de/resources/conversion-calculators/conversion-calculator-attenuator
|
||||
|
||||
* -6dB is half voltage
|
||||
* -12dB is quater voltage
|
||||
* -20dB is tenth voltage
|
|
@ -112,6 +112,16 @@ charge_target_voltage = 270
|
|||
# Deeper explanations here: https://github.com/uhi22/pyPLC/blob/master/doc/installation_on_raspberry.md#further-optimizations
|
||||
exit_on_session_end = False
|
||||
|
||||
# If pyPLC does not find a local link address, this means there is no
|
||||
# ethernet connection to the homeplug modem. This is a severe hardware
|
||||
# error, so pyPLC will terminate. However, for special testing purposes this can
|
||||
# be set to False. In this case, pyPLC will continue to run, even if there is no modem connected.
|
||||
exit_if_no_local_link_address_is_found = True
|
||||
|
||||
# pyPLC in PevMode or ListenMode can detect the MAC address of the charger (SECC MAC) and
|
||||
# write it, together with the time stamp, into the file MacLog.txt
|
||||
log_the_evse_mac_to_file = True
|
||||
|
||||
# Run test cases.
|
||||
# Explanation in doc/testing_and_simulation.md
|
||||
# Possible values:
|
||||
|
@ -135,8 +145,9 @@ udp_syslog_enable = Yes
|
|||
# Limitations/explanations here: https://openinverter.org/forum/viewtopic.php?p=57894#p57894 and
|
||||
# https://openinverter.org/forum/viewtopic.php?t=1063 (Is it possible to make a CCS to CHAdeMO adapter?)
|
||||
# none: all other use cases
|
||||
charge_parameter_backend = chademo
|
||||
#charge_parameter_backend = chademo
|
||||
#charge_parameter_backend = mqtt
|
||||
charge_parameter_backend = none
|
||||
|
||||
# REST callback for SoC states. Comment out to disable. Do not leave a trailing slash
|
||||
# This parameter is used in EvseMode, to configure where the data which is retrieved
|
||||
|
@ -146,3 +157,6 @@ soc_callback_enabled = False
|
|||
soc_callback_endpoint = http://1.1.1.1
|
||||
# Fallback value to use if the vehicle does not support the EVEnergyCapacity.Value
|
||||
soc_fallback_energy_capacity = 2700
|
||||
|
||||
# The URL where to send some logging data.
|
||||
logging_url = http://enteryourhosthere.org/pyPlcLogging/addLog.php
|
||||
|
|
|
@ -298,13 +298,24 @@ def testReadExiFromExiLogFile(strLogFileName):
|
|||
strDecoderSelection = "D" # it is a DIN message
|
||||
if (strToDecode[1:3]=="H ") or (strToDecode[1:3]=="h "):
|
||||
strDecoderSelection = "H" # it is a ProtocolHandshake message
|
||||
|
||||
if (strDecoderSelection==""): # no decoder prefix contained in the file. Assume DIN.
|
||||
strDecoderSelection = "D"
|
||||
if (len(strDecoderSelection)>0): # if we have selected a valid decoder
|
||||
posOfSpace=2
|
||||
s = strToDecode[posOfSpace+1:] # The part after the " " contains the EXI hex data.
|
||||
posOfSpace=strToDecode.find(" ")
|
||||
if (posOfSpace>0):
|
||||
posStartOfData = posOfSpace+1 # we have a space in the line, the exi data starts after the space
|
||||
else:
|
||||
print(strToDecode[0:4])
|
||||
if (strToDecode[0:4]=="01fe"):
|
||||
print("seems we have a v2gtp header")
|
||||
posStartOfData = 16 # we have a v2gtp header, so the exi data starts after 16 characters
|
||||
else:
|
||||
print("seems we have raw exi data")
|
||||
posStartOfData = 1 # assume raw exi at the start of the line
|
||||
s = strToDecode[posStartOfData:] # The part after the " " contains the EXI hex data.
|
||||
s = s.replace(" ", "") # Remove blanks
|
||||
s = s.replace("\n", "") # Remove line feeds
|
||||
#print(s)
|
||||
print(s)
|
||||
decoded=exiDecode(s, "D"+strDecoderSelection)
|
||||
print(myLine.replace("\n", "") + " means:")
|
||||
print(decoded)
|
||||
|
@ -338,10 +349,20 @@ if __name__ == "__main__":
|
|||
if (False):
|
||||
testTimeConsumption()
|
||||
exit()
|
||||
if (True):
|
||||
if (False):
|
||||
testReadExiFromExiLogFile('DemoExiLog.txt')
|
||||
testReadExiFromExiLogFile('PevExiLog.txt')
|
||||
exit()
|
||||
if (True):
|
||||
testReadExiFromExiLogFile('RawExiLog.txt')
|
||||
exit()
|
||||
if (True):
|
||||
print("ChargeParameterDiscovery of the BMW iX, https://github.com/uhi22/pyPLC/issues/14#issuecomment-1895437190")
|
||||
print("From Everest logs (successful)")
|
||||
testDecoder("809a0211c1ff77aed4fdff907190000009204061104e04070a8c30102050961f12805000", pre="DD", comment="")
|
||||
testDecoder("809a0211c1ff77aed4fdff90800000040020000405182824138550008000018180c80c1c", pre="DD", comment="")
|
||||
print("From pyPLC (failed)")
|
||||
testDecoder("809A02004080C1014181C21080004800400000C0C320040C0E014060A184060606002060A190020303005030300510", pre="DD", comment="")
|
||||
|
||||
if (False):
|
||||
testDecoder("8000ebab9371d34b9b79d189a98989c1d191d191818981d26b9b3a232b30010000040001b75726e3a64696e3a37303132313a323031323a4d73674465660020000100880", pre="DH", comment="supportedAppProtocolReq")
|
||||
|
|
119
fsmEvse.py
119
fsmEvse.py
|
@ -44,6 +44,16 @@ class fsmEvse():
|
|||
# The timeout handling function.
|
||||
return (self.cyclesInState > 100) # 100*33ms=3.3s
|
||||
|
||||
def showDecodedTransmitMessage(self, msg):
|
||||
# decodes the transmit message to show it in the trace.
|
||||
# This is inefficient, because it calls the exi decoder via the slow
|
||||
# command line interface, while DEcoding for the transmit data is
|
||||
# technically not necessary. Only for logging. In case this
|
||||
# introduces timing problems, just remove the three lines below.
|
||||
exidataTx = removeV2GTPHeader(msg)
|
||||
strConverterResultTx = exiDecode(exidataTx, "D"+self.schemaSelection)
|
||||
self.addToTrace(strConverterResultTx)
|
||||
|
||||
|
||||
def stateFunctionWaitForSupportedApplicationProtocolRequest(self):
|
||||
if (len(self.rxData)>0):
|
||||
|
@ -54,6 +64,7 @@ class fsmEvse():
|
|||
self.addToTrace(strConverterResult)
|
||||
if (strConverterResult.find("supportedAppProtocolReq")>0):
|
||||
nDinSchemaID = 255 # invalid default value
|
||||
nIso1SchemaID = 255
|
||||
try:
|
||||
jsondict = json.loads(strConverterResult)
|
||||
nAppProtocol_ArrayLen = int(jsondict["AppProtocol_arrayLen"])
|
||||
|
@ -64,8 +75,16 @@ class fsmEvse():
|
|||
self.addToTrace("The NameSpace " + strNameSpace + " has SchemaID " + str(nSchemaId))
|
||||
if (strNameSpace.find(":din:70121:")>0):
|
||||
nDinSchemaID = nSchemaId
|
||||
if (strNameSpace.find(":iso:15118:2:2013")>0):
|
||||
nIso1SchemaID = nSchemaId
|
||||
except:
|
||||
self.addToTrace("ERROR: Could not decode the supportedAppProtocolReq")
|
||||
# Strategy for schema selection: pyPLC preferes DIN. If the car does not announce DIN,
|
||||
# then pyPLC looks for ISO1. If this is also not announced by the car, pyPLC will not
|
||||
# send a handshake response.
|
||||
# This means: pyPLC does NOT care for the priority sent by the car. It uses the own
|
||||
# priority "DIN over ISO1". Reason: DIN is proven-in-use, the ISO implementation still
|
||||
# work-in-progress.
|
||||
if (nDinSchemaID<255):
|
||||
self.addToTrace("Detected DIN")
|
||||
# TESTSUITE: When the EVSE received the Handshake, it selects a new test case.
|
||||
|
@ -75,9 +94,22 @@ class fsmEvse():
|
|||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.Tcp.transmit(msg)
|
||||
self.publishStatus("Schema negotiated")
|
||||
self.schemaSelection = "D" # D for DIN
|
||||
self.enterState(stateWaitForSessionSetupRequest)
|
||||
else:
|
||||
self.addToTrace("Error: The connected car does not support DIN. At the moment, the pyPLC only supports DIN.")
|
||||
if (nIso1SchemaID<255):
|
||||
self.addToTrace("Detected ISO1 (aka ISO 2013)")
|
||||
# TESTSUITE: When the EVSE received the Handshake, it selects a new test case.
|
||||
testsuite_choose_testcase()
|
||||
# Eh for encode handshake, SupportedApplicationProtocolResponse, with SchemaID as parameter
|
||||
msg = addV2GTPHeader(exiEncode("Eh__"+str(nIso1SchemaID)))
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.Tcp.transmit(msg)
|
||||
self.publishStatus("Schema negotiated")
|
||||
self.schemaSelection = "1" # 1 for ISO1
|
||||
self.enterState(stateWaitForSessionSetupRequest)
|
||||
else:
|
||||
self.addToTrace("Error: The connected car does not support DIN or ISO1. At the moment, the pyPLC only supports DIN and ISO1.")
|
||||
|
||||
def stateFunctionWaitForSessionSetupRequest(self):
|
||||
if (len(self.rxData)>0):
|
||||
|
@ -85,16 +117,15 @@ class fsmEvse():
|
|||
self.addToTrace("In state WaitForSessionSetupRequest, received " + prettyHexMessage(self.rxData))
|
||||
exidata = removeV2GTPHeader(self.rxData)
|
||||
self.rxData = []
|
||||
strConverterResult = exiDecode(exidata, "DD")
|
||||
strConverterResult = exiDecode(exidata, "D"+self.schemaSelection) # decodes DIN or ISO1
|
||||
self.addToTrace(strConverterResult)
|
||||
if (strConverterResult.find("SessionSetupReq")>0):
|
||||
# todo: check the request content, and fill response parameters
|
||||
msg = addV2GTPHeader(exiEncode("EDa")) # EDa for Encode, Din, SessionSetupResponse
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"a")) # EDa for Encode, Din, SessionSetupResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_SequenceError_for_SessionSetup)):
|
||||
# send a SessionSetupResponse with Responsecode SequenceError
|
||||
msg = addV2GTPHeader("809a0232417b661514a4cb91e0A02d0691559529548c0841e0fc1af4507460c0")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.Tcp.transmit(msg)
|
||||
self.publishStatus("Session established")
|
||||
self.enterState(stateWaitForServiceDiscoveryRequest)
|
||||
|
@ -109,15 +140,16 @@ class fsmEvse():
|
|||
self.addToTrace("In state WaitForServiceDiscoveryRequest, received " + prettyHexMessage(self.rxData))
|
||||
exidata = removeV2GTPHeader(self.rxData)
|
||||
self.rxData = []
|
||||
strConverterResult = exiDecode(exidata, "DD")
|
||||
strConverterResult = exiDecode(exidata, "D"+self.schemaSelection) # decodes DIN or ISO1
|
||||
self.addToTrace(strConverterResult)
|
||||
if (strConverterResult.find("ServiceDiscoveryReq")>0):
|
||||
# todo: check the request content, and fill response parameters
|
||||
msg = addV2GTPHeader(exiEncode("EDb")) # EDb for Encode, Din, ServiceDiscoveryResponse
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"b")) # EDb for Encode, Din, ServiceDiscoveryResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_SequenceError_for_ServiceDiscoveryRes)):
|
||||
# send a ServiceDiscoveryRes with Responsecode SequenceError
|
||||
msg = addV2GTPHeader("809a021a3b7c417774813311a0A120024100c4")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.Tcp.transmit(msg)
|
||||
self.publishStatus("Services discovered")
|
||||
self.enterState(stateWaitForServicePaymentSelectionRequest)
|
||||
|
@ -129,15 +161,19 @@ class fsmEvse():
|
|||
self.addToTrace("In state WaitForServicePaymentSelectionRequest, received " + prettyHexMessage(self.rxData))
|
||||
exidata = removeV2GTPHeader(self.rxData)
|
||||
self.rxData = []
|
||||
strConverterResult = exiDecode(exidata, "DD")
|
||||
strConverterResult = exiDecode(exidata, "D"+self.schemaSelection) # decodes DIN or ISO1
|
||||
self.addToTrace(strConverterResult)
|
||||
if (strConverterResult.find("ServicePaymentSelectionReq")>0):
|
||||
# todo: check the request content, and fill response parameters
|
||||
msg = addV2GTPHeader(exiEncode("EDc")) # EDc for Encode, Din, ServicePaymentSelectionResponse
|
||||
if (self.schemaSelection=="D"):
|
||||
strMessageName = "ServicePaymentSelectionReq" # This is the original name in DIN
|
||||
else:
|
||||
strMessageName = "PaymentServiceSelectionReq" # In ISO1, they use a slightly different name for the same thing.
|
||||
if (strConverterResult.find(strMessageName)>0):
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"c")) # EDc for Encode, Din, ServicePaymentSelectionResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_SequenceError_for_ServicePaymentSelectionRes)):
|
||||
# send a ServicePaymentSelectionRes with Responsecode SequenceError
|
||||
msg = addV2GTPHeader("809a021a3b7c417774813311c0A0")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.Tcp.transmit(msg)
|
||||
self.publishStatus("ServicePayment selected")
|
||||
self.enterState(stateWaitForFlexibleRequest) # todo: not clear, what is specified. The Ioniq sends PowerDeliveryReq as next.
|
||||
|
@ -149,7 +185,7 @@ class fsmEvse():
|
|||
self.addToTrace("In state WaitForFlexibleRequest, received " + prettyHexMessage(self.rxData))
|
||||
exidata = removeV2GTPHeader(self.rxData)
|
||||
self.rxData = []
|
||||
strConverterResult = exiDecode(exidata, "DD")
|
||||
strConverterResult = exiDecode(exidata, "D"+self.schemaSelection) # decodes DIN or ISO1
|
||||
self.addToTrace(strConverterResult)
|
||||
if (strConverterResult.find("PowerDeliveryReq")>0):
|
||||
# todo: check the request content, and fill response parameters
|
||||
|
@ -157,11 +193,12 @@ class fsmEvse():
|
|||
jsondict = json.loads(strConverterResult)
|
||||
current_soc = int(jsondict.get("EVRESSSOC", -1))
|
||||
self.publishSoCs(current_soc, origin="PowerDeliveryReq")
|
||||
msg = addV2GTPHeader(exiEncode("EDh")) # EDh for Encode, Din, PowerDeliveryResponse
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"h")) # EDh for Encode, Din, PowerDeliveryResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_Failed_for_PowerDeliveryRes)):
|
||||
# send a PowerDeliveryResponse with Responsecode Failed
|
||||
msg = addV2GTPHeader("809a0125e6cecc51408420400000")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("PowerDelivery")
|
||||
self.Tcp.transmit(msg)
|
||||
self.enterState(stateWaitForFlexibleRequest) # todo: not clear, what is specified in DIN
|
||||
|
@ -175,11 +212,12 @@ class fsmEvse():
|
|||
self.publishSoCs(current_soc, full_soc, energy_capacity, energy_request, origin="ChargeParameterDiscoveryReq")
|
||||
|
||||
# todo: check the request content, and fill response parameters
|
||||
msg = addV2GTPHeader(exiEncode("EDe")) # EDe for Encode, Din, ChargeParameterDiscoveryResponse
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"e")) # EDe for Encode, Din, ChargeParameterDiscoveryResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_ServiceSelectionInvalid_for_ChargeParameterDiscovery)):
|
||||
# send a ChargeParameterDiscoveryResponse with Responsecode ServiceSelectionInvalid
|
||||
msg = addV2GTPHeader("809a0125e6cecd50810001ec00201004051828758405500080000101844138101c2432c04081436c900c0c000041435ecc044606000200")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("ChargeParamDiscovery")
|
||||
self.Tcp.transmit(msg)
|
||||
self.nCableCheckLoops = 0 # start with a fresh full cable check
|
||||
|
@ -191,16 +229,17 @@ class fsmEvse():
|
|||
jsondict = json.loads(strConverterResult)
|
||||
current_soc = int(jsondict.get("DC_EVStatus.EVRESSSOC", -1))
|
||||
self.publishSoCs(current_soc, -1, -1, origin="CableCheckReq")
|
||||
if (self.nCableCheckLoops<10):
|
||||
if (self.nCableCheckLoops<5):
|
||||
self.nCableCheckLoops+=1
|
||||
strCableCheckOngoing = "1"
|
||||
else:
|
||||
strCableCheckOngoing = "0" # Now the cable check is finished.
|
||||
msg = addV2GTPHeader(exiEncode("EDf_"+strCableCheckOngoing)) # EDf for Encode, Din, CableCheckResponse
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"f_"+strCableCheckOngoing)) # EDf for Encode, Din, CableCheckResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_Failed_for_CableCheckRes)):
|
||||
# send a CableCheckResponse with Responsecode Failed
|
||||
msg = addV2GTPHeader("809a0125e6cecc5020804080000400")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("CableCheck")
|
||||
if (not testsuite_faultinjection_is_triggered(TC_EVSE_Timeout_during_CableCheck)):
|
||||
self.Tcp.transmit(msg)
|
||||
|
@ -226,11 +265,14 @@ class fsmEvse():
|
|||
self.simulatedPresentVoltage += 5
|
||||
|
||||
if getConfigValueBool('evse_simulate_precharge'):
|
||||
strPresentVoltage = str(self.simulatedPresentVoltage) # "345"
|
||||
strPresentVoltage = str(int(self.simulatedPresentVoltage*10)/10) # "345"
|
||||
else:
|
||||
strPresentVoltage = str(self.hardwareInterface.getInletVoltage())
|
||||
|
||||
# in case we control a real power supply: give the precharge target to it
|
||||
self.hardwareInterface.setPowerSupplyVoltageAndCurrent(uTarget, 1)
|
||||
self.callbackShowStatus(strPresentVoltage, "EVSEPresentVoltage")
|
||||
msg = addV2GTPHeader(exiEncode("EDg_"+strPresentVoltage)) # EDg for Encode, Din, PreChargeResponse
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"g_"+strPresentVoltage)) # EDg for Encode, Din, PreChargeResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_Shutdown_during_PreCharge)):
|
||||
# send a PreChargeResponse with StatusCode EVSE_Shutdown, to simulate a user-triggered session stop
|
||||
msg = addV2GTPHeader("809a02180189551e24fc9e9160004100008182800000")
|
||||
|
@ -238,23 +280,46 @@ class fsmEvse():
|
|||
# send a PreChargeResponse with ResponseCode Failed
|
||||
msg = addV2GTPHeader("809a0125e6cecc516080408000008284de880800")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("PreCharging " + strPresentVoltage)
|
||||
if (not testsuite_faultinjection_is_triggered(TC_EVSE_Timeout_during_PreCharge)):
|
||||
self.Tcp.transmit(msg)
|
||||
self.enterState(stateWaitForFlexibleRequest) # todo: not clear, what is specified in DIN
|
||||
if (strConverterResult.find("ContractAuthenticationReq")>0):
|
||||
# todo: check the request content, and fill response parameters
|
||||
msg = addV2GTPHeader(exiEncode("EDl")) # EDl for Encode, Din, ContractAuthenticationResponse
|
||||
# Ask the hardwareInterface, whether the user already presented a valid RFID or similar
|
||||
if (self.hardwareInterface.isUserAuthenticated()):
|
||||
strAuthFinished = "1"
|
||||
self.addToTrace("Contract is fine")
|
||||
else:
|
||||
strAuthFinished = "0"
|
||||
self.addToTrace("Contract is not (yet) fine")
|
||||
msg = addV2GTPHeader(exiEncode("EDl_" + strAuthFinished)) # EDl for Encode, Din, ContractAuthenticationResponse
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_SequenceError_for_ContractAuthenticationRes)):
|
||||
# send a ContractAuthenticationResponse with Responsecode SequenceError
|
||||
msg = addV2GTPHeader("809a021a3b7c417774813310c0A200")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("ContractAuthentication")
|
||||
self.Tcp.transmit(msg)
|
||||
self.enterState(stateWaitForFlexibleRequest) # todo: not clear, what is specified in DIN
|
||||
if (strConverterResult.find("AuthorizationReq")>0):
|
||||
# Ask the hardwareInterface, whether the user already presented a valid RFID or similar
|
||||
if (self.hardwareInterface.isUserAuthenticated()):
|
||||
strAuthFinished = "1"
|
||||
self.addToTrace("User is Authorized")
|
||||
else:
|
||||
strAuthFinished = "0"
|
||||
self.addToTrace("User is not (yet) authorized")
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"l_" + strAuthFinished)) # E1l for Encode, Iso1, AuthorizationResponse
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("Authorization")
|
||||
self.Tcp.transmit(msg)
|
||||
self.enterState(stateWaitForFlexibleRequest)
|
||||
if (strConverterResult.find("CurrentDemandReq")>0):
|
||||
# check the request content, and fill response parameters
|
||||
uTarget = 220 # default in case we cannot decode the requested voltage
|
||||
iTarget = 1 # default...
|
||||
try:
|
||||
jsondict = json.loads(strConverterResult)
|
||||
strEVTargetVoltageValue = jsondict["EVTargetVoltage.Value"]
|
||||
|
@ -264,7 +329,7 @@ class fsmEvse():
|
|||
strEVTargetCurrentMultiplier = jsondict["EVTargetCurrent.Multiplier"]
|
||||
iTarget = combineValueAndMultiplier(strEVTargetCurrentValue, strEVTargetCurrentMultiplier)
|
||||
self.addToTrace("EV wants EVTargetVoltage " + str(uTarget) + " and EVTargetCurrent " + str(iTarget))
|
||||
self.hardwareInterface.setPevRequest(uTarget, iTarget)
|
||||
self.hardwareInterface.setPowerSupplyVoltageAndCurrent(uTarget, iTarget)
|
||||
current_soc = int(jsondict.get("DC_EVStatus.EVRESSSOC", -1))
|
||||
full_soc = int(jsondict.get("FullSOC", -1))
|
||||
energy_capacity = int(jsondict.get("EVEnergyCapacity.Value", -1))
|
||||
|
@ -273,6 +338,7 @@ class fsmEvse():
|
|||
self.publishSoCs(current_soc, full_soc, energy_capacity, energy_request, origin="CurrentDemandReq")
|
||||
|
||||
self.callbackShowStatus(str(current_soc), "soc")
|
||||
self.callbackShowStatus(str(uTarget) + "V, " + str(iTarget) + "A", "UandI")
|
||||
|
||||
except:
|
||||
self.addToTrace("ERROR: Could not decode the CurrentDemandReq")
|
||||
|
@ -287,7 +353,7 @@ class fsmEvse():
|
|||
else:
|
||||
# The normal case. No stop requested from user. Just send EVSE_Ready.
|
||||
strEVSEStatus = "1" # 1=EVSE_Ready
|
||||
msg = addV2GTPHeader(exiEncode("EDi_"+strPresentVoltage + "_" + strEVSEPresentCurrent + "_" + strEVSEStatus)) # EDi for Encode, Din, CurrentDemandRes
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"i_"+strPresentVoltage + "_" + strEVSEPresentCurrent + "_" + strEVSEStatus)) # EDi for Encode, Din, CurrentDemandRes
|
||||
if (testsuite_faultinjection_is_triggered(TC_EVSE_Malfunction_during_CurrentDemand)):
|
||||
# send a CurrentDemandResponse with StatusCode EVSE_Malfunction, to simulate e.g. a voltage overshoot
|
||||
msg = addV2GTPHeader("809a02203fa9e71c31bc920100821b430b933b4b7339032b93937b908e08043000081828440201818000040060a11c06030306402038441380")
|
||||
|
@ -298,6 +364,7 @@ class fsmEvse():
|
|||
# send a CurrentDemandResponse with ResponseCode Failed
|
||||
msg = addV2GTPHeader("809a0125e6cecc50e0804080000082867dc8081818000000040a1b64802030882702038486580800")
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.publishStatus("CurrentDemand")
|
||||
if (not testsuite_faultinjection_is_triggered(TC_EVSE_Timeout_during_CurrentDemand)):
|
||||
self.Tcp.transmit(msg)
|
||||
|
@ -306,16 +373,18 @@ class fsmEvse():
|
|||
# todo: check the request content, and fill response parameters
|
||||
# simulate the decreasing voltage during the weldingDetection:
|
||||
self.simulatedPresentVoltage = self.simulatedPresentVoltage*0.8 + 3*random()
|
||||
strPresentVoltage = str(self.simulatedPresentVoltage)
|
||||
strPresentVoltage = str(int(self.simulatedPresentVoltage*10)/10) # "345"
|
||||
self.callbackShowStatus(strPresentVoltage, "EVSEPresentVoltage")
|
||||
msg = addV2GTPHeader(exiEncode("EDj_"+strPresentVoltage)) # EDj for Encode, Din, WeldingDetectionRes
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"j_"+strPresentVoltage)) # EDj for Encode, Din, WeldingDetectionRes
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.publishStatus("WeldingDetection")
|
||||
self.Tcp.transmit(msg)
|
||||
self.enterState(stateWaitForFlexibleRequest) # todo: not clear, what is specified in DIN
|
||||
if (strConverterResult.find("SessionStopReq")>0):
|
||||
# todo: check the request content, and fill response parameters
|
||||
msg = addV2GTPHeader(exiEncode("EDk")) # EDk for Encode, Din, SessionStopRes
|
||||
msg = addV2GTPHeader(exiEncode("E"+self.schemaSelection+"k")) # EDk for Encode, Din, SessionStopRes
|
||||
self.showDecodedTransmitMessage(msg)
|
||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||
self.publishStatus("SessionStop")
|
||||
self.Tcp.transmit(msg)
|
||||
|
|
BIN
hardware/plc_evse/mini-evse-housing.FCStd
Normal file
BIN
hardware/plc_evse/mini-evse-housing.FCStd
Normal file
Binary file not shown.
14154
hardware/plc_evse/mini-evse-housing.step
Normal file
14154
hardware/plc_evse/mini-evse-housing.step
Normal file
File diff suppressed because it is too large
Load diff
2
hardware/plc_evse/plc_evse.kicad_pcb
Normal file
2
hardware/plc_evse/plc_evse.kicad_pcb
Normal file
|
@ -0,0 +1,2 @@
|
|||
(kicad_pcb (version 20240108) (generator "pcbnew") (generator_version "8.0")
|
||||
)
|
83
hardware/plc_evse/plc_evse.kicad_prl
Normal file
83
hardware/plc_evse/plc_evse.kicad_prl
Normal file
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40
|
||||
],
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "plc_evse.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
392
hardware/plc_evse/plc_evse.kicad_pro
Normal file
392
hardware/plc_evse/plc_evse.kicad_pro
Normal file
|
@ -0,0 +1,392 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"rules": {},
|
||||
"track_widths": [],
|
||||
"via_dimensions": []
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "plc_evse.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 3
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "Grouped By Value",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.375,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 25.0,
|
||||
"text_offset_ratio": 0.15
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"082b1eab-b65d-4897-81d0-9208bf27ab55",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
6948
hardware/plc_evse/plc_evse.kicad_sch
Normal file
6948
hardware/plc_evse/plc_evse.kicad_sch
Normal file
File diff suppressed because it is too large
Load diff
BIN
hardware/plc_evse/plc_evse_schematic_v1.pdf
Normal file
BIN
hardware/plc_evse/plc_evse_schematic_v1.pdf
Normal file
Binary file not shown.
25
hardware/plc_evse/readme.md
Normal file
25
hardware/plc_evse/readme.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
# PLC EVSE
|
||||
|
||||
For use together with pyPLC.
|
||||
|
||||
This is a KiCad 8 project. Only the schematic, no board.
|
||||
|
||||
### BOM
|
||||
|
||||
* C1, C2, C3: elcap, 100µF, 25V
|
||||
* C20: ceramic, 1nF (something between 1nF and 2.2nF is fine)
|
||||
* U1: op-amp LF355
|
||||
* U2, U3: isolated DCDC converter, 5V to 12V, 1W, e.g. B0512S-1WR3
|
||||
* R1: 1k
|
||||
* R2: 270ohm
|
||||
* R5: 56k
|
||||
* R6: 100k
|
||||
* R7: 220k
|
||||
* R8, R9: 120k (does not really matter, also 100k would be fine)
|
||||
* R20: 180ohm (does not really matter. Something between 100ohm and 330ohm.)
|
||||
* D1, D2: LEDs WS2812B. Also one would be sufficient.
|
||||
* RV1: potentiometer e.g. 10k linear (also 1k or 22k would be fine)
|
||||
* A1: Arduino Nano
|
||||
* Prototyping board 100mm x 106mm
|
||||
* Housing 3D printed, FreeCad mini-evse-housing.FCStd, or step: mini-evse-housing.step
|
||||
* For power supply: USB A cable, cutted and soldered to the board.
|
|
@ -168,12 +168,6 @@ class hardwareInterface():
|
|||
# return self.lock_confirmed
|
||||
return 1 # todo: use the real connector lock feedback
|
||||
|
||||
def setPevRequest(self, voltage, current):
|
||||
#here we can publish the voltage and current requests received from the PEV side
|
||||
if getConfigValue("charge_parameter_backend") == "mqtt":
|
||||
self.mqttclient.publish(getConfigValue("mqtt_topic") + "/pev_voltage", str(voltage))
|
||||
self.mqttclient.publish(getConfigValue("mqtt_topic") + "/pev_current", str(current))
|
||||
|
||||
def setChargerParameters(self, maxVoltage, maxCurrent):
|
||||
self.addToTrace("Setting charger parameters maxVoltage=%d V, maxCurrent=%d A" % (maxVoltage, maxCurrent))
|
||||
self.maxChargerVoltage = int(maxVoltage)
|
||||
|
@ -186,10 +180,19 @@ class hardwareInterface():
|
|||
self.addToTrace("Setting charger present values Voltage=%d V, Current=%d A" % (voltageNow, currentNow))
|
||||
self.chargerVoltage = int(voltageNow)
|
||||
self.chargerCurrent = int(currentNow)
|
||||
|
||||
if getConfigValue("charge_parameter_backend") == "mqtt":
|
||||
self.mqttclient.publish(getConfigValue("mqtt_topic") + "/charger_voltage", voltageNow)
|
||||
self.mqttclient.publish(getConfigValue("mqtt_topic") + "/charger_current", currentNow)
|
||||
|
||||
def setPowerSupplyVoltageAndCurrent(self, targetVoltage, targetCurrent):
|
||||
# if we are the charger, and have a real power supply which we want to control, we do it here
|
||||
self.homeplughandler.sendSpecialMessageToControlThePowerSupply(targetVoltage, targetCurrent)
|
||||
#here we can publish the voltage and current requests received from the PEV side
|
||||
if getConfigValue("charge_parameter_backend") == "mqtt":
|
||||
self.mqttclient.publish(getConfigValue("mqtt_topic") + "/pev_voltage", str(voltage))
|
||||
self.mqttclient.publish(getConfigValue("mqtt_topic") + "/pev_current", str(current))
|
||||
|
||||
def getInletVoltage(self):
|
||||
# uncomment this line, to take the simulated inlet voltage instead of the really measured
|
||||
# self.inletVoltage = self.simulatedInletVoltage
|
||||
|
@ -243,6 +246,18 @@ class hardwareInterface():
|
|||
self.callbackShowStatus(format(self.simulatedSoc,".1f"), "soc")
|
||||
return self.simulatedSoc
|
||||
|
||||
def isUserAuthenticated(self):
|
||||
# If the user needs to authorize, fill this function in a way that it returns False as long as
|
||||
# we shall wait for the users authorization, and returns True if the authentication was successfull.
|
||||
# Discussing here: https://github.com/uhi22/pyPLC/issues/28#issuecomment-2230656379
|
||||
# For testing purposes, we just use a counter to decide that we return
|
||||
# once "ongoing" and then "finished".
|
||||
if (self.demoAuthenticationCounter<1):
|
||||
self.demoAuthenticationCounter += 1
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def initPorts(self):
|
||||
if (getConfigValue("charge_parameter_backend") == "chademo"):
|
||||
filters = [
|
||||
|
@ -262,13 +277,15 @@ class hardwareInterface():
|
|||
self.mqttclient.on_message = self.mqtt_on_message
|
||||
self.mqttclient.connect(getConfigValue("mqtt_broker"), 1883, 60)
|
||||
|
||||
def __init__(self, callbackAddToTrace=None, callbackShowStatus=None):
|
||||
def __init__(self, callbackAddToTrace=None, callbackShowStatus=None, homeplughandler=None):
|
||||
self.callbackAddToTrace = callbackAddToTrace
|
||||
self.callbackShowStatus = callbackShowStatus
|
||||
self.homeplughandler = homeplughandler
|
||||
|
||||
self.loopcounter = 0
|
||||
self.outvalue = 0
|
||||
self.simulatedSoc = 20.0 # percent
|
||||
self.demoAuthenticationCounter = 0
|
||||
|
||||
self.inletVoltage = 0.0 # volts
|
||||
self.accuVoltage = 0.0
|
||||
|
@ -303,6 +320,7 @@ class hardwareInterface():
|
|||
def resetSimulation(self):
|
||||
self.simulatedInletVoltage = 0.0 # volts
|
||||
self.simulatedSoc = 20.0 # percent
|
||||
self.demoAuthenticationCounter = 0
|
||||
|
||||
def simulatePreCharge(self):
|
||||
if (self.simulatedInletVoltage<230):
|
||||
|
|
183
listenerNoGui.py
Executable file
183
listenerNoGui.py
Executable file
|
@ -0,0 +1,183 @@
|
|||
#!/usr/bin/python3
|
||||
# The non-GUI variant of the listener
|
||||
|
||||
# Functionality:
|
||||
# - gets the GPS location from a GPS daemon (gpsd on linux)
|
||||
# - gets the chargers MAC address from the address manager
|
||||
# - sends the location and the chargers MAC to a server via http request
|
||||
|
||||
import time
|
||||
import pyPlcWorker
|
||||
from pyPlcModes import *
|
||||
import sys # for argv
|
||||
from configmodule import getConfigValue, getConfigValueBool
|
||||
import urllib.request
|
||||
import gps # the gpsd interface module
|
||||
import RPi.GPIO as GPIO # for controlling hardware pins of the raspberry
|
||||
|
||||
startTime_ms = round(time.time()*1000)
|
||||
GPSsession = gps.gps(mode=gps.WATCH_ENABLE)
|
||||
strGpsPos = "no_pos"
|
||||
strLoggingUrl = getConfigValue("logging_url")
|
||||
|
||||
def cbAddToTrace(s):
|
||||
currentTime_ms = round(time.time()*1000)
|
||||
dT_ms = currentTime_ms - startTime_ms
|
||||
print("[" + str(dT_ms) + "ms] " + s)
|
||||
|
||||
def cbShowStatus(s, selection=""):
|
||||
pass
|
||||
|
||||
def testBlockingBeep(patternselection):
|
||||
if (patternselection==1):
|
||||
# The "MAC Found" beep
|
||||
p.ChangeDutyCycle(30)
|
||||
p.ChangeFrequency(1100)
|
||||
time.sleep(0.3)
|
||||
p.ChangeFrequency(1300)
|
||||
time.sleep(0.3)
|
||||
p.ChangeFrequency(1500)
|
||||
time.sleep(0.3)
|
||||
p.ChangeDutyCycle(0)
|
||||
if (patternselection==2):
|
||||
# The short "ok" beep
|
||||
p.ChangeDutyCycle(10)
|
||||
p.ChangeFrequency(1600)
|
||||
time.sleep(0.07)
|
||||
p.ChangeDutyCycle(0)
|
||||
if (patternselection==3):
|
||||
# The "no GPS position" beep
|
||||
print("no pos beep 4")
|
||||
p.ChangeDutyCycle(10)
|
||||
p.ChangeFrequency(1700)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(0)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(10)
|
||||
p.ChangeFrequency(1700)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(0)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(10)
|
||||
p.ChangeFrequency(1700)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(0)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(10)
|
||||
p.ChangeFrequency(1700)
|
||||
time.sleep(0.04)
|
||||
p.ChangeDutyCycle(0)
|
||||
|
||||
def trySomeHttp():
|
||||
print("***************trying some http********************")
|
||||
strChargerMac = "chargerMac=na"
|
||||
if (worker.addressManager.isEvseMacNew()):
|
||||
testBlockingBeep(1)
|
||||
strChargerMac = "chargerMac=" + worker.addressManager.getEvseMacAsStringAndClearUpdateFlag().replace(":", "")
|
||||
strParams = strChargerMac
|
||||
strParams = strParams + "&loops="+str(nMainloops)+"&pos="+strGpsPos
|
||||
print(strParams)
|
||||
try:
|
||||
contents = urllib.request.urlopen(strLoggingUrl + "?" + strParams).read()
|
||||
print(len(strGpsPos))
|
||||
if (len(strGpsPos)>7):
|
||||
print("Valid GPS coordinates, and http logging worked")
|
||||
#testBlockingBeep(2)
|
||||
else:
|
||||
print("http was ok, but no GPS position")
|
||||
#testBlockingBeep(3)
|
||||
except Exception as err:
|
||||
contents = "(no contents received) " + str(err)
|
||||
print(contents)
|
||||
|
||||
def GpsMainfunction():
|
||||
global strGpsPos
|
||||
GPSsession.read()
|
||||
if (gps.MODE_SET & GPSsession.valid):
|
||||
print('Mode: %s(%d) Time: ' %
|
||||
(("Invalid", "NO_FIX", "2D", "3D")[GPSsession.fix.mode],
|
||||
GPSsession.fix.mode), end="")
|
||||
# print time, if we have it
|
||||
if gps.TIME_SET & GPSsession.valid:
|
||||
print(GPSsession.fix.time, end="")
|
||||
else:
|
||||
print('n/a', end="")
|
||||
|
||||
if ((gps.isfinite(GPSsession.fix.latitude) and
|
||||
gps.isfinite(GPSsession.fix.longitude))):
|
||||
print(" Lat %.6f Lon %.6f" %
|
||||
(GPSsession.fix.latitude, GPSsession.fix.longitude))
|
||||
strGpsPos = str(GPSsession.fix.latitude)+"_"+str(GPSsession.fix.longitude)
|
||||
else:
|
||||
print(" Lat n/a Lon n/a")
|
||||
strGpsPos = str(0.0)+"_"+str(0.0)
|
||||
print(strGpsPos)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def mytestfunction():
|
||||
global soundstate
|
||||
#testBlockingBeep(2)
|
||||
#if (soundstate==0):
|
||||
# p.ChangeDutyCycle(10)
|
||||
# p.ChangeFrequency(1000)
|
||||
#if (soundstate==1):
|
||||
# p.ChangeDutyCycle(10)
|
||||
# p.ChangeFrequency(1200)
|
||||
#if (soundstate==2):
|
||||
# p.ChangeDutyCycle(0)
|
||||
#soundstate+=1
|
||||
#if (soundstate>=3):
|
||||
# soundstate=0
|
||||
|
||||
|
||||
myMode = C_LISTEN_MODE
|
||||
|
||||
|
||||
isSimulationMode=0
|
||||
if (len(sys.argv) > 1):
|
||||
if (sys.argv[1] == "S"):
|
||||
isSimulationMode=1
|
||||
|
||||
print("starting in LISTEN_MODE")
|
||||
print("press Ctrl-C to exit")
|
||||
|
||||
worker=pyPlcWorker.pyPlcWorker(cbAddToTrace, cbShowStatus, myMode, isSimulationMode)
|
||||
|
||||
nMainloops=0
|
||||
httpTime_ms = round(time.time()*1000)
|
||||
testTime_ms = httpTime_ms
|
||||
#intervalForHttpLogging_ms = 120*1000 # each 2 minutes send the logging data to the server
|
||||
intervalForHttpLogging_ms = 30*1000 # each half minute send the logging data to the server
|
||||
|
||||
soundstate = 0
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setup(23, GPIO.OUT)
|
||||
p=GPIO.PWM(23, 500) # 500 Hz
|
||||
p.start(0)
|
||||
p.ChangeDutyCycle(50)
|
||||
time.sleep(0.1)
|
||||
p.ChangeDutyCycle(0)
|
||||
time.sleep(0.1)
|
||||
p.ChangeDutyCycle(50)
|
||||
time.sleep(0.1)
|
||||
p.ChangeDutyCycle(0)
|
||||
|
||||
|
||||
while (1):
|
||||
time.sleep(.03) # 'do some calculation'
|
||||
nMainloops+=1
|
||||
currentTime_ms = round(time.time()*1000)
|
||||
if ((currentTime_ms-httpTime_ms)>intervalForHttpLogging_ms) or (worker.addressManager.isEvseMacNew()):
|
||||
trySomeHttp()
|
||||
httpTime_ms = currentTime_ms
|
||||
if ((currentTime_ms-testTime_ms)>2000):
|
||||
mytestfunction()
|
||||
testTime_ms = currentTime_ms
|
||||
worker.mainfunction()
|
||||
GpsMainfunction()
|
||||
|
||||
#---------------------------------------------------------------
|
|
@ -87,6 +87,7 @@ def convertPcapToTxt(inputFileName):
|
|||
t2PreChargeBegin = 0
|
||||
t3CurrentDemandBegin = 0
|
||||
numberOfPackets=0
|
||||
decodeAlsoAsApplHandshake=0
|
||||
for packet in cap:
|
||||
numberOfPackets+=1
|
||||
#print(packet)
|
||||
|
@ -105,6 +106,16 @@ def convertPcapToTxt(inputFileName):
|
|||
#print(decoded)
|
||||
print(sHeader, file=fileOut)
|
||||
print(decoded, file=fileOut)
|
||||
if (decodeAlsoAsApplHandshake>0): # if it may be applHandShake, caused by the previous message, we decode also this.
|
||||
print("Alternative decoding as applHandshake", file=fileOut)
|
||||
decodeAlsoAsApplHandshake-=1
|
||||
decoded=exiConnector.exiDecode(strExi, "DH")
|
||||
print(decoded, file=fileOut)
|
||||
if (decoded.find("error-")>0): # a decoding error usually points to wrong protocol, so most likely it is appHandShake.
|
||||
print("maybe this is no DIN. Trying to decode as applHandshake", file=fileOut)
|
||||
decodeAlsoAsApplHandshake=1
|
||||
decoded=exiConnector.exiDecode(strExi, "DH")
|
||||
print(decoded, file=fileOut)
|
||||
if (decoded.find("SessionSetupReq")>0):
|
||||
if ((t1CableCheckBegin>0) and (t2PreChargeBegin>t1CableCheckBegin) and (t3CurrentDemandBegin>t2PreChargeBegin)):
|
||||
print("charger MAC " + chargerMAC + " " + getManufacturerFromMAC(chargerMAC))
|
||||
|
|
29
pyPlc.py
29
pyPlc.py
|
@ -57,6 +57,15 @@ def cbShowStatus(s, selection=""):
|
|||
if (selection == "soc"):
|
||||
lblSoc['text']= "SOC " + s + "%"
|
||||
s=""
|
||||
if (selection == "UandI"):
|
||||
lblRequestedUandI['text']= "Target " + s + ""
|
||||
s=""
|
||||
if (selection == "PowerSupplyUPresent"):
|
||||
lblPowerSupplyUPresent['text']= "UPresent " + s + "V"
|
||||
s=""
|
||||
if (selection == "PowerSupplyUTarget"):
|
||||
lblPowerSupplyUTarget['text']= "UTarget " + s + "V"
|
||||
s=""
|
||||
if (len(s)>0):
|
||||
lblStatus['text']=s
|
||||
root.update()
|
||||
|
@ -73,6 +82,10 @@ if (len(sys.argv) > 1):
|
|||
else:
|
||||
if (sys.argv[1] == "E"):
|
||||
myMode = C_EVSE_MODE
|
||||
else:
|
||||
if (sys.argv[1] == "L"):
|
||||
myMode = C_LISTEN_MODE
|
||||
|
||||
|
||||
# The simulation mode can be set by command line in addition in both, PevMode and EvseMode.
|
||||
isSimulationMode=0
|
||||
|
@ -94,8 +107,19 @@ if (myMode == C_EVSE_MODE):
|
|||
print("starting in EvseMode")
|
||||
|
||||
root = tk.Tk()
|
||||
root.geometry("400x350")
|
||||
#root.geometry("400x350")
|
||||
root.geometry("600x350")
|
||||
lastKey = ''
|
||||
if (myMode == C_EVSE_MODE):
|
||||
frmPowerSupply = tk.Frame(root, bg='lightblue', bd=3)
|
||||
frmPowerSupply.pack(side='right', fill='both', expand='True')
|
||||
lblPowerSupplyUTarget = tk.Label(frmPowerSupply, text="(UTarget)", bg='lightblue')
|
||||
lblPowerSupplyUTarget.config(font=('Helvetica bold', 18))
|
||||
lblPowerSupplyUTarget.pack()
|
||||
lblPowerSupplyUPresent = tk.Label(frmPowerSupply, text="(PowerSupplyUPresent)", bg='lightblue')
|
||||
lblPowerSupplyUPresent.config(font=('Helvetica bold', 18))
|
||||
lblPowerSupplyUPresent.pack()
|
||||
|
||||
lblHelp = tk.Label(root, justify= "left")
|
||||
lblHelp['text']="x=exit \nS=GET_SW \nP=PEV mode \nE=EVSE mode \nL=Listen mode \ns=SET_KEY \nG=GET_KEY (try twice) \nt=SET_KEY modified \n space=stop charging"
|
||||
lblHelp.pack()
|
||||
|
@ -108,6 +132,8 @@ lblState.config(font=('Helvetica bold', 20))
|
|||
lblState.pack()
|
||||
lblSoc = tk.Label(root, text="(soc)")
|
||||
lblSoc.pack()
|
||||
lblRequestedUandI = tk.Label(root, text="(U and I)")
|
||||
lblRequestedUandI.pack()
|
||||
lblUInlet = tk.Label(root, text="(U Inlet)")
|
||||
lblUInlet.config(font=('Helvetica bold', 26))
|
||||
lblUInlet.pack()
|
||||
|
@ -115,6 +141,7 @@ lblEVSEPresentVoltage = tk.Label(root, text="(EVSEPresentVoltage)")
|
|||
lblEVSEPresentVoltage.config(font=('Helvetica bold', 16))
|
||||
lblEVSEPresentVoltage.pack()
|
||||
|
||||
|
||||
if (myMode == C_EVSE_MODE):
|
||||
lblTestcase = tk.Label(root, text="(test case)")
|
||||
lblTestcase.pack()
|
||||
|
|
121
pyPlcHomeplug.py
121
pyPlcHomeplug.py
|
@ -43,6 +43,7 @@ from pyPlcModes import *
|
|||
from mytestsuite import *
|
||||
from random import random
|
||||
from configmodule import getConfigValue, getConfigValueBool
|
||||
from datetime import datetime
|
||||
import sys
|
||||
|
||||
MAC_BROADCAST = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ]
|
||||
|
@ -120,6 +121,14 @@ class pyPlcHomeplug():
|
|||
|
||||
self.addToTrace("From " + strSourceMac + strSourceFriendlyName + " to " + strDestMac)
|
||||
|
||||
def getSourceMacAddressAsString(self):
|
||||
strSourceMac = ""
|
||||
for i in range(6, 12):
|
||||
strSourceMac = strSourceMac + twoCharHex(self.myreceivebuffer[i])
|
||||
if (i<11):
|
||||
strSourceMac = strSourceMac + ":"
|
||||
return strSourceMac
|
||||
|
||||
def getEtherType(self, messagebufferbytearray):
|
||||
etherType=0
|
||||
if len(messagebufferbytearray)>(6+6+2):
|
||||
|
@ -257,6 +266,7 @@ class pyPlcHomeplug():
|
|||
# Network ID to be associated with the key distributed herein.
|
||||
# The 54 LSBs of this field contain the NID (refer to Section 3.4.3.1). The
|
||||
# two MSBs shall be set to 0b00.
|
||||
self.addToTrace("NID is " + prettyHexMessage(self.NID))
|
||||
self.mytransmitbuffer[40]=0x01 # 21 peks (payload encryption key select) Table 11-83. 01 is NMK. We had 02 here, why???
|
||||
# with 0x0F we could choose "no key, payload is sent in the clear"
|
||||
self.setNmkAt(41)
|
||||
|
@ -349,6 +359,37 @@ class pyPlcHomeplug():
|
|||
self.fillRunId(36) # 36 to 43 runid 8 bytes
|
||||
# rest is 00
|
||||
|
||||
def composeSpecialMessage(self):
|
||||
# special "homeplug" message, to control a hardware device.
|
||||
# We re-purpose the ATTEN_CHAR.IND, because a AR4720 PEV modem is transparent for it also in unpaired state,
|
||||
# and it contains a lot of space which can be used to transfer data. Also it is not expected to disturb the
|
||||
# normal traffic, because it may be also caused by cross-coupling from an other charger, and the normal
|
||||
# communication should be immune to such things.
|
||||
self.mytransmitbuffer = bytearray(129)
|
||||
self.cleanTransmitBuffer()
|
||||
# Destination MAC
|
||||
self.fillDestinationMac(MAC_BROADCAST)
|
||||
# Source MAC
|
||||
self.fillSourceMac(self.myMAC)
|
||||
# Protocol
|
||||
self.mytransmitbuffer[12]=0x88 # Protocol HomeplugAV
|
||||
self.mytransmitbuffer[13]=0xE1
|
||||
self.mytransmitbuffer[14]=0x01 # version
|
||||
self.mytransmitbuffer[15]=0x6E # ATTEN_CHAR.IND
|
||||
self.mytransmitbuffer[16]=0x60 #
|
||||
self.mytransmitbuffer[17]=0x00 # 2 bytes fragmentation information. 0000 means: unfragmented.
|
||||
self.mytransmitbuffer[18]=0x00 #
|
||||
self.mytransmitbuffer[19]=0x00 # apptype
|
||||
self.mytransmitbuffer[20]=0x00 # security
|
||||
self.fillDestinationMac(MAC_BROADCAST, 21) # The wireshark calls it source_mac, but alpitronic fills it with PEV mac.
|
||||
self.fillRunId(27) # runid 8 bytes
|
||||
self.mytransmitbuffer[35]=0x00 # 35 - 51 source_id, 17 bytes. The alpitronic fills it with 00
|
||||
self.mytransmitbuffer[52]=0x00 # 52 - 68 response_id, 17 bytes. The alpitronic fills it with 00.
|
||||
self.mytransmitbuffer[69]=0x0A # Number of sounds. 10 in normal case.
|
||||
self.mytransmitbuffer[70]=0x3A # Number of groups = 58.
|
||||
for i in range(71, 129): # 71 to 128: 58 special-purpose-bytes
|
||||
self.mytransmitbuffer[i]=self.specialMessageTransmitBuffer[i-71]
|
||||
|
||||
def composeStartAttenCharInd(self):
|
||||
# reference: see wireshark interpreted frame from ioniq
|
||||
self.mytransmitbuffer = bytearray(60)
|
||||
|
@ -546,6 +587,19 @@ class pyPlcHomeplug():
|
|||
self.composeGetSwWithRamdomMac()
|
||||
self.addToTrace("transmitting GetSwWithRamdomMac")
|
||||
self.transmit(self.mytransmitbuffer)
|
||||
if (selection=="5"):
|
||||
self.sendSpecialMessageToControlThePowerSupply(20, 1)
|
||||
if (selection=="6"):
|
||||
self.sendSpecialMessageToControlThePowerSupply(100, 1)
|
||||
if (selection=="7"):
|
||||
self.sendSpecialMessageToControlThePowerSupply(200, 1)
|
||||
if (selection=="8"):
|
||||
self.sendSpecialMessageToControlThePowerSupply(300, 1)
|
||||
if (selection=="9"):
|
||||
self.sendSpecialMessageToControlThePowerSupply(400, 1)
|
||||
if (selection=="0"):
|
||||
self.sendSpecialMessageToControlThePowerSupply(0, 0)
|
||||
|
||||
|
||||
def transmit(self, pkt):
|
||||
self.sniffer.sendpacket(bytes(pkt))
|
||||
|
@ -657,6 +711,18 @@ class pyPlcHomeplug():
|
|||
if (self.pevSequenceState==STATE_WAITING_FOR_SLAC_PARAM_CNF): # we were waiting for the SlacParamCnf
|
||||
self.pevSequenceDelayCycles = 4 # original Ioniq is waiting 200ms
|
||||
self.enterState(STATE_SLAC_PARAM_CNF_RECEIVED) # enter next state. Will be handled in the cyclic runPevSequencer
|
||||
if ((self.iAmListener==1) or (self.iAmPev==1)):
|
||||
# Take the MAC of the charger from the frame, and store it for later use.
|
||||
for i in range(0, 6):
|
||||
self.evseMac[i] = self.myreceivebuffer[6+i] # source MAC starts at offset 6
|
||||
self.addressManager.setEvseMac(self.evseMac)
|
||||
if getConfigValueBool("log_the_evse_mac_to_file"):
|
||||
# Write the MAC address of the charger to a log file
|
||||
self.addToTrace("SECC MAC is " + self.getSourceMacAddressAsString())
|
||||
strDateTime=datetime.today().strftime('%Y-%m-%dT%H:%M:%S.%f')
|
||||
MacLogFile = open('MacLog.txt', 'a')
|
||||
MacLogFile.write(strDateTime + " SECC MAC " + self.getSourceMacAddressAsString() + "\n") # write the MAC to the MacLogFile
|
||||
MacLogFile.close()
|
||||
|
||||
def evaluateMnbcSoundInd(self):
|
||||
# We received MNBC_SOUND.IND from the PEV. Normally this happens 10times, with a countdown (remaining number of sounds)
|
||||
|
@ -671,6 +737,19 @@ class pyPlcHomeplug():
|
|||
self.addToTrace("[EVSE] transmitting ATTEN_CHAR.IND")
|
||||
self.sniffer.sendpacket(bytes(self.mytransmitbuffer))
|
||||
|
||||
def evaluateStartAttenCharInd(self):
|
||||
# self.addToTrace("received START_ATTEN_CHAR.IND")
|
||||
# nothing to do as PEV or EVSE.
|
||||
# interpretation just in case we use it as special message in EVSE mode to get information from the power supply
|
||||
if (self.iAmEvse==1):
|
||||
if ((self.myreceivebuffer[38] == 0xDC) and (self.myreceivebuffer[39] == 0x55) and (self.myreceivebuffer[40] == 0xAA)):
|
||||
uPresent = self.myreceivebuffer[43]
|
||||
uPresent*=256
|
||||
uPresent+=self.myreceivebuffer[44]
|
||||
uPresent/=10 # scaling in the message is 0.1V
|
||||
self.callbackShowStatus(str(uPresent), "PowerSupplyUPresent")
|
||||
# Todo: evaluate other information of the power supply, like cable check result, current, temperature, ...
|
||||
|
||||
def evaluateAttenCharInd(self):
|
||||
self.addToTrace("received ATTEN_CHAR.IND")
|
||||
if (self.iAmPev==1):
|
||||
|
@ -678,10 +757,6 @@ class pyPlcHomeplug():
|
|||
if (self.pevSequenceState==STATE_WAIT_FOR_ATTEN_CHAR_IND): # we were waiting for the AttenCharInd
|
||||
# todo: Handle the case when we receive multiple responses from different chargers.
|
||||
# Wait a certain time, and compare the attenuation profiles. Decide for the nearest charger.
|
||||
# Take the MAC of the charger from the frame, and store it for later use.
|
||||
for i in range(0, 6):
|
||||
self.evseMac[i] = self.myreceivebuffer[6+i] # source MAC starts at offset 6
|
||||
self.addressManager.setEvseMac(self.evseMac)
|
||||
self.AttenCharIndNumberOfSounds = self.myreceivebuffer[69]
|
||||
self.addToTrace("[PEVSLAC] number of sounds reported by the EVSE (should be 10): " + str(self.AttenCharIndNumberOfSounds))
|
||||
self.composeAttenCharRsp()
|
||||
|
@ -722,6 +797,7 @@ class pyPlcHomeplug():
|
|||
self.NMK[i] = self.myreceivebuffer[93+i]
|
||||
s=s+hex(self.NMK[i])+ " "
|
||||
self.addToTrace("From SlacMatchCnf, got network membership key (NMK) " + s)
|
||||
if (self.iAmPev==1):
|
||||
# use the extracted NMK and NID to set the key in the adaptor:
|
||||
self.composeSetKey(0)
|
||||
self.addToTrace("Checkpoint170: transmitting CM_SET_KEY.REQ")
|
||||
|
@ -731,6 +807,9 @@ class pyPlcHomeplug():
|
|||
# In simulation mode, we pretend a successful SetKey response:
|
||||
self.connMgr.SlacOk()
|
||||
self.enterState(STATE_WAITING_FOR_RESTART2)
|
||||
else:
|
||||
# We are neither Evse nor PEV, so we are just listener. Do not set the key, to avoid disturbing the two participants.
|
||||
self.enterState(STATE_WAITING_FOR_RESTART2) # does not really matter
|
||||
|
||||
def evaluateReceivedHomeplugPacket(self):
|
||||
mmt = self.getManagementMessageType()
|
||||
|
@ -745,6 +824,8 @@ class pyPlcHomeplug():
|
|||
self.evaluateSlacParamReq()
|
||||
if (mmt == CM_SLAC_PARAM + MMTYPE_CNF):
|
||||
self.evaluateSlacParamCnf()
|
||||
if (mmt == CM_START_ATTEN_CHAR + MMTYPE_IND):
|
||||
self.evaluateStartAttenCharInd()
|
||||
if (mmt == CM_MNBC_SOUND + MMTYPE_IND):
|
||||
self.evaluateMnbcSoundInd()
|
||||
if (mmt == CM_ATTEN_CHAR + MMTYPE_IND):
|
||||
|
@ -773,8 +854,11 @@ class pyPlcHomeplug():
|
|||
# Fill some of the bytes of the NMK with random numbers. The others stay at 0x77 for easy visibility.
|
||||
self.NMK_EVSE_random[2] = int(random()*255)
|
||||
self.NMK_EVSE_random[3] = int(random()*255)
|
||||
self.NMK_EVSE_random[4] = int(random()*255)
|
||||
self.NMK_EVSE_random[5] = int(random()*255)
|
||||
self.NMK_EVSE_random[6] = int(random()*255)
|
||||
self.composeSetKey(0)
|
||||
self.addToTrace("transmitting SET_KEY.REQ, to configure the EVSE modem with random NMK")
|
||||
self.addToTrace("transmitting SET_KEY.REQ, to configure the EVSE modem with random NMK " +prettyHexMessage(self.NMK_EVSE_random))
|
||||
self.transmit(self.mytransmitbuffer)
|
||||
self.evseSlacHandlerState = 1 # setkey was done
|
||||
return
|
||||
|
@ -1054,19 +1138,41 @@ class pyPlcHomeplug():
|
|||
self.strInterfaceName=getConfigValue("eth_interface")
|
||||
print("Linux interface is " + self.strInterfaceName)
|
||||
|
||||
def sendSpecialMessageToControlThePowerSupply(self, targetVoltage, targetCurrent):
|
||||
u = int(targetVoltage*10) # resolution: 0.1 volt
|
||||
i = int(targetCurrent*10) # resolution: 0.1 ampere
|
||||
self.specialMessageTransmitBuffer[0] = 0xAF # Header 3 byte
|
||||
self.specialMessageTransmitBuffer[1] = 0xFE #
|
||||
self.specialMessageTransmitBuffer[2] = 0xDC #
|
||||
self.specialMessageTransmitBuffer[3] = u >> 8 # target voltage, MSB first
|
||||
self.specialMessageTransmitBuffer[4] = u & 0xFF # target voltage, LSB
|
||||
self.specialMessageTransmitBuffer[5] = u >> 8 # same again, for plausibilization
|
||||
self.specialMessageTransmitBuffer[6] = u & 0xFF
|
||||
self.specialMessageTransmitBuffer[7] = i >> 8 # target current, MSB first
|
||||
self.specialMessageTransmitBuffer[8] = i & 0xFF # target current, LSB
|
||||
self.specialMessageTransmitBuffer[9] = i >> 8 # same again
|
||||
self.specialMessageTransmitBuffer[10] = i & 0xFF
|
||||
self.composeSpecialMessage()
|
||||
self.addToTrace("transmitting SpecialMessage to control the power supply")
|
||||
self.transmit(self.mytransmitbuffer)
|
||||
self.callbackShowStatus(str(targetVoltage), "PowerSupplyUTarget")
|
||||
|
||||
def enterPevMode(self):
|
||||
self.iAmEvse = 0 # not emulating a charging station
|
||||
self.iAmPev = 1 # emulating a vehicle
|
||||
self.iAmListener = 0 # not a passive listener
|
||||
self.ipv6.enterPevMode()
|
||||
self.showStatus("PEV mode", "mode")
|
||||
def enterEvseMode(self):
|
||||
self.iAmEvse = 1 # emulating a charging station
|
||||
self.iAmPev = 0 # not emulating a vehicle
|
||||
self.iAmListener = 0 # not a passive listener
|
||||
self.ipv6.enterEvseMode()
|
||||
self.showStatus("EVSE mode", "mode")
|
||||
def enterListenMode(self):
|
||||
self.iAmEvse = 0 # not emulating a charging station
|
||||
self.iAmPev = 0 # not emulating a vehicle
|
||||
self.iAmListener = 1 # just listening
|
||||
self.ipv6.enterListenMode()
|
||||
self.showStatus("LISTEN mode", "mode")
|
||||
|
||||
|
@ -1111,11 +1217,16 @@ class pyPlcHomeplug():
|
|||
self.NMK = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ] # a default network key. Will be overwritten later.
|
||||
self.NMK_EVSE_random = [ 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77 ] # In EvseMode, we use this key.
|
||||
self.NID = [ 1, 2, 3, 4, 5, 6, 7 ] # a default network ID
|
||||
self.NID[2] = int(random()*255) # in case we are EVSE, prepare a random network ID, to
|
||||
self.NID[3] = int(random()*255) # allow multiple EVSEs live together without causing modem resets
|
||||
self.NID[4] = int(random()*255)
|
||||
self.NID[5] = int(random()*255)
|
||||
self.pevMac = [0xDC, 0x0E, 0xA1, 0x11, 0x67, 0x08 ] # a default pev MAC. Will be overwritten later.
|
||||
self.evseMac = [0x55, 0x56, 0x57, 0xAA, 0xAA, 0xAA ] # a default evse MAC. Will be overwritten later.
|
||||
# a default pev RunId. Will be overwritten later, if we are evse. If we are the pev, we are free to choose a
|
||||
# RunID, e.g. the Ioniq uses the MAC plus 0x00 0x00 padding, the Tesla uses "TESLA EV".
|
||||
self.pevRunId = [0xDC, 0x0E, 0xA1, 0xDE, 0xAD, 0xBE, 0xEF, 0x55 ]
|
||||
self.specialMessageTransmitBuffer = bytearray(58)
|
||||
self.myMAC = self.addressManager.getLocalMacAddress()
|
||||
self.runningCounter=0
|
||||
self.ipv6 = pyPlcIpv6.ipv6handler(self.transmit, self.addressManager, self.connMgr, self.callbackShowStatus)
|
||||
|
|
|
@ -31,7 +31,7 @@ class pyPlcWorker():
|
|||
self.isSimulationMode = isSimulationMode
|
||||
self.connMgr = connMgr.connMgr(self.workerAddToTrace, self.showStatus)
|
||||
self.hp = pyPlcHomeplug.pyPlcHomeplug(self.workerAddToTrace, self.showStatus, self.mode, self.addressManager, self.connMgr, self.isSimulationMode)
|
||||
self.hardwareInterface = hardwareInterface.hardwareInterface(self.workerAddToTrace, self.showStatus)
|
||||
self.hardwareInterface = hardwareInterface.hardwareInterface(self.workerAddToTrace, self.showStatus, self.hp)
|
||||
self.hp.printToUdp("pyPlcWorker init")
|
||||
# Find out the version number, using git.
|
||||
# see https://stackoverflow.com/questions/14989858/get-the-current-git-hash-in-a-python-script
|
||||
|
@ -75,6 +75,7 @@ class pyPlcWorker():
|
|||
def mainfunction(self):
|
||||
self.nMainFunctionCalls+=1
|
||||
#self.showStatus("pyPlcWorker loop " + str(self.nMainFunctionCalls))
|
||||
if (self.mode == C_PEV_MODE):
|
||||
self.connMgr.mainfunction()
|
||||
self.handleTcpConnectionTrigger()
|
||||
self.hp.mainfunction() # call the lower-level workers
|
||||
|
|
23
readme.md
23
readme.md
|
@ -492,6 +492,7 @@ In the cable check phase, the charger checks the following things:
|
|||
- wrong coupling network between the CP/PE and the PLC modem transformator. This may disturb the PWM levels, due to low-pass-filtering or it may inject too much power from the PLC modem.
|
||||
- Software not configured to use the correct output path for the StateC switching
|
||||
2. Isolation of the DC path. It is recommended to use two contactors, one for each DC lines, to avoid asymmetrical results in the isolation measurements.
|
||||
3. PP line: Some chargers (e.g. some of the Tesla Superchargers) are checking the voltage between the PP line and PE. The "official" recommendation seems to be to use on car side a pull-up of 330 ohm to 5V, and perhaps 3k pulldown to ground. Discussed here: https://openinverter.org/forum/viewtopic.php?p=67464#p67464 However, many chargers (e.g. alpitronics) seem not to care for the PP at all.
|
||||
|
||||
### Q6: How to connect the PLC modem to the CP and PE?
|
||||
|
||||
|
@ -512,6 +513,23 @@ The json data, which is mentioned in the question, is the output of the EXI deco
|
|||
- The original Siemens code is mirrored into https://github.com/Martin-P/OpenV2G
|
||||
- Since pyPLC is in python and cannot directly use the C code from Siemens, I added a command line interface to it. So python calls the compiled executable exi decoder, gives the input as command line parameter, and gets back the decoded message as standard output of the executable. This standard output is json-like. The extended OpenV2G has the name OpenV2Gx, and is available here: https://github.com/uhi22/OpenV2Gx. The readme contains examples how this can be used stand-alone for decoding and encoding exi message on command line.
|
||||
|
||||
### Q8: How can I bring out the target current and target voltage out of pyPLC, to control a power supply?
|
||||
|
||||
In EVSE mode, if we want to use pyPLC to physically charge a car, the pyPLC must control the power supply, by providing
|
||||
the target current and the target voltage to it. Different types of power supplies may have different needs for their control
|
||||
signals, e.g. CAN bus, ethernet, analog inputs, RS232 or RS485 or what ever.
|
||||
|
||||
The point in pyPLC, where we can add the communication to the power supply, is the function
|
||||
`setPowerSupplyVoltageAndCurrent()` in hardwareInterface.py, which gets two parameters: targetVoltage and targetCurrent.
|
||||
|
||||
At the time of writing, the only implemented method to communicate with the power supply is ethernet/homeplug, via
|
||||
the function homeplughandler.sendSpecialMessageToControlThePowerSupply(). This is just for demonstration purpose and
|
||||
plays together with the adjustable power supply https://github.com/uhi22/stepup-test?tab=readme-ov-file#level-9-software-adjustable-output-voltage
|
||||
|
||||
Adding a CAN bus communication to the power supply would be possible e.g. if pyPLC runs on a raspberry pi, a CAN hat can be added,
|
||||
and the hardwareInterface.py already contains some CAN bus stuff for the CHAdeMO, which may be used as guidance for further
|
||||
implementations.
|
||||
|
||||
## Credits
|
||||
Thanks to catphish to start the investigations regarding the homeplug modems and publishing them on OpenInverter forum.
|
||||
Thanks to johu for the OpenInverter forum, and for the first video of the early experiments, the beaglebone integration and CHAdeMO integration.
|
||||
|
@ -551,3 +569,8 @@ integrate https://github.com/chargebyte/openv2g (which is basically the same ver
|
|||
* [ix] https://www.oppcharge.org/dok/ISO_15118-2_OpportunityCharging_Rev1.3.0.pdf Pantograph specific differences with some insight into ISO15118.
|
||||
* [x] https://assured-project.eu/storage/files/assured-10-interoperability-reference.pdf Fast and Smart Charging Solutions for
|
||||
Full Size Urban Heavy Duty Applications
|
||||
* [xi] https://morth.nic.in/sites/default/files/ASI/320201825106PMAIS_138_Part_2_F.pdf The Indian Fast Charging specification, seems to contain Chademo (Annex A, System A), an other "System B" in annex B, and CCS as "System C" in Annex C.
|
||||
* [xii] User group which discusses the issues of the ISO15118. Link found on wikipedia article regarding Megawatt charging, https://de.wikipedia.org/wiki/Megawatt_Charging_System ref 5 https://www.elektroniknet.de/automotive/elektromobilitaet/smart-charging-grundlagen-und-herausforderungen.210253.html points to user group for developers https://iso15118.elaad.io/pt2/15118-20/user-group/ which is public.
|
||||
* [xiii] The exi xml schema definitions, e.g. https://standards.iso.org/iso/15118/-20/ed-1/en/
|
||||
* [xiv] exi encoders for ISO (din, 2, 20): https://github.com/tux-evse/iso15118-encoders?tab=readme-ov-file
|
||||
* [xv] codec generator https://github.com/EVerest/cbexigen and the generated codec library https://github.com/EVerest/libcbv2g
|
BIN
results/2024-04-20_ModelY_pyPLC_stop_in_precharge.pcapng
Normal file
BIN
results/2024-04-20_ModelY_pyPLC_stop_in_precharge.pcapng
Normal file
Binary file not shown.
6136
results/2024-04-20_ModelY_pyPLC_stop_in_precharge.pcapng.decoded.txt
Normal file
6136
results/2024-04-20_ModelY_pyPLC_stop_in_precharge.pcapng.decoded.txt
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,490 @@
|
|||
# generated by pcapConverter.py
|
||||
# https://github.com/uhi22/pyPLC
|
||||
[2024-04-20 17:03:07.993203] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.096098] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.177059] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.250923] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.398017] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.501974] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.575802] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.656250] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.737128] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.822910] EVRESSSOC=55
|
||||
[2024-04-20 17:03:08.926978] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.016186] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.132302] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.132302] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.132302] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.188853] EVSEPresentVoltage=197.0
|
||||
[2024-04-20 17:03:09.204261] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.204261] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.204261] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.275397] EVSEPresentVoltage=222.0
|
||||
[2024-04-20 17:03:09.291426] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.291426] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.291426] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.350341] EVSEPresentVoltage=247.0
|
||||
[2024-04-20 17:03:09.364074] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.364074] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.364074] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.437955] EVSEPresentVoltage=272.0
|
||||
[2024-04-20 17:03:09.456137] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.456137] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.456137] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.522506] EVSEPresentVoltage=297.0
|
||||
[2024-04-20 17:03:09.537122] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.537122] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.537122] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.600314] EVSEPresentVoltage=322.0
|
||||
[2024-04-20 17:03:09.618892] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.618892] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.618892] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.680124] EVSEPresentVoltage=327.0
|
||||
[2024-04-20 17:03:09.698099] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.698099] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.698099] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.758311] EVSEPresentVoltage=332.0
|
||||
[2024-04-20 17:03:09.777159] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.777159] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.777159] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.838186] EVSEPresentVoltage=337.0
|
||||
[2024-04-20 17:03:09.856214] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.856214] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.856214] EVRESSSOC=55
|
||||
[2024-04-20 17:03:09.930011] EVSEPresentVoltage=342.0
|
||||
[2024-04-20 17:03:09.949446] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:09.949446] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:09.949446] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.008106] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.024024] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.024024] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.024024] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.077904] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.098104] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.098104] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.098104] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.160507] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.178245] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.178245] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.178245] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.240394] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.256333] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.256333] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.256333] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.316662] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.331937] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.331937] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.331937] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.394707] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.413460] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.413460] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.413460] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.474733] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.491170] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.491170] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.491170] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.553568] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.571242] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.571242] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.571242] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.626930] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.644219] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.644219] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.644219] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.704838] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.719164] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.719164] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.719164] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.787349] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.807261] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.807261] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.807261] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.859072] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.874152] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.874152] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.874152] EVRESSSOC=55
|
||||
[2024-04-20 17:03:10.942083] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:10.959228] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:10.959228] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:10.959228] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.025238] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.039176] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.039176] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.039176] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.101296] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.119120] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.119120] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.119120] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.176759] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.193102] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.193102] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.193102] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.256379] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.273211] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.273211] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.273211] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.336106] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.352278] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.352278] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.352278] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.406356] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.422083] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.422083] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.422083] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.490647] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.511285] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.511285] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.511285] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.563640] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.582385] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.582385] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.582385] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.640780] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.655441] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.655441] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.655441] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.723605] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.742340] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.742340] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.742340] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.803645] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.822224] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.822224] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.822224] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.874775] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.891070] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.891070] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.891070] EVRESSSOC=55
|
||||
[2024-04-20 17:03:11.957988] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:11.976056] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:11.976056] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:11.976056] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.038908] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.056174] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.056174] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.056174] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.112256] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.130218] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.130218] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.130218] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.194963] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.213062] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.213062] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.213062] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.272675] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.291480] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.291480] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.291480] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.351326] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.372365] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.372365] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.372365] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.421236] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.439286] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.439286] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.439286] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.508366] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.524451] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.524451] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.524451] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.584225] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.599404] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.599404] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.599404] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.658441] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.674298] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.674298] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.674298] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.747376] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.764356] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.764356] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.764356] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.827953] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.845494] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.845494] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.845494] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.915857] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:12.931383] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:12.931383] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:12.931383] EVRESSSOC=55
|
||||
[2024-04-20 17:03:12.997063] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.013166] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.013166] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.013166] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.088396] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.103127] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.103127] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.103127] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.165498] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.183157] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.183157] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.183157] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.238079] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.256460] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.256460] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.256460] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.318849] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.337135] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.337135] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.337135] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.396014] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.413290] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.413290] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.413290] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.470622] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.486200] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.486200] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.486200] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.553802] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.572410] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.572410] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.572410] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.630988] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.644420] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.644420] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.644420] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.715476] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.731275] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.731275] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.731275] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.803107] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.817515] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.817515] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.817515] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.881641] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.898241] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.898241] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.898241] EVRESSSOC=55
|
||||
[2024-04-20 17:03:13.960182] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:13.978164] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:13.978164] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:13.978164] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.038019] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.056553] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.056553] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.056553] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.116532] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.131415] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.131415] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.131415] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.194779] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.213378] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.213378] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.213378] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.268301] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.284487] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.284487] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.284487] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.348586] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.364380] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.364380] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.364380] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.427025] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.444224] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.444224] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.444224] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.500819] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.519434] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.519434] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.519434] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.580342] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.600247] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.600247] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.600247] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.656786] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.674089] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.674089] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.674089] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.800962] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.819457] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.819457] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.819457] EVRESSSOC=55
|
||||
[2024-04-20 17:03:14.935003] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:14.954214] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:14.954214] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:14.954214] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.076444] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.094554] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.094554] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.094554] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.221293] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.240257] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.240257] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.240257] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.364876] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.382317] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.382317] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.382317] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.498976] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.517377] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.517377] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.517377] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.676122] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.691470] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.691470] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.691470] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.770537] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.789690] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.789690] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.789690] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.850884] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.869454] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.869454] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.869454] EVRESSSOC=55
|
||||
[2024-04-20 17:03:15.928950] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:15.942610] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:15.942610] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:15.942610] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.008220] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.025472] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.025472] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.025472] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.084516] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.098518] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.098518] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.098518] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.162556] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.179422] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.179422] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.179422] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.322154] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.336410] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.336410] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.336410] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.430309] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.446407] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.446407] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.446407] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.542656] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.556631] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.556631] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.556631] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.666563] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.685506] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.685506] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.685506] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.817092] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.837477] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.837477] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.837477] EVRESSSOC=55
|
||||
[2024-04-20 17:03:16.897705] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:16.917617] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:16.917617] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:16.917617] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.031071] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.049855] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.049855] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.049855] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.198632] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.217675] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.217675] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.217675] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.363725] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.379544] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.379544] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.379544] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.460546] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.477485] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.477485] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.477485] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.550589] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.570574] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.570574] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.570574] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.721397] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.740313] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.740313] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.740313] EVRESSSOC=55
|
||||
[2024-04-20 17:03:17.872353] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:17.892508] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:17.892508] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:17.892508] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.042794] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.061540] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.061540] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.061540] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.236203] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.254478] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.254478] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.254478] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.379829] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.396470] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.396470] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.396470] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.473243] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.487457] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.487457] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.487457] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.653116] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.670693] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.670693] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.670693] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.826739] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.845669] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.845669] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.845669] EVRESSSOC=55
|
||||
[2024-04-20 17:03:18.945704] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:18.960927] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:18.960927] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:18.960927] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.059192] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:19.077619] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:19.077619] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:19.077619] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.217079] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:19.234728] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:19.234728] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:19.234728] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.414232] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:19.430657] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:19.430657] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:19.430657] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.527357] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:19.546852] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:19.546852] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:19.546852] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.650942] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:19.669660] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:19.669660] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:19.669660] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.792486] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:19.810789] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:19.810789] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:19.810789] EVRESSSOC=55
|
||||
[2024-04-20 17:03:19.994295] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.010652] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.010652] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.010652] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.121304] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.136498] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.136498] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.136498] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.314488] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.330811] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.330811] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.330811] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.439702] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.457864] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.457864] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.457864] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.523685] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.538705] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.538705] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.538705] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.600643] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.619593] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.619593] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.619593] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.779599] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.794651] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.794651] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.794651] EVRESSSOC=55
|
||||
[2024-04-20 17:03:20.970233] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:20.988619] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:20.988619] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:20.988619] EVRESSSOC=55
|
||||
[2024-04-20 17:03:21.081227] EVSEPresentVoltage=347.0
|
||||
[2024-04-20 17:03:21.099605] EVTargetVoltage=344.0
|
||||
[2024-04-20 17:03:21.099605] EVTargetCurrent=0.0
|
||||
[2024-04-20 17:03:21.099605] EVRESSSOC=55
|
||||
[2024-04-20 17:03:21.162361] EVSEPresentVoltage=347.0
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,61 @@
|
|||
# generated by pcapConverter.py
|
||||
# https://github.com/uhi22/pyPLC
|
||||
[2024-06-11 10:52:37.220658] EVRESSSOC=77
|
||||
[2024-06-11 10:52:37.605348] EVRESSSOC=77
|
||||
[2024-06-11 10:52:37.877275] EVRESSSOC=77
|
||||
[2024-06-11 10:52:38.165148] EVRESSSOC=77
|
||||
[2024-06-11 10:52:38.421738] EVRESSSOC=77
|
||||
[2024-06-11 10:52:38.710259] EVRESSSOC=77
|
||||
[2024-06-11 10:52:38.996171] EVRESSSOC=77
|
||||
[2024-06-11 10:52:39.065387] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:39.065387] EVTargetCurrent=0.0
|
||||
[2024-06-11 10:52:39.065387] EVRESSSOC=77
|
||||
[2024-06-11 10:52:39.215578] EVSEPresentVoltage=238.0
|
||||
[2024-06-11 10:52:39.440303] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:39.440303] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:39.440303] EVRESSSOC=77
|
||||
[2024-06-11 10:52:39.532892] EVSEPresentVoltage=263.0
|
||||
[2024-06-11 10:52:39.754731] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:39.754731] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:39.754731] EVRESSSOC=77
|
||||
[2024-06-11 10:52:39.853000] EVSEPresentVoltage=288.0
|
||||
[2024-06-11 10:52:40.076142] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:40.076142] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:40.076142] EVRESSSOC=77
|
||||
[2024-06-11 10:52:40.167108] EVSEPresentVoltage=313.0
|
||||
[2024-06-11 10:52:40.391434] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:40.391434] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:40.391434] EVRESSSOC=77
|
||||
[2024-06-11 10:52:40.491361] EVSEPresentVoltage=338.0
|
||||
[2024-06-11 10:52:40.714717] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:40.714717] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:40.714717] EVRESSSOC=77
|
||||
[2024-06-11 10:52:40.805582] EVSEPresentVoltage=363.0
|
||||
[2024-06-11 10:52:41.031314] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:41.031314] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:41.031314] EVRESSSOC=77
|
||||
[2024-06-11 10:52:41.085731] EVSEPresentVoltage=388.0
|
||||
[2024-06-11 10:52:41.311000] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:41.311000] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:41.311000] EVRESSSOC=77
|
||||
[2024-06-11 10:52:41.382133] EVSEPresentVoltage=413.0
|
||||
[2024-06-11 10:52:41.606004] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:41.606004] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:41.606004] EVRESSSOC=77
|
||||
[2024-06-11 10:52:41.671751] EVSEPresentVoltage=418.0
|
||||
[2024-06-11 10:52:41.895278] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:41.895278] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:41.895278] EVRESSSOC=77
|
||||
[2024-06-11 10:52:42.002262] EVSEPresentVoltage=423.0
|
||||
[2024-06-11 10:52:42.224507] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:42.224507] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:42.224507] EVRESSSOC=77
|
||||
[2024-06-11 10:52:42.285038] EVSEPresentVoltage=428.0
|
||||
[2024-06-11 10:52:42.510555] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:42.510555] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:42.510555] EVRESSSOC=77
|
||||
[2024-06-11 10:52:42.612985] EVSEPresentVoltage=428.0
|
||||
[2024-06-11 10:52:42.834544] EVTargetVoltage=426.0
|
||||
[2024-06-11 10:52:42.834544] EVTargetCurrent=1.0
|
||||
[2024-06-11 10:52:42.834544] EVRESSSOC=77
|
||||
[2024-06-11 10:52:42.906633] EVSEPresentVoltage=428.0
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,383 @@
|
|||
# generated by pcapConverter.py
|
||||
# https://github.com/uhi22/pyPLC
|
||||
[2024-06-18 17:14:19.033366] EVRESSSOC=75
|
||||
[2024-06-18 17:14:19.417561] EVRESSSOC=75
|
||||
[2024-06-18 17:14:19.717398] EVRESSSOC=75
|
||||
[2024-06-18 17:14:19.987272] EVRESSSOC=75
|
||||
[2024-06-18 17:14:20.302641] EVRESSSOC=75
|
||||
[2024-06-18 17:14:20.617396] EVRESSSOC=75
|
||||
[2024-06-18 17:14:20.862456] EVRESSSOC=75
|
||||
[2024-06-18 17:14:20.932506] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:20.932506] EVTargetCurrent=0.0
|
||||
[2024-06-18 17:14:20.932506] EVRESSSOC=75
|
||||
[2024-06-18 17:14:21.089513] EVSEPresentVoltage=234.0
|
||||
[2024-06-18 17:14:21.312669] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:21.312669] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:21.312669] EVRESSSOC=75
|
||||
[2024-06-18 17:14:21.354397] EVSEPresentVoltage=259.0
|
||||
[2024-06-18 17:14:21.577187] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:21.577187] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:21.577187] EVRESSSOC=75
|
||||
[2024-06-18 17:14:21.631780] EVSEPresentVoltage=284.0
|
||||
[2024-06-18 17:14:21.852320] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:21.852320] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:21.852320] EVRESSSOC=75
|
||||
[2024-06-18 17:14:21.885178] EVSEPresentVoltage=309.0
|
||||
[2024-06-18 17:14:22.107216] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:22.107216] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:22.107216] EVRESSSOC=75
|
||||
[2024-06-18 17:14:22.158328] EVSEPresentVoltage=334.0
|
||||
[2024-06-18 17:14:22.382321] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:22.382321] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:22.382321] EVRESSSOC=75
|
||||
[2024-06-18 17:14:22.434413] EVSEPresentVoltage=359.0
|
||||
[2024-06-18 17:14:22.662329] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:22.662329] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:22.662329] EVRESSSOC=75
|
||||
[2024-06-18 17:14:22.683000] EVSEPresentVoltage=384.0
|
||||
[2024-06-18 17:14:22.907116] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:22.907116] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:22.907116] EVRESSSOC=75
|
||||
[2024-06-18 17:14:22.940599] EVSEPresentVoltage=409.0
|
||||
[2024-06-18 17:14:23.167009] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:23.167009] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:23.167009] EVRESSSOC=75
|
||||
[2024-06-18 17:14:23.190743] EVSEPresentVoltage=414.0
|
||||
[2024-06-18 17:14:23.416960] EVTargetVoltage=418.0
|
||||
[2024-06-18 17:14:23.416960] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:23.416960] EVRESSSOC=75
|
||||
[2024-06-18 17:14:23.439831] EVSEPresentVoltage=419.0
|
||||
[2024-06-18 17:14:23.597063] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:23.597063] EVTargetCurrent=1.0
|
||||
[2024-06-18 17:14:23.597063] EVRESSSOC=75
|
||||
[2024-06-18 17:14:23.635984] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:23.635984] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:23.762243] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:23.762243] EVTargetCurrent=1.7000000000000002
|
||||
[2024-06-18 17:14:23.762243] EVRESSSOC=75
|
||||
[2024-06-18 17:14:23.784468] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:23.784468] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:23.912231] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:23.912231] EVTargetCurrent=2.5
|
||||
[2024-06-18 17:14:23.912231] EVRESSSOC=75
|
||||
[2024-06-18 17:14:23.985924] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:23.985924] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.112068] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.112068] EVTargetCurrent=3.5
|
||||
[2024-06-18 17:14:24.112068] EVRESSSOC=75
|
||||
[2024-06-18 17:14:24.133350] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:24.133350] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.256819] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.256819] EVTargetCurrent=4.3
|
||||
[2024-06-18 17:14:24.256819] EVRESSSOC=75
|
||||
[2024-06-18 17:14:24.280159] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:24.280159] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.402064] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.402064] EVTargetCurrent=5.1000000000000005
|
||||
[2024-06-18 17:14:24.402064] EVRESSSOC=75
|
||||
[2024-06-18 17:14:24.422764] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:24.422764] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.546965] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.546965] EVTargetCurrent=5.800000000000001
|
||||
[2024-06-18 17:14:24.546965] EVRESSSOC=75
|
||||
[2024-06-18 17:14:24.572311] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:24.572311] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.692022] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.692022] EVTargetCurrent=6.6000000000000005
|
||||
[2024-06-18 17:14:24.692022] EVRESSSOC=75
|
||||
[2024-06-18 17:14:24.714858] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:24.714858] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.841956] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.841956] EVTargetCurrent=7.4
|
||||
[2024-06-18 17:14:24.841956] EVRESSSOC=75
|
||||
[2024-06-18 17:14:24.865534] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:24.865534] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:24.992145] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:24.992145] EVTargetCurrent=8.3
|
||||
[2024-06-18 17:14:24.992145] EVRESSSOC=75
|
||||
[2024-06-18 17:14:25.014359] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:25.014359] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:25.142060] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:25.142060] EVTargetCurrent=9.1
|
||||
[2024-06-18 17:14:25.142060] EVRESSSOC=75
|
||||
[2024-06-18 17:14:25.163554] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:25.163554] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:25.291984] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:25.291984] EVTargetCurrent=9.9
|
||||
[2024-06-18 17:14:25.291984] EVRESSSOC=75
|
||||
[2024-06-18 17:14:25.421701] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:25.421701] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:25.541895] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:25.541895] EVTargetCurrent=11.3
|
||||
[2024-06-18 17:14:25.541895] EVRESSSOC=75
|
||||
[2024-06-18 17:14:25.626345] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:25.626345] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:25.751920] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:25.751920] EVTargetCurrent=12.5
|
||||
[2024-06-18 17:14:25.751920] EVRESSSOC=75
|
||||
[2024-06-18 17:14:25.798441] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:25.798441] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:25.921872] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:25.921872] EVTargetCurrent=13.4
|
||||
[2024-06-18 17:14:25.921872] EVRESSSOC=75
|
||||
[2024-06-18 17:14:26.022145] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:26.022145] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:26.146724] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:26.146724] EVTargetCurrent=14.700000000000001
|
||||
[2024-06-18 17:14:26.146724] EVRESSSOC=75
|
||||
[2024-06-18 17:14:26.312572] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:26.312572] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:26.436764] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:26.436764] EVTargetCurrent=16.400000000000002
|
||||
[2024-06-18 17:14:26.436764] EVRESSSOC=75
|
||||
[2024-06-18 17:14:26.539454] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:26.539454] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:26.661818] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:26.661818] EVTargetCurrent=17.7
|
||||
[2024-06-18 17:14:26.661818] EVRESSSOC=75
|
||||
[2024-06-18 17:14:26.745250] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:26.745250] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:26.866687] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:26.866687] EVTargetCurrent=18.900000000000002
|
||||
[2024-06-18 17:14:26.866687] EVRESSSOC=75
|
||||
[2024-06-18 17:14:27.012673] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:27.012673] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:27.136709] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:27.136709] EVTargetCurrent=20.5
|
||||
[2024-06-18 17:14:27.136709] EVRESSSOC=75
|
||||
[2024-06-18 17:14:27.338782] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:27.338782] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:27.461761] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:27.461761] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:27.461761] EVRESSSOC=75
|
||||
[2024-06-18 17:14:27.651776] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:27.651776] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:27.776444] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:27.776444] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:27.776444] EVRESSSOC=75
|
||||
[2024-06-18 17:14:27.895185] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:27.895185] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:28.016554] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:28.016554] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:28.016554] EVRESSSOC=75
|
||||
[2024-06-18 17:14:28.136858] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:28.136858] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:28.261662] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:28.261662] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:28.261662] EVRESSSOC=75
|
||||
[2024-06-18 17:14:28.441197] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:28.441197] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:28.561572] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:28.561572] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:28.561572] EVRESSSOC=75
|
||||
[2024-06-18 17:14:28.659290] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:28.659290] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:28.781546] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:28.781546] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:28.781546] EVRESSSOC=75
|
||||
[2024-06-18 17:14:28.950067] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:28.950067] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:29.071725] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:29.071725] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:29.071725] EVRESSSOC=75
|
||||
[2024-06-18 17:14:29.168810] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:29.168810] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:29.291800] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:29.291800] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:29.291800] EVRESSSOC=75
|
||||
[2024-06-18 17:14:29.383359] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:29.383359] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:29.506437] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:29.506437] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:29.506437] EVRESSSOC=75
|
||||
[2024-06-18 17:14:29.620468] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:29.620468] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:29.741490] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:29.741490] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:29.741490] EVRESSSOC=75
|
||||
[2024-06-18 17:14:29.887494] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:29.887494] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:30.011617] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:30.011617] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:30.011617] EVRESSSOC=75
|
||||
[2024-06-18 17:14:30.098360] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:30.098360] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:30.221524] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:30.221524] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:30.221524] EVRESSSOC=75
|
||||
[2024-06-18 17:14:30.342793] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:30.342793] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:30.466283] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:30.466283] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:30.466283] EVRESSSOC=75
|
||||
[2024-06-18 17:14:30.581962] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:30.581962] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:30.706214] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:30.706214] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:30.706214] EVRESSSOC=75
|
||||
[2024-06-18 17:14:30.851591] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:30.851591] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:30.976129] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:30.976129] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:30.976129] EVRESSSOC=75
|
||||
[2024-06-18 17:14:31.072314] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:31.072314] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:31.196237] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:31.196237] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:31.196237] EVRESSSOC=75
|
||||
[2024-06-18 17:14:31.319436] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:31.319436] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:31.441438] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:31.441438] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:31.441438] EVRESSSOC=75
|
||||
[2024-06-18 17:14:31.539860] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:31.539860] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:31.661200] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:31.661200] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:31.661200] EVRESSSOC=75
|
||||
[2024-06-18 17:14:31.760513] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:31.760513] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:31.881515] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:31.881515] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:31.881515] EVRESSSOC=75
|
||||
[2024-06-18 17:14:31.942770] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:31.942770] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:32.065982] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:32.065982] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:32.065982] EVRESSSOC=75
|
||||
[2024-06-18 17:14:32.158306] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:32.158306] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:32.286136] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:32.286136] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:32.286136] EVRESSSOC=75
|
||||
[2024-06-18 17:14:32.403503] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:32.403503] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:32.525923] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:32.525923] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:32.525923] EVRESSSOC=75
|
||||
[2024-06-18 17:14:32.677904] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:32.677904] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:32.801107] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:32.801107] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:32.801107] EVRESSSOC=75
|
||||
[2024-06-18 17:14:32.893899] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:32.893899] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:33.015876] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:33.015876] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:33.015876] EVRESSSOC=75
|
||||
[2024-06-18 17:14:33.114085] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:33.114085] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:33.235904] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:33.235904] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:33.235904] EVRESSSOC=75
|
||||
[2024-06-18 17:14:33.388206] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:33.388206] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:33.511227] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:33.511227] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:33.511227] EVRESSSOC=75
|
||||
[2024-06-18 17:14:33.623068] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:33.623068] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:33.745821] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:33.745821] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:33.745821] EVRESSSOC=75
|
||||
[2024-06-18 17:14:33.893476] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:33.893476] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:34.015855] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:34.015855] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:34.015855] EVRESSSOC=75
|
||||
[2024-06-18 17:14:34.178544] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:34.178544] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:34.300951] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:34.300951] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:34.300951] EVRESSSOC=75
|
||||
[2024-06-18 17:14:34.397334] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:34.397334] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:34.520926] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:34.520926] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:34.520926] EVRESSSOC=75
|
||||
[2024-06-18 17:14:34.620152] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:34.620152] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:34.745926] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:34.745926] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:34.745926] EVRESSSOC=75
|
||||
[2024-06-18 17:14:34.846624] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:34.846624] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:34.971590] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:34.971590] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:34.971590] EVRESSSOC=75
|
||||
[2024-06-18 17:14:35.134990] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:35.134990] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:35.255758] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:35.255758] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:35.255758] EVRESSSOC=75
|
||||
[2024-06-18 17:14:35.415540] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:35.415540] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:35.540859] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:35.540859] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:35.540859] EVRESSSOC=75
|
||||
[2024-06-18 17:14:35.629452] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:35.629452] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:35.750865] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:35.750865] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:35.750865] EVRESSSOC=75
|
||||
[2024-06-18 17:14:35.914169] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:35.914169] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:36.035667] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:36.035667] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:36.035667] EVRESSSOC=75
|
||||
[2024-06-18 17:14:36.140720] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:36.140720] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:36.265523] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:36.265523] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:36.265523] EVRESSSOC=75
|
||||
[2024-06-18 17:14:36.425696] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:36.425696] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:36.550712] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:36.550712] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:36.550712] EVRESSSOC=75
|
||||
[2024-06-18 17:14:36.665178] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:36.665178] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:36.785625] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:36.785625] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:36.785625] EVRESSSOC=75
|
||||
[2024-06-18 17:14:36.955121] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:36.955121] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:37.075509] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:37.075509] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:37.075509] EVRESSSOC=75
|
||||
[2024-06-18 17:14:37.201588] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:37.201588] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:37.325606] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:37.325606] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:37.325606] EVRESSSOC=75
|
||||
[2024-06-18 17:14:37.473631] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:37.473631] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:37.595555] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:37.595555] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:37.595555] EVRESSSOC=75
|
||||
[2024-06-18 17:14:37.758062] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:37.758062] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:37.880915] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:37.880915] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:37.880915] EVRESSSOC=75
|
||||
[2024-06-18 17:14:38.041445] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:38.041445] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:38.165349] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:38.165349] EVTargetCurrent=22.200000000000003
|
||||
[2024-06-18 17:14:38.165349] EVRESSSOC=75
|
||||
[2024-06-18 17:14:38.330859] EVSEPresentVoltage=452.0
|
||||
[2024-06-18 17:14:38.330859] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:38.455360] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:38.455360] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:38.455360] EVRESSSOC=75
|
||||
[2024-06-18 17:14:38.580951] EVSEPresentVoltage=451.0
|
||||
[2024-06-18 17:14:38.580951] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:38.705420] EVTargetVoltage=450.0
|
||||
[2024-06-18 17:14:38.705420] EVTargetCurrent=22.1
|
||||
[2024-06-18 17:14:38.705420] EVRESSSOC=75
|
||||
[2024-06-18 17:14:38.875903] EVSEPresentVoltage=450.0
|
||||
[2024-06-18 17:14:38.875903] EVSEPresentCurrent=1.0
|
||||
[2024-06-18 17:14:39.095294] EVRESSSOC=75
|
||||
[2024-06-18 17:14:39.169811] EVSEPresentVoltage=362.0
|
||||
[2024-06-18 17:14:39.390259] EVRESSSOC=75
|
||||
[2024-06-18 17:14:39.460727] EVSEPresentVoltage=290.0
|
|
@ -79,7 +79,8 @@ ip addr >> "$logfile"
|
|||
pwd >> "$logfile"
|
||||
|
||||
# call the pyPlc python script
|
||||
PYTHONUNBUFFERED=1 /usr/bin/python3 pevNoGui.py | tee -a "$logfile"
|
||||
#PYTHONUNBUFFERED=1 /usr/bin/python3 pevNoGui.py | tee -a "$logfile"
|
||||
PYTHONUNBUFFERED=1 /usr/bin/python3 listenerNoGui.py | tee -a "$logfile"
|
||||
pwd >> "$logfile"
|
||||
date >> "$logfile"
|
||||
|
||||
|
|
Loading…
Reference in a new issue