2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.denonmarantz.internal;
15 import java.math.BigDecimal;
16 import java.util.HashMap;
17 import java.util.LinkedHashMap;
20 import org.openhab.core.thing.ThingTypeUID;
21 import org.openhab.core.thing.type.ChannelTypeUID;
24 * The {@link DenonMarantzBinding} class defines common constants, which are
25 * used across the whole binding.
27 * @author Jan-Willem Veldhuis - Initial contribution
29 public class DenonMarantzBindingConstants {
31 public static final String BINDING_ID = "denonmarantz";
33 // List of all Thing Type UIDs
34 public static final ThingTypeUID THING_TYPE_AVR = new ThingTypeUID(BINDING_ID, "avr");
36 // List of thing Parameters names
37 public static final String PARAMETER_ZONE_COUNT = "zoneCount";
38 public static final String PARAMETER_HOST = "host";
39 public static final String PARAMETER_TELNET_ENABLED = "telnetEnabled";
40 public static final String PARAMETER_TELNET_PORT = "telnetPort";
41 public static final String PARAMETER_HTTP_PORT = "httpPort";
42 public static final String PARAMETER_POLLING_INTERVAL = "httpPollingInterval";
44 // List of all Channel ids
45 public static final String CHANNEL_POWER = "general#power";
46 public static final String CHANNEL_SURROUND_PROGRAM = "general#surroundProgram";
47 public static final String CHANNEL_COMMAND = "general#command";
48 public static final String CHANNEL_NOW_PLAYING_ARTIST = "general#artist";
49 public static final String CHANNEL_NOW_PLAYING_ALBUM = "general#album";
50 public static final String CHANNEL_NOW_PLAYING_TRACK = "general#track";
52 public static final String CHANNEL_MAIN_ZONE_POWER = "mainZone#power";
53 public static final String CHANNEL_MAIN_VOLUME = "mainZone#volume";
54 public static final String CHANNEL_MAIN_VOLUME_DB = "mainZone#volumeDB";
55 public static final String CHANNEL_MUTE = "mainZone#mute";
56 public static final String CHANNEL_INPUT = "mainZone#input";
58 public static final String CHANNEL_ZONE2_POWER = "zone2#power";
59 public static final String CHANNEL_ZONE2_VOLUME = "zone2#volume";
60 public static final String CHANNEL_ZONE2_VOLUME_DB = "zone2#volumeDB";
61 public static final String CHANNEL_ZONE2_MUTE = "zone2#mute";
62 public static final String CHANNEL_ZONE2_INPUT = "zone2#input";
64 public static final String CHANNEL_ZONE3_POWER = "zone3#power";
65 public static final String CHANNEL_ZONE3_VOLUME = "zone3#volume";
66 public static final String CHANNEL_ZONE3_VOLUME_DB = "zone3#volumeDB";
67 public static final String CHANNEL_ZONE3_MUTE = "zone3#mute";
68 public static final String CHANNEL_ZONE3_INPUT = "zone3#input";
70 public static final String CHANNEL_ZONE4_POWER = "zone4#power";
71 public static final String CHANNEL_ZONE4_VOLUME = "zone4#volume";
72 public static final String CHANNEL_ZONE4_VOLUME_DB = "zone4#volumeDB";
73 public static final String CHANNEL_ZONE4_MUTE = "zone4#mute";
74 public static final String CHANNEL_ZONE4_INPUT = "zone4#input";
76 // Map of Zone2 Channel Type UIDs (to be added to Thing later when needed)
77 public static final Map<String, ChannelTypeUID> ZONE2_CHANNEL_TYPES = new LinkedHashMap<>();
79 ZONE2_CHANNEL_TYPES.put(CHANNEL_ZONE2_POWER, new ChannelTypeUID(BINDING_ID, "zonePower"));
80 ZONE2_CHANNEL_TYPES.put(CHANNEL_ZONE2_VOLUME, new ChannelTypeUID(BINDING_ID, "volume"));
81 ZONE2_CHANNEL_TYPES.put(CHANNEL_ZONE2_VOLUME_DB, new ChannelTypeUID(BINDING_ID, "volumeDB"));
82 ZONE2_CHANNEL_TYPES.put(CHANNEL_ZONE2_MUTE, new ChannelTypeUID(BINDING_ID, "mute"));
83 ZONE2_CHANNEL_TYPES.put(CHANNEL_ZONE2_INPUT, new ChannelTypeUID(BINDING_ID, "input"));
86 // Map of Zone3 Channel Type UIDs (to be added to Thing later when needed)
87 public static final Map<String, ChannelTypeUID> ZONE3_CHANNEL_TYPES = new LinkedHashMap<>();
89 ZONE3_CHANNEL_TYPES.put(CHANNEL_ZONE3_POWER, new ChannelTypeUID(BINDING_ID, "zonePower"));
90 ZONE3_CHANNEL_TYPES.put(CHANNEL_ZONE3_VOLUME, new ChannelTypeUID(BINDING_ID, "volume"));
91 ZONE3_CHANNEL_TYPES.put(CHANNEL_ZONE3_VOLUME_DB, new ChannelTypeUID(BINDING_ID, "volumeDB"));
92 ZONE3_CHANNEL_TYPES.put(CHANNEL_ZONE3_MUTE, new ChannelTypeUID(BINDING_ID, "mute"));
93 ZONE3_CHANNEL_TYPES.put(CHANNEL_ZONE3_INPUT, new ChannelTypeUID(BINDING_ID, "input"));
96 // Map of Zone4 Channel Type UIDs (to be added to Thing later when needed)
97 public static final Map<String, ChannelTypeUID> ZONE4_CHANNEL_TYPES = new LinkedHashMap<>();
99 ZONE4_CHANNEL_TYPES.put(CHANNEL_ZONE4_POWER, new ChannelTypeUID(BINDING_ID, "zonePower"));
100 ZONE4_CHANNEL_TYPES.put(CHANNEL_ZONE4_VOLUME, new ChannelTypeUID(BINDING_ID, "volume"));
101 ZONE4_CHANNEL_TYPES.put(CHANNEL_ZONE4_VOLUME_DB, new ChannelTypeUID(BINDING_ID, "volumeDB"));
102 ZONE4_CHANNEL_TYPES.put(CHANNEL_ZONE4_MUTE, new ChannelTypeUID(BINDING_ID, "mute"));
103 ZONE4_CHANNEL_TYPES.put(CHANNEL_ZONE4_INPUT, new ChannelTypeUID(BINDING_ID, "input"));
107 * Static mapping of ChannelType-to-ItemType (workaround while waiting for
108 * https://github.com/eclipse/smarthome/issues/4950 as yet there is no convenient way to extract the item type from
110 * See https://github.com/eclipse/smarthome/pull/4787#issuecomment-362287430
112 public static final Map<String, String> CHANNEL_ITEM_TYPES = new HashMap<>();
114 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE2_POWER, "Switch");
115 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE2_VOLUME, "Dimmer");
116 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE2_VOLUME_DB, "Number");
117 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE2_MUTE, "Switch");
118 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE2_INPUT, "String");
120 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE3_POWER, "Switch");
121 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE3_VOLUME, "Dimmer");
122 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE3_VOLUME_DB, "Number");
123 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE3_MUTE, "Switch");
124 CHANNEL_ITEM_TYPES.put(CHANNEL_ZONE3_INPUT, "String");
127 // Offset in dB from the actual dB value to the volume as presented by the AVR (0 == -80 dB)
128 public static final BigDecimal DB_OFFSET = new BigDecimal("80");