Ich kämpfe grad massiv mit dem eibd. wenn der mal liefe, würde ich mich an ein knx-plugin für den vdr wagen, bräuchte aber unterstützung.
Ich kämpfe grad massiv mit dem eibd. wenn der mal liefe, würde ich mich an ein knx-plugin für den vdr wagen, bräuchte aber unterstützung.
Gruss,
Michael
ich habe den eibd im Januar 2006 installiert unter SuSe mit einer seriellen Schnittstelle.
Hier mein protokoll von damals. Vielleicht hilft es Dir:
Installation unter Suse 10.0
Die Installation das BCU 1 Treiber ist einfach:
Treiber (0.2.6.4.1) entpacken, Packet kernel-source nachinstallieren, dann make im Treiber Verzeichnis.
Zur Verwendung ein insmod eib.ko.
Die serielle Schnittstelle muss man mit setserial /dev/ttySx uart none für den Treiber freigeben.
Udev sollte die EIB Devices /dev/eib0 (= ttyS0) bis /dev/eib3 (=ttyS1) anlegen.
Dann kann man darüber Packete im EMI1 Format mit der BCU1 austauschen.
Wenn man eibd installiert, kann man mit
eibd -u /dev/eibX
die BCU daran steueren.
Die einzelnen Client Programmen vom Eibd (bzw dessen Client Library) kann man dann
aufrufen, zB:
groupswrite local:/tmp/eib 1/1/1 0
groupsocketlisten local:/tmp/eib
Ich kann bei EIBD bzw den BCU1 Treiber noch weiterhelfen (Eventuell auf das SF.net Mail Archiv von der
BCU SDK Liste nachschauen, da da vielleicht ein paar Fragen schon beantwortet wurden).man kopiert/linkt
- Download pthsem: wget http://www.auto.tuwien.ac.at/%7Emkoe...m-2.0.5.tar.gz
- Unpack it: tar xvzf pthsem-2.0.5.tar.gz
- Build it: ( cd pthsem-2.0.5 ; ./configure ; make install)
/usr/local/lib/libpthsem.so*
nach/
- /usr/lib
- Download bcusdk: wget http://www.auto.tuwien.ac.at/%7Emkoe...k-0.0.1.tar.gz
- Unpack it: tar xvzf bcusdk-0.0.1.tar.gz
- Build it: ( cd bcusdk-0.0.1 ; ./configure --enable-onlyeibd --enable-ft12 --enable-pei16 --enable-eibnetip --enable-eibnetipserver ; make install )
Anwendung:
setserial /dev/ttyS1 uart none #für die 2te serielle
insmod eib.ko #modul des eibd laden
eibd -u /dev/eib1 #eibd für die 2te serielle starten
eibd -i bcu1:/dev/eib1 -S -D -u
wenn ich jetzt :
nglux:/usr/local/src/bcusdk-0.0.1/eibd/examples # ./busmonitor1 local:/tmp/eib
./groupswrite local:/tmp/eib 1/2/10 1 macht licht im büro an
Danke für das HowTo - ich werde mich morgen mal damit beschäftigen. Ich habe im hinterkopf, dass schon ein Make fehlschlägt.
Gruss,
Michael
Hallo,
wie schön kann doch folgender Satz sein:
03/09/2007 10:49:07 EIB device "ip:localhost" initialized
:-)
Mit der Hilfe von Martin Kögler
DANKE für die Unterstützung:
So gehts auch mit USB:
Zitat:
"misterhouse hat keinen Support für das local: Protocol. Die Angabe eines
Pfads wird als BCU 1 Treiber interpretiert, was nie funktionieren wird.
Damit es funktioniert, muss der eibd für Zugriff vom Netzwerk erlauben.
Dazu müßte der -i Parameter angegeben sein. Haben sie das gemacht?
Dann sollte
/usr/local/bin/groupswrite ip:localhost 1/5/4 0
funktionieren."
hab in mein Startskript jetzt -i mit drin und schon gehts mit
eib_device=ip:localhost
bis später
LANToeter
und zwar hier: http://misterhouse.wikispaces.com/EIBHowTo
Hat das noch keiner gesehen?
Mike
Hallo,
doch zu früh gefreut ?
folgender Fehler kommt bei einem Windows Zugriff auf eibd unter gentoo mit Misterhouse:
04/09/2007 13:55:37 EIB device "ip:192.168.50.26" initialized
- creating generic device eib on ip:192.168.50.26
Your vendor has not defined Fcntl macro O_NONBLOCK, used at script/mh line 5392.
mh had an error on startup, will not restart
Ausserdem läßt sich zwar misterhouse unter gentoo starten und alle 2 Minuten meldet sich eine FBH unter misterhouse
04/09/2007 13:59:19 EIB write from 1.1.41 to 6/0/4 : "[0]" . Item not found.
aber es kommt trotzdem eine Fehlermeldung beim starten von misterhouse
ist das ok so oder stimmt da auch noch was nicht ?
- creating xpl_send_49153 on udp 49153 send
04/09/2007 13:56:34 EIB device "ip:127.0.0.1" initialized
- creating generic device eib on ip:127.0.0.1
04/09/2007 13:56:34 Can't open generic device eib: ip:127.0.0.1: No such file or directory
- process id 19031 written to /opt/misterhouse/data/mh.pid
So starte ich den eibd unter gentoo:
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
start() {
ebegin "Starting eibd"
usbport=$(findknxusb | /bin/sed -e '1 d' -e 's/device //' | /bin/cut -d':' -f1-2)
/usr/local/bin/eibd --Tunnelling --Discovery --Routing -i --Server --listen-local usb:$usbport --daemon --pid-file /var/run/eibd.pid
eend $? "Failed to start eibd"
}
stop() {
ebegin "Stopping eibd"
start-stop-daemon --stop \
--pidfile /var/run/eibd.pid \
--exec /usr/local/bin/eibd
local ret=$?
eend ${ret} "Failed to stop eibd"
rm -f /var/run/eibd.pid
return ${ret}
}
Danke für eure Hilfe.
Mit freundlichen Grüßen
LANToeter
Die Meldung
besagt nur, dass eine EIB-Adresse empfangen wurde die MH nicht kennt. Das EIB-Item wurde also nicht gefunden. Es fehlt die Definition der Adresse 6/0/4 in deiner *.mht-Datei.04/09/2007 13:59:19 EIB write from 1.1.41 to 6/0/4 : "[0]" . Item not found.
Die Meldung
kannst du ignorieren.04/09/2007 13:56:34 Can't open generic device eib: ip:127.0.0.1: No such file or directory
Mike
Hallo,
misterhouse läuft und läuft und läuft ...
ausserdem macht es riesig spass Sachen zu programmieren
Nun noch eine frage an die misterhouse experten.
Wie kann ich einen Befehl in der Form:
schalte das Licht $Licht_buero aus
an misterhouse von einer anderen Applikation aus schicken ?
probiert hab ich schon mhsend und telnet.
Aber ich find nirgens eine Beschreibung welche Befehle ich da genau verwenden muß.
mfg LANToeter
dies funktioniert wie vermutet z.b. mit mhsend
hierzu muss im code verzeichnis eine datei vorhanden sein:
hier mein bsp:
# Category = Test
#@ commandos per vdr ueber mhsend weitergeben
#@ ./mhsend -host 192.168.1.242 -run "vdr test"
#@ Try changing editing this file then 'Reload Code' to test
my $state;
$my_test1 = new Voice_Cmd 'mh [tuer_hof,tuer_klaus,3]';
if ($state = said $my_test1) {
if ($state == "tuer_hof") {
print_log "Haustuer Burghofstrasse per Telefon geöffnet";
$haustuer_oeffner->set_with_timer(ON, 10, OFF);
}
elsif ($state == "tuer_klaus") {
print_log "licht flur";
#$flur_licht_schalten->set_with_timer(ON, 2, OFF);
my $state = ('on' eq state $flur_licht) ? 'off' : 'on';
set $flur_licht $state;
# display "You ran test 2 on $Date_Now";
}
elsif ($state == 3) {
set $kueche_kaffee_sd ON;
print_log "der Kaffeeautomat wurde eingeschaltet";
}
}
aufgerufen wird dies mit dem script mhsend:
z.B.
/opt/mh/bin/./mhsend -host 192.168.1.242 -run "mh tuer_hof"
ich verwende dies um einfache befehler von vdr "ans Haus" zu übergeben
hier die bsp zeilen aus der commands.conf meines vdr´s:
Aufnahmen scannen : touch /data/video/video0/.update
haustuer auf: /opt/mh/bin/./mhsend -host 192.168.1.242 -run "mh tuer_hof"
tuer oben: /opt/mh/bin/./mhsend -host 192.168.1.242 -run "mh tuer_klaus"
kaffee: /opt/mh/bin/./mhsend -host 192.168.1.242 -run "mh 3"
Hallo,
versteh ich das jetzt richtig das ich eine Datei z.b. vdr.pl in der form schreiben muß:
if ($state == "licht_buero_1") {
$licht_buero_1->set('ON');
}
if ($state == "licht_hwr_1") {
$licht_hwr_1->set('ON');
}
usw.
d.h. für jede EIB Komponente ein Eintrag für an und wieder einen für aus ?
Gibts da net ne andere Methode?
Eine Methode mit der ich ihm alles mitgeben kann z.B.
mhsend licht_buero_1 ON bzw.
mhsend rolladen_kueche UP
mfg LANToeter
Hallo,
hab folgendes gefunden :
http://www.nabble.com/mhsend-syntax-....html#a3802454
D.h. der command:
/opt/misterhouse/mh/bin/mhsend -run set \$Licht_Flur_KG OFF
schaltet das Licht aus bzw.
/opt/misterhouse/mh/bin/mhsend -run set \$Licht_Flur_KG ON
ein :-)
viel spass
LANToeter
Hallo zusammen,
bin immer noch am rumspielen mit misterhouse :-)
wollte jetzt folgendes machen :
# Licht Bad Wand geht nach 60 sec aus, wenn es angeschaltet wird
if (state_changed $Licht_Wand_Bad_EG eq ON) {
set_with_timer $Licht_Wand_Bad_EG OFF, 60;
}
aber immer wenn ich den Schalter für Licht Bad Wand EG
betätige geht das licht sofort wieder aus und dann in abständen von 60 sekunde an und wieder aus ?
was mach ich falsch ?
mfg LANToeter
versuch mal:
if (state_now $Licht_Wand_Bad_EG eq ON) {
$Licht_Wand_Bad_EG->set_with_timer(ON, 60, OFF);
}
Die Syntax muesste lauten
set_with_timer Objekt state_now, offset, state_after_offsetCode:set_with_timer $Garderobe '', 60, OFF;
state_now kann man auch leer lassen (Leerstring).
Kleiner Nachtrag. Wenn du das Licht binnen 10sec ausschaltes und nach weiteren 10sec wieder ein, dann geht es nach weniger als 60sec wieder aus (Der Timer vom ersten mal schlägt zu).
Wenn man das verhindern möchte, dann macht mann folgendes:
LGCode:my $HWRTimer = new Timer(); $HWR->tie_event( 'THS_HWR($state)' ); sub THS_HWR { my ($state) = @_; if ($state eq OFF) { $HWRTimer->unset(); } elsif ($state eq ON) { $HWRTimer->set( 15*60, 'set $HWR OFF' ); } }
Geändert von RaK (29.10.07 um 15:10 Uhr)
Hier könnte ihre Werbung stehen.
Hallo,
ich habe die Scripte hier nachvollzogen und ich kann das auch nachstellen, solange ich keine Stateänderungen abfrage.
Ich habe eine Haustüre mit ReedKontakt.
Auf dem ETS Monitor kann ich nachvollziehen dass diese eine Wertänderung von 0 auf 1 senden wenn die Türe geöffnet wird.
In der eib_item
ETS1,1/1/1,Haustuere
ETS1,1/1/7,Lampe_1
mein Script
if (state_changed $Haustuere) {
set Lampe_1 on;
}
erkennt eine Stateänderung nicht
Habt Ihr hier ein Idee?
groupswrite ip:127.0.0.1 1/1/7 1 schalte das Licht korrekt.
Gruß Hartwig
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen