Blockly Rule kopieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

pauliv_de
Beiträge: 31
Registriert: 31. Jan 2019 23:59
Answers: 0
Wohnort: Gütersloh

Blockly Rule kopieren

Beitrag von pauliv_de »

Ein Blockly Script das ich entwickelt habe besteht aus ca. 20 Blöcken.
Ein ähnliches Script benötige ich mehrmals, deshalb würde ich es gerne kopieren anderswo einfügen und dann entsprechend anpassen.
Kennt jemand einen Trick wie man sowas machen kann ?
Danke im Voraus
Paul
Raspberry Pi 3 Model B Rev 1.2, piVCCU version: 3.73.9-87, openHAB version: 4.1.0 Release Build

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Blockly Rule kopieren

Beitrag von Harka »

Hi,
Du kannst den Code der Rule kopieren und in die neue Rule einfügen (das Teil mit dem kryptischen blockSource).
Schau auch mal ob du den wiederholten Teil nicht in ein eigenes Scipt auslagern kannst und in den Regeln aufrufst.

pauliv_de
Beiträge: 31
Registriert: 31. Jan 2019 23:59
Answers: 0
Wohnort: Gütersloh

Re: Blockly Rule kopieren

Beitrag von pauliv_de »

OK, danke daran hatte ich auch schon gedacht.. da ich verschiedene Blockly Scripte für jemand anderes vorbereiten möchte, bleibt bei dieser Vorgehensweise die "grafische Programmierung" auf der Strecke.

Nun habe ich es auf eine andere Art und Weise versucht...

Die Datei "automation_rules.json" im Verzeichnis \\<servername>\openHAB-userdata\jsondb enthält Rules und Scripte.
Die grafischen Blockly Scripte beginnen jeweils mit "blockSource":
Einen solchen Block habe ich über einen anderen vorhanden "blockSource": kopiert... allerdings kann man das in der UI noch nicht erkennen. Erst nachdem ich openHAB neu gestartet hatte war die Änderung sichtbar und auch einsatzbar !

Es geht also doch - bei dieser Vorgehensweise sind ein Backup zuvor und eine sehr sorgfältige Ausführung unerlässlich !

Wer nicht genau weiß was er tut sollte das NICHT nachmachen !!
Raspberry Pi 3 Model B Rev 1.2, piVCCU version: 3.73.9-87, openHAB version: 4.1.0 Release Build

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Blockly Rule kopieren

Beitrag von udo1toni »

Nein, Du kannst einfach den Code-Block einer Blockly Rule kopieren und in eine neue (leere) Blockly Rule einfügen. Du musst lediglich darauf achten, nicht den Namen der Rule zu überschreiben. Anschließend kannst Du wieder in die grafische Ansicht zurück schalten und solltest dort die Blockly Rule als Kopie vorfinden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

pauliv_de
Beiträge: 31
Registriert: 31. Jan 2019 23:59
Answers: 0
Wohnort: Gütersloh

Re: Blockly Rule kopieren

Beitrag von pauliv_de »

Hallo Udo, so geht's bei mir nicht.
Raspberry Pi 3 Model B Rev 1.2, piVCCU version: 3.73.9-87, openHAB version: 4.1.0 Release Build

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Blockly Rule kopieren

Beitrag von udo1toni »

Ich habe das gerade bei mir getestet und es funktioniert einwandfrei.

Im Einzelnen:
  1. eine leere Rule anlegen, Namen vergeben, then-Teil auf Blockly Rule konfigurieren.
  2. Rule speichern.
  3. Codeblock der zu kopierenden Rule markieren und in die Zwischenablage abspeichern (as it is).
  4. In die neue Rule wechseln, dort in die Codeansicht wechseln.
  5. Codeblock einfügen.
  6. Speichern nicht vergessen.
  7. Ansicht auf Blockly wechseln.
Punkt 3. habe ich allerdings als erstes gemacht, aber das spielt keine Rolle, man kann dann nur die Zwischenablage nicht verwenden, bis der Code eingefügt wurde...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

pauliv_de
Beiträge: 31
Registriert: 31. Jan 2019 23:59
Answers: 0
Wohnort: Gütersloh

Re: Blockly Rule kopieren

Beitrag von pauliv_de »

Leider funktioniert es nicht, und zwar kann ich den Punkt 7 nicht ausführen.
Im Normalfall sind sowohl in der Blockly-Ansicht wie auch in der Codeansicht unten rechts zwei Icons mit denen man zwischen den Ansichten umschalten kann.
Diese Icons habe ich bei der kopierten Regel in der Codeansicht leider nicht....
(openHAB 3.3.0 auf piVCCU)
Raspberry Pi 3 Model B Rev 1.2, piVCCU version: 3.73.9-87, openHAB version: 4.1.0 Release Build

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Blockly Rule kopieren

Beitrag von Harka »

Versuch das Einfügen mal bitte mit diesem kleinem Beispiel:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      time: 19:00
    type: timer.TimeOfDayTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      blockSource: <xml xmlns="https://developers.google.com/blockly/xml"><block
        type="oh_log" id="eUA8Y#XHaAo]]JhgSuhC" x="4" y="25"><field
        name="severity">info</field><value name="message"><shadow type="text"
        id="]5Mtn@8YajWu=lV1*E/9"><field name="TEXT">es ist 19:00
        Uhr</field></shadow></value></block></xml>
      type: application/javascript
      script: >
        var logger =
        Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' +
        ctx.ruleUID);



        logger.info('es ist 19:00 Uhr');
    type: script.ScriptAction
Hier klappt es auf der Rules-Seite mit
(+) Drücken -> Namen vergeben -> rechts oben auf Code gehen -> die 4 vorhanden Zeilen entfernen -> neuen Code einfügen -> speichern

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Blockly Rule kopieren

Beitrag von udo1toni »

pauliv_de hat geschrieben: 11. Jul 2022 14:56 Leider funktioniert es nicht, und zwar kann ich den Punkt 7 nicht ausführen.
Im Normalfall sind sowohl in der Blockly-Ansicht wie auch in der Codeansicht unten rechts zwei Icons mit denen man zwischen den Ansichten umschalten kann.
Diese Icons habe ich bei der kopierten Regel in der Codeansicht leider nicht....
(openHAB 3.3.0 auf piVCCU)
Nö. Die Umschaltung zwischen grafischer und Code-Ansicht erfolgt in der Main UI oben über die Karteireiter mit der passenden Beschriftung, da gibt es keine Icons.

Notfalls schließt Du das Script komplett und öffnest die Rule anschließend neu. Wenn das nicht funktioniert, hast Du Dich nicht an die Beschreibung gehalten.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

pauliv_de
Beiträge: 31
Registriert: 31. Jan 2019 23:59
Answers: 0
Wohnort: Gütersloh

Re: Blockly Rule kopieren

Beitrag von pauliv_de »

Ja, jetzt habe ich es begriffen....
Im Titel habe ich zwar "Blockly Rule kopieren" geschrieben, im Text aber "Blockly Script" und genau das hatte ich auch versucht, denn beim Anlegen einer Rule hatte ich im THEN-Teil "Run Script" ausgewählt, und zwar ein vorhandenes
Unter Udos Punkt 3 habe ich immer die Javascript-Ansicht kopiert, und das führt eben nicht zum gewünschten Ergebnis. Das Script hatte ich zuerst angelegt, die Rule dazu erst anschließend.
Das bedeutet; ein vorhandenes Blockly-Script kann man nicht so einfach kopieren, wohl aber eine Rule deren Script in einem Arbeitsgang mit der Rule angelegt wird!

Danke an Udo und Harka für eure tatkräftige Unterstüzung.
Raspberry Pi 3 Model B Rev 1.2, piVCCU version: 3.73.9-87, openHAB version: 4.1.0 Release Build

Antworten