Hallo,
aktuell verbinde ich mich über das fhem ESERA Modul via Ethernet 192.168.179.70:5000 zu dem Esera Controller.
Zukünftig möchte ich über einen lokalen owserver (gleicher Server wie fhem) connecten.
Den owserver und owfftpd bekomme ich zum laufen - aber wie kann sich der Esera 1-wire Bus connecten?
Die owfs.conf sieht aktuell so aus:
! server: server = localhost:4304
server: w1
http: port = 2121
ftp: port = 2120
server: port = 4304
wie ist der denn angebunden? usb?
über Ethernet
dann füg da noch
server: server = <IP>:<PORT>
hinzu. IP:Port vom esera
anschließend mit owread <PFAD> auf der shell testen obs geht.
hatte ich schon probiert, da kommt aber nichts an ...
Über http://192.168.179.41:2121/ (owhttpd) wird auch nichts angezeigt
kann auch zb
Server: enet = ..
Sein. Ich kenn dein Gerät leider nicht. Als erstes würde ich jedenfalls den Port kontrollieren, ob der passt
wenn fhem mit dem Esera Modul läuft, geht kein telnet auf den Port
Fhem gestoppt bekomme ich
telnet 192.168.179.70 5000
Trying 192.168.179.70...
Connected to 192.168.179.70.
Escape character is '^]'.
1_EVT|20:57:30
1_SYS1_1|15
1_SYS1_2|00001111
1_SYS2_1|0
1_SYS2_2|00000000
1_SYS3|0
1_E000001B46F8E420_1|7231
1_E000001B46F8E420_2|1191
1_E000001B46F8E420_3|0
1_E000001B46F8E420_4|490
1_2300001B1F535429_1|0
1_2300001B1F535429_2|00000000
1_2300001B1F535429_3|0
1_2300001B1F535429_4|00000000
1_4500001B4711EE29_1|0
1_4500001B4711EE29_2|00000000
1_4500001B4711EE29_3|128
1_4500001B4711EE29_4|10000000
Telnet beendet und in der /etc/owfs.conf eingetragen
server: server = 192.168.179.70:5000
owserver und owhttpd neu gestartet aber immer noch keine Readings im Webbrowser auf Port 2121
Dann wirst du den owserver mal händisch im Debug mode starten und suchen müssen. Das kann nämlich zig Gründe haben
Damit mal starten und dann gucken..
--error_level=9 --error_print=2 --foreground
/usr/bin/owserver -c /etc/owfs.conf --error_level=9 --error_print=2 --foreground
DEBUG: ow_daemon.c:(170) main thread id = 125925584654656
CONNECT: ow_dnssd.c:(75) DL_open [libdns_sd.so] success
DEBUG: ow_dnssd.c:(85) Linked in Bonjour function DNSServiceRefSockFD
DEBUG: ow_dnssd.c:(86) Linked in Bonjour function DNSServiceProcessResult
DEBUG: ow_dnssd.c:(87) Linked in Bonjour function DNSServiceRefDeallocate
DEBUG: ow_dnssd.c:(88) Linked in Bonjour function DNSServiceResolve
DEBUG: ow_dnssd.c:(89) Linked in Bonjour function DNSServiceBrowse
DEBUG: ow_dnssd.c:(90) Linked in Bonjour function DNSServiceRegister
DEBUG: ow_dnssd.c:(91) Linked in Bonjour function DNSServiceReconfirmRecord
DEBUG: ow_dnssd.c:(92) Linked in Bonjour function DNSServiceCreateConnection
DEBUG: ow_dnssd.c:(93) Linked in Bonjour function DNSServiceEnumerateDomains
CALL: ow_parsename.c:(174) path=[]
DEBUG: owlib.c:(77) Global temp limit 0C to 100C (for fake and mock adapters)
DEBUG: ow_net_client.c:(28) Called with 192.168.179.70:5000 default=4304
DEBUG: ow_regex.c:(24) Reg Ex expression <^$> compiled to 0x72875643eba0
DEBUG: ow_regex.c:(24) Reg Ex expression <^all$> compiled to 0x72875643eb60
DEBUG: ow_regex.c:(24) Reg Ex expression <^scan$> compiled to 0x72875643eb20
DEBUG: ow_regex.c:(24) Reg Ex expression <^\*$> compiled to 0x72875643eae0
DEBUG: ow_regex.c:(24) Reg Ex expression <^[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}$> compiled to 0x72875643eaa0
DEBUG: ow_regex.c:(24) Reg Ex expression <^-?[[:digit:]]+$> compiled to 0x72875643ea60
]*$> compiled to 0x72875643ea20 expression <^ *([^ ]+)[
]*$> compiled to 0x72875643e9e0 expression <^ *([^ ]+) *: *([^ ]+)[
]*$> compiled to 0x72875643e9a0 expression <^ *([^ ]+) *: *([^ ]+) *: *([^ ]+)[
DEBUG: ow_regex.c:(53) Not found
DEBUG: ow_regex.c:(100) 0: 0->19 found <><192.168.179.70:5000><>
DEBUG: ow_regex.c:(100) 1: 0->14 found <><192.168.179.70><:5000>
DEBUG: ow_regex.c:(100) 2: 15->19 found <192.168.179.70:><5000><>
DEBUG: ow_parse_address.c:(80) IP <192.168.179.70>
DEBUG: ow_parse_address.c:(142) First <192.168.179.70>
DEBUG: ow_parse_address.c:(147) Second <5000>
DEBUG: ow_parse_address.c:(84) Num <5000> 5000
DEBUG: ow_net_client.c:(85) Called with [192.168.179.70:5000] IP address=[192.168.179.70] port=[5000]
DEBUG: ow_net_server.c:(76) ServerAddr: [0.0.0.0] [4304]
*** WARNING *** The program 'owserver' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/blog/projects/avahi-compat.html>
Thema hat sich geklärt ...
Esera stellt hier keinen 1-wire Bus zur Verfügung, sondern eine Interpretation der 1-wire Daten im ASCII Format
Jetzt brauche ich ein (Schaltschrank-) Device, welches ich mit dem Bus koppeln kann und mir idealerweise zusätzlich auch noch die Daten im MQTT zur Verfügung stellt. Habt Ihr da eine Empfehlung?
ich hab den OW-SERVER-ENET. Läuft seit 13 Jahren ununterbrochen in meinem Heizungskeller mit 17 Temperaturfühlern. Bislang nie Probleme damit gehabt..
Danke Dir!
Wie greifst Du auf den Bus schreibend zu? Ich habe via "Low Level 1-Wire Interface Options" den Port aktiviert, der Zugriff per telnet geht, aber leider kann ich keine Kommandos absetzen.
Auch das Einbinden in einen zusätzlichen owserver auf Ubuntu funktioniert bei mir nicht.
du meinst jetzt den ow-server-enet? das geht per owserver über server:enet ..
alternativ (was auch performanter ist) holst du dir die daten über eine helper function in der 99_myutils per xml:
sub update1wire() {
HttpUtils_NonblockingGet({ url => 'http://<IP>.home.intern/details.xml',
method => 'GET',
timeout => 60,
callback => \&update1wireCallback});
}
sub update1wireCallback($) {
my ($param, $err, $content) = @_;
my $romId = '';
if ($content ne '') {
foreach my $line (split('<',$content)) {
next if ($line eq '');
my ($tag,$dummy)= split(' ', $line, 2);
if ($tag =~ s/^ROMId>//ig ) {
$romId = $tag;
}
if ($tag =~ /^PrimaryValue/ ) {
my ($dummy,$value) = split("PrimaryValue>", $tag, 2);
fhem('setreading 1wire '.$romId.' '.round($value, 2));
}
}
fhem('set 1wire '.FmtDateTime(time));
}
}
das befüllt ein dummy device 1wire, aus dem ich mir dann alles weitere ableite. aufgerufen wird die funktion minütlich per AT.
defmod 1wire.AT at +*00:01:00 { update1wire() }
attr 1wire.AT alignTime 00:00:00
defmod 1wire.Notify notify 1wire:.* {\
$EVTPART0 =~ s/://ig;;\
$EVTPART1 = round($EVTPART1, 2);;\
\
my %addresses = ( '*********' => 'Heizung.HK1.Ruecklauf.Temperatur',\
'*********' => 'Heizung.HK1.Vorlauf.Temperatur',\
'*********' => 'Heizung.HK2.Ruecklauf.Temperatur',\
'*********' => 'Heizung.HK2.Vorlauf.Temperatur',\
'*********' => 'Heizung.HK3.Ruecklauf.Temperatur',\
'*********' => 'Heizung.HK3.Vorlauf.Temperatur',\
'*********' => 'Heizung.HK4.Ruecklauf.Temperatur',\
'*********' => 'Heizung.HK4.Vorlauf.Temperatur',\
'*********' => 'Heizung.Vorlauf.Temperatur',\
'*********' => 'Heizung.Ruecklauf.Temperatur',\
'*********' => 'Heizung.Kaltwasser.Temperatur',\
'*********' => 'Heizung.Pufferspeicher.Temperatur',\
'*********' => 'Server.Temperatur',\
'*********' => 'Heizung.Warmwasser.Temperatur',\
'*********' => 'Heizung.WWS.Temperatur',\
'*********' => 'Heizung.WWS.Ruecklauf.Temperatur',\
'*********' => 'Heizung.WWS.Vorlauf.Temperatur',\
'*********' => 'Heizung.Zirkulation.Temperatur');;\
if (defined($addresses{$EVTPART0})) {\
fhem('set '.$addresses{$EVTPART0}.' '.$EVTPART1);;\
}\
}
das könnte man auch direkt in der obigen funktion machen, aber so find ichs etwas praktischer, da man da dann in einem device alles zur übersicht hat.
per xml ist jedenfalls deutlich performanter als die native einbindung per 1wire.
ich will das etwas generischer machen und über einen 2ten (echten) Linux "owserver" einbinden
/etc/owfs.conf:
######################## SOURCES ########################
#
# With this setup, any client (but owserver) uses owserver on the
# local machine...
! server: server = localhost:4304
#
# ...and owserver uses the real hardware, by default fake devices
# This part must be changed on real installation
#server: FAKE = DS18S20,DS2405
#
# USB device: DS9490
#server: usb = all
#
# Serial port: DS9097
#server: device = /dev/ttyS1
#
# owserver tcp address
#server: server = 192.168.10.1:3131
# OW-Server
server: server = 192.168.179.135:8080
#
# random simulated device
#server: FAKE = DS18S20,DS2405
#
######################### OWFS ##########################
#
#mountpoint = /mnt/1wire
#allow_other
#
####################### OWHTTPD #########################
http: port = 2121
####################### OWFTPD ##########################
ftp: port = 2120
####################### OWSERVER ########################
#server: port = 192.168.179.41:4304
server: port = 4304
dann mach da
server: enet = 192.168.179.135:8080
Top! Das wars ;D ;D ;D
Jetzt muss ich nur noch schauen wieso es Errors am Bus gibt
Hallo,
muss ich auch owserver für den Esera Controller 1 installieren oder reicht das 66_EseraOneWire aus?
grüß mario
das Modul ist ausreichend - ist halt proprietär nur für FHEM aber funktioniert gut ...