1-wire Esera Controller & owserver

Begonnen von uxtuner, 18 Mai 2025, 14:58:53

Vorheriges Thema - Nächstes Thema

uxtuner

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
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

Guybrush

wie ist der denn angebunden? usb?

uxtuner

Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

Guybrush

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.

uxtuner

#4
hatte ich schon probiert, da kommt aber nichts an ...

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

Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

Guybrush

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

uxtuner

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
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

Guybrush

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

uxtuner

/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>
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

uxtuner

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?
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

Guybrush

ich hab den OW-SERVER-ENET. Läuft seit 13 Jahren ununterbrochen in meinem Heizungskeller mit 17 Temperaturfühlern. Bislang nie Probleme damit gehabt..

uxtuner

Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

uxtuner

#12
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.
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.

Guybrush

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.

uxtuner

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
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM & HA & AgentDVR), QNAP TS-453, Esera OneWire (8-fach Schalter, Hub, Controller II), EDS 1-Wire Server, Mosquitto Server, Wolf CGW-2 m. ISM7MQTT, Shelly (Plug S, H&T, 2.5, 1 PM, Floodsensor/Rauchmelder), Tado (Thermostat V3+) etc.