Laadpunt: Difference between revisions

From RevSpace
Jump to navigation Jump to search
No edit summary
No edit summary
Line 11: Line 11:
Omdat het laden even duurt is het daarom handig een stopcontact te hebben op de plek waar je heen gaat. Terwijl je ergens bent kan je auto dan opladen. Revspace is zo'n plek waar ik regelmatig ben, maar tot nu toe geen "echt" laadpunt was.
Omdat het laden even duurt is het daarom handig een stopcontact te hebben op de plek waar je heen gaat. Terwijl je ergens bent kan je auto dan opladen. Revspace is zo'n plek waar ik regelmatig ben, maar tot nu toe geen "echt" laadpunt was.


Sinds september 2016 heb ik een [https://en.wikipedia.org/wiki/Renault_Twizy Renault Twizy]. Daar heb je eigenlijk geen "echt" laadpunt voor nodig, want hij laad slechts met 230VAC 10A (enkele fase). Er zit dan ook een doodnormale [https://en.wikipedia.org/wiki/Schuko Schuko] stekker aan, en niet de voor auto's bekende [https://en.wikipedia.org/wiki/Type_2_connector Mennekes Type 2]. Wanneer ik wat laag aan de acculading zat deed ik mijn Twizy dan ook via een normaal (geschikt) verlengsnoer opladen bij Revspace. Vanaf het begin waren er al geluiden dat dit problemen kon gaan geven omdat het niet echt als "fair use" te verkopen valt aan de partij waarvan Revspace het pand van huurt. Maar gezien de Twizy niet een "echte" auto was en ik het niet heel vaak deed, werd een oogje toe geknepen.
Sinds september 2016 heb ik een [https://en.wikipedia.org/wiki/Renault_Twizy Renault Twizy]. Daar heb je eigenlijk geen "echt" laadpunt voor nodig, want hij laad slechts met 230VAC 10A (enkele fase). Er zit dan ook een doodnormale [https://en.wikipedia.org/wiki/Schuko Schuko] stekker aan, en niet de in Europa voor auto's bekende [https://en.wikipedia.org/wiki/Type_2_connector Mennekes Type 2]. Wanneer ik wat laag aan de acculading zat deed ik mijn Twizy dan ook via een normaal (geschikt) verlengsnoer opladen bij Revspace. Vanaf het begin waren er al geluiden dat dit problemen kon gaan geven omdat het niet echt als "fair use" te verkopen valt aan de partij waarvan Revspace het pand van huurt. Maar gezien de Twizy niet een "echte" auto was en ik het niet heel vaak deed, werd een oogje toe geknepen.


Sinds ergens begin 2018 heeft [[mux]] echter ook een elektrische kar, namelijk een 1st gen. [https://en.wikipedia.org/wiki/Nissan_leaf Nissan Leaf] (binnenkort met extra 18650's uitgerust). Toen die ook kwam laden was de pand eigenaar "not amused". Nu er meer en ook serieuze elektrische auto's Revspace aandoen, hebben we dus een "echt" laadpunt nodig, die stroom per "klant" afrekent; gezien het significante stroomverbruik tijdens het laden van voertuigen kan dit niet meer onder de elektra fair use policy van de rest van de space geschaard worden.
Sinds ergens begin 2018 heeft [[mux]] echter ook een elektrische kar, namelijk een 1st gen. [https://en.wikipedia.org/wiki/Nissan_leaf Nissan Leaf] (binnenkort met extra 18650's uitgerust, I kid you not). Toen die ook kwam laden was de pand eigenaar "not amused". Nu er meer en ook grotere rijdende accu's Revspace aandoen, hebben we dus een "echt" laadpunt nodig, die stroom per "klant" afrekent; gezien het significante stroomverbruik tijdens het laden van voertuigen kan dit niet meer onder de elektra fair use policy van de rest van de space geschaard worden.


== Het laadpunt ==
== Het laadpunt ==
Momenteel zijn er twee laadpunten in bouw. [[Mux]] heeft er voor gekozen allerhande spulletjes uit China over te laten komen, en uit componenten zelf iets te fabriceren.  Ik ([[merethan]]) heb er voor gekozen naar een tweede hands of kapotte op zoek te gaan, en die net zo lang te hacken tot het doet wat ik wil. Ik heb wat rond gezocht en gemaild, waarna ik reactie van [https://www.laadpunt.nl/ laadpunt.nl] heb gekregen. Die hadden nog een ingeruilde liggen, die ik voor een relatief zacht prijsje mocht overnemen, mits ik er ook echt wat boeiends mee ging doen. Dank aan laadpunt.nl daarvoor.
Momenteel zijn er twee laadpunten in bouw. [[Mux]] heeft er voor gekozen allerhande spulletjes uit China over te laten komen, en uit componenten zelf iets te fabriceren.  Ik ([[merethan]]) heb er voor gekozen naar een tweede hands of kapotte op zoek te gaan, en die net zo lang te hacken tot het doet wat ik wil. Ik heb wat rond gezocht en gemailt, waarna ik reactie van [https://www.laadpunt.nl/ laadpunt.nl] heb gekregen. Die hadden nog een ingeruilde liggen, die ik voor een relatief zacht prijsje mocht overnemen, mits ik er ook echt wat boeiends mee ging doen. Dank aan laadpunt.nl daarvoor.


=== Keba P20 ===
=== Keba P20 ===
Line 32: Line 32:
Het betreft dus, gezien het 3-fase 230V op 32A is, een 22kW laadpunt.
Het betreft dus, gezien het 3-fase 230V op 32A is, een 22kW laadpunt.


Naast features die specifiek zijn voor dit model, zijn er ook nog wat algemene features:
==== Installatie ====
* PLC (Power Line Communication) met de auto dmv [https://en.wikipedia.org/wiki/HomePlug#HomePlug_Green_PHY GreenPhy protocol]
Het apparaat moet upstream afgezekerd worden met een automaat die bij de specs van de bekabeling past en een eigen aardlekschakelaar. Ook moet het maximale laadvermogen dmv DIP-switches ingesteld worden, zodat de paal dit kan communiceren aan de auto.
* Enable-input (terminal X1)
 
* Vrij/bezet status output (terminal X2)
== Interfaces ==
* Ethernet poort (terminal X3)
Het apparaat heeft meerdere interfaces via welke/waarover het interactie heeft met de rest van de wereld.


===== RFID =====
=== Mennekes Type 2 plug met SAE J1772 signallering ===
Mifare/ISO14443/ISO15693. RFID functionaliteit wordt verzorgd door een [http://www.hopt-schuler.com/33771/Products/Card-Readers/RFID-card-readers/RFID-card-readers/881/productlist.aspx ddm Hopt+Schuler 881 module] ([https://www.microtron.be/wp-content/uploads/2016/10/Hopt-Schuler-881.pdf datasheet])
!! Mux moet deze sectie nog fact-checken en aanvullen !!<br>
De meest elementaire interface aan het laadpunt is het stopcontact voor de auto: De [https://en.wikipedia.org/wiki/Type_2_connector Mennekes Type 2] connector. Deze bevat naast een PE, N, L1, L2 en L3 (de pinnen die je kent van krachtstroom) ook nog de pinnen PP (proximity pilot) en CP (control pilot). Via PP en CP communiceren de auto, de kabel en het laadsysteem hoeveel vermogen er getrokken mag worden. De logica hierachter is echt heel low-tech en niet uniek voor deze plug. Het "protocol" is namelijk overgenomen van een andere standaard: De Japans/Amerikaanse [https://en.wikipedia.org/wiki/SAE_J1772 SAE J1772] plug.


==== Installatie ====
Via de PP pin laat de kabel (de stekker eigenlijk) weten voor hoeveel ampere de kabel geschikt is. Dit werkt zeer low-tech: Een bepaalde weerstand tussen de +12V PP pin en de PE pin codeert van welke klasse de kabel is. Via deze pin kan zowel de auto als het laadstation dus ook detecteren wanneer er een kabel ingeplugd is. De PP pin is ook korter dan de andere pinnen, zodat het laadstation of de auto de stroom kan afschakelen voordat de rest van de pinnen contact verliezen (dit om vonken te voorkomen). De PP pin is niet van de ene naar de andere kant van de kabel verbonden.
Het apparaat moet upstream afgezekerd worden met een automaat die bij de specs van de bekabeling past en een eigen aardlekschakelaar. Ook moet het maximale laadvermogen dmv DIP-switches ingesteld worden, zodat de paal dit kan communiceren aan de auto.
 
De CP pin is wel verbonden door de kabel heen, wat de auto en het laadpunt in staat stelt om te communiceren met elkaar. Again, dit werkt zeer low-tech: Het laadpunt zet een square-wave van ±12V (-12V tot +12V) op de CP pin, met een frequentie van 1Khz. Als de PWM 1Khz. is betekent dat dat de auto "vol vermogen" mag trekken. Hoe lager de frequentie, hoe minder amps de auto mag trekken. Online zijn tabellen te vinden van welke PWM cycle hoeveel amperes betekent.
 
De CP pin is aan de auto kant verbonden met de PE pin via een weerstand en een diode. Omdat maar de helft van de ±12V square-wave afgevlakt wordt (diode) weet het laadstation dat het snoer ook echt in een auto zit en niet in de regen ligt. De weerstand die de auto tussen CP en PE plaatst codeert verschillende "staten" waarin de auto zich bevind. Zo is er bijvoorbeeld een specifieke weerstand waarmee de auto aan het laadsation aangeeft dat hij wil gaan laden. Online zijn tabellen te vinden met welke weerstand welke staat codeert.
 
Meer diepgaande uitleg en tabellen van coderingen is [https://en.wikipedia.org/wiki/SAE_J1772#Signaling op Wikipedia] te vinden.


== Interfacing ==
Voor de duidelijkheid: Het laadpunt is enkel een circuit breaker. Het laadpunt doet niets in de trand van power duty cycle regeling. Als de auto meer amps trekt dan het door het laadpunt opgegeven maximum, gaat de stroom gewoon uit.
Er zijn meerdere manieren om het apparaat te laten functioneren. De methode bij de door mij gekochte uitvoering is door RFID-tags in te programmeren en die te gebruiken als sleutel. Bij Revspace willen we echter alles met de blitse [[Secure_iButton]] doen, er moet dus op een manier een iButton lezer in. Dit extra circuit moet het laadpunt kunnen vertellen wanneer een deelnemer zich geauthenticeerd heeft en het laden mag beginnen. Ook moet het extra circuit op een manier de laadpaal kunnen bevragen hoeveel energie er verbruikt is.


=== SAE J1772 ===
=== GreenPhy protocol ===
De meest elementaire interface aan het laadpunt is het stopcontact zelf. Deze bevat naast een PE, N, L1, L2 en L3 (de pinnen die je kent van krachtstroom) ook nog de pinnen PP (proximity pilot) en CP (control pilot). Hoe die signalering werkt is [https://en.wikipedia.org/wiki/SAE_J1772#Signaling hier] te lezen.
Het laadstation ondersteunt ook PLC (Power Line Communication) met de auto dmv het [https://en.wikipedia.org/wiki/HomePlug#HomePlug_Green_PHY GreenPhy protocol]. Voor wat ik er nu van begrijp stelt dat de auto in staat om via de AC kabels op 10mbit te communiceren met het LAN waar het laadpunt aan vast zit. Zeer vergelijkbaar met "power line ethernet" wat je binnen je huis kunt doen, als je te lui bent om kabels te trekken.


=== RFID ===
=== RFID ===
Er zit voor access control waarschijnlijk niets anders op dan de RFID module er uit te halen en de antwoorden van die module te emuleren. Hij zit via RS232 TTL aan de rest vast en heeft een manual, dus met wat logic analyzer magic, RTFM en proberen moet dat wel te gebruiken zijn als aansluit interface voor eigen access control (iButtons).
Bijna alle laadstations hebben een methode voor authorisatie/authenticatie. Het authorisatie/authenticatiesysteem van het door mij gekochte model werkt op basis van RFID tokens. RFID functionaliteit wordt verzorgd door een [http://www.hopt-schuler.com/33771/Products/Card-Readers/RFID-card-readers/RFID-card-readers/881/productlist.aspx ddm Hopt+Schuler 881 module] ([https://www.microtron.be/wp-content/uploads/2016/10/Hopt-Schuler-881.pdf datasheet]). Deze reader is compatible met Mifare/ISO14443/ISO15693 tokens. Voor zover ik het systeem nu begrijp blaft de module gewoon het serienummer van de gepresenteerde token over een RS232 TTL lijn heen en dat is dan de sleutel.


=== Enable-input ===
=== Enable-input ===
De enable-input (X1) is niet bruikbaar. Deze input schakelt het laadcircuit wel aan of uit, maar voorkomt aankoppelen niet. Dus als de enable-input onderbroken (uit) is, en iemand koppelt een kabel aan, dan wordt die wel gelocked en begint initialisatie, maar laden begint pas als je X1 kortsluit. (Dat zou je kunnen gebruiken icm een zonnepanelen systeem, zodat je enkel overcapaciteit in je auto laad.) De enable-input is dus geen access control systeem.
Binnenin het laadstation zit een enable-input (terminal X1) voor interfacing met een ander systeem. Door deze terminal kort te sluiten is het systeem "enabled". Hierin slaat "enabled" niet op authorisatie: Deze input schakelt het laden aan of uit, maar voorkomt aankoppelen niet. Dus als de enable-input onderbroken (uit) is, en iemand koppelt een kabel/auto aan, dan wordt die wel gelocked en begint initialisatie van het laadproces. Laden (stroom leveren) begint echter pas als je X1 kortsluit. (Dat zou je bijvoorbeeld kunnen gebruiken icm een zonnepanelen systeem, zodat je enkel overcapaciteit in je auto laad.) De enable-input is dus geen access control systeem of te gebruiken om een access control systeem op aan te sluiten.


=== Ethernet ===
=== Ethernet ===
De Keba P20 heeft een ethernetpoortje. De IP instellingen zijn te regelen met de DIP-switches. Momenteel gebruikt het apparaat 192.168.25.11 als adres.
De Keba P20 heeft een ethernetpoortje (terminal X3). De IP instellingen zijn te regelen met de DIP-switches. Momenteel gebruikt het apparaat 192.168.25.11 als adres.


==== UDP input ====
==== UDP input ====
Keba laadpunten ondersteunen volgens de manual een setje commando's die je via ethernet kunt sturen. Dit zijn simpele tekst-gebaseerde commando's over UDP, op poort 7090. Open een shell met 'netcat -l -p 7090 -u -b 192.168.25.11 7090' om te luisteren en ga in een andere shell commando's sturen met 'echo -n "[command]" | netcat -q 0 -u 192.168.25.11 7090', en je bent in business.
Keba laadpunten ondersteunen volgens de UDP programmers manual een setje commando's die je via ethernet kunt sturen. Dit zijn simpele tekst-gebaseerde commando's over UDP, op poort 7090. Open een shell met 'netcat -l -p 7090 -u -b 192.168.25.11 7090' om te luisteren en ga in een andere shell commando's sturen met 'echo -n "[command]" | netcat -q 0 -u 192.168.25.11 7090', en je bent in business.


Het jammere is alleen dat de door mij gekochte versie het instapmodel is, en daarom vrijwel geen commando's ondersteunt. Dit is waarschijnlijk slechts een upselling scheme wat enkel in de software verankerd is, maar voor nu even waar we het mee moeten doen. De enige commando's waar mijn model zover op gereageerd heeft is i, waarop hij antwoord met "Firmware":"KEBA P20 v 2.5a3 (160613-061001)", en report 1, waarop je iets meer info terug krijgt. En dat was het.
De door mij gekochte versie is echter het instapmodel, en ondersteunt daarom vrijwel niks van wat in de UDP manual van Keba staat. Dit is waarschijnlijk slechts een upselling scheme wat enkel in de software verankerd is, maar voor nu even waar we het mee moeten doen. De enige commando's waar mijn model zover op gereageerd heeft is i, waarop hij antwoord met "Firmware: KEBA P20 v 2.5a3 (160613-061001)", en report 1, waarop je iets meer info terug krijgt (ook serienummer & modelnummer). En dat was het.


==== UDP output ====
==== UDP output ====
De ethernetpoort is niet geheel waardeloos, want hij doet wel nuttige UDP broadcasts. Bij elke status verandering doet hij een bijpassende broadcast met de veranderde waarden. Denk aan de toestand van het apparaat (wachten/aankoppelen/laden etc.), het koppelen/ontkoppelen van de kabel en/of auto, wanneer er authorisatie is (RFID/UDP/X1) en een verandering in hoeveelheid geleverde energie. (Zie de UDP programmers guide voor een overzicht & uitleg.)
De ethernetpoort is niet geheel waardeloos, want hij doet wel nuttige UDP broadcasts. Bij elke status verandering doet hij een bijpassende broadcast met de veranderde waarden. Denk aan de toestand van het apparaat (wachten/aankoppelen/laden etc.), het koppelen/ontkoppelen van de kabel en/of auto, wanneer er authorisatie is (RFID/UDP), enable input (X1) open/dicht, en een verandering in hoeveelheid geleverde energie. (Zie de UDP programmers guide van Keba voor een overzicht & uitleg.)


==== HTTP ====
==== HTTP ====
Op poort 80 zit een webserver, die een pagina serveert waar ook wat vergelijkbare statistieken op staan.
Op poort 80 zit een webserver, die een pagina serveert waar wat statistieken op staan vergelijkbaar met wat via UDP broadcasts gepubliceert wordt.


==== OCPP ====
==== OCPP ====
Het apparaat lijkt iets van "communication hub mode" ofzo met een KeContact C10 communication hub te kunnen via OCPP? Geen idee wat het is, maar wellicht het onderzoeken waard.
Het apparaat lijkt iets van "communication hub mode" ofzo met een KeContact C10 communication hub te kunnen via OCPP. Geen idee wat het precies is, maar wellicht het onderzoeken waard. Het lijkt iets te zijn waarbij je "intelligent" energie kunt verdelen, indien je een systeem heb met meerdere van deze laadstations.
 
== Interfacing met de space ==
Wat ik wil maken is dat elke deelnemer met zijn/haar [[Secure_iButton]] zich kan authenticeren op het laadstation en dat de kosten voor de geleverde energie worden afgerekend via de bar. Er moet dus op een manier een iButton lezer in, en een interface naar de bar gemaakt worden. Ook lijkt het mij leuk om status updates te doen op het IRC kanaal, vergelijkbaar met deuren die geopend worden.
 
Authenticatie bij de door mij gekochte uitvoering van het laadstation werkt door RFID-tags in te programmeren en die te gebruiken als sleutel. RFID wordt verzorgd door een losse module, die door een eigen stuk hardware te emuleren is.
 
Keba palen kunnen hetgeen wat met RFID kaartjes kan ook via de ethernetpoort, als je genoeg geld neerlegt bij Keba. Het door mij gekochte model is echter de goedkope versie, die deze features "niet heeft" (ofwel het staat uit in de software). De afwezigheid van deze features is waarschijnlijk de reden geweest dat de vorige eigenaar dit laadstation heeft ingeruild voor een nieuwere/duurdere.
 
Zoals eerder genoemd bij de Enable-input sectie: Deze is niet te gebruiken voor authorisatie. Deze input is om het laden tijdelijk te onderbreken en weer verder te gaan met laden wanneer er weer zonlicht valt op de zonnepanelen.
 
Alle mogelijkheden op een rij, zit er voor access control waarschijnlijk niets anders op dan de RFID module er uit te halen en de antwoorden van die module te emuleren. Hij zit via RS232 TTL aan de rest vast en heeft een manual, dus met wat logic analyzer magic, RTFM en blijven proberen moet dat wel te gebruiken zijn als aansluit interface voor eigen access control (iButtons).
 
Voor verbruiksstatistieken en status updates naar IRC zijn de UDP broadcasts bruikbaar. Voor de meest actuele verbruiks-stand kan ook de output van de webserver gebruikt worden.


== Reverse-engineering ==
== Reverse-engineering ==
Initieel ligt de focus op het realiseren van een laadpunt. Later gaan we de hardware en software nog reverse-engineeren. Voor shits & giggles, en wie weet wat er allemaal nog mogelijk blijkt.
Initieel ligt de focus op het realiseren van een laadpunt. Later gaan we de hardware en software nog reverse-engineeren. Voor shits & giggles, en wie weet wat er allemaal nog mogelijk blijkt (hint: die UDP aansturingsfeatures zijn wel boeiend om te hebben).


Paar losse flarden info:
Paar losse flarden info:
* lwIP (lightweight IP) TCP/IP stack
* lwIP (lightweight IP) TCP/IP stack
* Contiki als OS?
* Contiki als OS?

Revision as of 23:24, 10 February 2018

Project Laadpunt
Keba P20.jpg
Een laadpunt voor elektrische auto's @Revspace
Status In progress
Contact merethan
Last Update 2018-02-10

Er komen meer en meer elektrische auto's op de Nederlandse wegen. Een groot nadeel van deze voertuigen is dat accu's in vergelijking met een brandstoftank nog altijd wat beperkt zijn in hoeveel energie ze kunnen vasthouden. Om lekker rond te kunnen karren heb je dus wat vaker toegang nodig tot een stopcontact dan dat je een brandstof auto moet tanken. Niet alleen vaker, maar ook langer, want het laden duurt even.

Omdat het laden even duurt is het daarom handig een stopcontact te hebben op de plek waar je heen gaat. Terwijl je ergens bent kan je auto dan opladen. Revspace is zo'n plek waar ik regelmatig ben, maar tot nu toe geen "echt" laadpunt was.

Sinds september 2016 heb ik een Renault Twizy. Daar heb je eigenlijk geen "echt" laadpunt voor nodig, want hij laad slechts met 230VAC 10A (enkele fase). Er zit dan ook een doodnormale Schuko stekker aan, en niet de in Europa voor auto's bekende Mennekes Type 2. Wanneer ik wat laag aan de acculading zat deed ik mijn Twizy dan ook via een normaal (geschikt) verlengsnoer opladen bij Revspace. Vanaf het begin waren er al geluiden dat dit problemen kon gaan geven omdat het niet echt als "fair use" te verkopen valt aan de partij waarvan Revspace het pand van huurt. Maar gezien de Twizy niet een "echte" auto was en ik het niet heel vaak deed, werd een oogje toe geknepen.

Sinds ergens begin 2018 heeft mux echter ook een elektrische kar, namelijk een 1st gen. Nissan Leaf (binnenkort met extra 18650's uitgerust, I kid you not). Toen die ook kwam laden was de pand eigenaar "not amused". Nu er meer en ook grotere rijdende accu's Revspace aandoen, hebben we dus een "echt" laadpunt nodig, die stroom per "klant" afrekent; gezien het significante stroomverbruik tijdens het laden van voertuigen kan dit niet meer onder de elektra fair use policy van de rest van de space geschaard worden.

Het laadpunt

Momenteel zijn er twee laadpunten in bouw. Mux heeft er voor gekozen allerhande spulletjes uit China over te laten komen, en uit componenten zelf iets te fabriceren. Ik (merethan) heb er voor gekozen naar een tweede hands of kapotte op zoek te gaan, en die net zo lang te hacken tot het doet wat ik wil. Ik heb wat rond gezocht en gemailt, waarna ik reactie van laadpunt.nl heb gekregen. Die hadden nog een ingeruilde liggen, die ik voor een relatief zacht prijsje mocht overnemen, mits ik er ook echt wat boeiends mee ging doen. Dank aan laadpunt.nl daarvoor.

Keba P20

De Keba P20 gekocht door merethan

Het apparaat betreft een Keba KeContact P20. Hij heeft reeds ruim 2 jaar dienst gedaan bij de vorige eigenaar. De vorige eigenaar heeft 'em ingeruild voor een nieuwer en geavanceerder model, naar verluid omdat hij/zij meer management opties wilde.

Keba AG

Keba AG. is een Oostenrijks bedrijf wat actief is in meerdere markten. Voor ze laadpalen zijn gaan maken deden ze al allerhande andere automatisering, waaronder machines voor plastic gieten, metaalbewerking, kluisjessystemen en bankautomaten (flappentappen & contant deposit).

Specs & features

De Keba P20 geopend

Het volledige modelnummer is: KC-P20-ES240010-00R. De installatiehandleiding bevat een handig tabelletje om dat te decoderen. Het komt neer op het volgende: KeContact, model P20, Europese uitvoering, met een Socket (ipv vaste kabel), 2 = Mennekes Type-2, 4 = 32A versie, 00 = 0 meter kabel (duh), 1 = b-series model, 0 = "Contactor" electrics, 00R = met RFID uitgevoerd.

Het betreft dus, gezien het 3-fase 230V op 32A is, een 22kW laadpunt.

Installatie

Het apparaat moet upstream afgezekerd worden met een automaat die bij de specs van de bekabeling past en een eigen aardlekschakelaar. Ook moet het maximale laadvermogen dmv DIP-switches ingesteld worden, zodat de paal dit kan communiceren aan de auto.

Interfaces

Het apparaat heeft meerdere interfaces via welke/waarover het interactie heeft met de rest van de wereld.

Mennekes Type 2 plug met SAE J1772 signallering

!! Mux moet deze sectie nog fact-checken en aanvullen !!
De meest elementaire interface aan het laadpunt is het stopcontact voor de auto: De Mennekes Type 2 connector. Deze bevat naast een PE, N, L1, L2 en L3 (de pinnen die je kent van krachtstroom) ook nog de pinnen PP (proximity pilot) en CP (control pilot). Via PP en CP communiceren de auto, de kabel en het laadsysteem hoeveel vermogen er getrokken mag worden. De logica hierachter is echt heel low-tech en niet uniek voor deze plug. Het "protocol" is namelijk overgenomen van een andere standaard: De Japans/Amerikaanse SAE J1772 plug.

Via de PP pin laat de kabel (de stekker eigenlijk) weten voor hoeveel ampere de kabel geschikt is. Dit werkt zeer low-tech: Een bepaalde weerstand tussen de +12V PP pin en de PE pin codeert van welke klasse de kabel is. Via deze pin kan zowel de auto als het laadstation dus ook detecteren wanneer er een kabel ingeplugd is. De PP pin is ook korter dan de andere pinnen, zodat het laadstation of de auto de stroom kan afschakelen voordat de rest van de pinnen contact verliezen (dit om vonken te voorkomen). De PP pin is niet van de ene naar de andere kant van de kabel verbonden.

De CP pin is wel verbonden door de kabel heen, wat de auto en het laadpunt in staat stelt om te communiceren met elkaar. Again, dit werkt zeer low-tech: Het laadpunt zet een square-wave van ±12V (-12V tot +12V) op de CP pin, met een frequentie van 1Khz. Als de PWM 1Khz. is betekent dat dat de auto "vol vermogen" mag trekken. Hoe lager de frequentie, hoe minder amps de auto mag trekken. Online zijn tabellen te vinden van welke PWM cycle hoeveel amperes betekent.

De CP pin is aan de auto kant verbonden met de PE pin via een weerstand en een diode. Omdat maar de helft van de ±12V square-wave afgevlakt wordt (diode) weet het laadstation dat het snoer ook echt in een auto zit en niet in de regen ligt. De weerstand die de auto tussen CP en PE plaatst codeert verschillende "staten" waarin de auto zich bevind. Zo is er bijvoorbeeld een specifieke weerstand waarmee de auto aan het laadsation aangeeft dat hij wil gaan laden. Online zijn tabellen te vinden met welke weerstand welke staat codeert.

Meer diepgaande uitleg en tabellen van coderingen is op Wikipedia te vinden.

Voor de duidelijkheid: Het laadpunt is enkel een circuit breaker. Het laadpunt doet niets in de trand van power duty cycle regeling. Als de auto meer amps trekt dan het door het laadpunt opgegeven maximum, gaat de stroom gewoon uit.

GreenPhy protocol

Het laadstation ondersteunt ook PLC (Power Line Communication) met de auto dmv het GreenPhy protocol. Voor wat ik er nu van begrijp stelt dat de auto in staat om via de AC kabels op 10mbit te communiceren met het LAN waar het laadpunt aan vast zit. Zeer vergelijkbaar met "power line ethernet" wat je binnen je huis kunt doen, als je te lui bent om kabels te trekken.

RFID

Bijna alle laadstations hebben een methode voor authorisatie/authenticatie. Het authorisatie/authenticatiesysteem van het door mij gekochte model werkt op basis van RFID tokens. RFID functionaliteit wordt verzorgd door een ddm Hopt+Schuler 881 module (datasheet). Deze reader is compatible met Mifare/ISO14443/ISO15693 tokens. Voor zover ik het systeem nu begrijp blaft de module gewoon het serienummer van de gepresenteerde token over een RS232 TTL lijn heen en dat is dan de sleutel.

Enable-input

Binnenin het laadstation zit een enable-input (terminal X1) voor interfacing met een ander systeem. Door deze terminal kort te sluiten is het systeem "enabled". Hierin slaat "enabled" niet op authorisatie: Deze input schakelt het laden aan of uit, maar voorkomt aankoppelen niet. Dus als de enable-input onderbroken (uit) is, en iemand koppelt een kabel/auto aan, dan wordt die wel gelocked en begint initialisatie van het laadproces. Laden (stroom leveren) begint echter pas als je X1 kortsluit. (Dat zou je bijvoorbeeld kunnen gebruiken icm een zonnepanelen systeem, zodat je enkel overcapaciteit in je auto laad.) De enable-input is dus geen access control systeem of te gebruiken om een access control systeem op aan te sluiten.

Ethernet

De Keba P20 heeft een ethernetpoortje (terminal X3). De IP instellingen zijn te regelen met de DIP-switches. Momenteel gebruikt het apparaat 192.168.25.11 als adres.

UDP input

Keba laadpunten ondersteunen volgens de UDP programmers manual een setje commando's die je via ethernet kunt sturen. Dit zijn simpele tekst-gebaseerde commando's over UDP, op poort 7090. Open een shell met 'netcat -l -p 7090 -u -b 192.168.25.11 7090' om te luisteren en ga in een andere shell commando's sturen met 'echo -n "[command]" | netcat -q 0 -u 192.168.25.11 7090', en je bent in business.

De door mij gekochte versie is echter het instapmodel, en ondersteunt daarom vrijwel niks van wat in de UDP manual van Keba staat. Dit is waarschijnlijk slechts een upselling scheme wat enkel in de software verankerd is, maar voor nu even waar we het mee moeten doen. De enige commando's waar mijn model zover op gereageerd heeft is i, waarop hij antwoord met "Firmware: KEBA P20 v 2.5a3 (160613-061001)", en report 1, waarop je iets meer info terug krijgt (ook serienummer & modelnummer). En dat was het.

UDP output

De ethernetpoort is niet geheel waardeloos, want hij doet wel nuttige UDP broadcasts. Bij elke status verandering doet hij een bijpassende broadcast met de veranderde waarden. Denk aan de toestand van het apparaat (wachten/aankoppelen/laden etc.), het koppelen/ontkoppelen van de kabel en/of auto, wanneer er authorisatie is (RFID/UDP), enable input (X1) open/dicht, en een verandering in hoeveelheid geleverde energie. (Zie de UDP programmers guide van Keba voor een overzicht & uitleg.)

HTTP

Op poort 80 zit een webserver, die een pagina serveert waar wat statistieken op staan vergelijkbaar met wat via UDP broadcasts gepubliceert wordt.

OCPP

Het apparaat lijkt iets van "communication hub mode" ofzo met een KeContact C10 communication hub te kunnen via OCPP. Geen idee wat het precies is, maar wellicht het onderzoeken waard. Het lijkt iets te zijn waarbij je "intelligent" energie kunt verdelen, indien je een systeem heb met meerdere van deze laadstations.

Interfacing met de space

Wat ik wil maken is dat elke deelnemer met zijn/haar Secure_iButton zich kan authenticeren op het laadstation en dat de kosten voor de geleverde energie worden afgerekend via de bar. Er moet dus op een manier een iButton lezer in, en een interface naar de bar gemaakt worden. Ook lijkt het mij leuk om status updates te doen op het IRC kanaal, vergelijkbaar met deuren die geopend worden.

Authenticatie bij de door mij gekochte uitvoering van het laadstation werkt door RFID-tags in te programmeren en die te gebruiken als sleutel. RFID wordt verzorgd door een losse module, die door een eigen stuk hardware te emuleren is.

Keba palen kunnen hetgeen wat met RFID kaartjes kan ook via de ethernetpoort, als je genoeg geld neerlegt bij Keba. Het door mij gekochte model is echter de goedkope versie, die deze features "niet heeft" (ofwel het staat uit in de software). De afwezigheid van deze features is waarschijnlijk de reden geweest dat de vorige eigenaar dit laadstation heeft ingeruild voor een nieuwere/duurdere.

Zoals eerder genoemd bij de Enable-input sectie: Deze is niet te gebruiken voor authorisatie. Deze input is om het laden tijdelijk te onderbreken en weer verder te gaan met laden wanneer er weer zonlicht valt op de zonnepanelen.

Alle mogelijkheden op een rij, zit er voor access control waarschijnlijk niets anders op dan de RFID module er uit te halen en de antwoorden van die module te emuleren. Hij zit via RS232 TTL aan de rest vast en heeft een manual, dus met wat logic analyzer magic, RTFM en blijven proberen moet dat wel te gebruiken zijn als aansluit interface voor eigen access control (iButtons).

Voor verbruiksstatistieken en status updates naar IRC zijn de UDP broadcasts bruikbaar. Voor de meest actuele verbruiks-stand kan ook de output van de webserver gebruikt worden.

Reverse-engineering

Initieel ligt de focus op het realiseren van een laadpunt. Later gaan we de hardware en software nog reverse-engineeren. Voor shits & giggles, en wie weet wat er allemaal nog mogelijk blijkt (hint: die UDP aansturingsfeatures zijn wel boeiend om te hebben).

Paar losse flarden info:

  • lwIP (lightweight IP) TCP/IP stack
  • Contiki als OS?