Python rules: Grundkonfiguration
-
- Beiträge: 16
- Registriert: 12. Sep 2021 19:33
Python rules: Grundkonfiguration
Hallo,
Openhabian (openHAB 3.2.0.M2)
mit folgenden beiden Problemen schlage ich mich schon eine Weile herum und finde einfach keine Lösung:
1. Ich möchte gerne "globale" Funktionen in Regeln nutzen. Konkret will ich 5 Kanal Licht (RGBCCT) mit Werten in eine Variable speichern und wieder separieren. Der Algrorithmus ist kein Problem und funktioniert wunderbar - aber den Code binde ich derzeit in jede Rule [def get_light_values(in_item):] einzeln ein, das ist sehr unschön. Die Versuche diese function aus dem "personal" Folder zu importieren misslingt mir.
Git es einen Tipp?
2. Alle Versuche Variablen mit den Opentypen zu instantieren (z.B. new HSBType) schlagen fehl:
SyntaxError: no viable alternative at input 'HSBType'
Ich denke mir fehlt ein Konfiguartionssetting damit die Python richtig arbeiten kann.
An welcher Stelle kann ich nachschauen?
Danke
Matthias
Openhabian (openHAB 3.2.0.M2)
mit folgenden beiden Problemen schlage ich mich schon eine Weile herum und finde einfach keine Lösung:
1. Ich möchte gerne "globale" Funktionen in Regeln nutzen. Konkret will ich 5 Kanal Licht (RGBCCT) mit Werten in eine Variable speichern und wieder separieren. Der Algrorithmus ist kein Problem und funktioniert wunderbar - aber den Code binde ich derzeit in jede Rule [def get_light_values(in_item):] einzeln ein, das ist sehr unschön. Die Versuche diese function aus dem "personal" Folder zu importieren misslingt mir.
Git es einen Tipp?
2. Alle Versuche Variablen mit den Opentypen zu instantieren (z.B. new HSBType) schlagen fehl:
SyntaxError: no viable alternative at input 'HSBType'
Ich denke mir fehlt ein Konfiguartionssetting damit die Python richtig arbeiten kann.
An welcher Stelle kann ich nachschauen?
Danke
Matthias
-
- Beiträge: 121
- Registriert: 7. Jan 2020 19:36
Re: Python rules: Grundkonfiguration
also ich mach das ganz einfach so:
bedenke dass wenn du an der datei im ordner personal veränderungen vornimmst diese erst nach neustart von oh geladen werden. alternativ in der python-datei so das neuladen erzwingen:
Code: Alles auswählen
from personal.tk_mod import confirm_function # modul unter /etc/openhab/automation/lib/python/personal
Code: Alles auswählen
import personal.tk_mod
reload(personal.tk_mod)
from personal.tk_mod import confirm_function # modul unter /etc/openhab/automation/lib/python/personal
-
- Beiträge: 16
- Registriert: 12. Sep 2021 19:33
Re: Python rules: Grundkonfiguration
danke für die Antwort - das hat funktioniert,
nachdem ich die Datei __init__.py im personal Folder erzeugt hatte, die hatte dort gefehlt.
Aber leider laufen die Scripts im personal folder auf Fehler:
ImportError: No module named openhab in <script> at line number
Ich versuche die itemRegistry einzubinden und habe dazu viele verschiedene Versuche unternommen. Aktuell mit folgendem Code:
Ich verstehe auch die ganze Struktur der "Code-Ordner" noch nicht so richtig. Was ist der Unterschied und was wird für an welcher Stelle herangezogen.
jsr223 vs jython vs python
automation/lib vs Core/automation
Auch beim lesen der Doku ist mir leider die Erleuchtung nicht gekommen.
nachdem ich die Datei __init__.py im personal Folder erzeugt hatte, die hatte dort gefehlt.
Aber leider laufen die Scripts im personal folder auf Fehler:
ImportError: No module named openhab in <script> at line number
Ich versuche die itemRegistry einzubinden und habe dazu viele verschiedene Versuche unternommen. Aktuell mit folgendem Code:
Code: Alles auswählen
from org.slf4j import LoggerFactory
import sys
from openhab.jsr223 import scope
def get_light_values(in_item):
myItem = scope.itemRegistry.getItem(in_item)
jsr223 vs jython vs python
automation/lib vs Core/automation
Auch beim lesen der Doku ist mir leider die Erleuchtung nicht gekommen.
-
- Beiträge: 121
- Registriert: 7. Jan 2020 19:36
Re: Python rules: Grundkonfiguration
also die item registry binde ich so ein:
und die items verarbeite ich dann so:
ich bin leider kein programmierer, kann dir zur ordnerstruktur nicht viel sagen, nur
- im ordner "jython" ist NUR das addon selber, bei mir die "jython-standalone-2.7.0.jar"
- jsr223 ist der hauptordner, du kannst ja groovy, javascript oder python programmiren, darum sind diese drei unterordner drin. im ordner personal hab ich meine ganzen selbst geschriebenen programme. die ordner community und core hab ich nicht angetastet.
- unter lib/python/personal hab ich meine module ausgelagert die ich mit import in verschiedene programme hole
- einen ordner core/automation finde ich bei mir gar nicht.
Code: Alles auswählen
from core.jsr223.scope import ir
Code: Alles auswählen
if ir.getItems(item_name) == ...
- im ordner "jython" ist NUR das addon selber, bei mir die "jython-standalone-2.7.0.jar"
- jsr223 ist der hauptordner, du kannst ja groovy, javascript oder python programmiren, darum sind diese drei unterordner drin. im ordner personal hab ich meine ganzen selbst geschriebenen programme. die ordner community und core hab ich nicht angetastet.
- unter lib/python/personal hab ich meine module ausgelagert die ich mit import in verschiedene programme hole
- einen ordner core/automation finde ich bei mir gar nicht.
-
- Beiträge: 16
- Registriert: 12. Sep 2021 19:33
Re: Python rules: Grundkonfiguration

Aber leider gleicher Fehler jetzt aber
ImportError: No module named core in ...
Das scheint aber auf das gleiche wie mein zweites Problem (mit den Variablen Typen) herauszulaufen. Die Python-Openhab-Definitionen werden nicht richtig eingebunden und ich finde einfach die Stelle nicht an der ich das anschieben kann.
-
- Beiträge: 121
- Registriert: 7. Jan 2020 19:36
Re: Python rules: Grundkonfiguration
puh tut mir leid, da bin ich am ende. ev runter und nochmal neu installieren. ich habs damit gemacht:
https://github.com/CrazyIvan359/openhab ... -libraries
(dort ist auch ein link zu ner beschreibung)
https://github.com/CrazyIvan359/openhab ... -libraries
(dort ist auch ein link zu ner beschreibung)
-
- Beiträge: 16
- Registriert: 12. Sep 2021 19:33
Re: Python rules: Grundkonfiguration
Danke für die Hilfe.
Wenn garnix mehr geht werde ich es bestimnmt mit einer Neuinstallation versuchen.
Aber vielleicht hat ja sonst noch jemand eine Idee. Die Installation ist noch "ziemlich frisch" und noch habe ich den Ehrgeiz das Problem zu verstehen (bin halt ein bisschen IT Nerd).
Wenn garnix mehr geht werde ich es bestimnmt mit einer Neuinstallation versuchen.
Aber vielleicht hat ja sonst noch jemand eine Idee. Die Installation ist noch "ziemlich frisch" und noch habe ich den Ehrgeiz das Problem zu verstehen (bin halt ein bisschen IT Nerd).
-
- Beiträge: 121
- Registriert: 7. Jan 2020 19:36
Re: Python rules: Grundkonfiguration
du kannst aber mit hilfe der beschreibung nochmal querchecken ob du alle schritte gemacht hast oder ev was vergessen. deine pfade stimmen (/var/lib/openhab/automation/...)?
-
- Beiträge: 16
- Registriert: 12. Sep 2021 19:33
Re: Python rules: Grundkonfiguration
Ach ja: ich bin Programmierer - wenn auch Neuling in Python.
Habe aber seit vielen Jahren Ehrfahrungen mit Pascal (Delphi) / C++ / Perl / PHP / Javascript und ein bischen JAVA.
Aber was nutzt's, wenn man die Grundstruktur nicht versteht....
Das Leben ist zu kurz nicht dazu zu lernen.
Habe aber seit vielen Jahren Ehrfahrungen mit Pascal (Delphi) / C++ / Perl / PHP / Javascript und ein bischen JAVA.
Aber was nutzt's, wenn man die Grundstruktur nicht versteht....
Das Leben ist zu kurz nicht dazu zu lernen.
-
- Beiträge: 16
- Registriert: 12. Sep 2021 19:33
Re: Python rules: Grundkonfiguration
Beide Probleme gelöst.
Die Verzeichnisstruktur war falsch... Die Installation der "Programming Engine" lag unter
/etc/openhab/Core/automation statt
/etc/openhab/automation
Ich habe alles an richtigen Platz kopiert und siehe da:
Kaum macht man Dinge richtig funktionieren sie schon.
Danke
Matthias
Die Verzeichnisstruktur war falsch... Die Installation der "Programming Engine" lag unter
/etc/openhab/Core/automation statt
/etc/openhab/automation
Ich habe alles an richtigen Platz kopiert und siehe da:
Kaum macht man Dinge richtig funktionieren sie schon.
Danke
Matthias