Openhab3 KNX Frage

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Caesium030
Beiträge: 4
Registriert: 6. Feb 2022 18:59
Answers: 0

Openhab3 KNX Frage

Beitrag von Caesium030 »

Hi,

lacht mich nicht aus, aber ich versuche nach Jahren mal wieder auf ein aktuelles Openhab zu updaten.
Ich habe immer noch 1.8.3 am Laufen da es mit neinem Setup wunderbar funktioniert seit unserem Neubau 2014....

Ich habe ein Siemens N148 IP KNX Gateway und benutze den KNXD um openhab damit zu verbinden:
/usr/bin/knxd -e 0.1.100 -E 0.1.200:8 -f9 -t1023 -u /tmp/eib -b ipt:192.168.1.31 -DTRS
(Den KNXD hab ich weil das olle Siemensteil immer nur 1 Verbindung erlaubt).

Openhab3 habe ich im Docker auf der selben Büchse wie den KNXD installiert. (Das openhab 1.8.3 läuft parallel)

Code: Alles auswählen

frank@atom:~/docker/openhab3$ cat docker-compose.yaml 
version: '2.2'

services:
  openhab:
    image: "openhab/openhab:latest"
    restart: always
    network_mode: host
    container_name: openhab3
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "./openhab_addons:/openhab/addons"
      - "./openhab_conf:/openhab/conf"
      - "./openhab_userdata:/openhab/userdata"
    environment:
      OPENHAB_HTTP_PORT: "8081"
      OPENHAB_HTTPS_PORT: "8441"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
Nun zu meinem Problem, ich bekomme das KNX Thing nicht online.
Die Bridge ist online.

Code: Alles auswählen

gateway:
UID: knx:ip:3fa7954950
label: KNX/IP Gateway
thingTypeUID: knx:ip
configuration:
  useNAT: false
  readRetriesLimit: 3
  ipAddress: 192.168.1.27
  autoReconnectPeriod: 60
  localIp: 192.168.1.27
  type: TUNNEL
  readingPause: 50
  localSourceAddr: 0.0.0
  portNumber: 3671
  responseTimeout: 10
location: HWR

KNX Thing:

Code: Alles auswählen

UID: knx:device:1fcb1015b4
label: KNX Device
thingTypeUID: knx:device
configuration:
  pingInterval: 600
  address: 1.9.9
  readInterval: 0
  fetch: false
bridgeUID: knx:ip:3fa7954950

Welche Addresse muss ich hier angeben? Sollte ich die in der ETS auch anlegen?

Ich glaube das ist auch der Punkt gewesen warum ich den 2.5er upate verworfen hatte.

Caesium030
Beiträge: 4
Registriert: 6. Feb 2022 18:59
Answers: 0

Re: Openhab3 KNX Frage

Beitrag von Caesium030 »

Ah, hab es nun doch noch hinbekommen.

Code: Alles auswählen

Bridge knx:ip:bridge [
    type="TUNNEL",
    ipAddress="192.168.1.27",
    portNumber=3671,
    localIp="192.168.1.27",
    readingPause=50,
    responseTimeout=10,
    readRetriesLimit=3,
    autoReconnectPeriod=60,
    localSourceAddr="15.15.210"
] {
    Thing device generic [
        fetch=true,
        pingInterval=300,
        readInterval=3600
    ] {
        Type switch        : demoSwitch        "Light"       [ ga="0/0/1" ]
    }
}
Nun kann ich dem switch ein Link hinzufügen und dann schaltet der auch das Licht an und aus.
Okay, nun lohnt es sich evtl auch das ganze mal in Angriff zu nehmen.
Grüße

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

Re: Openhab3 KNX Frage

Beitrag von udo1toni »

Bitte Code immer mit Code-Tags versehen (ich habe das mal für Dich übernommen...) Gerade yaml Code nutzt Indentations als Steuerung der Hierarchie, und die Indentations gehen ohne Code-Tags verloren.

Da Du von 1.8.3 kommst, sind Things etwas komplett Neues für Dich. Insbesondere knx verhält sich hier sehr anders als mit dem knx1 Binding.
Hauptunterschied: mit knx1 gab es für den Anwender keinen Unterschied zwischen received update und received command innerhalb von Rules. Dies ist nun anders.
Alle GA, die vom knx Bus empfangen werden, werden grundsätzlich als Statusmeldung gewertet. Das bedeutet, wenn Du einen Wandtaster mit einer GA programmiert hast, die im knx-System selbst nicht verwendet wird, und diese GA verwenden willst, um z.B. ein nicht-knx-Gerät zu steuern, musst Du nun auf changed oder received update triggern.
Das ist unpraktisch, denn damit ist es nicht mehr möglich, verschiedene Gewerke über Items zu koppeln (z.B. NTP auf den knx Bus geht auch nicht, denn das NTP Binding sendet ja nur ein Status Update, welches knx dann nicht verarbeitet, knx reagiert nur auf Commands, aber nicht auf Status.
Deshalb gibt es die *-control Channel (gibt es für jeden Channeltyp). Damit übernimmt openHAB dann virtuell die Rolle eines Aktors oder Sensors, statt die Rolle einer UI. Solche Channel reagieren also auf Status Updates und empfangene GA werden als Command gewertet. Damit funktioniert dann das Status Update von NTP, um in knx die Uhren zu stellen und ein Taster an der Wand kann direkt z.B. eine Hue Lampe oder eine Sonoff Steckdose schalten...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caesium030
Beiträge: 4
Registriert: 6. Feb 2022 18:59
Answers: 0

Re: Openhab3 KNX Frage

Beitrag von Caesium030 »

Das mache ich per cronjob und einem Perl Script:

Code: Alles auswählen

:~$ cat bin/time.pl 
#!/usr/bin/perl -w

use Math::BaseCnv;
use strict;
# right $len chars
sub rstr{
  my $s = shift;
  my $len = shift;
  # printf("DEBUG %s %i\n",$s,$len);
  return substr($s, length($s) - $len, $len);
}

# read local time
my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(time);
# Mon is KNX 001 and Sun is 111 in Linux is Sun 1 und Sat 7
my @weekDays = qw(111 001 010 011 100 101 110);

# calc $hour in bin with exact 5 digits
my $bin_hour = rstr("000000".cnv( $hour, 10, 2) ,5);

my @args = ("/usr/bin/knxtool", "groupwrite", "ip:127.0.1.1", "4/0/0",                  # change protocoll to your needs
         sprintf("%02X", cnv( $weekDays[$dayOfWeek] . $bin_hour, 2, 10)), # calc weekday and hour in hex
         sprintf("%02X", $minute),                                        # same for minute and second
         sprintf("%02X", $second));

# execute command
system(@args) == 0 or die "system @args failed: $?";

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

Re: Openhab3 KNX Frage

Beitrag von udo1toni »

Aber warum denn das? wenn Du openHAB laufen hast, reicht folgende Definition:
Things:

Code: Alles auswählen

// Time and Date
Thing ntp:ntp:home "Lokale Zeit" [        // ein ntp Thing
    hostname="de.pool.ntp.org",           // ntp Server für den Abgleich
    refreshInterval=120,                  // aktualisiere die Channel alle 120 Sekunden
    refreshNtp=30,                        // hole bei jeder 30. Aktualisierung die Zeit vom Server
    locale="de_DE",                       // verwende deutsche Einstellungen
    timeZone="Europe/Berlin"              // Zeitzone ist die von Berlin
]

Bridge knx:ip:bridge "Weinzierl 730 IP" [ // eine knx Bridge
    ipAddress="192.168.178.77",           // Adresse des knx/IP Gateways
    localIp="192.168.178.88",             // Adresse des openHAB-Systems (NICHT localhost oder 127.0.0.1)
    type="TUNNEL",                        // Betreibsart 
    portNumber=3671,                      // genutzter Port
    readingPause=50,                      // Pause zwischen zwei Leseanfragen (in MilliSec)
    responseTimeout=10,                   // Antwortzeit (in Sekunden)
    readRetriesLimit=3,                   // Lesewiederholungen
    autoReconnectPeriod=60,               // Zeitspanne bis zum erneuten Aufbau der Verbindung
    localSourceAddr="0.0.0"               // Adresse, unter der openHAB uf dem Bus kommuniziert (NICHT die physikalische Adresse des Interface!)
 ]

 {
   Thing device Virtuell "virtuelle" @ "KNX" [ // Ein Gerät, welches nicht existiert
     ] {
        Type datetime-control       : wochenzeit "Zeit und Tag" [ ga="10.001:15/7/10" ] // für Wochentimer (z.B. Gira Tastsensor 2plus)
        Type datetime-control       : datum "Datum"             [ ga="11.001:15/7/11" ] // Nur Datum
        Type datetime-control       : zeit "Zeit"               [ ga="19.001:15/7/19" ] // Nur Zeit
    }
}
So ausführlich hier nur um die Parameter zu erläutern, geht natürlich auch kürzer.
Nur nochmal zur Sicherheit, ohne Kommentare und ohne knx Bridge, die hat man ja eh schon:

Code: Alles auswählen

// Time and Date
Thing ntp:ntp:home "Lokale Zeit" [ hostname="de.pool.ntp.org", refreshInterval=120, refreshNtp=30, locale="de_DE", timeZone="Europe/Berlin" ]

   Thing device Virtuell "virtuelle" @ "KNX" [ // Ein Gerät, welches nicht existiert
     ] {
        Type datetime-control       : wochenzeit "Zeit und Tag" [ ga="10.001:15/7/10" ]
    }
Items:

Code: Alles auswählen

DateTime Buszeit "Zeit und Tag" {channel="knx:device:bridge:Virtuell:wochenzeit",channel="ntp:ntp:home:dateTime"}
Fertig.
openHAB sendet alle zwei Minuten die aktuelle Uhrzeit auf den knx Bus, einmal pro Stunde synchronisiert es dabei die Uhrzeit mit ntp. Ich habe hier nur den ersten Channel verlinkt, da man meist Uhrzeit und Datum nur in einer der drei Formen auf dem Bus braucht. Sollte man die andere Form ebenfalls benötigen, kann man die entsprechenden Channel nach dem gleichen Schema mit ntp verlinken.
Wenn man den Standort der openHAB Installation angegeben hat, erzeugt das ntp Binding automatisch ein Thing ntp:ntp:local mit den lokalen Einstellungen, dann entfällt noch eine Codezeile...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caesium030
Beiträge: 4
Registriert: 6. Feb 2022 18:59
Answers: 0

Re: Openhab3 KNX Frage

Beitrag von Caesium030 »

Danke, schau ich mir an. Das Perl Script gab es einfach schon vor der ersten OpenHab installation bei mir da mir recht schnell aufgefallen ist das die RaumController die Zeit sonst vergessen.

freeman121083
Beiträge: 129
Registriert: 16. Jul 2018 06:32
Answers: 0

Re: Openhab3 KNX Frage

Beitrag von freeman121083 »

Hallo,

hier kurz eine Frage könnte man in der Basic UI im Main Menu ganz oben in der Beschriftungszeile seines SmartHomes auch das Datum und die Uhrzeit einblenden?

Danke

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

Re: Openhab3 KNX Frage

Beitrag von udo1toni »

Ich weiß jetzt nicht, was Du mit Beschriftungszeile meinst. Du kannst Datum und Uhrzeit aber in der Sitemap einfach anzeigen lassen, Du musst lediglich das DateTime Item einsetzen, also z.B

Code: Alles auswählen

Text item=Buszeit
Falls dann kein Datum angezeigt wird, muss noch ein passendes Format dazu, z.B. so:

Code: Alles auswählen

Text item=Buszeit label="Datum [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]"
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

freeman121083
Beiträge: 129
Registriert: 16. Jul 2018 06:32
Answers: 0

Re: Openhab3 KNX Frage

Beitrag von freeman121083 »

Ja dann nimmt mir das aber Platz weg...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Openhab3 KNX Frage

Beitrag von udo1toni »

Ja, verstehe ich, aber der markierte Bereich kann nicht beeinflusst werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten