HomeAssistant, ferroamp och MQTT

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3743
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

HomeAssistant, ferroamp och MQTT

Inlägg av Mickecarlsson »

Jag kör HomeAssistant (Core) för att övervaka vår solanläggning som använder växelriktaren Ferroamp's EnergyHub.
Det var rätt enkelt att få in den via HACS och ställa in MQTT i HA och peka den mot Ferroampens IP.
Men, sen fick vi installerat en CTEK Chargestorm Connected 2 där man kan aktivera MQTT, antingen låta CTEK'en agera broker eller peka den mot en broker.
Och där tog det stopp. Man kan inte ha flera MQTT i HA (vilket är OK och dokumenterat) så man måste sätta upp en MQTT Bridge.
Det tog lite tid att få till detta, men det var rätt enkelt.
Först redigerar man /etc/mosquitto/conf.d/mosquitto.conf från detta:

Kod: Markera allt

allow_anonymous false
password_file /etc/mosquitto/conf.d/pwfile
listener 1883
Till detta:

Kod: Markera allt

allow_anonymous false
password_file /etc/mosquitto/conf.d/pwfile
listener 1883

# Comment out after checking that topics are received
log_type all

# Bridge, needs to be like this:
connection brygga
# IP address of the Ferroamp EnergyHub
address X.X.X.X:1883
topic # both 0 
cleansession true
try_private false
remote_username YYYYYYYYYY
remote_password ZZZZZZZZZZZZ
Ändra X.X.X.X till IP'n för Ferroampen
Ändra YYYYYYYYYY till användarnamnet ni fått av Ferroamp
Ändra ZZZZZZZZZZZZ till lösenordet ni fått av Ferroamp
Spara filen.
Testa att syntaxen är OK:

Kod: Markera allt

sudo /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -v
Lägg till en ny användare för MQTT som CTEK'en ska använda:

Kod: Markera allt

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/pwfile ctek
Kom ihåg lösenordet, behövs när CTEK'en ska konfas
Skapa sensorerna i configuration.yaml:
Byt ut CBID mot boxens Id.

Kod: Markera allt

sudo nano /home/homeassistant/.homeassistant/configuration.yaml

Kod: Markera allt

mqtt:
  sensor:
    # Ctek, Chargestorm Car Charger
    # EV Charger
    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Energikonsumtion [kWh]'
      unique_id: "CBID-emkwh"
      value_template: "{{value_json['energy'] | multiply(0.001) | round | float }}"
      unit_of_measurement: 'kWh'
      state_class: 'total_increasing'
      device_class: 'energy'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Effekt'
      unique_id: "CBID-emw"
      unit_of_measurement: 'W'
      state_class: 'measurement'
      device_class: power
      value_template: '{{ value_json.power | round(2) }}'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Ström Fas 1'
      unique_id: "CBID-A1"
      value_template: "{{value_json['current'][0] | round(2) }}"
      unit_of_measurement: 'A'
      state_class: 'measurement'
      device_class: 'current'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Ström Fas 2'
      unique_id: "CBID-A2"
      value_template: "{{value_json['current'][1] | round(2) }}"
      unit_of_measurement: 'A'
      state_class: 'measurement'
      device_class: 'current'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Ström Fas 3'
      unique_id: "CBID-A3"
      value_template: "{{value_json['current'][2] | round(2) }}"
      unit_of_measurement: 'A'
      state_class: 'measurement'
      device_class: 'current'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Volt Fas 1'
      unique_id: "CBID-V1"
      value_template: "{{value_json['voltage'][0] | round(2) }}"
      unit_of_measurement: 'V'
      state_class: 'measurement'
      device_class: 'voltage'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Volt Fas 2'
      unique_id: "CBID-V3"
      value_template: "{{value_json['voltage'][1] | round(2) }}"
      unit_of_measurement: 'V'
      state_class: 'measurement'
      device_class: 'voltage'

    - state_topic: 'CTEK/CBID/evse1/em'
      name: 'CTEK Elbilsladdare Volt Fas 3'
      unique_id: "CBID-V3"
      value_template: "{{value_json['voltage'][2] | round(2) }}"
      unit_of_measurement: 'V'
      state_class: 'measurement'
      device_class: 'voltage'

    # EV Status
    - state_topic: 'CTEK/CBID/evse1/status'
      name: 'CTEK Elbilsladdare Status'
      icon: mdi:ev-station
      unique_id: "CBID-status"
      value_template: "{% if value_json.state == 'AVAL' %}Tillgänglig, ingen elbil ansluten.\
                       {% elif value_json.state == 'PAUS' %}Paus, laddstationen medger inte laddning.\
                       {% elif value_json.state =='EVRD' %}Elbilen är klar.\
                       {% elif value_json.state =='CHRG' %}Laddning pågår.\
                       {% elif value_json.state =='FLTY' %}FEL, något är felaktigt.\
                       {% elif value_json.state =='DSBL' %}Inaktiverad.\
                       {% elif value_json.state =='CONN' %}Elbilen är ansluten, väntar på autentiering.\
                       {% elif value_json.state =='NCRQ' %}Ingen laddning efterfrågas av elbilen.\
                       {% elif value_json.state =='AUTH' %}Autentierad, väntar på att elbilen skall enslutas.\
                       {% elif value_json.state =='INVL' %}Ogiltig, något är felaktigt.\
                       {% elif value_json.state =='GONE' %}Elbilen är frånkopplad.\
                       {% elif value_json.state =='DONE' %}Laddsessionen är avslutad.\
                       {% elif value_json.state =='SUHT' %}Tillfälligt tillstånd för paus.\
                       {% elif value_json.state =='STHT' %}Tillfälligt tillstånd för att stoppa laddsessionen.\
                       {% endif %}"
Verifiera syntaxen för configuration.yaml i HA
Starta om mosquitto:

Kod: Markera allt

sudo systemctl restart mosquitto
Ändra i MQTT i HA, Reconfigure, byt IP till serverns IP, namn och pw till användaren du skapade ovan.
Kommer det data i mosquitto.log?

Kod: Markera allt

sudo tail -f /var/log/mosquitto/mosquitto.log
Ser det OK ut?
Redigera mosquitto.conf, sätt # framför log_type all så den slutar logga, annars fyller du /var/log foldern.
Starta om mosquitto

Kod: Markera allt

sudo systemctl restart mosquitto
Logga nu på CTEK'en via USB-kabel, skriv in IP-adress, man och lösenord i Automation-fliken (slå på avancerat först i första menyn).
Nu ska CTEKen, börja fylla på data för sensorerna.
ctek-i-ha.JPG
EDIT, fixade syntax för skapande av nya användare i mosquitto, förtydligade CBID
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.