Seite 1 von 1

OH 3 - Aktivieren / Deaktivieren von Rules mit Javascript

Verfasst: 4. Jun 2021 12:52
von der_micha
Hallo zusammen,

kann mir bitte jemand auf die Sprünge helfen wie ich das Ein- und Ausschalten von Rules in den Javascript-Teil bekomme. Über die UI ist das ja ganz easy, ich hätte das aber gerne in der If / Else Schleife.

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      thingUID: deconz:switch:00212E04E250:04cf8cdf3c7da1f0010012
      event: "1002"
      channelUID: deconz:switch:00212E04E250:04cf8cdf3c7da1f0010012:buttonevent
    type: core.ChannelEventTrigger
conditions: []
actions:
  - inputs: {}
    id: "3"
    configuration:
      type: application/javascript
      script: >
        if (itemRegistry.getItem('InnogyAussenleuchteAnbau_Dimmer').getState()
        == 'OFF') {
          events.sendCommand('InnogyAussenleuchteAnbau_Dimmer', 'ON');
        } else {
          events.sendCommand('InnogyAussenleuchteAnbau_Dimmer', 'OFF');
        }
    type: script.ScriptAction
  - id: "2"
    configuration:
      enable: "false"
      ruleUIDs:
        - Bewegungsmelder_Anbau_Aus
    type: core.RuleEnablementAction
Vielen Dank!

Update:
Ich habe das jetzt über ein Hilfs-Item realisiert, funktioniert auch - trotzdem würde ich gerne wissen wie das in Javascript gemacht wird. ;)

Re: OH 3 - Aktivieren / Deaktivieren von Rules mit Javascript

Verfasst: 4. Jun 2021 21:02
von ThomasW
Hey,

ich habe dazu folgendes gefunden so sollte es gehen.

Code: Alles auswählen

var FrameworkUtil = Java.type("org.osgi.framework.FrameworkUtil");
var _bundle = FrameworkUtil.getBundle(scriptExtension.class);
var bundle_context = _bundle.getBundleContext()
var classname = "org.openhab.core.automation.RuleManager"
var RuleManager_Ref = bundle_context.getServiceReference(classname);
var RuleManager = bundle_context.getService(RuleManager_Ref);

var thisRule = rules.getAll().stream().filter(function(i){ return i.name == "Rule Name" }).findFirst().get(); //Hier Wird die Rule anhand des Namens gesucht
//logger.info("This rules UID is " + thisRule.getUID());

// Disable a rule
RuleManager.setEnabled(thisRule.getUID(), false);

// Enable a rule
RuleManager.setEnabled(thisRule.getUID(), true);
gruß
Thomas

Re: OH 3 - Aktivieren / Deaktivieren von Rules mit Javascript

Verfasst: 6. Jun 2021 11:40
von der_micha
Hi Thomas,

vielen Dank, genau danach habe ich gesucht! Funktioniert einwandfrei, das hätte ich so nicht hinbekommen...

Ich wünsche noch ein schönes Restwochenende!!!