WebIOPi 0.5.3 release

WebI0Pi 0.6 has been released, click here for details.

Happy new year every one, and Happy new WebIOPi version !

Here is the changelog for 0.5.3 :

  • Added board revision REST URI (submitted by Andreas Riegg)
  • Added encrypted passwd file to store credentials used for HTTP authentication
  • Added webiopi-passwd command-line program to generate passwd file
  • Moved demo to examples/custom folder, added examples/basic
  • Changed /dev/mem access to allow webiopi import without root privileges when not using GPIOs
  • Disabled update checker to avoid “Update available” link
  • Improved GPIO error handling
  • Fixed encoding issue with python 2.x giving a blank page
  • Fixed setup script

This version is available on both Google Code and PiStore. The WIKI will be updated in next days to explain few of new features.

9 thoughts on “WebIOPi 0.5.3 release

  1. Hi, excellent work on this, brilliantly easy to work with.
    I was just wondering, could you make this usable with Raspbmc? I’d like my Pi to multi task but I need it to watch films atm :D

  2. First, thank you for the excellent work on WebIOPi.

    We are working on a first version of a JQuery Mobile UI library for WebIOPi.py (we are not using the WebIOPi.js library in this example) and have come across an issue upgrading from 0.5.1. to 0.5.3.

    When attempting to access a local .jpg file as a background via CSS (see below) WebIOPi.py is throwing an error (see below) and the .jpg file does not load.

    How have we tested this:
    - The error occurs running WebIOPi 0.5.3 under Python2 or Python3
    - removing the “background: url(image1.jpg)” line from the CSS eliminates the error.
    - Reinstalling WebIOPi 0.5.1 eliminates the error and the background loads correctly.
    - All features (e.g., turning GPIO pins on and off) work correctly regardless of this error.

    Any insight you could offer would be appreciated.

    Regards,
    Derrick

    CSS
    ——

    .ui-page {
    background: url( “image1.jpg” );
    }

    Note: As the url path suggests, the .jpg file in this example is in the same directory with the .html file. This is also the directory in which we start WebIOPi

    WebIOPi Error Message
    ————————————

    pi@raspberrypi ~/WebIOPi-0.5.3 $ sudo python3 -m webiopi
    server version is WebIOPi/Python3/0.5.3
    WebIOPi/Python3/0.5.3 Access protected using /etc/webiopi/passwd
    WebIOPi/Python3/0.5.3 HTTP Server started at http://192.168.1.120:8000/webiopi/
    —————————————-
    Exception happened during processing of request from (’192.168.1.107′, 64647)
    Traceback (most recent call last):
    File “/usr/lib/python3.2/socketserver.py”, line 295, in _handle_request_noblock
    self.process_request(request, client_address)
    File “/usr/lib/python3.2/socketserver.py”, line 321, in process_request
    self.finish_request(request, client_address)
    File “/usr/lib/python3.2/socketserver.py”, line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
    File “/usr/lib/python3.2/socketserver.py”, line 648, in __init__
    self.handle()
    File “/usr/lib/python3.2/http/server.py”, line 396, in handle
    self.handle_one_request()
    File “/usr/lib/python3.2/http/server.py”, line 384, in handle_one_request
    method()
    File “/usr/local/lib/python3.2/dist-packages/WebIOPi-0.5.3-py3.2-linux-armv6l.egg/webiopi.py”, line 471, in do_GET
    self.processRequest()
    File “/usr/local/lib/python3.2/dist-packages/WebIOPi-0.5.3-py3.2-linux-armv6l.egg/webiopi.py”, line 468, in processRequest
    raise e
    File “/usr/local/lib/python3.2/dist-packages/WebIOPi-0.5.3-py3.2-linux-armv6l.egg/webiopi.py”, line 460, in processRequest
    self.serveFile(relativePath)
    File “/usr/local/lib/python3.2/dist-packages/WebIOPi-0.5.3-py3.2-linux-armv6l.egg/webiopi.py”, line 429, in serveFile
    data = f.read()
    File “/usr/lib/python3.2/codecs.py”, line 679, in read
    return self.reader.read(size)
    File “/usr/lib/python3.2/codecs.py”, line 482, in read
    newchars, decodedbytes = self.decode(data, self.errors)
    UnicodeDecodeError: ‘utf-8′ codec can’t decode byte 0xff in position 0: invalid start byte
    —————————————-

    • I’m also curious about “We are working on a first version of a JQuery Mobile UI library for WebIOPi.py”
      What are you going to do here ? I have in mind to add a user agent filtering on the server before 1.0 release to filter mobile device and serve the appropriated jquery version. Then handle touch events in webiopi.js.

    • Thank you, that solution worked perfectly.

      As to the JQuery work, I should have said Plugin instead of Library (you already have a very nice start on a library). We work primarily with JQuery Mobile and are poking around with a creating plugin that would work with grid widgets to allow rapid development of custom UI’s.

      For example with the plug in you can do things like,

      $(“#myUI”).newGrid(4,4).gridElement(“INSERT”,1,1).newPiButton( “GPIO”, 4, “OUT”, “LOW”);

      This would allow you to create a new 4×4 grid and insert a GPIO Output button into the upper left hand cell of the grid.

      If you are interested, I’ll keep you up to date on the (slow) progress of the plugin.

      Cheers,
      Derrick

  3. First. A really Big Thank You for WebIOPi. Have 0.5.3 up and running no problem. I plan to use it to drive a servo powered camera platform carrying a wireless HD camera. Can you confirm one thing – the javascript library function WebIOPi.pulseangle(gpio, angle[callback]), does it output a pulse in standard Radio Control servo timing ( 50 msec repeat frame, 1-2 millisec duration) on the specified GPIO line? If so then Bingo, I have the necessary to write my own code.

    Once again, thank you for your work, I know how much time and effort it takes.

    • pulseAngle uses Futaba servo standard :
      1120µs = 1.12ms = -45°
      1520µs = 1.52ms = neutral
      1920µs = 1.92ms = +45°

      you can go further +/-45°, it then depend on your servo.

  4. Thanks for that. Keep up the good work. Nice to get some response. Not all developers are so considerate.

    Once again a really big thank you.