FHEM Forum

FHEM - Hausautomations-Systeme => 1Wire => Thema gestartet von: uxtuner am 18 Mai 2025, 14:58:53

Titel: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 18 Mai 2025, 14:58:53
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
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 18 Mai 2025, 15:41:44
wie ist der denn angebunden? usb?
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 18 Mai 2025, 15:45:09
über Ethernet
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 18 Mai 2025, 17:08:25
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.
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 18 Mai 2025, 17:28:39
hatte ich schon probiert, da kommt aber nichts an ...

Über http://192.168.179.41:2121/ (owhttpd) wird auch nichts angezeigt

Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 18 Mai 2025, 20:02:20
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
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 18 Mai 2025, 21:06:38
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
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 18 Mai 2025, 21:20:04
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
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 18 Mai 2025, 22:21:02
/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>
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 19 Mai 2025, 13:48:42
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?
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 19 Mai 2025, 19:22:54
ich hab den OW-SERVER-ENET. Läuft seit 13 Jahren ununterbrochen in meinem Heizungskeller mit 17 Temperaturfühlern. Bislang nie Probleme damit gehabt..
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 19 Mai 2025, 19:26:11
Danke Dir!
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 03 Juni 2025, 06:57:26
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.
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 03 Juni 2025, 08:47:12
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.
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 03 Juni 2025, 10:01:49
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
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: Guybrush am 03 Juni 2025, 10:36:53
dann mach da

server: enet = 192.168.179.135:8080
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 03 Juni 2025, 12:03:46
Top! Das wars  ;D  ;D  ;D

Jetzt muss ich nur noch schauen wieso es Errors am Bus gibt
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: inspiron8100 am 04 Juni 2025, 08:29:49
Hallo,
muss ich auch owserver für den Esera Controller 1 installieren oder reicht das 66_EseraOneWire aus?
grüß mario
Titel: Aw: 1-wire Esera Controller & owserver
Beitrag von: uxtuner am 04 Juni 2025, 14:06:26
das Modul ist ausreichend - ist halt proprietär nur für FHEM aber funktioniert gut ...