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 On Friday, 3 January 2020 18:20:49 UTC, Bob Atchley wrote: > > 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 ? > https://youshiko.co.uk/collections/digital-weather-stations/products/yc9388 > > 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 > -- 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+unsubscr...@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.