사용자 정의 카운터

참고: cFos 충전 관리자는 SunSpec(장치 유형 "SunSpec 태양광 인버터 / 미터")을 사용하여 대부분의 태양광 인버터를 읽을 수 있습니다. 이 경우 고유한 카운터 정의를 만들 필요가 없습니다.

cFos Charging Manager를 사용하면 표준 레퍼토리에 없는 계량기를 지원하기 위해 고유한 계량기 정의를 생성할 수 있습니다. 현재 Modbus 카운터와 HTTP/JSON 카운터의 두 가지 유형이 있습니다. 이러한 카운터에 대한 정의 파일은 매우 유사합니다. Modbus 카운터는 특정 레지스터에서 Modbus를 통해 데이터를 읽는 반면 HTTP/JSON 카운터는 HTTP 요청을 통해 데이터를 가져오고 JSON을 응답으로 구문 분석합니다. cFos 충전 관리자는 구문 분석을 위해 작은 "쿼리 언어"를 사용합니다.

전류 및 전압과 같은 미리 정의된 여러 변수 외에도 사용자 정의 미터는 알려지지 않은 사용자 정의 변수, 쿼리 입력 및 설정 출력도 읽을 수 있습니다. 변수를 읽고 출력을 설정하면 공식을 평가할 수 있습니다. 아래에 설명된 충전 관리자 변수 및 전역 충전 관리자 출력과 함께 이것은 강력한 기능이며 특정 홈 자동화 작업과 배터리 저장 장치와 같은 외부 장치 제어를 허용합니다. 이를 통해 제어 작업을 구현하는 경우 피드백을 보내주십시오. 우리는 사람들이 cFos Charging Manager로 무엇을 제어하는지에 매우 관심이 있으며 이는 우리가 고객 요구에 따라 Charging Manager를 더 개발하는 데 도움이 됩니다.

다음은 Modbus 및 HTTP/JSON에 대한 정의의 예입니다.
Modbus 미터에 대한 샘플 정의 다운로드
/JSON 미터에 대한 샘플 정의 다운로드

충전 관리자에는 이미 이러한 파일이 몇 개 포함되어 있지만 "시스템 구성"에서 자신의 파일을 업로드하고 다시 삭제할 수도 있습니다.
여기에서 당사가 제공하는 카운터 정의의 상당 부분을 찾을 수 있습니다.
제공된 카운터 정의 다운로드

자신의 카운터 파일을 만들었고 다른 사용자와 관련이있을 수있는 경우이를 사용할 수있게 해주시면 매우 감사하겠습니다. 그런 다음 향후 버전의 충전 관리자와 함께 제공 할 것입니다.

더 많은 카운터에 대한 카운터 정의 다운로드

정의 파일의 구조:

카운터 정의는 속성 및 하위 개체가 있는 전역 JSON 개체가 있는 JSON 파일입니다. 'rtype'은 읽기 작업 유형을 결정합니다. 0 = Modbus, 1 = HTTP/JSON. 0x 접두사를 사용하여 10진수 또는 16진수로 숫자를 지정할 수 있습니다. 또한 // 를 사용한 한 줄 주석도 허용됩니다. JSON5 유효성 검사기(예: 이 JSON5 유효성 검사기)를 통해 정의 파일을 실행하는 것이 좋습니다.

다음 참조의 수식에 어떤 값을 사용할 수 있는지 이해하려면 수식 장을 반드시 읽으십시오.

Modbus 정의에는 다음 속성을 가진 'rtu' 개체가 있습니다.

msec 단위의 silent_period. 장치가 메시지의 시작을 인식할 수 있도록 Modbus RTU 액세스 전에 일시 중지 길이를 결정합니다.
silent_same_slave, true: 동일한 장치에 여러 번 액세스하더라도 일시 중지가 유지됩니다.
retries: 장치가 응답하지 않는 경우의 재시도 횟수입니다.
rcv_timeout: 밀리초 단위. 장치가 응답할 때까지 액세스당 최대 대기 시간입니다.

다음 전역 속성은 Modbus TCP 및 RTU에 적용됩니다.

modbus_read: Modbus 읽기 명령의 기능 번호, 일반적으로 3 또는 4입니다.
modbus_read_max_registers: 한 번에 읽을 수 있는 최대 레지스터 수.
modbus_allow_gaps: true = 읽기 작업에서 사용되지 않는 레지스터 영역을 읽을 수 있습니다.

Modbus TCP 및 HTTP/JSON의 경우 다음 속성을 가진 'tcp' 개체가 있습니다.

connect_timeout: msec입니다. TCP 연결을 위한 최대 대기 시간.
delay_after_connect: 밀리초 단위. 첫 번째 명령을 보내기 전에 연결을 설정한 후 일시 중지합니다.

두 정의 유형(Modbus 및 HTTP/JSON)에는 다음 속성도 있습니다.

upd_delay: 밀리초 단위. 장치를 읽을 수 있는 간격을 결정합니다. 일부 장치는 너무 자주 폴링되면 과부하가 됩니다.
제조사: 문자열, 제조사명 이것은 타일의 확장 정보에 표시됩니다.
delay_accumulated: true = 3초마다 또는 전력이 충분할 때만 누적 값(kWh)을 쿼리합니다. false = 이 값은 항상 쿼리됩니다.
ui_addr: URL, 웹 인터페이스를 호출하기 위한 장치 주소와 다른 경우.
reserved: 0으로 해석되는 값이 있는 배열(기기가 모델에 따라 특정 값을 지원하는 경우 유용).

위에 나열된 속성을 생략하면 cFos 충전 관리자가 기본값을 사용하며 대부분의 경우 제대로 작동합니다.

JSON 정의의 다음 단계는 미터가 전류, 전압 등의 값을 읽거나 계산하는 데 사용하는 변수의 정의입니다. 충전 관리자는 다음 변수를 인식합니다.
type_designation, version, firmware_version, serial: 타일의 확장 정보에 표시된 대로 모델 지정을 형성합니다. 카운터를 설정하거나 재설정할 때 한 번 쿼리됩니다.
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3, power_w_l1_minus..power_w_l3_minus, power_w_import, power_w_export l3, power_w 및 power_va를 계산합니다. 모든 변수를 지정할 필요는 없습니다. cFos Charging Manager는 기존 변수에서 값을 계산하려고 합니다.
import_wh, export_wh, import_wh_l1..import_wh_l3, export_wh_l1..export_wh_l3: 충전 관리자는 이러한 변수를 사용하여 import_wh 및 export_wh를 계산합니다. 모든 변수를 지정할 필요는 없습니다. cFos Charging Manager는 기존 변수에서 값을 계산하려고 합니다.

또한 업데이트할 때마다 읽거나 공식을 사용하여 계산되는 다른 변수를 다른 이름으로 정의할 수 있습니다.

변수 정의:

개체는 위에 나열된 변수의 이름을 따서 명명되었으며 다음 속성을 가집니다.
fixed: 값이 고정된 문자열입니다. 예를 들어 type_designation 또는 전압에 대해 값을 결정할 수 없는 경우에 유용합니다.
expr: 문자열, 변수를 읽지 않고 수식으로 평가합니다.
type: fixed 또는 expr이 아닌 경우 변수의 유형: int16, int32, float, int64, string 이것은 Modbus가 올바른 형식으로 레지스터를 읽는 데 중요합니다. JSON/HTTP를 사용하면 대부분 float를 사용할 수 있습니다.
resolution: float, 읽은 값에 '해상도'를 곱합니다. 전압 값은 볼트 단위, 전류 단위는 밀리암페어, 전력 단위는 와트, 에너지 단위는 와트시(Wh)여야 합니다. 음수 '해상도'를 사용하면 반대 부호가 있는 경우 값을 반전할 수 있습니다.
address: 숫자(Modbus) 또는 문자열(HTTP/JSON), Modbus 레지스터 번호 또는 읽을 값의 HTTP URL.
query: JSON 응답에서 읽을 값을 찾는 충전 관리자의 쿼리 언어로 된 HTTP JSON 사양이 있는 문자열입니다.
order: 문자열, Modbus의 경우 값이 있는 "hl" 또는 "lh"의 바이트 순서입니다. length: 숫자, Modbus가 있는 레지스터의 문자열 길이. 'version' 및 'firmware_version' 변수의 경우 'length'는 숫자 버전에서 점이 있는 문자열을 만드는 데 사용됩니다. 2 또는 4의 값이 '길이'에 허용되며, 그 결과 버전 형식 ab 및 abcd가 됩니다. '길이' 2 및 'int16' 유형을 사용하여 충전 관리자는 점으로 하위 바이트와 상위 바이트를 구분하고, int32 하위 및 상위 워드는 'int64' 하위 및 상위 dword로 구분합니다. 'lenth' 4 및 'int32'를 사용하여 과금 관리자는 값을 점으로 구분된 4바이트로 분할합니다. 그에 따라 'int64'로 4 단어.

입력의 정의:

충전 관리자는 장치당 다른 레지스터 또는 JSON 요소에서 최대 32개의 입력 값을 쿼리할 수 있습니다. "Inputs" 속성은 JSON 배열입니다. 각 입력에 대해 다음 속성을 정의해야 합니다.
address: 주소(Modbus 레지스터 또는 URL).
count: 이 요청으로 읽은 입력 비트 수.
query: HTTP/JSON의 경우 쿼리 언어를 사용하여 응답에서 값을 찾습니다.

업데이트할 때마다 cFos 충전 관리자는 이러한 방식으로 정의된 모든 입력을 읽고 입력1..InputN 공식에서 쿼리할 수 있는 배열에 비트를 내부적으로 배치합니다.

출력 정의:

충전 관리자는 장치당 최대 32개의 출력을 전환할 수 있습니다. 각 출력의 상태가 변경된 경우 각 업데이트 주기가 끝날 때 모든 출력이 전환됩니다.
각 입력에 대해 다음 속성을 정의해야 합니다.
address: 선택적 HTTP 메소드가 있는 HTTP URL(예://http://www.example.com?output1=${var1}). Modbus 레지스터를 설정하려면 cFos Charging Manager HTTP API를 사용할 수 있습니다. 과금 관리자는 localhost에 대한 적절한 액세스를 인식하고 외부 HTTP API 액세스와 같이 승인이 필요하지 않도록 요청을 내부 핸들러로 리디렉션합니다.
body: POST 또는 PUT에 대한 선택적 HTTP 본문입니다.
URL 및 본문에서 글로벌 충전 관리자 변수를 참조하는 ${expr} 공식을 사용하거나 해당 측정기에서 사용할 수 있습니다. 'expr' 공식은 출력이 설정되고 URL 또는 본문의 텍스트로 대체될 때 평가됩니다. 위의 예에서 http://www.example.com?output1=1이 출력을 설정하고//이 출력을 지우면 '//' 변수를 정의하고 설정할 수 있습니다. 원하는 대로 1로 설정하거나 0으로 설정합니다. 이런 식으로 수식을 사용하여 이전에 변수에 저장한 Modbus 레지스터에 메모리 성능을 제어하기 위한 숫자 값을 쓸 수도 있습니다.
URL에 숫자 값을 전달하는 대신 Shelly WLAN 소켓과 같이 공식에 따라 텍스트를 다른 텍스트로 바꿔야 하는 경우 ${if expr`text1`text2}와 같이 작성할 수 있습니다. "아포스트로피"는 백틱(ASCII 코드 96)입니다. 'expr' != 0이면 text1이 사용되고 그렇지 않으면 text2가 사용됩니다. Shelly WLAN 소켓의 URL은 다음과 같습니다. 예: http://<ip-addr>/relay/0?turn=${if expr`on`off}, 즉 if expr != 0이면 충전 관리자 http ://<ip-addr>/relay/0?turn=on을 호출합니다. 그렇지 않으면 http://<ip-addr>/relay/0?turn=off를 호출합니다.

URL로 상대 경로를 입력하면 충전 관리자가 해당 장치에 대해 구성된 주소를 사용합니다. 도메인으로 'localhost'를 입력하면 충전 관리자가 실행 중인 장치의 주소를 가져옵니다. 자체 API에 대한 액세스를 감지하면 전체 HTTP 액세스를 실행하는 대신 내부 핸들러를 사용하므로 미터 정의에 사용자 이름과 비밀번호를 저장할 필요가 없습니다. * 로 시작하는 URL은 충전 관리자가 항상 전체 HTTP 액세스를 수행하도록 합니다.

쿼리 언어의 정의:

현재 "쿼리" 검색 표현식에서 멤버 이름과 연산자 "."를 사용할 수 있습니다. 및 "[]"가 사용됩니다. 예:

테스트"test"라는 요소
name1.name2하위 개체 "name1"의 "name2"요소
이름 [idx]개체 요소 "이름"의 요소 "idx". "idx"는 숫자일 수 있습니다(예: 배열 또는 문자열의 경우).
이름 ["u2"]개체 요소 "name"의 요소 "u2"는 "name.u2"에 해당합니다.
이름[{"el1": "v1", "el2": 3}].값객체 표기 조건을 만족하는 배열 요소를 선택하고 '값'이라는 요소를 평가합니다. 예를 들어, 요소는 값이 'v1'인 개체 요소 'el1'과 값 3이 있는 'el2'가 있는 'name' 배열에서 선택되고 이 개체에서 요소 'value'의 값이 반환됩니다. .

글로벌 충전 관리자 변수:

Charge Manager 구성에서 변수를 생성할 수 있습니다. 고정 값 또는 수식을 값으로 사용할 수 있습니다. 각 업데이트 주기가 끝날 때 과금 관리자는 필요한 경우 이 변수의 값을 다시 계산합니다. 그런 다음 (특정) 과금 관리자 매개변수, 과금 규칙 또는 출력을 제어하는 데 사용할 수 있습니다. E x.member 또는 M x.member를 변수로 작성할 수도 있습니다. 여기서 E x 및 M x는 충전 관리자에서 설정한 월 박스 또는 계량기의 장치 ID입니다. 구성원은 해당 장치에 저장된 "사용자 정의" 변수입니다. 일부 변수는 특별한 의미를 가질 수 있습니다. KEBA의 경우 "out1"은 스위칭 출력이고 ABB B23 미터의 경우 "out1" 및 "out2"는 스위칭 출력입니다(이를 지원하는 모델의 경우). A 1은 출력을 전환하고, 0은 출력을 다시 끕니다.

글로벌 충전 관리자 출력:

Charge Manager 구성에서 위의 'Outputs' 아래 미터 정의에 설명된 대로 전역 출력을 구성할 수 있습니다. 상태가 변경된 경우 각 업데이트 주기가 끝날 때 설정됩니다. 사용자 정의 장치에서 스위칭 출력을 제어하려면 위의 규칙을 권장합니다(Charging Manager 변수 참조): 사용자 정의 미터에서 "out1", "out2" 등의 이름으로 변수를 설정하고 설정합니다. 이 변수의 값에 따라 출력을 전환합니다.

충전 관리자의 글로벌 Modbus API:

충전 관리자의 Modbus API는 Modbus RTU 또는 TCP 주소(충전 관리자가 연결할 수 있음)가 있는 Modbus 장치를 제어하는 데 사용됩니다. 개별 장치의 구성에서와 같이 COMx,bd,8,p,s를 Modbus RTU의 주소로 입력하십시오. 여기서 x는 COM 포트 번호, bd는 전송 속도, p는 패리티('N', ' E' 또는 'O') 및 s는 정지 비트 수(1 또는 2)입니다. Modbus TCP에서 주소는 포트 번호를 포함하는 충전 관리자 네트워크에 있는 장치의 IP 주소입니다.
Modbus API의 URL(HTTP GET용)은 다음과 같습니다.
/cnf?cmd=modbus_get 또는 /cnf?cmd=modbus_set
cFos Charge Manager는 다음과 같은 추가 쿼리 매개변수를 지원합니다.
addr: 위의 Modbus RTU 또는 TCP 장치 주소입니다.
func: Modbus 기능 번호(예: 읽기의 경우 3 또는 4, 쓰기의 경우 6 또는 16).
id: Modbus 장치의 장치 ID입니다.
reg: Modbus 레지스터 번호입니다. 값은 10진수 또는 16진수(접두사 0x 포함)로 지정할 수 있습니다.
val: 숫자, 레지스터에 쓸 값. 읽는 동안 생략.
유형: 'w' 16비트(기본값), d = 32비트, f = 부동 소수점, q = 64비트, s = 문자열.
cnt: 숫자, 레지스터에 있는 문자열의 최대 길이, 다른 유형의 경우 생략하거나 1로 설정합니다.
order: "hl" 또는 "lh"의 바이트 순서를 포함하는 문자열입니다.

참고: '측정기'가 주로 제어 목적으로 사용되는 경우 이 타일의 설정에서 '장치 숨기기' 옵션을 선택하여 이 장치가 시작 페이지에 나타나지 않도록 할 수 있습니다.

참고: HTTP를 통해 읽는 일부 미터는 인증으로 사용자 이름/비밀번호 가 필요합니다. HTTP 액세스 주소에 이를 지정할 수 있습니다(예 http://username:password@192.168.2.111). 사용자 이름이나 암호에 "@"가 포함되어 있으면 "%40"으로 바꿔야 합니다.