Rob Conway | 1 May 2009 15:45
Favicon

Ever wanted a SCADA interface for owfs

As everyone on this list know’s we have the answer to low cost data collection,OWFS  However there is a missing link which I believe has not been explored, creating some standardized display of data that people can use on their web servers.  The owfs http interface is fantastic from a maintenance point of view however does little for someone wanting to publish the information via the web.  Well after 2 years I think I have found the third piece to this puzzle.  I have tried all sorts of techniques to get the data onto my web site however this is GREAT!.

 

Welcome Raphael.js

 

This small 100k javascript library enables you to create dynamic graphics (same as Scalable Vector Graphics) with no programming at all.

 

An example

 

<!--Create Gauge Divs-->    <div id="g1" class="gauge1"></div> <!--Create Raphael papers and assign to Div ID's--><script language="javascript" type="text/javascript">        paper1 = Raphael("g1", 155, 155);

 

Now once a canvas (paper) has been assigned you can draw directly onto it

 

This creates a circle at x, y, 6 px diameter etc etc

Paper1.circle(81, 98, 6).attr("fill", "silver").attr("stroke", "black");

 

This creates a line and I can rotate the line i.e. gauge pointer!

Paper1.path({stroke: "red", "stroke-width": 2, "stroke-linecap": "round"}).moveTo(80, 100).lineTo(45, 110).rotate(rotation,81,100);

 

 

If you have not visited my site for a while and are interested in creating dials and gauges bar graphs etc take a look www.rjconway.homeip.net

 

The gauge background is just an image however the scale graduation, pointer, LCD display provides a reusable widget that can display any data.  I have documented the code so you should be able to see whats going on very easily.

 

I get a text file from server (Uses Ajax),  Split the txt file into an array and then split again so you end up with an array of variables from the simple txt file.

 

You can see the txt file (better cut and paste the whole line)  www.rjconway.homeip.net/aqua_tag.txt

 

Extract from code

Tag(x) array explodes the array[1] into the following:        [0]Description        [1]Engineering units        [2]Value        [3]Setpoint -NOT USED        [4]HighScale        [5]LowScale        [6]HighAlarmValue         [7]LowAlarmValue        [8]Alarm Status, 0=Normal 1=High 2=Low  -NOT USED        [9]Alarm Acknowledgement 0=Ack 1=UnAck  -NOT USED        [10]Alarm Time   Epoch -NOT USED        [11]Auto/manual, 0=Man 1=Auto -NOT USED        [12]Scan status, 0=Bad 1=Good        [13]Show alarm bands, 0=no bands, 1= Normal range, 2=Low alarm, 3=High alarm, 4=Both Low & High Alarm Bands        [14] Max value last 24hrs (Will be used to show history) -NOT USED        [15] Min value last 24hrs (Will be used to show History) -NOT USED

 

So I simply use the array data to drive the gauges.  i.e. to get the value its just “Tag1[2]” .  The gauge I created has a pointer movement of 212degree’s thus there is some calcs based upon the high and low range of the gauge to calculate the rotation required, I also calculate the numbers displayed on the graduations.  The txt file is simply created with a bash script running every 90 seconds.  You can simply change the low / high range in the txt file and the gauges will adjust, thus with a simple loop you can animate all the gauges.  My text file contains 5 different tags.

 

I am happy to share any code, the gauges have simply been built in powerpoint and I have 4 different coloured gauges.  I am working on a set of bar graph displays.  I know the code looks simple now but it has taken me a lot of time to get it to the point of easily refreshing the data, being able to dynamically build trends on the fly.  I can push on solo with this development or owfs group could look at how we could maybe create a more standard interface to get the data from the server to the client.  Most of the data in the array is fixed or calculated via a bash script however a lot of it could also come from the 1wire device parameters. 

 

Can you see the power of owfs, rrdtool and Raphael combined, nobody else has this solution for $0.00 ?  checkout the Raphael.js web site for other demo types.   We (owfs group) have a complete solution from data gathering, trending and now a rich graphic environment potential all without any real programming.  If we standardized on a data array set (similar to above) “collectively” we could build graphic elements to be simply used within any web site.  These graphic elements could be part of the owfs web site to be used by everybody.  You could build a great weather station and not be locked into the interface someone else wants you to see.

 

I still have some work to do on the gauges, just gotta get the alarm bands auto drawn on the scale however thought I would share this as it stands now.  You can now dynamically change the trend data in real time and redraw the data, this bit is really cool.  I still have to link the gauges so when clicked they will call their respective history for the trend.  The web site trend just shows the weather at the moment.  If you wait 90 seconds and press refresh you can see the gauges update, I will eventually put the refresh on a timer.  However no time this weekend so will finalise it next weekend however wanted to share progress with the group to see if I can get any interest in further development or potentially some standardization in data transfer.

 

rob

 

 

 

 

 

 

 

 

 

 

 

 

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Patrik Jansson | 3 May 2009 12:17
Picon

Re: Java API for owserver protocol


I have release a new version of JOwfsClient, 0.9.0. OwfsClients are now created using a factory class instead. OwfsClient, which now is an interface, has currently two implementations, the one you would expect which communicates with owserver over TCP, and another one, reading a local regular file system instead. The latter could be used for debugging an application that uses JOwfsClient when the real 1-wire network is inaccessible for some reason.
The regular TCP version of OwfsClient is now thread safe too. If more than one thread is communicating with the owserver through the same OwfsClient instance you should enable thread safety by setting that argument to true in the OwfsClientFactory.newOwfsClient method.
Other than that, some bug fixes and javadoc changes has been made.
Cheers,
Patrik



------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Mike Zimmerman | 4 May 2009 02:26

Re: Ever wanted a SCADA interface for owfs

I like it Rob!  Ive been messing around with data visualization for an open source tank monitoring project a friend and myself are working on.  I seemed to have settled on google's visualization API, however since its a cloud model it really requires the user to have a persistent internet connection.  You can take a look at http://home.mkzimms.com:8008/tankplay/ for a quick mock up of a temperature view i did, we will be doing the interface in extJS later on.  You'll have to excuse the lapse in data, i was making some changes to my monitoring script so it has been shut off for a few days.

I do however find your solution more appleaing considering the use of a canvas on an image which allows for way more customization.  I will definitely spend tonight playing with it.

Mike

----- Original Message -----
From: "Rob Conway" <rjconway <at> bigpond.com>
To: owfs-developers <at> lists.sourceforge.net
Sent: Friday, May 1, 2009 9:45:34 AM GMT -05:00 US/Canada Eastern
Subject: [Owfs-developers] Ever wanted a  SCADA interface for owfs

As everyone on this list know’s we have the answer to low cost data collection,OWFS  However there is a missing link which I believe has not been explored, creating some standardized display of data that people can use on their web servers.  The owfs http interface is fantastic from a maintenance point of view however does little for someone wanting to publish the information via the web.  Well after 2 years I think I have found the third piece to this puzzle.  I have tried all sorts of techniques to get the data onto my web site however this is GREAT!.

 

Welcome Raphael.js

 

This small 100k javascript library enables you to create dynamic graphics (same as Scalable Vector Graphics) with no programming at all.

 

An example

 

<!--Create Gauge Divs-->    <div id="g1" class="gauge1"></div> <!--Create Raphael papers and assign to Div ID's--><script language="javascript" type="text/javascript">        paper1 = Raphael("g1", 155, 155);

 

Now once a canvas (paper) has been assigned you can draw directly onto it

 

This creates a circle at x, y, 6 px diameter etc etc

Paper1.circle(81, 98, 6).attr("fill", "silver").attr("stroke", "black");

 

This creates a line and I can rotate the line i.e. gauge pointer!

Paper1.path({stroke: "red", "stroke-width": 2, "stroke-linecap": "round"}).moveTo(80, 100).lineTo(45, 110).rotate(rotation,81,100);

 

 

If you have not visited my site for a while and are interested in creating dials and gauges bar graphs etc take a look www.rjconway.homeip.net

 

The gauge background is just an image however the scale graduation, pointer, LCD display provides a reusable widget that can display any data.  I have documented the code so you should be able to see whats going on very easily.

 

I get a text file from server (Uses Ajax),  Split the txt file into an array and then split again so you end up with an array of variables from the simple txt file.

 

You can see the txt file (better cut and paste the whole line)  www.rjconway.homeip.net/aqua_tag.txt

 

Extract from code

Tag(x) array explodes the array[1] into the following:        [0]Description        [1]Engineering units        [2]Value        [3]Setpoint -NOT USED        [4]HighScale        [5]LowScale        [6]HighAlarmValue         [7]LowAlarmValue        [8]Alarm Status, 0=Normal 1=High 2=Low  -NOT USED        [9]Alarm Acknowledgement 0=Ack 1=UnAck  -NOT USED        [10]Alarm Time   Epoch -NOT USED        [11]Auto/manual, 0=Man 1=Auto -NOT USED        [12]Scan status, 0=Bad 1=Good        [13]Show alarm bands, 0=no bands, 1= Normal range, 2=Low alarm, 3=High alarm, 4=Both Low & High Alarm Bands        [14] Max value last 24hrs (Will be used to show history) -NOT USED        [15] Min value last 24hrs (Will be used to show History) -NOT USED

 

So I simply use the array data to drive the gauges.  i.e. to get the value its just “Tag1[2]” .  The gauge I created has a pointer movement of 212degree’s thus there is some calcs based upon the high and low range of the gauge to calculate the rotation required, I also calculate the numbers displayed on the graduations.  The txt file is simply created with a bash script running every 90 seconds.  You can simply change the low / high range in the txt file and the gauges will adjust, thus with a simple loop you can animate all the gauges.  My text file contains 5 different tags.

 

I am happy to share any code, the gauges have simply been built in powerpoint and I have 4 different coloured gauges.  I am working on a set of bar graph displays.  I know the code looks simple now but it has taken me a lot of time to get it to the point of easily refreshing the data, being able to dynamically build trends on the fly.  I can push on solo with this development or owfs group could look at how we could maybe create a more standard interface to get the data from the server to the client.  Most of the data in the array is fixed or calculated via a bash script however a lot of it could also come from the 1wire device parameters. 

 

Can you see the power of owfs, rrdtool and Raphael combined, nobody else has this solution for $0.00 ?  checkout the Raphael.js web site for other demo types.   We (owfs group) have a complete solution from data gathering, trending and now a rich graphic environment potential all without any real programming.  If we standardized on a data array set (similar to above) “collectively” we could build graphic elements to be simply used within any web site.  These graphic elements could be part of the owfs web site to be used by everybody.  You could build a great weather station and not be locked into the interface someone else wants you to see.

 

I still have some work to do on the gauges, just gotta get the alarm bands auto drawn on the scale however thought I would share this as it stands now.  You can now dynamically change the trend data in real time and redraw the data, this bit is really cool.  I still have to link the gauges so when clicked they will call their respective history for the trend.  The web site trend just shows the weather at the moment.  If you wait 90 seconds and press refresh you can see the gauges update, I will eventually put the refresh on a timer.  However no time this weekend so will finalise it next weekend however wanted to share progress with the group to see if I can get any interest in further development or potentially some standardization in data transfer.

 

rob

 

 

 

 

 

 

 

 

 

 

 

 


------------------------------------------------------------------------------ Register Now & Save for Velocity, the Web Performance & Operations Conference from O'Reilly Media. Velocity features a full day of expert-led, hands-on workshops and two days of sessions from industry leaders in dedicated Performance & Operations tracks. Use code vel09scf and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________ Owfs-developers mailing list Owfs-developers <at> lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Paul Alfille | 4 May 2009 04:04
Picon

Re: Ever wanted a SCADA interface for owfs

Beautiful work, Rob.

I've added a new section to the web site for display solutions, and included  your post verbatim:
http://owfs.org/index.php?page=javascript-raphaell-js

Paul Alfille

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Mr Robert Conway | 4 May 2009 09:06
Favicon

Re: Ever wanted a SCADA interface for owfs

Thank's Paul,

I was thinking about using xml to pass information to the client and borrowed a couple of books !  However I
thought to best keep it simply so anybody can start using the gauges.  I have found that I can simply use
owread in a bash script with some calcs for all my data needs.  To create a text file is obvisoulsy very easy
with any script  compared to xml.

I plan to document the gauges and what the data in the arrays are used for int he comming weeks.  When finished I
will provide to you for inclusion on the owfs web.

cheers

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
Roberto Spadim | 4 May 2009 13:59
Picon

Re: Ever wanted a SCADA interface for owfs

talking about scada, a good solution is opc, but it's a windows option to scada, maybe another protocol like modbus should be more "open", since owserver work over a file system, we should have a file to memory address translator, i don't know how we could do this in a fast and simple way (without configuration), maybe a convertion table should be used, and maybe another owxxx should be made, maybe owmodbus or owopc, i started a project in php with owmodbus, but i didn't finished, the crc16 used by modbus stay at php.net page:

http://br2.php.net/manual/en/function.crc32.php
roberto at spadim dot com dot br
08-Apr-2006 04:52

maybe that could help, some scada programs works with filesystem too, but a owopc or owmodbus should be a industrial standard, when i started owmodbus i was thinking about a working modbus network talking with owfs, but i changed my project to tcp/ip with a plc and my project stoped, if anyone want a help with this i could help and we could reopen the project
thnkx guys
very good work with gauges and charts!

2009/5/3 Mike Zimmerman <mike <at> mkzimms.com>
I like it Rob!  Ive been messing around with data visualization for an open source tank monitoring project a friend and myself are working on.  I seemed to have settled on google's visualization API, however since its a cloud model it really requires the user to have a persistent internet connection.  You can take a look at http://home.mkzimms.com:8008/tankplay/ for a quick mock up of a temperature view i did, we will be doing the interface in extJS later on.  You'll have to excuse the lapse in data, i was making some changes to my monitoring script so it has been shut off for a few days.

I do however find your solution more appleaing considering the use of a canvas on an image which allows for way more customization.  I will definitely spend tonight playing with it.

Mike

----- Original Message -----
From: "Rob Conway" <rjconway <at> bigpond.com>
To: owfs-developers <at> lists.sourceforge.net
Sent: Friday, May 1, 2009 9:45:34 AM GMT -05:00 US/Canada Eastern
Subject: [Owfs-developers] Ever wanted a  SCADA interface for owfs

As everyone on this list know’s we have the answer to low cost data collection,OWFS  However there is a missing link which I believe has not been explored, creating some standardized display of data that people can use on their web servers.  The owfs http interface is fantastic from a maintenance point of view however does little for someone wanting to publish the information via the web.  Well after 2 years I think I have found the third piece to this puzzle.  I have tried all sorts of techniques to get the data onto my web site however this is GREAT!.

 

Welcome Raphael.js

 

This small 100k javascript library enables you to create dynamic graphics (same as Scalable Vector Graphics) with no programming at all.

 

An example

 

<!--Create Gauge Divs-->    <div id="g1" class="gauge1"></div>  <!--Create Raphael papers and assign to Div ID's--> <script language="javascript" type="text/javascript">         paper1 = Raphael("g1", 155, 155);

 

Now once a canvas (paper) has been assigned you can draw directly onto it

 

This creates a circle at x, y, 6 px diameter etc etc

Paper1.circle(81, 98, 6).attr("fill", "silver").attr("stroke", "black");

 

This creates a line and I can rotate the line i.e. gauge pointer!

Paper1.path({stroke: "red", "stroke-width": 2, "stroke-linecap": "round"}).moveTo(80, 100).lineTo(45, 110).rotate(rotation,81,100);

 

 

If you have not visited my site for a while and are interested in creating dials and gauges bar graphs etc take a look www.rjconway.homeip.net

 

The gauge background is just an image however the scale graduation, pointer, LCD display provides a reusable widget that can display any data.  I have documented the code so you should be able to see whats going on very easily.

 

I get a text file from server (Uses Ajax),  Split the txt file into an array and then split again so you end up with an array of variables from the simple txt file.

 

You can see the txt file (better cut and paste the whole line)  www.rjconway.homeip.net/aqua_tag.txt

 

Extract from code

Tag(x) array explodes the array[1] into the following:        [0]Description         [1]Engineering units        [2]Value         [3]Setpoint -NOT USED        [4]HighScale         [5]LowScale        [6]HighAlarmValue         [7]LowAlarmValue        [8]Alarm Status, 0=Normal 1=High 2=Low  -NOT USED         [9]Alarm Acknowledgement 0=Ack 1=UnAck  -NOT USED        [10]Alarm Time   Epoch -NOT USED         [11]Auto/manual, 0=Man 1=Auto -NOT USED        [12]Scan status, 0=Bad 1=Good         [13]Show alarm bands, 0=no bands, 1= Normal range, 2=Low alarm, 3=High alarm, 4=Both Low & High Alarm Bands        [14] Max value last 24hrs (Will be used to show history) -NOT USED         [15] Min value last 24hrs (Will be used to show History) -NOT USED

 

So I simply use the array data to drive the gauges.  i.e. to get the value its just “Tag1[2]” .  The gauge I created has a pointer movement of 212degree’s thus there is some calcs based upon the high and low range of the gauge to calculate the rotation required, I also calculate the numbers displayed on the graduations.  The txt file is simply created with a bash script running every 90 seconds.  You can simply change the low / high range in the txt file and the gauges will adjust, thus with a simple loop you can animate all the gauges.  My text file contains 5 different tags.

 

I am happy to share any code, the gauges have simply been built in powerpoint and I have 4 different coloured gauges.  I am working on a set of bar graph displays.  I know the code looks simple now but it has taken me a lot of time to get it to the point of easily refreshing the data, being able to dynamically build trends on the fly.  I can push on solo with this development or owfs group could look at how we could maybe create a more standard interface to get the data from the server to the client.  Most of the data in the array is fixed or calculated via a bash script however a lot of it could also come from the 1wire device parameters. 

 

Can you see the power of owfs, rrdtool and Raphael combined, nobody else has this solution for $0.00 ?  checkout the Raphael.js web site for other demo types.   We (owfs group) have a complete solution from data gathering, trending and now a rich graphic environment potential all without any real programming.  If we standardized on a data array set (similar to above) “collectively” we could build graphic elements to be simply used within any web site.  These graphic elements could be part of the owfs web site to be used by everybody.  You could build a great weather station and not be locked into the interface someone else wants you to see.

 

I still have some work to do on the gauges, just gotta get the alarm bands auto drawn on the scale however thought I would share this as it stands now.  You can now dynamically change the trend data in real time and redraw the data, this bit is really cool.  I still have to link the gauges so when clicked they will call their respective history for the trend.  The web site trend just shows the weather at the moment.  If you wait 90 seconds and press refresh you can see the gauges update, I will eventually put the refresh on a timer.  However no time this weekend so will finalise it next weekend however wanted to share progress with the group to see if I can get any interest in further development or potentially some standardization in data transfer.

 

rob

 

 

 

 

 

 

 

 

 

 

 

 


------------------------------------------------------------------------------ Register Now & Save for Velocity, the Web Performance & Operations Conference from O'Reilly Media. Velocity features a full day of expert-led, hands-on workshops and two days of sessions from industry leaders in dedicated Performance & Operations tracks. Use code vel09scf and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________ Owfs-developers mailing list Owfs-developers <at> lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/owfs-developers

Esta mensagem foi verificada pelo E-mail Protegido Terra.
Atualizado em 03/05/2009

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations
Conference from O'Reilly Media. Velocity features a full day of
expert-led, hands-on workshops and two days of sessions from industry
leaders in dedicated Performance & Operations tracks. Use code vel09scf
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers




--
Roberto Spadim
Spadim Technology / SPAEmpresarial
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Jan Kandziora | 8 May 2009 23:27
Picon
Picon

Problem with /alarm and latest CVS

Hello,

I recently returned to the onewire part of my project and I'm still hunting 
bugs... With latest CVS version, /alarm or even /alarm/uncached are always 
empty. I *know* the DS2408 connected to the bus *must* be in alarm state 
after power up, so there has to be something wrong with my software setup or 
recent owfs (it worked with CVS from January). I checked with

# /opt/owfs/bin/owserver --foreground --error_level=9 --error_print=2 /dev/ttyS0 
2>alarm_log

and

# /opt/owfs/bin/owget alarm/uncached

Please see the attached log. Anyone else having problems with this? Adapter is 
DS9097U, if that matters.

Kind regards

	Jan
-- 
Linux, Playboy Edition: nichts als die nackte Kommandozeile...
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[]
  DEBUG: owlib.c:SetupTemperatureLimits(83) Globals temp limits 0C 100C (for simulated adapters)
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[]
Byte buffer Attempt serial write:, length=1
--000: C1
   <.>
Byte buffer Attempt serial write:, length=1
--000: 71
   <q>
Byte buffer Attempt serial write:, length=1
--000: 0F
   <.>
Byte buffer Serial read:, length=1
--000: 00
   <.>
Byte buffer Attempt serial write:, length=1
--000: C5
   <.>
Byte buffer Serial read:, length=1
--000: CD
   <.>
Byte buffer Attempt serial write:, length=1
--000: 71
   <q>
Byte buffer Attempt serial write:, length=1
--000: 0F
   <.>
Byte buffer Serial read:, length=1
--000: 00
   <.>
Byte buffer Attempt serial write:, length=1
--000: C5
   <.>
Byte buffer Serial read:, length=1
--000: CD
   <.>
Byte buffer Attempt serial write:, length=1
--000: 45
   <E>
Byte buffer Serial read:, length=1
--000: 44
   <D>
Byte buffer Attempt serial write:, length=1
--000: 5B
   <[>
Byte buffer Serial read:, length=1
--000: 5A
   <Z>
Byte buffer Attempt serial write:, length=1
--000: 3F
   <?>
Byte buffer Serial read:, length=1
--000: 3E
   <>>
Byte buffer Attempt serial write:, length=1
--000: 29
   <)>
Byte buffer Serial read:, length=1
--000: 28
   <(>
Byte buffer Attempt serial write:, length=1
--000: 95
   <.>
Byte buffer Serial read:, length=1
--000: 97
   <.>
Byte buffer Attempt serial write:, length=1
--000: C5
   <.>
Byte buffer Serial read:, length=1
--000: CD
   <.>
  DEBUG: owserver.c:main(158) main_threadid = 3085231808
  DEBUG: ow_net_server.c:ServerProcessOut(252) 3084843920
  DEBUG: ow_zero.c:OW_Announce(150) end
  DEBUG: ow_net_server.c:ServerProcess(321) Wait for output device 0 to setup.
  DEBUG: ow_net_server.c:ServerProcessOut(273) Output device  setup is done. index=0
  DEBUG: ow_net_server.c:ServerProcessAccept(189) [3084843920] try lock 0
  DEBUG: ow_net_server.c:ServerProcessAccept(195) [3084843920] locked 0
  DEBUG: ow_net_server.c:ServerProcess(324) Output device 0 setup done.
  DEBUG: ow_net_server.c:ServerProcessAccept(203) [3084843920] accept 0 fd=8
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(177) unlock 3084843920
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(179) unlock 3084843920 done
  DEBUG: ow_net_server.c:ServerProcessAccept(216)  [3084843920] unlock 0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 24 bytes Time:(10,0)
Byte buffer NETREAD, length=24
--000: 00 00 00 00 00 00 00 0F 00 00 00 07 00 00 01 0A
--016: 00 00 00 00 00 00 00 00
   <........................>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=24 nleft=0 n-nleft=24
  DEBUG: from_client.c:FromClient(65) FromClient payload=15 size=0 type=7 sg=0x10A offset=0
  DEBUG: from_client.c:FromClient(73) FromClient (no servermessage) payload=15 size=0 type=7
sg=0x10A offset=0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 15 bytes Time:(10,0)
Byte buffer NETREAD, length=15
--000: 61 6C 61 72 6D 2F 75 6E 63 61 63 68 65 64 00
   <alarm/uncached.>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=15 nleft=0 n-nleft=15
   CALL: data.c:DataHandler(102) DataHandler: parse path=alarm/uncached
  DEBUG: ow_parseobject.c:FS_OWQ_create(26) alarm/uncached
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[alarm/uncached]
   CALL: data.c:DataHandler(145) Directory message (all at once)
  DEBUG: dirall.c:DirallHandler(66) OWSERVER Dir-All SpecifiedBus=0 path = /alarm/uncached
  DEBUG: ow_dir.c:FS_dir_remote(74) path=/alarm/uncached
   CALL: ow_dir.c:FS_dir_both(102) path=/alarm/uncached
  DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device) path=/alarm/uncached SN=00 00 00 00 00
00 00 00 last path=00 00 00 00 00 00 00 00
  DEBUG: ow_select.c:BUS_select(78) Clearing root branch
Byte buffer Attempt serial write:, length=1
--000: C5
   <.>
  DEBUG: ow_net_server.c:ServerProcessAccept(243) 3084843920 CLOSING
  DEBUG: ow_net_server.c:ServerProcessAccept(189) [3084843920] try lock 0
  DEBUG: ow_net_server.c:ServerProcessAccept(195) [3084843920] locked 0
Byte buffer Serial read:, length=1
--000: CD
   <.>
Byte buffer Attempt serial write:, length=3
--000: E1 CC 66
   <..f>
Byte buffer Serial read:, length=2
--000: CC 66
   <.f>
  DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
  DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
Byte buffer Attempt serial write:, length=2
--000: E3 C5
   <..>
Byte buffer Serial read:, length=1
--000: CD
   <.>
Byte buffer Attempt serial write:, length=2
--000: E1 EC
   <..>
Byte buffer Serial read:, length=1
--000: EC
   <.>
Byte buffer Attempt serial write:, length=2
--000: E3 B5
   <..>
Byte buffer Attempt serial write:, length=17
--000: E1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--016: 00
   <.................>
Byte buffer Serial read:, length=12
--000: FF FF FF FF FF FF FF FF FF FF FF FF
   <............>
Byte buffer Serial read:, length=4
--000: FF FF FF FF
   <....>
Byte buffer Attempt serial write:, length=2
--000: E3 A5
   <..>
  DEBUG: ow_search.c:BUS_next(84) return = -5 | 00 00 00 00 00 00 00 00
  DEBUG: ow_dir.c:FS_alarmdir(419) BUS_first_alarm = -5
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/bus.0]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing bus.0 unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/bus.0
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/settings]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing settings unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/settings
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/system]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing system unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/system
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/statistics]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing statistics unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/statistics
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/structure]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing structure unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/structure
  DEBUG: ow_dir.c:FS_dir_both(184) ret=-5
  DEBUG: ow_parseobject.c:FS_OWQ_destroy(141) /alarm/uncached
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached
  DEBUG: data.c:DataHandler(162) DataHandler: FS_ParsedName_destroy done
  DEBUG: data.c:DataHandler(176) DataHandler: cm.ret=-5
  DEBUG: data.c:DataHandler(193) DataHandler: done
  DEBUG: handler.c:Handler(150) OWSERVER handler done
  DEBUG: ow_net_server.c:ServerProcessAccept(203) [3084843920] accept 0 fd=9
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(177) unlock 3084843920
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(179) unlock 3084843920 done
  DEBUG: ow_net_server.c:ServerProcessAccept(216)  [3084843920] unlock 0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 24 bytes Time:(10,0)
Byte buffer NETREAD, length=24
--000: 00 00 00 00 00 00 00 0F 00 00 00 04 00 00 01 0A
--016: 00 00 00 00 00 00 00 00
   <........................>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=24 nleft=0 n-nleft=24
  DEBUG: from_client.c:FromClient(65) FromClient payload=15 size=0 type=4 sg=0x10A offset=0
  DEBUG: from_client.c:FromClient(73) FromClient (no servermessage) payload=15 size=0 type=4
sg=0x10A offset=0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 15 bytes Time:(10,0)
Byte buffer NETREAD, length=15
--000: 61 6C 61 72 6D 2F 75 6E 63 61 63 68 65 64 00
   <alarm/uncached.>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=15 nleft=0 n-nleft=15
   CALL: data.c:DataHandler(102) DataHandler: parse path=alarm/uncached
  DEBUG: ow_parseobject.c:FS_OWQ_create(26) alarm/uncached
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[alarm/uncached]
   CALL: data.c:DataHandler(141) Directory message (one at a time)
   CALL: dir.c:DirHandler(80) DirHandler: pn->path=/alarm/uncached
  DEBUG: dir.c:DirHandler(85) OWSERVER SpecifiedBus=0 path=/alarm/uncached
  DEBUG: ow_dir.c:FS_dir_remote(74) path=/alarm/uncached
   CALL: ow_dir.c:FS_dir_both(102) path=/alarm/uncached
  DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device) path=/alarm/uncached SN=00 00 00 00 00
00 00 00 last path=00 00 00 00 00 00 00 00
Byte buffer Attempt serial write:, length=1
--000: C5
   <.>
  DEBUG: ow_net_server.c:ServerProcessHandler(165) Normal exit.
  DEBUG: ow_net_server.c:ServerProcessAccept(243) 3084843920 CLOSING
  DEBUG: ow_net_server.c:ServerProcessAccept(189) [3084843920] try lock 0
  DEBUG: ow_net_server.c:ServerProcessAccept(195) [3084843920] locked 0
Byte buffer Serial read:, length=1
--000: CD
   <.>
Byte buffer Attempt serial write:, length=2
--000: E1 EC
   <..>
Byte buffer Serial read:, length=1
--000: EC
   <.>
Byte buffer Attempt serial write:, length=2
--000: E3 B5
   <..>
Byte buffer Attempt serial write:, length=17
--000: E1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--016: 00
   <.................>
Byte buffer Serial read:, length=12
--000: FF FF FF FF FF FF FF FF FF FF FF FF
   <............>
Byte buffer Serial read:, length=4
--000: FF FF FF FF
   <....>
Byte buffer Attempt serial write:, length=2
--000: E3 A5
   <..>
  DEBUG: ow_search.c:BUS_next(84) return = -5 | 00 00 00 00 00 00 00 00
  DEBUG: ow_dir.c:FS_alarmdir(419) BUS_first_alarm = -5
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/bus.0]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing bus.0 unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/bus.0
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/settings]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing settings unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/settings
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/system]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing system unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/system
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/statistics]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing statistics unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/statistics
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[/alarm/uncached/structure]
  DEBUG: ow_cache.c:Cache_Get_SerialNumber(979) Antialiasing structure unsuccesssful
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached/structure
  DEBUG: ow_dir.c:FS_dir_both(184) ret=-5
  DEBUG: ow_parseobject.c:FS_OWQ_destroy(141) /alarm/uncached
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /alarm/uncached
  DEBUG: data.c:DataHandler(162) DataHandler: FS_ParsedName_destroy done
  DEBUG: data.c:DataHandler(176) DataHandler: cm.ret=-5
  DEBUG: data.c:DataHandler(193) DataHandler: done
  DEBUG: handler.c:Handler(150) OWSERVER handler done
  DEBUG: ow_net_server.c:ServerProcessHandler(165) Normal exit.
  DEBUG: ow_net_server.c:ServerProcess(346) break signo=2
  DEBUG: ow_net_server.c:ServerProcess(354) shutdown initiated
  DEBUG: ow_net_server.c:ServerProcess(358) Shutting down 0 of 1 thread 3084843920
  DEBUG: ow_net_server.c:ServerProcess(372) pthread_kill (0 of 1) tid=3084843920 signo=15 rc=0 [Success]
  DEBUG: ow_net_server.c:ServerProcess(378) all threads cancelled
  DEBUG: ow_net_server.c:ServerProcess(382) join 3084843920
  DEBUG: owserver.c:exit_handler(71) exit_handler: for signo=15, errno 0, code -6, pid=15775,
self=3084843920 main=3085231808
  DEBUG: owserver.c:exit_handler(76) exit_handler: shutdown already in progress. signo=15,
self=3084843920, main=3085231808
  DEBUG: ow_net_server.c:ServerProcessAccept(200) shutdown_in_progress [3084843920] accept 0
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(177) unlock 3084843920
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(179) unlock 3084843920 done
  DEBUG: ow_net_server.c:ServerProcessAccept(216)  [3084843920] unlock 0
  DEBUG: ow_net_server.c:ServerProcessAccept(220) [3084843920] shutdown_in_progress 0 return
  DEBUG: ow_net_server.c:ServerProcessOut(282) 3084843920 CLOSING ()
  DEBUG: ow_net_server.c:ServerProcessOut(284) Normal exit.
  DEBUG: ow_net_server.c:ServerProcess(386) join 3084843920 done
  DEBUG: ow_net_server.c:ServerProcess(394) shutdown done
  DEBUG: owserver.c:main(163) ServerProcess done
  DEBUG: owserver.c:ow_exit(51) ow_exit 0
   CALL: ow_lib_close.c:LibClose(21) Starting Library cleanup
   CALL: ow_lib_stop.c:LibStop(24) Clear Cache
   CALL: ow_lib_stop.c:LibStop(27) Closing input devices
  DEBUG: ow_com.c:COM_close(80) COM_close: flush
  DEBUG: ow_com.c:COM_close(82) COM_close: restore
  DEBUG: ow_com.c:COM_close(86) COM_close: close
   CALL: ow_lib_stop.c:LibStop(29) Closing outout devices
   CALL: ow_lib_close.c:LibClose(56) Finished Library cleanup
------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Jan Kandziora | 9 May 2009 12:13
Picon
Picon

Re: Problem with /alarm and latest CVS

Am Freitag, 8. Mai 2009 schrieb Jan Kandziora:
>
> I recently returned to the onewire part of my project and I'm still hunting
> bugs... With latest CVS version, /alarm or even /alarm/uncached are always
> empty. I *know* the DS2408 connected to the bus *must* be in alarm state
> after power up, so there has to be something wrong with my software setup
> or recent owfs (it worked with CVS from January). I checked with
>
To my curiosity, today it works as expected. What the heck...? If anyone could 
explain from the log what went wrong yesterday, I'd be very happy.

Kind regards

	Jan
--

-- 
1) Never draw what you can copy.
2) Never copy what you can trace.
3) Never trace what you can cut out and paste down.
------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Jan Kandziora | 9 May 2009 13:59
Picon
Picon

Re: Problem with /alarm and latest CVS

Am Samstag, 9. Mai 2009 schrieb Jan Kandziora:
>
> To my curiosity, today it works as expected. What the heck...? If anyone
> could explain from the log what went wrong yesterday, I'd be very happy.
>
I think I have it now:

If one is reading the alarm/ directory and no chip is in alarm state, OWFS 
returns EIO. owtcl returns that EIO instead of an empty reply. Is that 
expected behavior? I would find it more useful to have an empty reply to 
distinguish from "real I/O errors".

Kind regards

	Jan
--

-- 
...very few phenomena can pull someone out of Deep Hack Mode, with two
noted exceptions: being struck by lightning, or worse, your *computer*
being struck by lightning.
		-- Matt Welsh
------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
Jan Kandziora | 9 May 2009 23:01
Picon
Picon

Revisited: OWFS "forgets" chips after a while.

Hello,

A while ago, I found out owfs "forgets" chips after exactly 600 seconds, 
regardless which timeouts I set, and how.

Now I found out this only happens with my DS2482-800 i2c adapter, not with a 
DS9097U I tried recently. Odd. Any idea what's different with DS2482-800?

Kind regards

	Jan
--

-- 
I will never trust someone called GATES that sells WINDOWS.

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com

Gmane