Seite 1 von 2
Python rules: Grundkonfiguration
Verfasst: 27. Okt 2021 16:39
von matthiasP
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
Re: Python rules: Grundkonfiguration
Verfasst: 28. Okt 2021 09:27
von bastler
also ich mach das ganz einfach so:
Code: Alles auswählen
from personal.tk_mod import confirm_function # modul unter /etc/openhab/automation/lib/python/personal
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
import personal.tk_mod
reload(personal.tk_mod)
from personal.tk_mod import confirm_function # modul unter /etc/openhab/automation/lib/python/personal
Re: Python rules: Grundkonfiguration
Verfasst: 28. Okt 2021 16:46
von matthiasP
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:
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)
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.
Re: Python rules: Grundkonfiguration
Verfasst: 28. Okt 2021 17:06
von bastler
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.
Re: Python rules: Grundkonfiguration
Verfasst: 28. Okt 2021 17:36
von matthiasP

Danke!
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.
Re: Python rules: Grundkonfiguration
Verfasst: 28. Okt 2021 17:43
von bastler
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)
Re: Python rules: Grundkonfiguration
Verfasst: 28. Okt 2021 18:35
von matthiasP
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).
Re: Python rules: Grundkonfiguration
Verfasst: 29. Okt 2021 08:48
von bastler
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/...)?
Re: Python rules: Grundkonfiguration
Verfasst: 29. Okt 2021 14:55
von matthiasP
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.
Re: Python rules: Grundkonfiguration
Verfasst: 30. Okt 2021 08:40
von matthiasP
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