MQTT е интернет протокол со централен брокер за пораки. Со овој брокер за пораки, учесниците можат да се претплатат на одредени „теми“ и да испраќаат пораки на теми. CFos Charging Manager може да слуша пораки за одредени теми и затоа може да се контролира преку MQTT. Може да го пренесе и статусот на уредите со кои управува. CFos Power Brain Wallbox може да се контролира и преку MQTT и да го пренесува својот статус. Ова е корисно кога се поврзувате со систем за домашна автоматизација, за индустриска контрола (M2M) и за следење и снимање. Сите теми започнуваат со cfos_mqtt
. Ако сакате да поврзете неколку cFos MQTT уреди со MQTT брокер, темата може опционално да започне со cfos_mqtt_<Seriennummer>/
, прилагодлив според конфигурацијата. Во конфигурацијата можете да наведете и URL за стандардниот брокер MQTT. УРЛ-адресите може опционално да започнуваат со mqtt://
и mqtts://
. Со mqtts://
cFos Charging Manager или cFos Power Brain Wallbox воспоставува TLS врска. Се користат стандардните порти 1883 за нешифрирани врски и 8883 за TLS конекции. Сепак, можете исто така да наведете порта во URL-то. Можете да ги внесете корисничкото име и лозинката во вообичаената нотација на URL, на пр mqtt://user:password@192.168.2.111
. Ако наведете MQTT брокер во конфигурацијата на cFos Charging Manager, можете или да одредите индивидуален брокер или едноставно да напишете mqtt
. Потоа се користи стандардниот брокер зачуван во конфигурацијата.
CFos Charging Manager поддржува и MQTT 3.1.1 и MQTT 5. Ако ја стартувате URL-то со mqtt3:// или mqtt5:// (mqtts3:// и mqtts5:// за шифрирана врска), вие ја одредувате верзијата на протоколот . Стандардно е MQTT 3.1.1. Со MQTT 5, cFos Charging Manager се обидува да се врати на MQTT 3.1.1 доколку има соодветна порака за грешка. Ова функционира со постари брокери на Mosquitto, но не мора и со други брокери.
Забелешка: Бидејќи поставувањето на MQTT бара административна лозинка, менаџерот за полнење соодветно се справува со податоците. Значи намерно се испраќаат податоци до кои може да се пристапи само со административна лозинка.
Забелешка за MQTT брокерите: Благодарение на Stefan G. (#diebestenuserderwelt) можевме да тестираме против брокерот MQTT вграден во ioBroker. Овој брокер MQTT 3.1.1 (од февруари 2023 година) не се однесува во согласност со стандардот во неколку аспекти: Обидите за поврзување се тивко прекинати без порака за грешка, товарот понекогаш недостасува во PUBLISH пакетите, PUBLISH пакетите очигледно се испраќаат двапати (дали ова може да се направи со исклучување на конфигурацијата?). Затоа, овој брокер не е соодветен за контролирање на API-то на Charging Manager, бидејќи барањата за API може да се извршуваат повеќе пати. Иако сме заинтересирани нашата имплементација на MQTT да биде компатибилна со што е можно повеќе брокери, во моментов препорачуваме користење на Mosquitto за ioBroker.
Наместо да ги снабдуваат овие уреди преку HTTP (видете HTTP API -> HTTP бројачи и Wallboxes), овие уреди можат да слушаат и MQTT. Внесете mqtt
или URL на брокерот MQTT како адреса на уредот. Соодветниот метар или ѕидното сандаче потоа ја слуша темата cfos_mqtt/set/<Geräte-ID>
, на пр. за метар со ID на уредот M1 до cfos_mqtt/set/M1
. Потоа, бројачот за влез на HTTP очекува JSON низа како порака, како што е опишано во HTTP API под „HTTP Counters and Wallboxes“. Затоа, вашиот MQTT извор мора да ги испорача податоците во овој формат. Може да интегрирате уреди што CFos Charging Manager не ги поддржува така што ќе ги добиете податоците од друг извор (на пр. систем за домашна автоматизација) и потоа ќе ги внесете во Управникот за полнење.
Забелешка: ако изворните податоци се во различен формат од оној што очекува бројачот на HTTP, можете да креирате и приспособен бројач. За MQTT ова е опишано подолу.
Пример:
Создадовте бројач за влез HTTP и има M3 како ID на уред. Како адреса што ја дадовте адресата на брокерот Mosquitto, на пр. mqtt://. Ако ја внесете следнава команда на командната линија на компјутерот што работи на Mosquitto:mosquitto_pub -h localhost -t cfos_mqtt/set/M3 -m '{ "model": "TestModell", "import_wh": 12345, "export_wh": 23456, "voltage": [231, 232, 233], "current": [10001, 10002, 10003] }'
тогаш бројачот треба да ги содржи горенаведените вредности.
Во конфигурацијата на Управникот за полнење, можете да наведете URL на брокерот MQTT (или mqtt за стандарден брокер), според кој Управникот за полнење потоа го објавува статусот на сите уреди под темата cfos_mqtt/get/dev_info
. Го пренесува ова во формат познат од HTTP get_dev_info. Ова ви ги дава сите вредности на уредите како што се видливи во интерфејсот, на пример, вредностите на изведбата на мерачите или статусот на ѕидните кутии. Ако сакате да се претплатите само на поединечни уреди, можете да го деактивирате полето за избор „Објави информации за MQTT“ и наместо тоа да ја проверите опцијата „Објави информации за MQTT“ во поставките за поединечните уреди под „Екран“. Соодветната JSON низа за соодветниот уред потоа се објавува под темата cfos_mqtt/get/<ID на уред>. Можете исто така да се претплатите на сите глобални вредности под темата cfos_mqtt/get/params
, бидејќи тие се емитуваат во формат познат како HTTP get_dev_info под „params“.
Во конфигурацијата на cFos Charging Manager можете да наведете URL на брокер MQTT (или mqtt за стандарден брокер) под „Брокер за пристап до API преку MQTT“. Ако оваа вредност не е празна, cFos Charging Manager се претплати на сите теми што започнуваат со cfos_mqtt/api/ . Потоа ги толкува пораките под таква тема како името на темата да е HTTP URL што завршува со /cnf? го започнува и го препраќа до HTTP API. Управникот за полнење потоа го објавува одговорот на HTTP API како JSON под темата cfos_mqtt/api_res. Го имате речиси целиот HTTP API под ваша контрола преку MQTT. Исклучоци се повиците на API кои враќаат долги JSON одговори. Пример: cfos_mqtt/api/cmd=set_cm_vars&name=x&val=1
ја користи функцијата API set_cm_var за да ја постави променливата Charging Manager x на 1. Има порака под cfos_mqtt/api/cmd=enter_rfid&rfid=5678&dev_id=E1
Внесете го RFID 5678 за Wallbox со ID на уредот E1 (видете ги и нашите продолжени RFID функции).
Во пораката под темата можете да ставите податоци кои се пренесуваат преку HTTP POST.
Пример: Периодично менување на максималната вкупна струја достапна за Управникот за полнење:
Внесете го вашиот брокер во општите поставки на Управникот за наплата под „Брокер за пристап до API преку MQTT“ (или едноставно mqtt ако треба да се користи стандардниот брокер зачуван во „Конфигурација“). Потоа објави на темата користејќи MQTT
cfos_mqtt/api/cmd=set_params
JSON објект со следнава содржина:
{"max_total_cur_prc": p}
каде што p е процент од претходно поставената максимална вкупна струја што треба да се земе.
Забелешка: Некои од повиците на HTTP API резултираат со тоа што Управникот за полнење ја зачувува конфигурацијата. Ако ги користите премногу често, блицот (во cFos Power Brain или cFos Wallbox Booster) или SD-картичката во Raspberry ќе се истрошат. Повикот на API „set_params“ со индивидуалниот параметар „max_total_cur_prc“ затоа не води до зачувување на параметрите.
Ако cFos Charging Manager не е во режим „управување со оптоварување“, туку во режим „мониторинг“, можете сами да ја преземете контролата врз сите ѕидни кутии користејќи MQTT. Ова особено се однесува на ѕидните кутии cFos Power Brain кои се користат како робови во режимот „Набљудувај“. За да го направите ова, мора да ја штиклирате опцијата „Активирај ја контролата на ѕидното сандаче“ под MQTT во поставките на менаџерот за полнење. Потоа, cFos Charging Manager ја слуша темата MQTT cfos_mqtt/ctl
и очекува пораки со JSON објект. Овој објект има под-објекти како својства со ID на уредот како име. Под-објектите изгледаат вака: {"cur": c, "ena": b, "wke": b, "phs": p}, каде што c е струјата на полнење во mA, а b може да биде точно или неточно . „ena“: false го деактивира полнењето на wallbox, „wke“: true се обидува да испрати команда „auto wake up“ до wallbox (во моментов е можно само со cFos Power Brain wallboxes). p може да биде 1 или 3 за да се префрлате помеѓу 1-фазното и 3-фазното полнење. Можете исто така да ги испуштите „cur“, „ena“, „wke“ и „phs“ за да извршувате само одредени контролни функции. Пример:{"E1":
{cur: 8000, ena: true, wke: true},
"E2":
{cur: 10000, phs: 3}}
Ја поставува струјата на полнење на ѕидното сандаче со ID на уредот на 8А, го активира полнењето и се обидува да го разбуди автомобилот. Понатаму, струјата за полнење за Wallbox E2 е поставена на 10А и е префрлена на 3-фазно полнење.
Може да наведете URL на брокер MQTT за пренос на записи во дневникот во системскиот дневник под „Конфигурација“. Потоа, cFos Charging Manager ги објавува сите записи во дневникот под темата cfos_mqtt/log
. Ова ви овозможува далечински да ги оценувате дневниците за да го следите Управникот за полнење. Можете исто така да наведете URL на брокерот MQTT за записи во дневникот на трансакции под „Конфигурација“. Потоа сите трансакции на вчитување се испраќаат под темата cfos_mqtt/ta_log
. Ова овозможува далечински да се проценат фактурните трансакции за наплатата и да се креираат резервни копии од трансакциите за наплата на друг систем. Трансакцијата за полнење започнува кога конекторот за полнење е приклучен и завршува кога ќе се исклучи.
Можете да креирате сопствени бројачи користејќи rtype=2 за MQTT. Овие бројачи се дефинирани слично на бројачите на HTTP (rtype = 1). Сепак, адресите овде не се HTTP URL, туку MQTT теми. Пример:"power_w": {
"address": "/test_topic3",
"type": "float",
"query": "power_w"
}
Овде бројачот дефиниран од корисникот се претплати на темата /test_topic3 и очекува JSON објект со својство „power_w“, односно {„power_w“: 1234}. Различните бројач-променливи може да имаат различни теми и ќе се ажурираат веднаш штом ќе се објави порака под соодветната тема.