Ankündigung

Einklappen
Keine Ankündigung bisher.

Items dynamisch erzeugen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Items dynamisch erzeugen

    Hallo OH Spezialisten,

    für ein Binding mit dem ich wechselnde Variablen über http holen möchte, brauche ich dynamisch erzeugte Items in OH. Also statt einem statischen *.items File sollen die Items dynamisch per Binding erzeugt werden (nachdem die Konfiguration des Gerätes abgefragt wurde) und in OH verfügbar gemacht werden.

    Aktuell habe ich das schon zum Teil erreicht über die Funktion org.openhab.core.items.ItemProvider:getItems()

    zB so:
    Code:
    @Override
    public Collection<Item> getItems() {
        logger.info("###  DynItemService!  ### getItems called in "+this);
    
        //TEST: http://localhost:8080/rest/items/dynItemNAME
    
        GenericItem item = new GenericItem("dynTestItem") {
            @Override
            public List<Class<? extends State>> getAcceptedDataTypes() {
                List<Class<? extends State>> list = new ArrayList<Class<? extends State>>();
                list.add(StringType.class);
                return list;
            }
    
            @Override
            public List<Class<? extends Command>> getAcceptedCommandTypes() {
                List<Class<? extends Command>> list = new ArrayList<Class<? extends Command>>();
                list.add(StringType.class);
                return list;
            }
        };
        GroupItem g = new GroupItem("dynItemNAME", item);
    
        StringItem srtt1 = new StringItem("memberStrinItem1");
        NumberItem srtt2 = new NumberItem("memberNumberItem2");
        NumberItem srtt3 = new NumberItem("memberNumberItem3");
        
        srtt1.setState(new StringType("StringType String Value"));
        srtt2.setState(new PercentType(10));
        srtt3.setState(new DecimalType(10.11));
        
        g.addMember(srtt1);
        g.addMember(srtt2);
        g.addMember(srtt3);
    
    
        dynEnergyItems.put("item1", g);
    
        return dynEnergyItems.values();
    }
    Nur möchte ich nun auch die url für das http-Binding dynamisch in OH erzeugen. Soweit ich es verstanden habe müsste ich die Funktion org.openhab.binding.http.internal.HttpGenericBindi ngProvider-processBindingConfiguration in meinem Binding ansprechen können um so etwas hinzubekommen.

    Nur lässt sich (zumindest hab ich es nicht hin bekommen) dieser "internal" Teil des http-Binding nicht über OSGI einbinden weder über eine Referenz (set, unset) noch über einen Service Provider (service,provide:interface).

    Hat jemand Ideen wie ich das evtl. sauber lösen kann?

    Mir ist klar, dass OH (derzeit noch) nicht dafür gedacht ist solche Funktionalität zu bauen, aber ich will mal vorgreifen.

    Danke für Eure Gedanken dazu.

    Helmut
Lädt...
X