Celem niniejszego artykułu jest zaprezentowanie przykładu integracji stacji ładowania z Systemem Grenton Smart Home z wykorzystaniem protokołu komunikacyjnego Modbus RTU.
Stacja ładowania, która została użyta w tym przykładzie to ładowarka Friendly Innovation.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128583139original4HkXiFtZ7Jw3dqMgmFMkvBNpWA5ZhBQOYg-1.png)
Integracja ta pozwala nam na:
- Podgląd stanu ładowania
- Podgląd czasu ładowania
- Ustawienie maksymalnego prądu ładowania w zależności od przyłącza sieci
- Podgląd oraz zmianę wartości prądu ładowania samochodu. Interfejs zabezpiecza przed ustawieniem prądu powyżej prądu dopuszczalnego przez kabel ładowania oraz maksymalnego prądu ładowania
- Wybór, czy po podłączeniu samochodu do ładowania trzeba dodatkowo autoryzować ładowanie z poziomu interfejsu myGrenton - co pozwala właścicielowi ładowarki na kontrolę nad urządzaniem
- Wyłączenie ładowania, a w przypadku gdy mamy załączoną opcję autoryzacji ładowania, włączenie ładowania
- Włączenie oraz wyłączenie trybu ładowania ekonomicznego
- Podgląd oraz ustawienie godziny początku oraz końca ładowania ekonomicznego
- Ustawienie czasu uśpienia ekranu ładowarki
- Powiadomienie na telefon o zakończeniu ładowania
Do zrealizowania poniższego przykładu potrzebujemy:
- CLU Z-Wave
- Gate Modbus
- Stacja ładowania Friendly Innovation
1. Podłączanie ładowarki do modułu GATE MODBUS
Z zacisków ładowarki Friendly Innovation podpinamy dwa przewody do modułu Gate Modbus odpowiednio do złącz A oraz B.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35124133494originalxlOcp9dqzdyOvY0Sa0BtLgmlfey6jRDvdw-1.png)
2. Konfiguracja CLU GATE MODBUS
Nazwę modułu Gate Modbus najlepiej ustawić tak jak w przykładzie, czyli Modbus_Gate. W innym przypadku będzie trzeba we wszystkich skryptach zmieniać nazwę modułu.
2.1. Tworzenie cech użytkownika
Na module Gate Modbus tworzymy cechy użytkownika:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35127466173originalouRzqDsgPB7IvGVZwuV_QKVDD83nAkuR5g-1.png)
Gdy ładowarka ma więcej niż jedno gniazdo, tworzymy dodatkowy zestaw cech użytkownika dla każdego gniazda.
Przykład dla gniazda drugiego:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35127471120originalMTpcR4tFK-FTj_eX1MUuoHzaP7jJaUzjcg-1.png)
Gdy ładowarka posiada więcej niż jedno gniazdo, w wartości początkowej cechy EV_numbers wpisujemy po przecinku numery wszystkich gniazd.
Przykład dla ładowarki z dwoma gniazdami:
2.2. Tworzenie skryptów
- Tworzymy skrypt o nazwie EVSE_modbus, a następnie wklejamy do niego zawartość załącznika EVSE_modbus_Friendly_Innovation-Grenton.lua.
- Tworzymy skrypt o nazwie EVSE_lib, a następnie wklejamy do niego zawartość załącznika EVSE_lib_Friendly_Innovation-Grenton.lua.
Dla tego skryptu dodajemy dwa parametry:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35124145527originaltMlfKv8YQ7RN8EOftK7mH4P8KlvZGKkZZw-1.png)
W skrypcie EVSE_lib od komentujemy aktywne gniazda.
Przykład dla stacji posiadającej tylko jedno gniazdo:
------------------------------------------------------------------
-- register active socket - USER EDIT SECTION
--
Evse[48] = evse_48
-- Evse[49] = evse_49
-- Evse[50] = evse_50
-- Evse[51] = evse_51
--
-- end USER EDIT SECTION
-----------------------------------------------------------------
Przykład dla stacji posiadającej dwa gniazda:
------------------------------------------------------------------
-- register active socket - USER EDIT SECTION
--
Evse[48] = evse_48
Evse[49] = evse_49
-- Evse[50] = evse_50
-- Evse[51] = evse_51
--
-- end USER EDIT SECTION
-----------------------------------------------------------------
- Tworzymy skrypt o nazwie EVSE_48, da następnie wklejamy do niego zawartość załącznika EVSE_48_Friendly_Innovation-Grenton.lua. W przypadku gdy stacja posiada więcej gniazd, dla każdego gniazda analogicznie tworzymy skrypt o nazwie EVSE_49, EVSE 50, EVSE_51. Przygotowane skrypty dla gniazd 48 i 49 można pobrać na końcu instrukcji.
- Tworzymy skrypt o nazwie EVSE_OnInit, a następnie wpisujemy do niego wywołanie wcześniej stworzonych skryptów.
Przykład dla ładowarki posiadającej jedno gniazdo:
Modbus_Gate->EVSE_modbus()
Modbus_Gate->EVSE_48()
Modbus_Gate->EVSE_lib()
Przykład dla ładowarki posiadającej dwa gniazda:
Modbus_Gate->EVSE_modbus()
Modbus_Gate->EVSE_48()
Modbus_Gate->EVSE_49()
Modbus_Gate->EVSE_lib()
2.3. Przypisanie skryptów do zdarzenia OnInit modułu Gate
W zakładce Zdarzenia modułu Gate Modbus stworzony wcześniej skrypt EVSE_OnInit przypisujemy do zdarzenia OnInit modułu Gate Modbus:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128969271originalvtI2ceXk0-fAozjIIINUFNpYgmEcSRYjwQ-1.png)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128586933originalVwVxmaBpwwb832HFw5mdi-WX0OmO9ii0Wg-1.png)
2.4. Tworzenie obiektów wirtualnych Modbus
Przygotowujemy obiekt wirtualny Modbus.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128304458originalvIJUe59Mn2yNXKubObErUaegOwUxK8VdXA-1.png)
Obiekt o nazwie EVSE uzupełniamy jak poniżej.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128472104originaladVfjYCp258syIDxWZh881YFqlVi-5bHiQ-1.png)
W zakładce Zdarzenia przypisujemy wywołanie skryptów.
Do zdarzenia OnChange należy przypisać następujące wywołanie skryptu: Modbus_Gate->EVSE_lib("EVSE","OnChange")
Do zdarzenia OnError należy przypisać następujące wywołanie skryptu: Modbus_Gate->EVSE_lib("EVSE","OnError")
Przypisanie to wykonujemy w następujący sposób: Kliknąć na plus przy zdarzeniu, do którego chcemy przypisać skrypt, następnie kliknąć anuluj. W puste pole które się pojawiło przy nazwie zdarzenia wklejamy wywołanie skryptu z instrukcji.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128472708originalmLYLmfbdypXpNorn4OtWAwookEOCLbZ9jA-1.png)
Przygotowujemy kolejny obiekt wirtualny Modbus.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128474180originalY9oEeQuMp6PMPLojBwGu4uGPLrOR4-DAVg-1.png)
Obiekt o nazwie EVSE_status_48 uzupełniamy jak poniżej.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35125979469originaloUDEAfkFcdzYEmgqUFVj3Hjeo4rS4qsTEg-1.png)
W zakładce Zdarzenia przypisujemy wywołanie skryptu.
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128969484originalryBS-i6qD0Sptenq4Nb473ZwS50HzYrFmA-1.png)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128587276originaleC3cGNlQqTA0i5xJs2rF1XLe71TtBr1shQ-1.png)
W przypadku większej ilości gniazd analogicznie tworzymy obiekty wirtualne EVSE_Status_XX. Np. dla gniazda drugiego EVSE_status_49. Należy pamiętać aby w cechę wbudowaną DeviceAddress, oraz skrypt przypisany do zdarzenia, wpisać odpowiedni numer gniazda.
3. Konfigurcja CLU Z-Wave
Nazwę modułu CLU Z-Wave najlepiej ustawić tak jak w przykładzie, czyli CLU. W innym przypadku będzie trzeba we wszystkich skryptach zmieniać nazwę modułu.
3.1 Tworzenie obiektu wirtualnego Push
Przygotowujemy obiekt wirtualny Push:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128298656originalzrcqYcTniar0UPX1PmlcxwII7IGn0vX46w-1.png)
Obiekt o nazwie push_zakonczenie_ladowania uzupełniamy jak poniżej:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128587442original2NBYetHdgNnllS3g0b3UOLTn46nRiY2DtQ-1.png)
3.2. Tworzenie skryptu
Należy stworzyć skrypt o nazwie powiadomienie. Do skryptu w trybie tekstowym wklejamy następujący kod.
if Modbus_Gate->EV1_push == 1 then
if Modbus_Gate->EV1_charging_finish ==1 then
CLU->push_zakonczenie_ladowania->SetTitle("Gniazdo 48")
CLU->push_zakonczenie_ladowania->Send()
Modbus_Gate->EV1_charging_finish = 0
end
end
W przypadku większej ilości gniazd modyfikujemy skrypt powiadomienie.
Poniżej przykład dla dwóch gniazd.
if Modbus_Gate->EV1_push == 1 then
if Modbus_Gate->EV1_charging_finish ==1 then
CLU->push_zakonczenie_ladowania->SetTitle("Gniazdo 48")
CLU->push_zakonczenie_ladowania->Send()
Modbus_Gate->EV1_charging_finish = 0
end
end
if Modbus_Gate->EV2_push == 1 then
if Modbus_Gate->EV2_charging_finish ==1 then
CLU->push_zakonczenie_ladowania->SetTitle("Gniazdo 49")
CLU->push_zakonczenie_ladowania->Send()
Modbus_Gate->EV2_charging_finish = 0
end
end
3.3. Tworzenie obiektu wirtualnego Timer
Przygotowujemy obiekt wirtualny Timer:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128300824originalTBbD-_gbvzE2lNQ08SA6JqInZEQ7qfC8VQ-1.png)
Obiekt o nazwie timer_powiadomienie uzupełniamy jak poniżej:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128594245originaly6mo3aYvxx3AeqC0pNwVDNVwyQO9d-II9A-1.png)
Następnie do zdarzenia OnTimer przypisujemy skrypt powiadomienie:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128594205originalla3UjY3Le8NtmW7LXXkTvkh1RqyX8CpwdQ-1.png)
3.4. Przypisanie metody do zdarzenia OnInit modułu CLU
W zakładce Zdarzenia modułu CLU do zdarzenia OnInit przypisujemy metodę Start obiektu wirtualnego timer_powiadomienie:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128594311originalrMekdQ7wiwKL7D8AlzJqBgZdSKKZmyzEBA-1.png)
4. Wysyłanie konfiguracji do CLU oraz Gate
Przygotowaną wcześniej konfigurację wgrywamy do modułów CLU oraz Gate.
5. Tworzenie interfejsu myGrenton
Tworzymy interfejs myGrenton.
5.1. Tworzenie strony Ładowanie samochodu
W interfejsie tworzymy stronę o nazwie Ładowanie samochodu, a następnie dodajemy i konfigurujemy widżety jak na screenach poniżej.
Widżet - Typ: Value, Etykieta: Stan ładowania:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35129177841originalJEbM1NBYhaoHItZ22r6oS7-ONb5RFQBIfA-1.png)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126386610originalRRsvpJMG7vDjNXUtC9yjo7lcUQz2quw5_g-1.png)
Widżet - Typ: Value, Etykieta: Czas ładowania:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126386810originalZo80U9GGmjzRcYZVwAkTbqOEXKepS2b-0A-1.png)
Widżet - Typ: Value, Etykieta: Prąd ładowania:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126386878originalmCBjOLEcCq2LVbfUt7BNPmJDzvp2FZTELg-1.png)
Widżet - Typ: SCENE_DOUBLE, Etykieta: Prąd (A) -/ Prąd (A)+:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35129177879originaldsd-DsxWikAOygFO9F-ek0IbFMvPi_Amvw-1.png)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126386921originaltBYRAXB0B6KEYplWjuZrAKQmVGdF1N1Fmg-1.png)
Widżet - Typ: ON_OFF, Etykieta: Ładowanie Start/Stop:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126386997original7ADjrxtXbhNuTyuXLBCxsSoJQ1C0gXf5nw-1.png)
Widżet - Typ: ON_OFF, Etykieta: Powiadomienie koniec ładowania:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35129178061originalE4wKtotSxWm5COtLbTu4QcYFgOoSbXEjLg-1.png)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387051originaldHl-7VlcJbjtN9AjfS-OTGGXEh8nFWzL2w-1.png)
5.2. Tworzenie strony Ustawienia EVSE
Tworzymy stronę o nazwie UstawieniaEVSE, a następnie dodajemy i konfigurujemy widżety jak na screenach poniżej.
Widżet - Typ: VLAUE, Etykieta: MAX prąd ładowania:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387315originalukplX_Ratze1WAxZevQCyDxvexKwiSjEgg-1.png)
Widżet - Typ: SCENE_DOUBLE, Etykieta: Prąd (A)- Prąd(A)+:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387503originalfQPVU3RAvprsCtsUsbuK4f6HoqPUAeyFwA-1.png)
Widżet - Typ: ON_OFF, Etykieta: ECO(Użytkownik)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387576originalk6038GInilryxK79khBLbI-2Cvk-IFDPmw-1.png)
Widżet - Typ: HEADER, Etykieta: USTAWIENIA GODZIN ECO:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387667originalEa2IKWfx8-GxLm6BUTdUOWsW1NeY3HIjhA-1.png)
Widżet - Typ: VALUE, Etykieta: ECO start(godz:min):
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387753originalCLVQl-GTRREpBGwRkJQQ6JRA7OzMDxg7uQ-1.png)
Widżet - Typ: SCENE_DOUBLE, Etykieta: ECO godzina+ ECO minuta+
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126387848originalfmZM4eFJs1GkQGBpuZvnZiK0xuSOgId0vA-1.png)
Widżet - Typ: VALUE, Etykieta: ECO stop(godz:min)
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126388283originalyBo55FI9RSAnA2oZC5cg4R8QxLlU3QnRpA-1.png)
Widżet - Typ: SCENE_DOUBLE, Etykieta: ECO godzina+ ECO minuta+:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126388394originalcRxwSF___myQOlP57NZYDhfpcuPqBgbHAg-1.png)
Widżet - Typ: HEADER, Etykieta: Pozostałe:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126388510originalfKpP-hz5TpdmhLT0pbQJwy5WsGrXk74d5A-1.png)
Widżet - Typ: ON_OFF, Etykieta: Autoryzacja ładowania:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126388584original9r7eiKg2WxEXLGIbW7RSJRdRbNJKlVtRZw-1.png)
Widżet - Typ: VALUE, Etykieta: Czas uśpienia (min)
Widżet - Typ: SCENE_DOUBLE, Etykieta: -1minuta +1minuta:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35126388719originalIcdR4W8nKdcQUohdwZOye2wiQ-L2lAMCuw-1.png)
W przypadku większej liczby gniazd tworzymy analogiczne interfejsy pamiętając o tym, aby w widżetach dodawać zmienne dla danego gniazda, a w skryptach przypisanych do akcji widżetów wpisywać numer gniazda.
5.3. Sprawdzenie ustawień interfejsu myGrenton
W celu sprawdzenia ustawień interfejsu klikamy ikonkę ustawień myGrenton:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128474967original_odrKtzeUWEYWv2VXSM5GWqAEBz44Dj2nw-1.png)
Następnie sprawdzamy czy obiekt notyfikacji push jest zaznaczony:
![](https://knowledgebase.grenton.com/hubfs/Knowledge%20Base%20Import/s3.amazonaws.comcdn.freshdesk.comdatahelpdeskattachmentsproduction35128475205originalyQmNV71v3a69Wiv0gdZPjpPwRs1Y6QOcLA-1.png)
Gotowy interfejs możemy wysłać na urządzenie mobilne. Należy pamiętać, że jest to przykładowy interfejs pokazujący wszystkie obecne możliwości integracji z ładowarką. Użytkownik może stworzyć dowolny interfejs składający się z części lub wszystkich widżetów zawartych w instrukcji w zależności od potrzeb, czy sposobu użytkowania ładowarki.
Pliki:
EVSE_OnInit_Friendly_Innovation-Grenton
EVSE_48_Friendly_Innovation-Grenton
EVSE_49_Friendly_Innovation-Grenton
EVSE_lib_Friendly_Innovation-Grenton
EVSE_modbus_Friendly_Innovation-Grenton