Skip to content

Commit

Permalink
Add console extension for showing IDs
Browse files Browse the repository at this point in the history
Fixes openhab#13599

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
  • Loading branch information
jlaur committed Oct 24, 2022
1 parent 671d2de commit 0892fca
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 3 deletions.
8 changes: 6 additions & 2 deletions bundles/org.openhab.binding.meater/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,18 @@ This binding supports the following thing types:

## Discovery

The preferred way of adding MEATER probe(s) since the probe IDs are not easily found.
The binding supports auto-discovery of all MEATER probe(s) belonging to the configured cloud API account.

**NOTE**: For The Original MEATER and MEATER Plus you need to have your MEATER app running and the MEATER probe(s) must connected to the cloud (out of the charger box) before you start the discovery.


After the configuration of the Bridge, you need to perform a manual scan and then your MEATER probe(s) will be automatically discovered and placed as a thing(s) in the inbox.

## Thing Configuration

When manually configuring the probes, the console command `openhab:meater showIds` can be used to identify the IDs of all connected probes.
Since the probes are unnamed, they can be hard to identify.
For this reason, the ambient temperature is included in the list.
This might help isolating an individual probe.

## Supported Things and Channels

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
@NonNullByDefault
public class MeaterBindingConstants {

private static final String BINDING_ID = "meater";
public static final String BINDING_ID = "meater";

// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_MEATER_PROBE = new ThingTypeUID(BINDING_ID, "meaterprobe");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/**
* Copyright (c) 2010-2022 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.meater.internal.console;

import java.util.Arrays;
import java.util.List;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.meater.internal.MeaterBindingConstants;
import org.openhab.binding.meater.internal.handler.MeaterBridgeHandler;
import org.openhab.core.io.console.Console;
import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension;
import org.openhab.core.io.console.extensions.ConsoleCommandExtension;
import org.openhab.core.thing.Thing;
import org.openhab.core.thing.ThingRegistry;
import org.openhab.core.thing.binding.ThingHandler;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

/**
* The {@link MeaterCommandExtension} is responsible for handling console commands
*
* @author Jacob Laursen - Initial contribution
*/
@NonNullByDefault
@Component(service = ConsoleCommandExtension.class)
public class MeaterCommandExtension extends AbstractConsoleCommandExtension {

private static final String SHOW_IDS = "showIds";

private final ThingRegistry thingRegistry;

@Activate
public MeaterCommandExtension(final @Reference ThingRegistry thingRegistry) {
super(MeaterBindingConstants.BINDING_ID, "Interact with the Meater binding.");
this.thingRegistry = thingRegistry;
}

@Override
public void execute(String[] args, Console console) {
if (args.length != 1 || !SHOW_IDS.equals(args[0])) {
printUsage(console);
return;
}

for (Thing thing : thingRegistry.getAll()) {
ThingHandler thingHandler = thing.getHandler();
if (thingHandler instanceof MeaterBridgeHandler) {
console.println("API bridge: " + thing.getLabel());
((MeaterBridgeHandler) thingHandler).getMeaterThings().entrySet().stream().forEach(t -> {
console.println(" - ID: " + t.getKey() + " (ambient temperature: "
+ t.getValue().temperature.ambient + ")");
});
}
}
}

@Override
public List<String> getUsages() {
return Arrays.asList(buildCommandUsage(SHOW_IDS, "list all probes"));
}
}

0 comments on commit 0892fca

Please sign in to comment.