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.


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.

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:



Gdy ładowarka ma więcej niż jedno gniazdo, tworzymy dodatkowy zestaw cech użytkownika dla każdego gniazda. 
Przykład dla gniazda drugiego:


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:



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




2.4. Tworzenie obiektów wirtualnych Modbus


Przygotowujemy obiekt wirtualny Modbus.



Obiekt o nazwie EVSE uzupełniamy jak poniżej.



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.


Przygotowujemy kolejny obiekt wirtualny Modbus.



Obiekt o nazwie EVSE_status_48 uzupełniamy jak poniżej.



W zakładce Zdarzenia przypisujemy wywołanie skryptu.


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.



Obiekt o nazwie push_zakonczenie_ladowania uzupełniamy jak poniżej.



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.



Obiekt o nazwie timer_powiadomienie uzupełniamy jak poniżej.



Następnie do zdarzenia OnTimer przypisujemy skrypt powiadomienie.



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.


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:





Widżet - Typ: Value, Etykieta: Czas ładowania:



Widżet - Typ: Value, Etykieta: Prąd ładowania:



Widżet - Typ: SCENE_DOUBLE, Etykieta: Prąd (A) -/ Prąd (A)+:





Widżet - Typ: ON_OFF, Etykieta: Ładowanie Start/Stop:


Widżet - Typ: ON_OFF, Etykieta: Powiadomienie koniec ładowania:





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:



Widżet - Typ: SCENE_DOUBLE, Etykieta: Prąd (A)- Prąd(A)+:



Widżet - Typ: ON_OFF, Etykieta: ECO(Użytkownik)


Widżet - Typ: HEADER, Etykieta: USTAWIENIA GODZIN ECO:



Widżet - Typ: VALUE, Etykieta: ECO start(godz:min): 



Widżet - Typ: SCENE_DOUBLE, Etykieta: ECO godzina+ ECO minuta+



Widżet - Typ: VALUE, Etykieta: ECO stop(godz:min)



Widżet - Typ: SCENE_DOUBLE, Etykieta: ECO godzina+ ECO minuta+:


Widżet - Typ: HEADER, Etykieta: Pozostałe:



Widżet - Typ: ON_OFF, Etykieta: Autoryzacja ładowania:



Widżet - Typ: VALUE, Etykieta: Czas uśpienia (min)


Widżet - Typ: SCENE_DOUBLE, Etykieta: -1minuta +1minuta:



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:


Następnie sprawdzamy czy obiekt notyfikacji push jest zaznaczony


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.