openhab 2.5 auf 3.x

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

openhab 2.5 auf 3.x

Beitrag von MrWichtig »

Hallo,

ich habe bisher die Openhab Version 2.5 genutzt.

heute habe ich mir eine neue Openhab Version 3 aufgesetzt.

kann ich die bestehende knx.items, knx.things und knx.rules von OH2.5 auch auf der OH 3 Version nutzen oder hat sich da etwas im Aufbau geändert, dass man die Dateien von Grund auf neu inhaltlich konfigurieren muss?

im Openhab3 GUI werden mir zumindest alle Items einmal angezeigt.

Was jedoch nicht funktioniert, dass bei Homekit die Geräte angezeigt werden?!

MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

Re: openhab 2.5 auf 3.x

Beitrag von MrWichtig »

Hallo,

ich bin schon auf den Fehler draufgekommen.

in der knx.items dürfte jetzt von OH2.x auf OH 3.x ein Zusatz notwendig sein, dass die Geräte in homekit generell erkannt werden:

z.B.: für Licht
{homekit="Lighting ", channel="knx:device:bridge:...............}

....dann werden auch die Geräte erkannt.

für mich als Conclusio, dass zumindest die knx.items (bis auf das für homekit zusätzlich noch ein Parameter hinzugefügt werden muss) und die knx.things von OH2.x auf OH3.x gleich verwendet werden können.

MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

Re: openhab 2.5 auf 3.x

Beitrag von MrWichtig »

Was gar nicht funktioniert seit dem Umstieg von OH2.x auf OH 3.x sind die rules ?! (knx.rules)

hat sich hier etwas geändert?

z.B.: habe ich folgende Regel in OH2.5 in Betrieb gehabt welche auch immer funktionierte und in OH3 überhaupt gar nicht mehr angeht ?

kann mir hierzu jemand einen Tipp geben?

THX!

Code: Alles auswählen

rule "Fernseher ein/aus"
when
    Item harmony_hub_tv_act received command
then
    switch(receivedCommand) {
        case ON : {
            harmony_hub_tv.sendCommand("TVgucken")
            if(!(RolloGruppe1_Ch3.state instanceof DecimalType) || (RolloGruppe1_Ch3.state as DecimalType).intValue < 50) {
                RolloGruppe1_Ch3.sendCommand(50)
            }
            if(!(RolloGruppe1_Ch3.state instanceof DecimalType) || (RolloGruppe1_Ch3.state as DecimalType).intValue == 100) {
                RolloGruppe1_Ch3.sendCommand(DOWN)
            }
            if(!(RolloGruppe1_Ch4.state instanceof DecimalType) || (RolloGruppe1_Ch4.state as DecimalType).intValue < 50) {
                RolloGruppe1_Ch4.sendCommand(50)
            }
            if(!(RolloGruppe1_Ch4.state instanceof DecimalType) || (RolloGruppe1_Ch4.state as DecimalType).intValue == 100) {
                RolloGruppe1_Ch4.sendCommand(DOWN)
            }
        }
        case OFF : {
           harmony_hub_tv.sendCommand("PowerOff")
            if(!(RolloGruppe1_Ch3.state instanceof DecimalType) || (RolloGruppe1_Ch3.state as DecimalType).intValue == 50) {
                RolloGruppe1_Ch3.sendCommand(UP)
            }
            if(!(RolloGruppe1_Ch3.state instanceof DecimalType) || (RolloGruppe1_Ch3.state as DecimalType).intValue == 100) {
                RolloGruppe1_Ch3.sendCommand(DOWN)
            }
            if(!(RolloGruppe1_Ch4.state instanceof DecimalType) || (RolloGruppe1_Ch4.state as DecimalType).intValue == 50) {
                RolloGruppe1_Ch4.sendCommand(UP)
            }
            if(!(RolloGruppe1_Ch4.state instanceof DecimalType) || (RolloGruppe1_Ch4.state as DecimalType).intValue == 100) {
                RolloGruppe1_Ch4.sendCommand(DOWN)
            }
            if(!(RolloGruppe1_Ch8.state instanceof DecimalType) || (RolloGruppe1_Ch8.state as DecimalType).intValue == 50) {
                RolloGruppe1_Ch8.sendCommand(UP)
            }
            if(!(RolloGruppe1_Ch8.state instanceof DecimalType) || (RolloGruppe1_Ch8.state as DecimalType).intValue == 100) {
                RolloGruppe1_Ch8.sendCommand(DOWN)
            }
            
   }
   }
end

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

Re: openhab 2.5 auf 3.x

Beitrag von udo1toni »

Die rule sollte unverändert funktionieren. Siehst Du im log irgendwas zu der Rule (z.B. dass sie nicht geladen wird...)?

Allerdings hast Du da auch eine Menge unnützen Code drin. Eine Position = 100 bedeutet, dass der Laden geschlossen ist. Er muss also nicht bewegt werden. Umgekehrt bedeutet eine Position = 0, dass der Laden geöffnet ist, er muss also ebenfalls nicht bewegt werden.
Die Abfrage nach instanceof ist nur in einer separaten Anweisung sinnvoll. Abgesehen davon steht sie im Code an widersprüchlichen Stellen.
Da Du explizit den Wert 50 an die Läden sendest, wäre es sinnvolle, den Code so aufzubauen:

Code: Alles auswählen

rule "Fernseher ein/aus"
when
    Item harmony_hub_tv_act received command
then
    var Number rollo3
    var Number rollo4
    var Number rollo8

    switch(receivedCommand) {
        case ON : {
            harmony_hub_tv.sendCommand("TVgucken")
            if(!(RolloGruppe1_Ch3.state instanceof Number)) rollo3 = 50
            else if(RolloGruppe1_Ch3.state as Number) < 50) rollo3 = 50
            else if(RolloGruppe1_Ch3.state as Number) == 100) rollo3 = 100
            if(!(RolloGruppe1_Ch4.state instanceof Number)) rollo4 = 50
            else if(RolloGruppe1_Ch4.state as Number) < 50) rollo4 = 50
            else if(RolloGruppe1_Ch4.state as Number) == 100) rollo4 = 100
        }
        case OFF : {
           harmony_hub_tv.sendCommand("PowerOff")
            if(!(RolloGruppe1_Ch3.state instanceof Number)) rollo3 = 0
            else if(RolloGruppe1_Ch3.state as Number) == 50) rollo3 = 0
            else if(RolloGruppe1_Ch3.state as Number) == 100) rollo3 = 100
            if(!(RolloGruppe1_Ch4.state instanceof Number)) rollo4 = 0
            else if(RolloGruppe1_Ch4.state as Number) == 50) rollo4 = 0
            else if(RolloGruppe1_Ch4.state as Number) == 100) rollo4 = 100
            if(!(RolloGruppe1_Ch8.state instanceof Number)) rollo8 = 0
            else if(RolloGruppe1_Ch8.state as Number) == 50) rollo8 = 0
            else if(RolloGruppe1_Ch8.state as Number) == 100) rollo8 = 100
        }
    }
    if(RolloGruppe1_Ch3.state != rollo3) RolloGruppe1_Ch3.sendCommand(rollo3)
    if(RolloGruppe1_Ch4.state != rollo4) RolloGruppe1_Ch4.sendCommand(rollo4)
    if(RolloGruppe1_Ch8.state != rollo8) RolloGruppe1_Ch8.sendCommand(rollo8)
end
Voraussetzung ist natürlich, dass tatsächlich commands received werden. Bist Du Dir da sicher? Wenn Signale von außen kommen, werden diese gewöhnlich als received update empfangen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

Re: openhab 2.5 auf 3.x

Beitrag von MrWichtig »

Hallo udo1toni,

nachdem Du mir dazumals schon sehr geholfen hast bei meiner Challenge mit OH 2.x zu verstehen, freut es mich sehr wieder von Dir zu hören! ;)

mit OH3 hoffe ich ja doch nicht wieder genau bei "null" beginnen zu müssen :D

ich versuche mal Deine Fragen gelistet zu beantworten:

- wo genau sehe ich denn ob die Rule geladen wird oder nicht?
- ich sehe wenn ich im OH3 auf Rules gehe, dass meine Rules geladen/erkannt wurden von OH3. (siehe angehängte Screenshots)
- habe auch versucht die Rule über den Button im OH3 mit "Run Now" zu starten....aber da tut sich gar nix.

Bild

Bild

- "Allerdings hast Du da auch eine Menge unnützen Code drin. Eine Position = 100 bedeutet,"
- das habe ich schon immer so drinn gehabt. Hat den Hintergrund z.B.: um 22:00 Uhr fahren alle Rolläden bei mir automatisch zu und wenn ich nach 22:00 Uhr dann den fernseher ausschalte sollen diese Rolläden dann nicht mehr AUF gehen. bis 22:00 Uhr fahren alle Rolläden wenn sie nur bis 50% geschalten sind und ich den fernseher ausschalte wieder hoch. Das ist also schon so gewünscht und funktionierte mit OH2.x auch tadellos wie es sollte.


Allgemein möchte ich noch einmal anführen, dass unter OH 2.x alle Rules wie gewünscht funktioniert haben.

lg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

Re: openhab 2.5 auf 3.x

Beitrag von MrWichtig »

@udo1toni....ich habe nur einmal Deinen NEUEN Code in die knx.things Datei kopiert und gespeichert.

Code: Alles auswählen

rule "Fernseher ein/aus"
when
    Item harmony_hub_tv_act received command
then
    var Number rollo3
    var Number rollo4
    var Number rollo8

    switch(receivedCommand) {
        case ON : {
            harmony_hub_tv.sendCommand("TVgucken")
            if(!(RolloGruppe1_Ch3.state instanceof Number)) rollo3 = 50
            else if(RolloGruppe1_Ch3.state as Number) < 50) rollo3 = 50
            else if(RolloGruppe1_Ch3.state as Number) == 100) rollo3 = 100
            if(!(RolloGruppe1_Ch4.state instanceof Number)) rollo4 = 50
            else if(RolloGruppe1_Ch4.state as Number) < 50) rollo4 = 50
            else if(RolloGruppe1_Ch4.state as Number) == 100) rollo4 = 100
        }
        case OFF : {
           harmony_hub_tv.sendCommand("PowerOff")
            if(!(RolloGruppe1_Ch3.state instanceof Number)) rollo3 = 0
            else if(RolloGruppe1_Ch3.state as Number) == 50) rollo3 = 0
            else if(RolloGruppe1_Ch3.state as Number) == 100) rollo3 = 100
            if(!(RolloGruppe1_Ch4.state instanceof Number)) rollo4 = 0
            else if(RolloGruppe1_Ch4.state as Number) == 50) rollo4 = 0
            else if(RolloGruppe1_Ch4.state as Number) == 100) rollo4 = 100
            if(!(RolloGruppe1_Ch8.state instanceof Number)) rollo8 = 0
            else if(RolloGruppe1_Ch8.state as Number) == 50) rollo8 = 0
            else if(RolloGruppe1_Ch8.state as Number) == 100) rollo8 = 100
        }
    }
    if(RolloGruppe1_Ch3.state != rollo3) RolloGruppe1_Ch3.sendCommand(rollo3)
    if(RolloGruppe1_Ch4.state != rollo4) RolloGruppe1_Ch4.sendCommand(rollo4)
    if(RolloGruppe1_Ch8.state != rollo8) RolloGruppe1_Ch8.sendCommand(rollo8)
end
wenn ich das mache wird die knx.things nicht in die Rules geladen im OH3?! evtl. hat sich ein Syntax Fehler/Typo eingeschlichen?

wenn ich wieder meine aalte knx.things einspiele werden alle Rules zumindest sauber im OH3 geladen.

ich habe hier auch das Log noch wenn ich Deine adaptiere Rule von der knx.rules lade:

Bild


lg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

Re: openhab 2.5 auf 3.x

Beitrag von MrWichtig »

...wenn ich meine alte knx.rule lade wird mir diese im OH 3 korrekt angezeigt.

Bild

....und im Log wird mir das laden ebenfalls der Rule angezeigt.

Bild

wenn ich jedoch die rule ausgeführt wird, dann passiert nichts.....weder die Rule wird ausgeführt noch im LOG dass etwas angezeigt wird...

Bild
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: openhab 2.5 auf 3.x

Beitrag von udo1toni »

MrWichtig hat geschrieben: 28. Nov 2021 16:11 - das habe ich schon immer so drinn gehabt.
Ja, Es geht mir nicht um die Funktionalität an sich, meine Frage bezog sich darauf, warum Du DOWN und UP verwendest, wo Du doch feste Positionen anfahren willst. Und ein zweiter Punkt: Warum sollte man einen geschlossenen Rollladen schließen wollen?

* Meine Rule: Ja, da fehlen überall öffnende Klammern... so sollte es passen:

Code: Alles auswählen

rule "Fernseher ein/aus"
when
    Item harmony_hub_tv_act received command
then
    var Number rollo3
    var Number rollo4
    var Number rollo8

    switch(receivedCommand) {
        case ON : {
            harmony_hub_tv.sendCommand("TVgucken")
            if(!(RolloGruppe1_Ch3.state instanceof Number)) rollo3 = 50
            else if((RolloGruppe1_Ch3.state as Number) < 50) rollo3 = 50
            else if((RolloGruppe1_Ch3.state as Number) == 100) rollo3 = 100
            if(!(RolloGruppe1_Ch4.state instanceof Number)) rollo4 = 50
            else if((RolloGruppe1_Ch4.state as Number) < 50) rollo4 = 50
            else if((RolloGruppe1_Ch4.state as Number) == 100) rollo4 = 100
        }
        case OFF : {
           harmony_hub_tv.sendCommand("PowerOff")
            if(!(RolloGruppe1_Ch3.state instanceof Number)) rollo3 = 0
            else if((RolloGruppe1_Ch3.state as Number) == 50) rollo3 = 0
            else if((RolloGruppe1_Ch3.state as Number) == 100) rollo3 = 100
            if(!(RolloGruppe1_Ch4.state instanceof Number)) rollo4 = 0
            else if((RolloGruppe1_Ch4.state as Number) == 50) rollo4 = 0
            else if((RolloGruppe1_Ch4.state as Number) == 100) rollo4 = 100
            if(!(RolloGruppe1_Ch8.state instanceof Number)) rollo8 = 0
            else if((RolloGruppe1_Ch8.state as Number) == 50) rollo8 = 0
            else if((RolloGruppe1_Ch8.state as Number) == 100) rollo8 = 100
        }
    }
    if(RolloGruppe1_Ch3.state != rollo3) RolloGruppe1_Ch3.sendCommand(rollo3)
    if(RolloGruppe1_Ch4.state != rollo4) RolloGruppe1_Ch4.sendCommand(rollo4)
    if(RolloGruppe1_Ch8.state != rollo8) RolloGruppe1_Ch8.sendCommand(rollo8)
end
Vielleicht zur Erläuterung des Codes: Im ersten Schritt werden die Sollpositionen bestimmt. Anschließend werden die Rollläden nur dann angesteuert, wenn die Sollposition von der Istposition abweicht.

* Alte Rules in OH3: Du musst die Rules schon genau so übernehmen, wie sie im alten System waren, nicht über die UI anlegen. Nutze einfach weiter die *.rules Dateien.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

MrWichtig
Beiträge: 26
Registriert: 4. Okt 2019 10:20

Re: openhab 2.5 auf 3.x

Beitrag von MrWichtig »

Ja, Es geht mir nicht um die Funktionalität an sich, meine Frage bezog sich darauf, warum Du DOWN und UP verwendest, wo Du doch feste Positionen anfahren willst. Und ein zweiter Punkt: Warum sollte man einen geschlossenen Rollladen schließen wollen?
Ehrlich gesagt keine Ahnung warum ich das mit UP/DOWN verwendet habe. Du hast mich dazumals schon sehr bei den Rules unterstützt und es hat dann irgendwann funktioniert sodass ich die Datei (knx.rules) dann auch nicht mehr wirklich angegriffen hatte :) quasi never touch a running system :)

* Meine Rule: Ja, da fehlen überall öffnende Klammern... so sollte es passen:
Funkt jetzt perfekt! genauso wie sie tun soll! 8-)

ich kann mich nur wieder herzlich bei Dir bedanken für Deine rasche Hilfe!

jetzt habe ich zumindest einen Fahrplan auch die anderen Rules dementsprechend anzupassen.

Danke Dir!

lg

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

Re: openhab 2.5 auf 3.x

Beitrag von udo1toni »

Es gibt natürlich Dinge in den Rules, die unter OH3 grundsätzlich anders funktionieren als in OH2 oder gar OH1. Aber im Grunde geht es dabei immer um now und alles, was damit zusammenhängt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten