Hello,

with high interest i read the EXTERNAL SENSOR support. This would be an 
great option to extend my KNX smarthome System with other than orignal 
1-wire sensors.

So i wrote the following config:

external
SENSOR: Outside, 28, "Outsidesensor", "sensortext"
SCRIPT: temperature10, 28, t, 1, v, /tmp/value, /tmp/value, "proptext"

and started owserver.

I'm able to get the expected value from my script /tmp/value with the 
following command:

owget /bus.0/Outside/temperature10

that works fine ;-). And:

owdir /bus.0/Outside

gives me the entries:

/bus.0/Outside/family
/bus.0/Outside/temperature10
/bus.0/Outside/type

But reading the automatic created properties from owserver like "family" 
or "type" i got:

owget /bus.0/Outside/family
ServerRead: Data error on /bus.0/Outside/family

even at higher level

owget /Outside/family

the whole owserver crashes with SEGMENTATION FAULT.

I looked at the code and for my understand there is something missing in 
the function "OW_trees_for_read" in "ow_read_external.c"

[...]
if ( property_n != NULL ) {
        switch ( property_n->et ) {
                case et_none:
                        return 0 ;
                case et_internal:
                        return -ENOTSUP ;
                case et_script:
                        return OW_read_external_script( sense_n, property_n, 
owq ) ;
                default:
                        return -ENOTSUP ;
        }
}
[...]

In case of reading properties that are described with SCRIPT in the 
config (=> et_script), there is a function "OW_read_external_script" 
that executes the external program, whereas for automatic/internal 
properties ("family", "type" that has type "et_internal") only 
return-code "-ENOTSUP" is reported back to the higher level functions.

For my understanding there should be wrote the documented value 
"external" for the property "type" and for property "family" the value 
from the config (in my example "28") wrote back to the Data-Struct 
"one_wire_query". Is that right?

Beside the Concept about the external sensor support described at your page

http://owfs.org/index.php?page=external-sensor-design

it would be very fine to overwrite the fixed value "external" for the 
property "type", with any other value. That's because some 
Smarthome-Visus like smarthome.py only support known 1-wire sensors like 
DS18B20. With the external sensor feature, there would be an graceful 
way to simulate well known sensors.

Thanks for your answer and your help. If you need more Debugging infos, 
please let me know.

Patrick

------ owserver debug -----

/opt/owfs/bin/owserver --foreground  --debug --error_level 9 -c /tmp/ow.cfg
0x1ae6010 alloc owserver.c:[51] STRDUP s=/opt/owfs/bin/owserver
DEBUG MODE
libow version:
         2.9p5
   DEBUG: ow_opt.c:(290) Configuration file (/tmp/ow.cfg:1) Program=, 
Option=external, Value=
   DEBUG: ow_opt.c:(335) Configuration file (/tmp/ow.cfg:1) Option 
external recognized as external. Value=
   DEBUG: ow_opt.c:(439) SENSOR entry found < Outside, 28, 
"Outsidesensor", "jojojo"
 >
0x1ae62f0 alloc ow_parse_external.c:[71] STRDUP s= Outside, 28, 
"Outsidesensor", "jojojo"

0x1ae6330 alloc ow_parse_external.c:[142] STRDUP s=Outside
0x1ae62f0 free  ow_parse_external.c:[143] FREE
0x1ae6350 alloc ow_parse_external.c:[71] STRDUP s= 28, "Outsidesensor", 
"jojojo"

0x1ae6380 alloc ow_parse_external.c:[142] STRDUP s=28
0x1ae6350 free  ow_parse_external.c:[143] FREE
0x1ae6350 alloc ow_parse_external.c:[71] STRDUP s= "Outsidesensor", "jojojo"

0x1ae63a0 alloc ow_parse_external.c:[71] STRDUP s=Outsidesensor", "jojojo"

0x1ae63a0 free  ow_parse_external.c:[118] FREE
0x1ae63d0 alloc ow_parse_external.c:[142] STRDUP s="Outsidesensor"
0x1ae6350 free  ow_parse_external.c:[143] FREE
0x1ae63f0 alloc ow_parse_external.c:[170] STRDUP s=Outsidesensor"
0x1ae63d0 free  ow_parse_external.c:[175] FREE
0x1ae63d0 alloc ow_parse_external.c:[71] STRDUP s= "jojojo"

0x1ae6410 alloc ow_parse_external.c:[71] STRDUP s=jojojo"

0x1ae6410 free  ow_parse_external.c:[118] FREE
0x1ae6410 alloc ow_parse_external.c:[142] STRDUP s="jojojo"

0x1ae63d0 free  ow_parse_external.c:[143] FREE
0x1ae63d0 alloc ow_parse_external.c:[170] STRDUP s=jojojo"

0x1ae6410 free  ow_parse_external.c:[175] FREE
0x1ae6430 alloc ow_parse_external.c:[497] MALLOC size=59
0x1ae6480 alloc ow_connect.c:[135] MALLOC size=192
0x1ae6550 alloc ow_connect.c:[90] MALLOC size=560
0x1ae6410 alloc ow_arg.c:[48] STRDUP s=external
0x1ae6790 alloc ow_arg.c:[49] STRDUP s=external
   DEBUG: ow_parse_external.c:(625) New family entry: 28
0x1ae67b0 alloc ow_parse_external.c:[468] MALLOC size=66
   DEBUG: ow_parse_external.c:(607) New sensor entry: 
Outside,28,Outsidesensor,jojojo"

0x1ae6800 alloc ow_parse_external.c:[531] MALLOC size=167
   DEBUG: ow_parse_external.c:(642) New property entry: 
family,28,just_print_data,,28,
0x1ae68e0 alloc ow_parse_external.c:[531] MALLOC size=171
   DEBUG: ow_parse_external.c:(642) New property entry: 
type,28,just_print_data,,external,
0x1ae6330 free  ow_parse_external.c:[454] FREE
0x1ae6380 free  ow_parse_external.c:[455] FREE
0x1ae63f0 free  ow_parse_external.c:[456] FREE
0x1ae63d0 free  ow_parse_external.c:[457] FREE
   DEBUG: ow_opt.c:(290) Configuration file (/tmp/ow.cfg:2) Program=, 
Option=, Value=
   DEBUG: ow_opt.c:(445) SCRIPT entry found < temperature10, 28, t, 1, 
v, /tmp/testv, /tmp/testv, "jjj"
 >
0x1ae69d0 alloc ow_parse_external.c:[71] STRDUP s= temperature10, 28, t, 
1, v, /tmp/testv, /tmp/testv, "jjj"

0x1ae63d0 alloc ow_parse_external.c:[142] STRDUP s=temperature10
0x1ae69d0 free  ow_parse_external.c:[143] FREE
0x1ae62f0 alloc ow_parse_external.c:[71] STRDUP s= 28, t, 1, v, 
/tmp/testv, /tmp/testv, "jjj"

0x1ae63f0 alloc ow_parse_external.c:[142] STRDUP s=28
0x1ae62f0 free  ow_parse_external.c:[143] FREE
0x1ae62f0 alloc ow_parse_external.c:[71] STRDUP s= t, 1, v, /tmp/testv, 
/tmp/testv, "jjj"

0x1ae6380 alloc ow_parse_external.c:[142] STRDUP s=t
0x1ae62f0 free  ow_parse_external.c:[143] FREE
0x1ae6a20 alloc ow_parse_external.c:[71] STRDUP s= 1, v, /tmp/testv, 
/tmp/testv, "jjj"

0x1ae6330 alloc ow_parse_external.c:[142] STRDUP s=1
0x1ae6a20 free  ow_parse_external.c:[143] FREE
0x1ae6a20 alloc ow_parse_external.c:[71] STRDUP s= v, /tmp/testv, 
/tmp/testv, "jjj"

0x1ae6a50 alloc ow_parse_external.c:[142] STRDUP s=v
0x1ae6a20 free  ow_parse_external.c:[143] FREE
0x1ae6a20 alloc ow_parse_external.c:[71] STRDUP s= /tmp/testv, 
/tmp/testv, "jjj"

0x1ae6a70 alloc ow_parse_external.c:[142] STRDUP s=/tmp/testv
0x1ae6a20 free  ow_parse_external.c:[143] FREE
0x1ae6a90 alloc ow_parse_external.c:[71] STRDUP s= /tmp/testv, "jjj"

0x1ae6ab0 alloc ow_parse_external.c:[142] STRDUP s=/tmp/testv
0x1ae6a90 free  ow_parse_external.c:[143] FREE
0x1ae6a90 alloc ow_parse_external.c:[71] STRDUP s= "jjj"

0x1ae6ad0 alloc ow_parse_external.c:[71] STRDUP s=jjj"

0x1ae6ad0 free  ow_parse_external.c:[118] FREE
0x1ae6ad0 alloc ow_parse_external.c:[142] STRDUP s="jjj"

0x1ae6a90 free  ow_parse_external.c:[143] FREE
0x1ae6a90 alloc ow_parse_external.c:[170] STRDUP s=jjj"

0x1ae6ad0 free  ow_parse_external.c:[175] FREE
0x1ae6ad0 alloc ow_parse_external.c:[71] STRDUP s=
0x1ae6af0 alloc ow_parse_external.c:[142] STRDUP s=
0x1ae6ad0 free  ow_parse_external.c:[143] FREE
0x1ae69d0 alloc ow_parse_external.c:[497] MALLOC size=59
   DEBUG: ow_parse_external.c:(621) Duplicate family entry: 28
0x1ae69d0 free  ow_parse_external.c:[622] FREE
0x1ae6b10 alloc ow_parse_external.c:[531] MALLOC size=182
   DEBUG: ow_parse_external.c:(642) New property entry: 
temperature10,28,/tmp/testv,/tmp/testv,jjj"
,
0x1ae6ad0 alloc ow_parse_external.c:[654] STRDUP s=temperature10
0x1ae6ad0 free  ow_parse_external.c:[664] FREE
0x1ae63d0 free  ow_parse_external.c:[401] FREE
0x1ae63f0 free  ow_parse_external.c:[402] FREE
0x1ae6a70 free  ow_parse_external.c:[403] FREE
0x1ae6ab0 free  ow_parse_external.c:[404] FREE
0x1ae6a90 free  ow_parse_external.c:[405] FREE
0x1ae6af0 free  ow_parse_external.c:[406] FREE
   DEBUG: ow_opt.c:(290) Configuration file (/tmp/ow.cfg:3) Program=, 
Option=, Value=
0x1ae6030 alloc ow_connect_out.c:[29] MALLOC size=104
   DEBUG: ow_daemon.c:(166) main thread id = 140258545637120
0x1ae7770 alloc ow_tree.c:[311] CALLOC size=64 nmemb=3
    CALL: ow_parsename.c:(102) path=[]
   DEBUG: owlib.c:(81) Globals temp limits 0C 100C (for simulated adapters)
0x1ae6a00 alloc ow_net_server.c:[50] STRDUP s=0.0.0.0
0x1ae6310 alloc ow_net_server.c:[51] STRDUP s=4304
CONNECT: ow_zero.c:(145) Zeroconf not enabled
0x1ae79a0 alloc ow_net_server.c:[267] MALLOC size=16
   DEBUG: ow_tcp_read.c:(64) attempt 24 bytes Time: 10.000000 seconds
   DEBUG: ow_tcp_read.c:(114) read: 24 - 0 = 24
   DEBUG: from_client.c:(66) FromClient payload=16 size=65536 type=2 
sg=0x10A offset=0
   DEBUG: from_client.c:(74) FromClient (no servermessage) payload=16 
size=65536 type=2 controlflags=0x10A offset=0
0x7f90780008c0 alloc from_client.c:[87] MALLOC size=18
   DEBUG: ow_tcp_read.c:(64) attempt 16 bytes Time: 10.000000 seconds
   DEBUG: ow_tcp_read.c:(114) read: 16 - 0 = 16
   DEBUG: handler.c:(153) START handler /Outside/family
    CALL: data.c:(104) DataHandler: parse path=/Outside/family
   DEBUG: ow_parseobject.c:(164) /Outside/family
    CALL: ow_parsename.c:(102) path=[/Outside/family]
    CALL: data.c:(145) Read message
   DEBUG: read.c:(55) ReadHandler start
   DEBUG: read.c:(61) ReadHandler: From Client sm->payload=16 
sm->size=65536 sm->offset=0
0x7f90700008c0 alloc ow_parseobject.c:[258] MALLOC size=3
   DEBUG: read.c:(79) ReadHandler: call FS_read_postparse on /Outside/family
   DEBUG: ow_read.c:(79) /Outside/family
   DEBUG: ow_read.c:(199) /Outside/family
   DEBUG: ow_read.c:(233) About to read </Outside/family> extension=0 
size=2 offset=0
   DEBUG: ow_read.c:(328) file_length=2 offset=0 size=2
0x7f90700008e0 alloc ow_read_external.c:[39] STRDUP s=Outside/family
0x7f90700008e0 free  ow_read_external.c:[51] FREE
   DEBUG: ow_read.c:(613) Read /Outside/family Extension 0 Gives result -95
   DEBUG: ow_read.c:(248) return=-95
   DEBUG: ow_read.c:(258) After read is performed (bytes or error -95)
OWQ OneWireQuery structure of /Outside/family
     OneWireQuery size=2 offset=0, extension=0
Byte buffer OneWireQuery buffer, length=2
--000: 00 00
    <..>
     Cleanup = 0006    OneWireQuery I=2 U=2 F=9.88131E-324 Y=2 D=Thu Jan 
  1 01:00:02 1970

--- OneWireQuery done
   DEBUG: ow_read.c:(221) /Outside/family returns -95
   DEBUG: ow_select.c:(71) Selecting a path (and device) 
path=/Outside/family SN=00 00 00 00 00 00 00 00 last path=00 00 00 00 00 
00 00 00
   DEBUG: ow_select.c:(82) Clearing root branch
Speicherzugriffsfehler






------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to