noch eine idee zu blocking/fork/timing & co

Begonnen von justme1968, 03 Januar 2014, 16:44:45

Vorheriges Thema - Nächstes Thema

justme1968

es gibt ja schon einige ideen und vorschläge wie man verhindern kann das einzelne module fhem lahm legen, zum absturz bringen oder wie timing kritische dinge ungestört realisiert werden können.

das läuft meist mehr oder weniger darauf hinaus am modul spezielle dinge zu tun wie BlockingCall zu verwenden oder einen extra daemon zu starten.

was wäre wenn man das ganze komplett anders angeht und fhem selber dafür sorgen lässt das es ein komplettes modul über die standard schnittstellen DefFn,SetFn,GetFn,readingsBulkUpdate, ... gekapselt transparent in einem eigenen Prozess ausführen kann:

- define bekommt eine option verpasst mit dem das neue device in einem geforkten prozess ausgelagert gestartet wird
- alle aufrufe über die standard funktionen werden serialisiert und per socket in beide richtungen kommuniziert
- wenn ein child prozess nicht mehr antwortet kann er neu gestartet werden
- im child lassen sich z.b. readings*Update transparent weiter verwenden und werden genau so serialisiert per socket zum parent geschickt
- jedes device läuft wie bisher in einer ganz 'normalen' fhem umgebung
- statt ein einzelnes modul in einen extra prozess zu stecken könnte man logische gruppen bilden

also eine 'art' fhem2fhem aber auf einem rechner (wobei das noch nicht mal nötig ist) und für normale module transparent.

unterm strich ist das natürlich zusätzlicher kommunikations overhead. aber auf halbwegs aktueller hardware sollte das kein problem sein. dafür fallen blockieren und timing probleme weg weil die kapselung ziemlich gut ist.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Z.Zt. werden ziemlich viele globale Variablen ($defs, $module, $attr, usw) verwendet, die Zugriffe darauf muesste man kapseln. D.h. ein $attr/$hash Zugriff koennte teuer werden. Oder man verteilt die Aenderungen irgendwie, am besten nur an die, die es auch benoetigen.

justme1968

ja. das stimmt. aber die aller meisten module und vor allem die die für so eine prozess kappselung in frage kommen greifen auf ihre eigenen variablen zu. nicht auf fremde. und da jeder prozess ein fast komplettes fhem in dem halt nur ein modul läuft (oder dinge gruppe) gibt es beim lesen gar keine performance probleme weil die lokal gecachete version völlig ausreicht. das schreiben darf halt nur noch gekapselt erfolgen jedenfalls wenn es jemand anders sehen können soll.

die andere möglichkeit die man auch hätte wäre zusammengehörende module in einen prozess zu stecken. z.b. alle hm module die das gleiche iodev haben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

ich habe gestern mal angefangen diese idee zu implementieren. die ersten ergebnisse sind glaube ich sehr positiv.

mitdefine [sandbox] <name> <device> <args...>definiert man statt des 'normalen' device ein 'stub' auf fhem seite und zusätzlich wird automatisch ein 'normales' in einem eigenen fhem prozess gestartet. für das gestartete modul ist das in der regel völlig transparent.

die änderungen an fhem.pl selber sind für die meisten dinge recht minimal und beschränken sich bei get/set/attr auf jeweils eine oder eine hand voll zeilen um den aufruf auch noch an die jeweilige gegenseite zu forwarden. die eigentliche Kommunikation und der meiste code stecken in einem normalem 93_sanbox.pm fhem modul.

ReadingsUpdate is ein klein wenig aufwändiger funktioniert aber auch.

der lesende zugriff auf eigene $attr/$hash/$def (bzw. die aller devices in der gleichen sandbox) geht automatisch. es gibt ja auf beiden seiten eine kopie mit aktuellen werten.

ein delete auf das stub modul räumt den sanbox prozess einfach mit auf.

jede sandbox kann wie ein normales fhem auch beliebige module laden. ich starte z.b. zum debuggen in jeder sandbox automatisch ein telnet modul und kann mich dahin verbinden und genau schauen was die module machen.

sobald ich das starten von modul gruppen in einer einzigen sandbox implementiert habe wäre es schön wenn sich der ein oder andere interessent das ganze mal anschaut. ich werde OWServer/OWDevice in einer solchen sandbox betreiben um fhem vom blockieren und verzögerungen in der 1-wire kommunikation zu entkoppeln. einen anderen anwendungsfall könnte ich mir z.b. für einen 'cluster' aus den homematic modulen und den zugehörigen IODev vorstellen. 

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

#4
und eine erste verson falls noch jemand anders testen möchte...

die syntax ist wie oben schon kurz gezeigt. also z.b.:define [sandbox] owserver OWServer 10.0.1.44inklusive der eckigen klammern.

damit wird ein 'stub' OWServer device in der haupt instanz erzeugt und eigener fhem prozess gestartet in dem nur das sandbox device, ein telnet device zum debuggen (den port sieht man im log) und das 'echte' OWServer device laufen.

alle set,get,attr kommandos werden auch an die sandbox weitergereicht. ReadingsUpdate (und somit auch setreading) werden in beide richtungen weitergereicht. ein define aus der sandbox (z.b. durch autocreate) wird an den haupt prozess weitergereicht und es wird automatisch ein 'stub' device angelegt. wenn durch das get ein update von readings ausgelöst wird ist die rückmeldung des get auf der kosnole noch falsch. das wird noch repariert.

alle log meldungen der sandbox haben die [pid] am anfang der nachricht

das ganze ist noch nicht auf geschwindigkeit optimiert. und es werden auch noch keine voll laufenden buffer abgefangen.

man sieht aber z.b. an dem OWDevice beispiel das alle perfmon meldungen nur noch die sandbox betreffen und der parent prozess keinerlei verzögerungen mehr hat.

OWServer/OWDevice ist bis jetzt das komplexeste das ich getestete habe. es sollte aber z.b. auch möglich sein alle homematic devices mit dem zugehörigen cul in eine sandbox zu stecken.

man kann mit [sandbox:<name>] beim define der sanbox einen namen geben. alle devices mit gleichem sanbox namen landen in der gleichen sandbox. pro name wird ein eigener prozess erzeugt.

wenn die sandbox abstürzt (oder zum testen per mit shutdown angehalten wird) startet der haupt prozess eine neue und erzeugt alle devices wieder. wenn der haupt prozess beendet wird beenden sich alle sandboxen. das gleiche gilt für eine sanbox in der keine devices mehr laufen. also z.b. wenn im haupt fhem die devices mit delete gelöscht werden.

zur zeit verwendet der sandbox prozess noch alle global einstellungen aus dem config file mit dem auch der master prozess läuft. das könnte man auch versuchen erste mal ein eigenes config file mit dem sandbox namen zu laden und da dann z.b. auch das telnet device zum debuggen einzutragen und nicht mehr hart kodiert starten.

gruss
  andre

edit: wichtig:  da das autocreate in der sandbox noch nicht prüfen kann ob es ein gleichnamiges device im master schon gibt kann es hierbei namenskonflikte geben. beim testen ist es am besten mit einem leeren fhem bzw. einem ohne andere owserver/owdevice devices anzufangen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Joachim

Moin Andre,
Superidee :),
werde ich mir aber nicht mehr vor dem schlafen gehen ansehen.
Wenn das vernünftig rennt, ist mein cloneDummy überflüssig.
Ich teste, wenn ich wieder wach bin.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

#6
immer mit der ruhe :) und fertig ist es ja auch noch nicht.

der cloneDummy hat immer noch seine berechtigung wenn die readings von einem anderen rechner kommen. die sandboxen sind ja erst mal nur lokal.  ich hab aber inzwischen auch eine readingsProxy version die mehr als ein reading kann :)

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Joachim

Ich will auch keinen Stress machen,
aber es geht genau in die Richtung, die ich mir gedacht habe.
So kann man einzelne Gruppen von Devices voneinander entkoppeln.
Das wäre auch was für HM und ähnliche.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

ich habe die version oben noch mal aktualisiert um ein problem beim set abzufangen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

martinp876

Lass mich noch einmal wiedergeben was ich Verstanden habe:
beim define wird optional ein neuer Prozess gestartet - der somit sein eigenes Timing hat.

Problem aus sicht von HM:
es interagieren
1) device-entities mit channel-entities
2) source-entities mit destination-entities
3) HM entities mit IO-entites

3) das IO muss das Timing für das Device machen - braucht zugriff auf dessen "helper".
das Device muss wissen, ob das IO lebt - braucht zugriff auf Internals

Den Austausch von Variablen über Methoden zu machen ist ein erster schritt um überhaupt etwas erreichen zu können. Das betrifft aber mehr als attr - auch helper und internal. Es gibt mehr zu kommunizieren - zumindest bei HM

Man müsste also nicht Entities sondern Funktionen kapseln

Gruss Martin

justme1968

#10
nicht ganz. das konzept kann mehr und sieht genau das vor: eine sandbox ist nicht auf ein device beschränkt.

du kannst eine gruppe von zusammengeörigen devices in die gleiche sandbox stecken. d.h. alle hm entities in eine sandbox. die haben dann gegenseitig freien zugriff auf alle internen strukturen wie es jetzt auch ist. ich würde sogar das zugehörige IODev noch mit in die gleiche sandbox stecken.

aus sicht einer solchen modulgruppe verhält sich die sandbox wie eine normale fhem installation in der nur genau diese module laufen.

alles was außerhalb der sandbox läuft kann nur noch über set/get/attr und readings zugreifen. das sind aber normalerweise sowieso die öffentlichen interfaces.

erst wenn es tatsächlich fremd module gibt die auf internals zugreifen funktioniert es nicht mehr transparent. die sind aber zum einen sowieso nicht sinnvoll und zum anderen auch bei jedem anderen thread oder prozess ansatz problematisch. mit dem sandbox ansatz könnte man aber ein api vorsehen um da auch zu helfen. aber wie sagt: ich glaube solche module sind gar nicht nötig.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Joachim

Moin Andre,

mal ein kurzer Zwischenstand:
bei OWX mit OWTHERM und OWMULTI schmiert erst die Sandbox, dann FHEM  ab. OWServer und OWDevice muss ich erst noch installierenum testen zu können.
Möchtest Du trotzdem die Fehlermeldungen haben, oder soll ich erst mit OWServer/OWDevice testen?

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

auf jeden fall die meldung.

OWTHERM und OWMULTI kann ich probieren. aber nur mit OWServer und nicht mit OWX.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Joachim

So, hier mal die fhem.cfg und ein paar Logausgaben
fhem.cfg:

define [sandbox] onewire OWX /dev/ttyUSB0
attr onewire room OWX

define OWX_01_2C5987150000 OWID 01 2C5987150000
attr OWX_01_2C5987150000 IODev onewire
attr OWX_01_2C5987150000 model DS2401
attr OWX_01_2C5987150000 room OWX
#attr OWX_01_2C5987150000 stateFormat {ReadingsVal($name,"present",0) ? "present" : "not present"}

#############################################################################################

define TS_Bad OWTHERM DS18B20 4638BA030000 30
attr TS_Bad IODev onewire
attr TS_Bad model DS1822
attr TS_Bad room Bad
attr TS_Bad tempHigh 25
attr TS_Bad tempLow 0

define FS_Bad OWMULTI DS2438 362E27010000 30
attr FS_Bad IODev onewire
attr FS_Bad icon tropfen
attr FS_Bad model DS2438
attr FS_Bad room Bad


Konsolenmeldungen:

root@KanotixBox:/opt/fhem# /etc/init.d/fhem start
Starting fhem...
root@KanotixBox:/opt/fhem# Subroutine sandbox_Initialize redefined at ./FHEM/93_sandbox.pm line 22, <$fh> line 26.
Subroutine sandbox_Define redefined at ./FHEM/93_sandbox.pm line 38, <$fh> line 26.
Subroutine sandbox_Undef redefined at ./FHEM/93_sandbox.pm line 62, <$fh> line 26.
Subroutine sandbox_Write redefined at ./FHEM/93_sandbox.pm line 70, <$fh> line 26.
Subroutine sandbox_Read redefined at ./FHEM/93_sandbox.pm line 77, <$fh> line 26.
Subroutine sandbox_Ready redefined at ./FHEM/93_sandbox.pm line 158, <$fh> line 26.
Subroutine sandbox_CloseDev redefined at ./FHEM/93_sandbox.pm line 167, <$fh> line 26.
Subroutine sandbox_OpenDev redefined at ./FHEM/93_sandbox.pm line 174, <$fh> line 26.
Subroutine sandbox_Disconnected redefined at ./FHEM/93_sandbox.pm line 182, <$fh> line 26.
Subroutine sandbox_create redefined at ./FHEM/93_sandbox.pm line 203, <$fh> line 26.
Subroutine sandbox_call redefined at ./FHEM/93_sandbox.pm line 302, <$fh> line 26.
Can't use string ("0") as a symbol ref while "strict refs" in use at ./FHEM/93_sandbox.pm line 149.


fhem.log:

2014.06.03 19:37:19.681 5: Initializing Type Library:
2014.06.03 19:37:19.682 1: Including fhem.cfg
2014.06.03 19:37:19.682 5: Cmd: >attr global autoload_undefined_devices 1<
2014.06.03 19:37:19.683 5: Cmd: >attr global logfile ./log/fhem-%Y-%m.log<
2014.06.03 19:37:19.683 5: Cmd: >attr global modpath .<
2014.06.03 19:37:19.689 5: Cmd: >attr global motd none<
2014.06.03 19:37:19.689 5: Cmd: >attr global mseclog 1<
2014.06.03 19:37:19.690 5: Cmd: >attr global statefile ./log/fhem.save<
2014.06.03 19:37:19.690 5: Cmd: >attr global updateInBackground 1<
2014.06.03 19:37:19.690 5: Cmd: >attr global userattr DbLogExclude devStateIcon devStateStyle icon sortby webCmd widgetOverride<
2014.06.03 19:37:19.690 5: Cmd: >attr global verbose 5<
2014.06.03 19:37:19.690 5: Cmd: >define telnetPort telnet 7072 global<
2014.06.03 19:37:19.690 5: Loading ./FHEM/98_telnet.pm
2014.06.03 19:37:19.708 3: telnetPort: port 7072 opened
2014.06.03 19:37:19.708 5: Cmd: >define WEB FHEMWEB 8083 global<
2014.06.03 19:37:19.708 5: Loading ./FHEM/01_FHEMWEB.pm
2014.06.03 19:37:19.821 3: WEB: port 8083 opened
2014.06.03 19:37:19.822 5: Cmd: >attr WEB menuEntries rereadcfg,cmd=rereadcfg,restart,cmd=shutdown restart,update,cmd=update,updatecheck,cmd=update+check,updateforce,cmd=update+force<
2014.06.03 19:37:19.822 5: Cmd: >define Logfile FileLog ./log/fhem-%Y-%m.log fakelog<
2014.06.03 19:37:19.822 5: Loading ./FHEM/92_FileLog.pm
2014.06.03 19:37:19.856 5: Cmd: >define eventTypes eventTypes ./log/eventTypes.txt<
2014.06.03 19:37:19.856 5: Loading ./FHEM/91_eventTypes.pm
2014.06.03 19:37:19.872 2: eventTypes: loaded 646 events from ./log/eventTypes.txt
2014.06.03 19:37:19.872 5: Cmd: >define [sandbox] onewire OWX /dev/ttyUSB0<
2014.06.03 19:37:19.872 5: Loading ./FHEM/00_OWX.pm
2014.06.03 19:37:19.975 5: Loading ./FHEM/93_sandbox.pm
2014.06.03 19:37:19.982 3: sandbox: starting sandbox
2014.06.03 19:37:20.014 5: Cmd: >attr onewire room OWX<
2014.06.03 19:37:20.015 5: Cmd: >define OWX_01_2C5987150000 OWID 01 2C5987150000<
2014.06.03 19:37:20.015 5: Loading ./FHEM/21_OWID.pm
2014.06.03 19:37:20.039 3: OWID: Device OWX_01_2C5987150000 defined.
2014.06.03 19:37:20.039 5: Cmd: >attr OWX_01_2C5987150000 IODev onewire<
2014.06.03 19:37:20.039 5: Cmd: >attr OWX_01_2C5987150000 model DS2401<
2014.06.03 19:37:20.040 5: Cmd: >attr OWX_01_2C5987150000 room OWX<
2014.06.03 19:37:20.040 5: Cmd: >define TS_Bad OWTHERM DS18B20 4638BA030000 30<
2014.06.03 19:37:20.040 5: Loading ./FHEM/21_OWTHERM.pm
2014.06.03 19:37:20.075 3: OWTHERM: Device TS_Bad defined.
2014.06.03 19:37:20.075 5: Cmd: >attr TS_Bad IODev onewire<
2014.06.03 19:37:20.075 5: Cmd: >attr TS_Bad model DS1822<
2014.06.03 19:37:20.075 5: Cmd: >attr TS_Bad room Bad<
2014.06.03 19:37:20.075 5: Cmd: >attr TS_Bad tempHigh 25<
2014.06.03 19:37:20.076 5: Cmd: >attr TS_Bad tempLow 0<
2014.06.03 19:37:20.076 5: Cmd: >define FS_Bad OWMULTI DS2438 362E27010000 30<
2014.06.03 19:37:20.076 5: Loading ./FHEM/21_OWMULTI.pm
2014.06.03 19:37:20.108 3: OWMULTI: Device FS_Bad defined.
2014.06.03 19:37:20.108 5: Cmd: >attr FS_Bad IODev onewire<
2014.06.03 19:37:20.108 5: Cmd: >attr FS_Bad icon tropfen<
2014.06.03 19:37:20.109 5: Cmd: >attr FS_Bad model DS2438<
2014.06.03 19:37:20.109 5: Cmd: >attr FS_Bad room Bad<
2014.06.03 19:37:20.129 5: Triggering global (1 changes)
2014.06.03 19:37:20.129 5: Notify loop for global INITIALIZED
2014.06.03 19:37:20.130 0: Server started with 10 defined entities (version $Id: fhem.pl 6001 2014-05-29 10:25:01Z rudolfkoenig $, os linux, user joachim, pid 4838)
2014.06.03 19:37:20.338 5: [4839] Initializing Type Library:
2014.06.03 19:37:20.338 5: [4839] Loading ./FHEM/93_sandbox.pm
2014.06.03 19:37:20.361 5: [4839] Loading ./FHEM/98_telnet.pm
2014.06.03 19:37:20.378 3: [4839] telnet: port 39372 opened
2014.06.03 19:37:20.379 5: [4839] Triggering global (1 changes)
2014.06.03 19:37:20.379 5: [4839] Notify loop for global INITIALIZED
2014.06.03 19:37:20.380 0: [4839] Sandbox started with 3 defined entities (version $Id: fhem.pl 6001 2014-05-29 10:25:01Z rudolfkoenig $, os linux, user joachim, pid 4839)
2014.06.03 19:37:20.380 5: [4839] sandbox/RAW: /define onewire OWX /dev/ttyUSB0
attr onewire room OWX

2014.06.03 19:37:20.380 5: [4839] Cmd: >define onewire OWX /dev/ttyUSB0<
2014.06.03 19:37:20.380 5: [4839] Loading ./FHEM/00_OWX.pm
2014.06.03 19:37:20.463 5: sandbox/RAW: /define onewire OWX /dev/ttyUSB0

2014.06.03 19:37:20.463 5: Cmd: >define [sandbox:sandbox] onewire OWX /dev/ttyUSB0<
2014.06.03 19:37:20.463 4: sandbox: sandbox:sandbox: define [sandbox:sandbox] onewire OWX /dev/ttyUSB0
2014.06.03 19:37:20.463 4:   -> onewire already defined, delete it first
2014.06.03 19:37:20.463 3: [4839] Opening onewire device /dev/ttyUSB0
2014.06.03 19:37:20.471 3: [4839] Setting onewire baudrate to 9600
2014.06.03 19:37:20.487 3: [4839] onewire device opened
2014.06.03 19:37:20.488 1: [4839] OWX: Serial device /dev/ttyUSB0 defined
2014.06.03 19:37:20.641 1: [4839] OWX: 1-Wire bus onewire: interface master DS2480 re-detected
2014.06.03 19:37:20.642 5: sandbox/RAW: /setreading onewire state defined

2014.06.03 19:37:20.642 5: Cmd: >setreading onewire state defined<
2014.06.03 19:37:20.642 5: Triggering onewire (1 changes)
2014.06.03 19:37:20.642 5: Notify loop for onewire defined
2014.06.03 19:37:20.643 4: eventTypes: OWX onewire defined -> defined
2014.06.03 19:37:20.643 4: eventTypes: OWX onewire state: defined -> state: defined
2014.06.03 19:37:20.643 4: sandbox: sandbox:sandbox: setreading onewire state defined
2014.06.03 19:37:20.643 5: [4839] Triggering onewire (1 changes)
2014.06.03 19:37:20.643 5: [4839] Notify loop for onewire defined
2014.06.03 19:37:20.643 5: [4839] Triggering global (1 changes)
2014.06.03 19:37:20.643 5: [4839] Notify loop for global DEFINED onewire
2014.06.03 19:37:20.643 4: [4839] sandbox: sandbox: define onewire OWX /dev/ttyUSB0
2014.06.03 19:37:20.644 5: [4839] Cmd: >attr onewire room OWX<
2014.06.03 19:37:20.644 4: [4839] sandbox: sandbox: attr onewire room OWX
2014.06.03 19:37:30.009 5: Triggering FS_Bad (1 changes)
2014.06.03 19:37:30.009 5: Notify loop for FS_Bad initialized
2014.06.03 19:37:30.010 4: eventTypes: OWMULTI FS_Bad initialized -> initialized
2014.06.03 19:37:30.010 4: eventTypes: OWMULTI FS_Bad state: initialized -> state: initialized
2014.06.03 19:37:30.010 3: OWX: Reset called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Complex called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Reset called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Complex called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Reset called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Complex called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Reset called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Complex called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Reset called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Complex called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Reset called with undefined interface
2014.06.03 19:37:30.010 3: OWX: Complex called with undefined interface
2014.06.03 19:37:31.373 5: [4839] OWX: New device found 28.4638BA030000.0D
2014.06.03 19:37:32.096 5: [4839] OWX: New device found 26.362E27010000.39
2014.06.03 19:37:32.819 5: [4839] OWX: New device found 01.2C5987150000.B0
2014.06.03 19:37:33.542 5: [4839] Loading ./FHEM/21_OWTHERM.pm
2014.06.03 19:37:33.558 5: sandbox/RAW: /define OWX_28_4638BA030000 OWTHERM DS18B20 4638BA030000

2014.06.03 19:37:33.558 5: Cmd: >define [sandbox:sandbox] OWX_28_4638BA030000 OWTHERM DS18B20 4638BA030000<
2014.06.03 19:37:33.558 4: sandbox: sandbox:sandbox: define [sandbox:sandbox] OWX_28_4638BA030000 OWTHERM DS18B20 4638BA030000
2014.06.03 19:37:33.559 5: sandbox/RAW: /setreading OWX_28_4638BA030000 state defined

2014.06.03 19:37:33.559 5: Cmd: >setreading OWX_28_4638BA030000 state defined<
2014.06.03 19:37:33.559 5: Triggering OWX_28_4638BA030000 (1 changes)
2014.06.03 19:37:33.559 5: Notify loop for OWX_28_4638BA030000 defined
2014.06.03 19:37:33.559 4: eventTypes: OWTHERM OWX_28_4638BA030000 defined -> defined
2014.06.03 19:37:33.560 4: eventTypes: OWTHERM OWX_28_4638BA030000 state: defined -> state: defined
2014.06.03 19:37:33.560 4: sandbox: sandbox:sandbox: setreading OWX_28_4638BA030000 state defined
2014.06.03 19:37:33.560 5: [4839] Triggering OWX_28_4638BA030000 (1 changes)
2014.06.03 19:37:33.560 5: [4839] Notify loop for OWX_28_4638BA030000 defined
2014.06.03 19:37:33.560 3: [4839] OWTHERM: Device OWX_28_4638BA030000 defined.
2014.06.03 19:37:33.560 5: [4839] Triggering global (1 changes)
2014.06.03 19:37:33.560 5: [4839] Notify loop for global DEFINED OWX_28_4638BA030000
2014.06.03 19:37:33.661 5: [4839] Loading ./FHEM/21_OWMULTI.pm
2014.06.03 19:37:33.673 5: sandbox/RAW: /define OWX_26_362E27010000 OWMULTI DS2438 362E27010000

2014.06.03 19:37:33.673 5: Cmd: >define [sandbox:sandbox] OWX_26_362E27010000 OWMULTI DS2438 362E27010000<
2014.06.03 19:37:33.677 4: sandbox: sandbox:sandbox: define [sandbox:sandbox] OWX_26_362E27010000 OWMULTI DS2438 362E27010000
2014.06.03 19:37:33.679 5: sandbox/RAW: /setreading OWX_26_362E27010000 state defined

2014.06.03 19:37:33.679 5: Cmd: >setreading OWX_26_362E27010000 state defined<
2014.06.03 19:37:33.679 5: Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:33.679 5: Notify loop for OWX_26_362E27010000 defined
2014.06.03 19:37:33.680 4: eventTypes: OWMULTI OWX_26_362E27010000 defined -> defined
2014.06.03 19:37:33.680 4: eventTypes: OWMULTI OWX_26_362E27010000 state: defined -> state: defined
2014.06.03 19:37:33.680 4: sandbox: sandbox:sandbox: setreading OWX_26_362E27010000 state defined
2014.06.03 19:37:33.680 5: [4839] Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:33.680 5: [4839] Notify loop for OWX_26_362E27010000 defined
2014.06.03 19:37:33.680 3: [4839] OWMULTI: Device OWX_26_362E27010000 defined.
2014.06.03 19:37:33.680 5: [4839] Triggering global (1 changes)
2014.06.03 19:37:33.680 5: [4839] Notify loop for global DEFINED OWX_26_362E27010000
2014.06.03 19:37:33.781 5: [4839] Loading ./FHEM/21_OWID.pm
2014.06.03 19:37:33.790 5: sandbox/RAW: /define OWX_01_2C5987150000 OWID 01 2C5987150000

2014.06.03 19:37:33.790 5: Cmd: >define [sandbox:sandbox] OWX_01_2C5987150000 OWID 01 2C5987150000<
2014.06.03 19:37:33.790 4: sandbox: sandbox:sandbox: define [sandbox:sandbox] OWX_01_2C5987150000 OWID 01 2C5987150000
2014.06.03 19:37:33.790 4:   -> OWX_01_2C5987150000 already defined, delete it first
2014.06.03 19:37:33.791 5: sandbox/RAW: /setreading OWX_01_2C5987150000 state Defined

2014.06.03 19:37:33.791 5: Cmd: >setreading OWX_01_2C5987150000 state Defined<
2014.06.03 19:37:33.791 5: Triggering OWX_01_2C5987150000 (1 changes)
2014.06.03 19:37:33.792 5: Notify loop for OWX_01_2C5987150000 Defined
2014.06.03 19:37:33.792 4: eventTypes: OWID OWX_01_2C5987150000 Defined -> Defined
2014.06.03 19:37:33.792 4: eventTypes: OWID OWX_01_2C5987150000 state: Defined -> state: Defined
2014.06.03 19:37:33.792 4: sandbox: sandbox:sandbox: setreading OWX_01_2C5987150000 state Defined
2014.06.03 19:37:33.792 5: [4839] Triggering OWX_01_2C5987150000 (1 changes)
2014.06.03 19:37:33.792 5: [4839] Notify loop for OWX_01_2C5987150000 Defined
2014.06.03 19:37:33.792 3: [4839] OWID: Device OWX_01_2C5987150000 defined.
2014.06.03 19:37:33.793 5: sandbox/RAW: /setreading OWX_01_2C5987150000 state Initialized

2014.06.03 19:37:33.793 5: Cmd: >setreading OWX_01_2C5987150000 state Initialized<
2014.06.03 19:37:33.793 5: Triggering OWX_01_2C5987150000 (1 changes)
2014.06.03 19:37:33.793 5: Notify loop for OWX_01_2C5987150000 Initialized
2014.06.03 19:37:33.793 4: eventTypes: OWID OWX_01_2C5987150000 Initialized -> Initialized
2014.06.03 19:37:33.794 4: eventTypes: OWID OWX_01_2C5987150000 state: Initialized -> state: Initialized
2014.06.03 19:37:33.794 4: sandbox: sandbox:sandbox: setreading OWX_01_2C5987150000 state Initialized
2014.06.03 19:37:33.797 5: [4839] Triggering OWX_01_2C5987150000 (1 changes)
2014.06.03 19:37:33.797 5: [4839] Notify loop for OWX_01_2C5987150000 Initialized
2014.06.03 19:37:33.797 5: [4839] Triggering global (1 changes)
2014.06.03 19:37:33.797 5: [4839] Notify loop for global DEFINED OWX_01_2C5987150000
2014.06.03 19:37:33.898 1: [4839] OWX: 1-Wire devices found on bus onewire (OWX_28_4638BA030000,OWX_26_362E27010000,OWX_01_2C5987150000)
2014.06.03 19:37:33.899 5: [4839] sandbox/RAW: /define OWX_28_4638BA030000 OWTHERM DS18B20 4638BA030000
define OWX_26_362E27010000 OWMULTI DS2438 362E27010000

2014.06.03 19:37:33.899 5: [4839] Cmd: >define OWX_28_4638BA030000 OWTHERM DS18B20 4638BA030000<
2014.06.03 19:37:33.899 4: [4839] sandbox: sandbox: define OWX_28_4638BA030000 OWTHERM DS18B20 4638BA030000
2014.06.03 19:37:33.900 4: [4839]   -> OWX_28_4638BA030000 already defined, delete it first
2014.06.03 19:37:33.900 5: [4839] Cmd: >define OWX_26_362E27010000 OWMULTI DS2438 362E27010000<
2014.06.03 19:37:33.900 4: [4839] sandbox: sandbox: define OWX_26_362E27010000 OWMULTI DS2438 362E27010000
2014.06.03 19:37:33.900 4: [4839]   -> OWX_26_362E27010000 already defined, delete it first
2014.06.03 19:37:43.007 5: sandbox/RAW: /setreading OWX_26_362E27010000 state initialized

2014.06.03 19:37:43.007 5: Cmd: >setreading OWX_26_362E27010000 state initialized<
2014.06.03 19:37:43.007 5: Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:43.007 5: Notify loop for OWX_26_362E27010000 initialized
2014.06.03 19:37:43.008 4: eventTypes: OWMULTI OWX_26_362E27010000 initialized -> initialized
2014.06.03 19:37:43.008 4: eventTypes: OWMULTI OWX_26_362E27010000 state: initialized -> state: initialized
2014.06.03 19:37:43.008 4: sandbox: sandbox:sandbox: setreading OWX_26_362E27010000 state initialized
2014.06.03 19:37:43.008 5: [4839] Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:43.008 5: [4839] Notify loop for OWX_26_362E27010000 initialized
2014.06.03 19:37:44.707 5: sandbox/RAW: /setreading OWX_26_362E27010000 voltage 2.02

2014.06.03 19:37:44.707 5: Cmd: >setreading OWX_26_362E27010000 voltage 2.02<
2014.06.03 19:37:44.708 5: Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:44.708 5: Notify loop for OWX_26_362E27010000 voltage: 2.02
2014.06.03 19:37:44.708 4: eventTypes: OWMULTI OWX_26_362E27010000 voltage: 2.02 -> voltage: .*
2014.06.03 19:37:44.708 4: sandbox: sandbox:sandbox: setreading OWX_26_362E27010000 voltage 2.02
2014.06.03 19:37:44.708 5: sandbox/RAW: /setreading OWX_26_362E27010000 VDD 4.87

2014.06.03 19:37:44.709 5: Cmd: >setreading OWX_26_362E27010000 VDD 4.87<
2014.06.03 19:37:44.709 5: Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:44.709 5: Notify loop for OWX_26_362E27010000 VDD: 4.87
2014.06.03 19:37:44.709 4: eventTypes: OWMULTI OWX_26_362E27010000 VDD: 4.87 -> VDD: .*
2014.06.03 19:37:44.709 4: sandbox: sandbox:sandbox: setreading OWX_26_362E27010000 VDD 4.87
2014.06.03 19:37:44.709 5: sandbox/RAW: /setreading OWX_26_362E27010000 temperature 21.59375

2014.06.03 19:37:44.710 5: Cmd: >setreading OWX_26_362E27010000 temperature 21.59375<
2014.06.03 19:37:44.710 5: Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:44.710 5: Notify loop for OWX_26_362E27010000 temperature: 21.59375
2014.06.03 19:37:44.710 4: eventTypes: OWMULTI OWX_26_362E27010000 temperature: 21.59375 -> temperature: .*
2014.06.03 19:37:44.710 4: sandbox: sandbox:sandbox: setreading OWX_26_362E27010000 temperature 21.59375
2014.06.03 19:37:44.711 5: [4839] Triggering OWX_26_362E27010000 (4 changes)
2014.06.03 19:37:44.711 5: [4839] Notify loop for OWX_26_362E27010000 voltage: 2.02
2014.06.03 19:37:44.711 5: [4839] voltage:  2.02 V (T: 21.59 &deg;C)
2014.06.03 19:37:44.717 5: sandbox/RAW: /setreading OWX_26_362E27010000 state voltage:  2.02 V (T: 21.59 &deg;C)

2014.06.03 19:37:44.717 5: Cmd: >setreading OWX_26_362E27010000 state voltage:  2.02 V (T: 21.59 &deg<
2014.06.03 19:37:44.717 5: Triggering OWX_26_362E27010000 (1 changes)
2014.06.03 19:37:44.718 5: Notify loop for OWX_26_362E27010000 voltage:  2.02 V (T: 21.59 &deg
2014.06.03 19:37:44.718 4: eventTypes: OWMULTI OWX_26_362E27010000 voltage:  2.02 V (T: 21.59 &deg -> voltage:  .* V (T: .* &deg
2014.06.03 19:37:44.718 4: eventTypes: OWMULTI OWX_26_362E27010000 state: voltage:  2.02 V (T: 21.59 &deg -> state: voltage:  .* V (T: .* &deg
2014.06.03 19:37:44.718 5: Cmd: >C)<
2014.06.03 19:37:44.718 4: sandbox: sandbox:sandbox: setreading OWX_26_362E27010000 state voltage:  2.02 V (T: 21.59 &deg;C)
2014.06.03 19:37:44.718 4:   -> Unknown command C), try help.
2014.06.03 19:37:45.815 5: [4839] Triggering OWX_28_4638BA030000 (1 changes)
2014.06.03 19:37:45.815 5: [4839] Notify loop for OWX_28_4638BA030000 initialized
2014.06.03 19:37:45.815 5: [4839] Triggering OWX_28_4638BA030000 (2 changes)
2014.06.03 19:37:45.815 5: [4839] Notify loop for OWX_28_4638BA030000 temperature: 22.5625
2014.06.03 19:37:45.815 5: [4839] T: 22.56 &deg;C
2014.06.03 19:37:45.816 1: [4839] sandbox: parent connection died


mit "sandbox: parent connection died" stirbt auch FHEM.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

die zu OWX gehörigen devices müssen auch alle in die sandbox. wenn das nicht per autocreate geht musst du sie im configfile über das define dahin schicken.

es ist umgekehrt. der parent stirbt und die sandbox merkt es und beendet sich selber.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968