Jan, Stefano,

Once again many thanks for your help and advise. My alias file is not dynamic as such, but can change as I create a new version of my software, which is what I am doing at present, so it seemed safer to copy it over at startup. I will look at redefining alias in owshell, then I won't need to copy owfs.conf. Seems like a better solution, and checking pyownet.protocol.ConnError exception sounds sensible as well.

More work to do but I feel I am now much closer.

Thank you

Mick


On 03/09/16 14:35, Stefano Miccoli wrote:
My 1cent advice:

 1. do not insert a delay before your script, instead catch
    the pyownet.protocol.ConnError exception and retry
 2. if the alias file is dynamic (otherwise why copy it at every
    reboot?) you can also define/redefine aliases using owshell/ownet.


Please check this gist for an example of both techniques in python

https://gist.github.com/miccoli/d16fcc01daff034d406832dca4decae3

After running this example all sensors on the localhost will be aliased to sens0, sens1, …

Ciao

Stefano


For the benefit of the list, here is also the present gist content.

import sys
import time
import pyownet.protocol

TIMEOUT = 10


def main():

     timeout_time = time.time() + TIMEOUT
     while time.time() < timeout_time:
         try:
             owp = pyownet.protocol.proxy()
         except pyownet.protocol.ConnError:
             time.sleep(1)
         else:
             break
     else:
         # Error! creation of owp has timed out
         sys.exit('Unable to open connection to owserver')
     # Success! we have a connection to owserver
     assert owp.present('/')

     for i, sens in enumerate(owp.dir()):
         owp.write(sens+'alias', 'sens%d' % i)

     for j in range(i):
         assert owp.present('sens%d' % j)

if __name__ == '__main__':
     main()



On 03 Sep 2016, at 10:09, Mick Sulley <m...@sulley.info <mailto:m...@sulley.info>> wrote:

My code relies on aliases and so I wanted to copy the correct version of
owfs.conf to /etc/owfs.conf and I assumed that I would need to restart
after that for it to be read and the correct alias file used.

The thing I don't understand is that it is not the restart that causes
the failure, it is the copy.  I have tried it without the restart line
and it still fails.  Does owserver continually read /etc/owfs.conf and
detect that it being written?

Regards
Mick

On 03/09/16 00:10, Jan Kandziora wrote:
Am 02.09.2016 um 22:48 schrieb Mick Sulley:
If I have removed the restart it still fails, however if I introduce a
delay it works

cp owfs.conf /etc/
sleep 5
./control.py >> logfile

Less than 5 seconds it fails, 5 or more it works

That is because owserver takes a while before it has it's socket listening.

Why do you restart owserver at all? It's not neccessary. It's designed
as a daemon to connect to the hardware at system boot and sit there and
wait until other programs connects to it.

Kind regards

Jan

------------------------------------------------------------------------------
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net <mailto:Owfs-developers@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/owfs-developers


------------------------------------------------------------------------------
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net <mailto:Owfs-developers@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/owfs-developers



------------------------------------------------------------------------------


_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

------------------------------------------------------------------------------
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to