Youshiko YC9388 Weather station

246 views
Skip to first unread message

Bob Atchley

unread,
Jan 3, 2020, 1:20:49 PM1/3/20
to weewx-user
Hi,

Has anyone had any luck interfacing weewx (on a rpi) to this weather station (which is identical to the Bresser 6 in 1) and if so could you give me any pointers ?

My basic assumption is that this is a Fine Offset clone.

The fundamental problem I'm having is with the USB interface

$ lsusb  -v -d 1941:8021
Bus 001 Device 004: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1941 Dream Link
  idProduct          0x8021 WH1080 Weather Station / USB Missile Launcher
  bcdDevice            0.00
  iManufacturer           1 Silicon Laboratories Inc.
  iProduct                2 CCLEL C8488
  iSerial                 3 CCLEL c8488
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0022
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      36
          Report Descriptor: (length is 36)
            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
                            (null)
            Item(Local ): Usage, data= [ 0x01 ] 1
                            (null)
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                            (null)
            Item(Local ): Usage Maximum, data= [ 0x08 ] 8
                            (null)
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff ] 255
            Item(Global): Report Count, data= [ 0x40 ] 64
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Main  ): Input, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                            (null)
            Item(Local ): Usage Maximum, data= [ 0x08 ] 8
                            (null)
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff ] 255
            Item(Global): Report Count, data= [ 0x08 ] 8
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Main  ): Output, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Running wee_ device works, but the values returned are all defaults not what the console is displaying.

$ sudo bin/wee_device --info
Using configuration file /home/weewx/weewx.conf
Using FineOffsetUSB driver version 1.20 (weewx.drivers.fousb)
Querying the station...
Fine Offset station settings:
                    local time: 2020.01.03 17:47:03 GMT
                  polling mode: PERIODIC

                  abs_pressure: 0
                   current_pos: 0
                  data_changed: 0
                    data_count: 0
                     date_time: 2000-00-00 00:00
                 hum_in_offset: 0
                hum_out_offset: 0
                            id: 0
                 lux_wm2_coeff: 0
                       magic_1: 0xfa
                       magic_2: 0x 3
                         model: 0
                     rain_coef: 0
                   read_period: 0
                  rel_pressure: 101.8
                temp_in_offset: 0
               temp_out_offset: 0
                      timezone: 0
                    unknown_01: 0
                    unknown_18: 3
                       version: 0
                     wind_coef: 0
                     wind_mult: 0

         max.abs_pressure.date: 2000-00-00 00:00
          max.abs_pressure.val: 0
             max.dewpoint.date: 2000-160-03 00:00
              max.dewpoint.val: 0
              .... (cut similar)

and the log file shows :
Jan  3 17:45:28 rpi2 wee_device[2565] INFO weewx.drivers.fousb: driver version is 1.20
Jan  3 17:45:28 rpi2 wee_device[2565] INFO weewx.drivers.fousb: polling mode is PERIODIC
Jan  3 17:45:28 rpi2 wee_device[2565] INFO weewx.drivers.fousb: polling interval is 60
Jan  3 17:45:28 rpi2 wee_device[2565] INFO weewx.drivers.fousb: found station on USB bus= device=
Jan  3 17:45:28 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x000000
Jan  3 17:45:30 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x000000
Jan  3 17:45:32 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x000000
.... (many similar cut)
Jan  3 17:46:53 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x0000e0
Jan  3 17:46:55 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x0000e0
Jan  3 17:46:57 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x0000e0
Jan  3 17:46:59 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x0000e0
Jan  3 17:47:01 rpi2 wee_device[2565] INFO weewx.drivers.fousb: unstable read: blocks differ for ptr 0x0000e0
Jan  3 17:47:03 rpi2 wee_device[2565] ERROR weewx.drivers.fousb: unrecognised magic number fa03

I've cycled through the model numbers in the weewx.conf [FineOffsetUSB] settings but this has made no difference.

I should say I was using the latest stable version on a rpi4 but wee_device crashes with this on the first usb block read (errno 75, Overflow).  I am now using  4.0.0b6 on an rpi2 which at least doesn't crash.

I have attached a laptop running windows with the manufacturers software - this works perfectly (but the software is very limited) so at least I know the weather station is fully functional

Thanks

Bob

Bob Atchley

unread,
Jan 4, 2020, 12:31:01 PM1/4/20
to weewx-user

Re-reading the documentation it would seem currently that the weewx FineOffsetUsb driver supports 2 formats:
1080
3080
These are similar but 3080 expands the 1080 to include UV and Luminescence.

The "Youshiko YC9388"/"Bresser 6 in 1"  can support up to 7 additional wireless hydro-thermo outdoor sensors.  So presumably has an expanded format that allows these sensor outputs to be read.

So unless anyone knows better I think the answer is that weewx does not currently support this new generation of fine offset weather stations.

I'm quite happy to try and get this working (I'm a software engineer, but never dabbled with USB protocols and only used Python for basic tools), but if anyone has any pointers or knows of anyone else who could help please let me know

Thanks

Bob

Bob Atchley

unread,
Feb 9, 2020, 6:29:21 AM2/9/20
to weewx-user
The good news is I have reverse engineered the USB interface to this weather station, and while there are still nuances and additional commands to be understood I have a test program running reliably.

As there has been no interest here I'll probably write my own solution for this rather than go down the weewx route, but once polished I'll make my solution available (but I could still be persuaded to go down the weewx route).

The only other weather station interface that I am familiar with is the ws2300 - compared to that this weather station interface is orders of magnitude simpler and more reliable

Not expecting any responses, but if there is any interest let me know

Bob

Thomas Keffer

unread,
Feb 9, 2020, 7:28:22 AM2/9/20
to weewx-user
Bob, no reason not to use WeeWX --- just write a driver. At their simplest, you need implement only 3 functions, two of which are trivial. The hard one is genLoopPackets(), whose job is to return Python dictionaries holding any data returned by your station. See the section Porting to new hardware in the Customizing Guide for details.

Once you have a driver, you can leverage everything else WeeWX has to offer --- archiving, reporting, uploading, HTML generation, etc.

-tk

--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/99c989b3-0028-40d4-9836-8e5ea0df2ea8%40googlegroups.com.

Janne Prokkola

unread,
Feb 23, 2020, 1:59:18 PM2/23/20
to weewx-user
I have just purchased a Ventus W835 which is similar as Bresser 6 in 1. If you can get your weather station work with weewx I would like to know how you do it.

Janne

Bob Atchley

unread,
Mar 15, 2020, 12:46:05 PM3/15/20
to weewx-user
Hi Janne,

I have uploaded the new driver for the 6 in 1 weather stations with PC connected consoles:
Youshiko YC9388
Bresser PC 6 in 1
Garni 935PC
Ventus W835
If you go to the weewx wiki and search for the ws6in1 driver and follow the link hopefully the readme.txt will give you enough information to get going.
I have over a weeks data and had no issues so far.
I'm afraid this very much a beta release.  Please feedback any issues.
I should probably add that all my testing has been with weewx 4.0.0b13, but I have no reason to think it won't work with weewx version 3.9.2

Regards Bob

Janne Prokkola

unread,
Mar 22, 2020, 6:01:58 AM3/22/20
to weewx-user
Hi Bob
great news.

I downloaded your driver. Now I have a connection between Ventus and weewx! I have just tested it and it really works. Now I start to learn the weewx. Ie. I wonder if its possibel to download history data from ws.

Few minor remarks on you readme.txt.

1)
I run weewx on linux mint. I couldn't run "pip install crcmod". I installed it with synaptic packet installer.

2)
wee_extension --install weewx-ws6in1.zip

The driver is weewx-ws6ini-master.zip.

Thanx again
Janne!

Bob Atchley

unread,
Mar 22, 2020, 7:35:25 AM3/22/20
to weewx-user
Hi Janne,

So pleased its working!!  Thanks for the remarks, I've added a note in the readme.txt about installing python-pip/python3-pip.  The driver really is weewx-ws6in1.zip you must have renamed it somehow when you downloaded it (?)

The history is an interesting question.  I bought my station and physically installed it in early January so I have over 2 months of data available (though recorded at 30 minute intervals) before I got the weewx driver working.
I can produce a function that downloads the history, but I'm not sure about the mechanism to get this into the weewx database and processed (and in fact I have 16 years worth of ws2300 data in a non-weewx database that it would be nice to import to have it all in one place)

Regards

Bob

Janne Prokkola

unread,
Mar 22, 2020, 1:40:29 PM3/22/20
to weewx-user
hi Bob

when I download the driver from GiHub
----
2) download the driver

wget -O weewx-ws6in1.zip https://github.com/bobatchley/weewx-ws6in1/archive/master.zip
---
my Linux convert the name to "... -master.zip"

To clarify, I installed the crcmod, not the python-pip with synaptic.

I also have about 8 years data saved from another wstation. This station will be installed to our summer cottage, and it is offgrid sometimes. So, I'd like to import history data from both sources. Today I have tried to find reasonable workaround with wee_import from csv-file without any success. I get some stupid error messages.

regards
Janne
Reply all
Reply to author
Forward
0 new messages