Mqtt binary sensor with more than one payload_on

Use a demux script, and set the value for all possible receives.

d = { '14C9EC':['pir1_sensor','ON','false'],
      '14C9ED':['pir1_sensor','ON','false'],
      '14163857':['doorbell_sensor','ON','false'],
      '13666408':['firealarm','ON','false'],
      '564886':['garagedoor','ON','false'],
      '16726408':['lichteetkamerboven','ON','false'],
      '16765268':['impuls','ON','false'],
      '16766303':['impulsb','OFF','false'],
      '16765265':['flamingo1','ON','false'],
      '352003':['buurvrouw','ON','false'],
      '1213858':['lichtwaskot','ON','false'],
      '1224498':['buurvrouw1','ON','false'],
      '16762193':['impulsa','OFF','false'],
      '16762196':['impulsa','ON','false'],
      '2291358':['voordeur','ON','true'],
      '2291351':['voordeur','OFF','true'],
      '2283159':['voordeur','OFF','true'],      
      '152232' :['schuindak','ON','false'],
      '16762196':['onbekend','ON','false'],
      '14783052':['firealarm','ON','false'],
      '8345702':['onbekend','ON','false'],
      '774915':['achterdeur','ON','true'],
      '774921':['achterdeur','OFF','true']
    }


p = data.get('payload')

if p is not None:
  if p in d.keys():
    service_data = {'topic':'sensor/{}'.format(d[p][0]), 'payload':'{}'.format(d[p][1]), 'qos':0, 'retain':'{}'.format(d[p][2])}
  else:
    service_data = {'topic':'sensor/unknown', 'payload':'{}'.format(p), 'qos':0, 'retain':'false'}
  hass.services.call('mqtt', 'publish', service_data, False)

2 Likes