Class: Ocpp::Rails::Actions::BootNotificationHandler

Inherits:
Object
  • Object
show all
Defined in:
app/services/ocpp/rails/actions/boot_notification_handler.rb

Instance Method Summary collapse

Constructor Details

#initialize(charge_point, message_id, payload) ⇒ BootNotificationHandler

Returns a new instance of BootNotificationHandler.



5
6
7
8
9
# File 'app/services/ocpp/rails/actions/boot_notification_handler.rb', line 5

def initialize(charge_point, message_id, payload)
  @charge_point = charge_point
  @message_id = message_id
  @payload = payload
end

Instance Method Details

#callObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/ocpp/rails/actions/boot_notification_handler.rb', line 11

def call
  # Update charge point with boot information
  old_connected = @charge_point.connected

  @charge_point.update(
    vendor: @payload["chargePointVendor"],
    model: @payload["chargePointModel"],
    serial_number: @payload["chargePointSerialNumber"],
    firmware_version: @payload["firmwareVersion"],
    iccid: @payload["iccid"],
    imsi: @payload["imsi"],
    meter_type: @payload["meterType"],
    meter_serial_number: @payload["meterSerialNumber"],
    connected: true,
    last_heartbeat_at: Time.current
  )

  ::Rails.logger.info("[OCPP] BootNotification from #{@charge_point.identifier}: #{@payload['chargePointVendor']} #{@payload['chargePointModel']}")

  # Log connection state change if it actually changed
  log_connection_change(old_connected, true)

  # Return acceptance with heartbeat interval
  {
    "status" => "Accepted",
    "currentTime" => Time.current.iso8601,
    "interval" => Ocpp::Rails.configuration.heartbeat_interval
  }
end