In config I want a received int number to match a text, like 2=Low battery and present text, not number

Hi

Topic can be placed in wrong category, but I think it is a configuration question.

I have made a bee hive monitoring for my wife, system publishes data to HA by MQTT.

The configutaration.yaml my son made for me, so in truth I don’t know how to program the jaml file.

Here is what I see for hive 1:
image

Im running HA with latest updates.

I got some help yesterday but configuration.yaml don’t save when I add my new code.

Error:

bad indentation of a sequence entry (102:5)
99 |
100 |
101 |
102 | - name: ‘Kube 1 alarm’
-----------^
103 | unique_id: kube1alarm
104 | state_topic: 'bikuber/kube1/a …

Line:
image

Can you take a look at my code and help me to get this to work?

Thanks!

This is the code that makes config not able to save:

sensor:
  - platform: template
    sensors:
      kube_1_alarm:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {% set sensor_value = states('sensor.kube_sensor') %}
          {% set alarm_message = alarm.get(sensor_value) %}
          {{ alarm_message if alarm_message is defined else 'Ukjent alarm' }}

This is all code, with save error

#   ############################## HiveMon start  ############################



sensor:
  - platform: template
    sensors:
      kube_1_alarm:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {% set sensor_value = states('sensor.kube_sensor') %}
          {% set alarm_message = alarm.get(sensor_value) %}
          {{ alarm_message if alarm_message is defined else 'Ukjent alarm' }}



    - name: 'Kube 1 alarm'
      unique_id: kube1alarm
      state_topic: 'bikuber/kube1/alarmValue'
      state_class: measurement  #tips fra FB

    
    - name: 'Kube 1 vekt'
      unique_id: kube1Vekt
      state_topic: 'bikuber/kube1/vekt'
      state_class: measurement  #tips fra FB
      unit_of_measurement: 'Kg' 
      
    - name: 'Kube 1 DHT temp'
      unique_id: kube1DHTtemp
      state_topic: 'bikuber/kube1/DHTtempKube'
      unit_of_measurement: '°C' 

    - name: 'Kube 1 DHT fukt'
      unique_id: kube1DHTFukt
      state_topic: 'bikuber/kube1/DHTfuktKube'
      unit_of_measurement: '%RH'       
      
    - name: 'Kube 1 BS temp kube'
      unique_id: kube1BSTempKube
      state_topic: 'bikuber/kube1/BStempKube'
      unit_of_measurement: '°C'
      device_class: temperature
      #value_template: "{{ value | float }}"

    - name: 'Kube 1 BS temp ute'
      unique_id: kube1BtempUte
      state_topic: 'bikuber/kube1/BStempUte'
      state_class: measurement  #tips fra FB
      unit_of_measurement: '°C'
      

    - name: 'Kube 1 volt'
      unique_id: kube1volt
      state_topic: 'bikuber/kube1/volt'
      state_class: measurement  #tips fra FB
      unit_of_measurement: 'V'

    - name: 'Kube 1 kubenr'
      unique_id: kube1 kubeNr
      state_topic: 'bikuber/kube1/kubeNr'
      state_class: measurement  #tips fra FB
        
    - name: 'Kube 1 senderVersjonNr'
      unique_id: kube1versjonsnr
      state_topic: 'bikuber/kube1/senderVersjonNr'
      state_class: measurement  #tips fra FB
      
    - name: 'Kube 1 pakkeNr'
      unique_id: kube1 nr
      state_topic: 'bikuber/kube1/pakkeNr'
      state_class: measurement  #tips fra FB
      
    - name: 'Kube 1 signalstyrke'
      unique_id: kube1 signalstyrke
      state_topic: 'bikuber/kube1/signalstyrke'
      state_class: measurement  #tips fra FB
      unit_of_measurement: 'dBm'      

Are you mixing a

sensor:
  - platform: ...

and some

mqtt:
  - sensor:
    - name: ...

?

You can’t :slight_smile:
Assuming your template is right (I’m doing it in another way but that’s fine if it is working)
Not sure that you can put inline comments (lines ending with #) so I removed them.

Your configuration should look like this:

sensor:
  - platform: template
    sensors:
      kube_1_alarm:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {% set sensor_value = states('sensor.kube_sensor') %}
          {% set alarm_message = alarm.get(sensor_value) %}
          {{ alarm_message if alarm_message is defined else 'Ukjent alarm' }}


mqtt:
  - sensor:
    - name: 'Kube 1 alarm'
      unique_id: kube1alarm
      state_topic: 'bikuber/kube1/alarmValue'
      state_class: measurement
   
    - name: 'Kube 1 vekt'
      unique_id: kube1Vekt
      state_topic: 'bikuber/kube1/vekt'
      state_class: measurement
      unit_of_measurement: 'Kg' 
    
    - name: 'Kube 1 DHT temp'
      unique_id: kube1DHTtemp
      state_topic: 'bikuber/kube1/DHTtempKube'
      unit_of_measurement: '°C' 

    - name: 'Kube 1 DHT fukt'
      unique_id: kube1DHTFukt
      state_topic: 'bikuber/kube1/DHTfuktKube'
      unit_of_measurement: '%RH'       
      
    - name: 'Kube 1 BS temp kube'
      unique_id: kube1BSTempKube
      state_topic: 'bikuber/kube1/BStempKube'
      unit_of_measurement: '°C'
      device_class: temperature

    - name: 'Kube 1 BS temp ute'
      unique_id: kube1BtempUte
      state_topic: 'bikuber/kube1/BStempUte'
      state_class: measurement
      unit_of_measurement: '°C'
      
    - name: 'Kube 1 volt'
      unique_id: kube1volt
      state_topic: 'bikuber/kube1/volt'  
      state_class: measurement
      unit_of_measurement: 'V'

    - name: 'Kube 1 kubenr'
      unique_id: kube1 kubeNr
      state_topic: 'bikuber/kube1/kubeNr'
      state_class: measurement
        
    - name: 'Kube 1 senderVersjonNr'
      unique_id: kube1versjonsnr
      state_topic: 'bikuber/kube1/senderVersjonNr'
      state_class: measurement
    
    - name: 'Kube 1 pakkeNr'
      unique_id: kube1 nr
      state_topic: 'bikuber/kube1/pakkeNr'
      state_class: measurement
      
    - name: 'Kube 1 signalstyrke'
      unique_id: kube1 signalstyrke
      state_topic: 'bikuber/kube1/signalstyrke'
      state_class: measurement
      unit_of_measurement: 'dBm'      

ATTENTION


For the device_class, please refer to

To know what is accepted as unit_of_measurement and the opposite.

your unit_of_measurement dBm should be of device_class: signal_strength

2 Likes

Hi

Thanks!!!

Now the configuration.yaml saves :slight_smile:

My data comes to dashboard:
image

But alarm 9 is : ‘Kube 1 ingen alarm’ (no alarm)
But as you see the alarm is still a number

Is there something more code from yaml to dashboard?

In entity I don’t find “new” stuff
image

Thanks up front for more help!

Did you restart HA? :wink:

Yes, full restart

Ah, I didn’t look close enough in your screenshot. Could it be, that the entity was added again with a _2 at the end?

You are showing the sensor.kube_1_alarm in your dashboard, that’s where the number comes from. What you wanted to show in the dashboard would be sensor.kube_1_alarm_2. Notice the _2 at the end of the name.

This happens sometimes. I wouldn’t change the dashboard, delete the “old” sensor (without the _2) and afterwards rename the _2 one to the original name. After a refresh it should show up correctly in the dashboard.

@paddy0174 Thanks for your help

the number from text give Unknown

Old alarm seems to be _2 and gives numbers:

image

image

Seems like we should clean up a little, to get this sorted. :slight_smile:

So, let’s go step by step.

Would you mind posting the configuration.yaml you’re now using? The most recent version, if you will.

What I want to do is resetting everything, clean up, delete the MQTT topics and then set it up from scratch. This way you won’t end up with _2 entities.

For now, if you haven’t already, download MQTT Explorer and install it. And post the configuration.yaml:slight_smile:

Hi

thanks again!!!
When you help me at this detail, I will gladly delete and reinstall everything :slight_smile:

I run HA on my NAS in a virtual machine.

Explorer running:
image

complete configuration.jaml:

# Loads default set of integrations. Do not remove.
default_config:

#my integration
my:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

##########
# Alt over er fra default installasjon
# DO NOT RENAME THIS FILE TO CONFIGURATION.YAML! YOU WILL BREAK YOUR CONFIG IF YOU DO SO!
# INSTEAD, COPY THIS CODE WITHIN YOUR OWN SECRETS.YAML          
##########

influxdb:
  host: xxxxxx
  port: 8086
  database: xxxx
  username: xxxx
  password: xxxxxxxxxxx
  max_retries: 3
  default_measurement: state
  




#   ############################## HiveMon start  ############################


sensor:
  - platform: template
    sensors:
      kube_1_alarm:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {% set sensor_value = states('sensor.kube_sensor') %}
          {% set alarm_message = alarm.get(sensor_value) %}
          {{ alarm_message if alarm_message is defined else 'Ukjent alarm' }}


  

mqtt:
  - sensor:
    - name: 'Kube 1 alarm'
      unique_id: kube1alarm
      state_topic: 'bikuber/kube1/alarmValue'
      state_class: measurement
   
    - name: 'Kube 1 vekt'
      unique_id: kube1Vekt
      state_topic: 'bikuber/kube1/vekt'
      state_class: measurement
      unit_of_measurement: 'Kg' 
    
    - name: 'Kube 1 DHT temp'
      unique_id: kube1DHTtemp
      state_topic: 'bikuber/kube1/DHTtempKube'
      unit_of_measurement: '°C' 

    - name: 'Kube 1 DHT fukt'
      unique_id: kube1DHTFukt
      state_topic: 'bikuber/kube1/DHTfuktKube'
      unit_of_measurement: '%RH'       
      
    - name: 'Kube 1 BS temp kube'
      unique_id: kube1BSTempKube
      state_topic: 'bikuber/kube1/BStempKube'
      unit_of_measurement: '°C'
      device_class: temperature

    - name: 'Kube 1 BS temp ute'
      unique_id: kube1BtempUte
      state_topic: 'bikuber/kube1/BStempUte'
      state_class: measurement
      unit_of_measurement: '°C'
      
    - name: 'Kube 1 volt'
      unique_id: kube1volt
      state_topic: 'bikuber/kube1/volt'  
      state_class: measurement
      unit_of_measurement: 'V'

    - name: 'Kube 1 kubenr'
      unique_id: kube1 kubeNr
      state_topic: 'bikuber/kube1/kubeNr'
      state_class: measurement
        
    - name: 'Kube 1 senderVersjonNr'
      unique_id: kube1versjonsnr
      state_topic: 'bikuber/kube1/senderVersjonNr'
      state_class: measurement
    
    - name: 'Kube 1 pakkeNr'
      unique_id: kube1 nr
      state_topic: 'bikuber/kube1/pakkeNr'
      state_class: measurement
      
    - name: 'Kube 1 signalstyrke'
      unique_id: kube1 signalstyrke
      state_topic: 'bikuber/kube1/signalstyrke'
#      state_class: measurement
      device_class: signal_strength
      unit_of_measurement: 'dBm'

  ############################## HiveMon ferdig  ############################      
      



Here is my home made bee hive PCB, that delivers data via LoRa to my receiver, receiver publish to HA (both ESP32)

Isn’t the sensor you want to check on for your template sensor sensor.kube_1_alarm? Becasue that is the mqtt sensor you created which is giving the state 9

sensor.kube_sensor probably doesn’t exist, and therefore sensor_value will return unknown

The other issue with your template is that you are checking if alarm_message is defined, which it will always be, as you just define it the line above. It could be none, but then it’s still defined.

Can you test this in developer tools > templates?:

          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {{ alarm.get(states('sensor.kube_1_alarm'), 'Ukjent alarm') }}
1 Like

Hi @TheFes

Isn’t the sensor you want to check on for your template sensor sensor.kube_1_alarm ? Becasue that is the mqtt sensor you created which is giving the state 9

Yes, my system sends a 9 when all is good, if battery is belov 3,8V it sends a 2, low battery

sensor.kube_sensor probably doesn’t exist, and therefore sensor_value will return unknown

This may be true, im not experienced enough to state true/false :wink:

Result:
image

Can you check the following in developer tools > template

{{ states('sensor.kube_1_alarm') }}
{{ states('sensor.kube_1_alarm_2') }}
{{ states('sensor.kube_sensor') }}

Hi again, so good to get some help :slight_smile:

Result
image

:

Okay, then this should give the desired output

          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {{ alarm.get(states('sensor.kube_1_alarm_2'), 'Ukjent alarm') }}

Hi

This goes to config.jaml?
as

  - platform: template
    sensors:
      kube_1_alarm_2:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {{ alarm.get(states('sensor.kube_1_alarm_2'), 'Ukjent alarm') }}

I got this:
image

image

Sorry, I’m on a noob level, but my wife will give me a hug :wink: I can send one to you

Replace the template you had here with the one I posted

Hi, I thought that wat was I did…

it gives a: image

  - platform: template
    sensors:
      kube_1_alarm_2:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {{ alarm.get(states('sensor.kube_1_alarm_2'), 'Ukjent alarm') }}

  - sensor:
    - name: 'Kube 1 alarm'
      unique_id: kube1alarm
      state_topic: 'bikuber/kube1/alarmValue'
      state_class: measurement

This looks like you’re messing up mqtt and sensor

based on your previously posted configuration.yaml it should look like this

# Loads default set of integrations. Do not remove.
default_config:

#my integration
my:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

##########
# Alt over er fra default installasjon
# DO NOT RENAME THIS FILE TO CONFIGURATION.YAML! YOU WILL BREAK YOUR CONFIG IF YOU DO SO!
# INSTEAD, COPY THIS CODE WITHIN YOUR OWN SECRETS.YAML          
##########

influxdb:
  host: xxxxxx
  port: 8086
  database: xxxx
  username: xxxx
  password: xxxxxxxxxxx
  max_retries: 3
  default_measurement: state
  




#   ############################## HiveMon start  ############################


sensor:
  - platform: template
    sensors:
      kube_1_alarm:
        friendly_name: "Kube 1 Alarm"
        value_template: >-
          {% set alarm = {
            '1': 'Kube 1 flyttet',
            '2': 'Kube 1 lavt batteri',
            '3': 'Kube 1 a',
            '4': 'Kube 1 b',
            '5': 'Kube 1 c',
            '6': 'Kube 1 d',
            '7': 'Kube 1 e',
            '8': 'Kube 1 f',
            '9': 'Kube 1 ingen alarm'
          } %}
          {{ alarm.get(states('sensor.kube_1_alarm_2'), 'Ukjent alarm') }}

  

mqtt:
  - sensor:
    - name: 'Kube 1 alarm'
      unique_id: kube1alarm
      state_topic: 'bikuber/kube1/alarmValue'
      state_class: measurement
   
    - name: 'Kube 1 vekt'
      unique_id: kube1Vekt
      state_topic: 'bikuber/kube1/vekt'
      state_class: measurement
      unit_of_measurement: 'Kg' 
    
    - name: 'Kube 1 DHT temp'
      unique_id: kube1DHTtemp
      state_topic: 'bikuber/kube1/DHTtempKube'
      unit_of_measurement: '°C' 

    - name: 'Kube 1 DHT fukt'
      unique_id: kube1DHTFukt
      state_topic: 'bikuber/kube1/DHTfuktKube'
      unit_of_measurement: '%RH'       
      
    - name: 'Kube 1 BS temp kube'
      unique_id: kube1BSTempKube
      state_topic: 'bikuber/kube1/BStempKube'
      unit_of_measurement: '°C'
      device_class: temperature

    - name: 'Kube 1 BS temp ute'
      unique_id: kube1BtempUte
      state_topic: 'bikuber/kube1/BStempUte'
      state_class: measurement
      unit_of_measurement: '°C'
      
    - name: 'Kube 1 volt'
      unique_id: kube1volt
      state_topic: 'bikuber/kube1/volt'  
      state_class: measurement
      unit_of_measurement: 'V'

    - name: 'Kube 1 kubenr'
      unique_id: kube1 kubeNr
      state_topic: 'bikuber/kube1/kubeNr'
      state_class: measurement
        
    - name: 'Kube 1 senderVersjonNr'
      unique_id: kube1versjonsnr
      state_topic: 'bikuber/kube1/senderVersjonNr'
      state_class: measurement
    
    - name: 'Kube 1 pakkeNr'
      unique_id: kube1 nr
      state_topic: 'bikuber/kube1/pakkeNr'
      state_class: measurement
      
    - name: 'Kube 1 signalstyrke'
      unique_id: kube1 signalstyrke
      state_topic: 'bikuber/kube1/signalstyrke'
#      state_class: measurement
      device_class: signal_strength
      unit_of_measurement: 'dBm'

  ############################## HiveMon ferdig  ############################

Thanks a lot for keeping up with me…

I receive 9, but “Ukjent alarm” (EN: Unknown alarm)

Dashboard:


Edit dashboard 1:
image

Edit dashboard 2:
image

Yes, I was already afraid this would happen, you should give your mqtt sensor a unique id so it won’t change entity_id every time.

Are you actually interested in the 9 state? You could apply the template directly in the mqtt configuration