I like it.

Should it completely replace owpython? The disadvantage is that it requires
owserver to be running. We could support both (with a different name).

One advantage of this approach is that you can have different owpython
objects, pointing to different owservers.

Object initialization should support temperature scale, address/port.
Eventually you could consider "Bonjour" (mdns autodiscovery) -- there may
already be a python module for that (look for _owserver._tcp as the
service). You might consider allowing the configuration file as input --
ignoring the mant irrelevant entries.

Paul Alfille


On 12/5/06, Peter Kropf <[EMAIL PROTECTED]> wrote:

On 12/5/06, chris <[EMAIL PROTECTED]> wrote:
> On Tuesday 05 December 2006 06:19, Peter Kropf wrote:
> > I was poking around the owserver protocol from Python
>
>  is that with socket or are you using higher level modules?
> can you show a demo script?

And here's a version that actually works: You'll need to change the
owserver host (kuro2) and port number (9999) but it displays the
directory entries for root. I'll use this as a basis for a new ownet
python module that provides the same object interface as the current
ow module but only knows how to communicate with an owserver and
doesn't depend on the rest of the core libraries. Once done, it should
run on any platform supported by Python...


import sys
import os
import socket
import struct

msg_error    = 0
msg_nop      = 1
msg_read     = 2
msg_write    = 3
msg_dir      = 4
msg_size     = 5
msg_presence = 6

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print s
s.connect(('kuro2', 9999))
payload = '/'
#payload = '/bus.0'
#        1234567890123456
#payload='/10.B7B64D000800'
print 'payload:', payload

smsg = struct.pack('iiiiii',
                   socket.htonl(0), #version
                   socket.htonl(len(payload) + 1), #payload length
                   socket.htonl(msg_dir), #type of function call
                   socket.htonl(258), #format flags
                   socket.htonl(0), #size of data element for read or
write
                   socket.htonl(0), #offset for read or write
                   )

print 'len(smsg):', len(smsg)
print 'smsg:', smsg

s.sendall(smsg)

smsg = payload + '\x00'
print 'len(smsg):', len(smsg)
print 'smsg:', smsg

s.sendall(smsg)

while 1:
    data = s.recv(24)

    version, payload_len, type_of_call, format_flags, size_of_data,
offset = struct.unpack('iiiiii', data)

    version = socket.ntohl(version)
    payload_len = socket.ntohl(payload_len)
    type_of_call = socket.ntohl(type_of_call)
    format_flags = socket.ntohl(format_flags)
    size_of_data = socket.ntohl(size_of_data)
    offset = socket.ntohl(offset)

    print
    print 'version:', version
    print 'payload_len:', payload_len
    print 'type_of_call:', type_of_call
    print 'format_flags:', format_flags
    print 'size_of_data:', size_of_data
    print 'offset:', offset

    if payload_len:
        data = s.recv(payload_len)
        print 'payload:', data[:size_of_data]
    else:
        break

s.close()

sys.exit(0)

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share
your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Owfs-developers mailing list
Owfs-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to