Integracja ze stacją ładowania Friendly Innovation

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.


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