New 2.1.4 Z-Uno release

Discussion about Z-Uno product. Visit http://z-uno.z-wave.me for more details.
Post Reply
User avatar
PoltoS
Posts: 4339
Joined: 26 Jan 2011 19:36

New 2.1.4 Z-Uno release

Post by PoltoS » 31 Jul 2018 01:03

We are happy to make a new release of Z-Uno software!

This build introduces new channel types, a lot of new cool features and fixes a lot of bugs.

You can get it from our test repo: https://z-uno.z-wave.me/files/z-uno/pac ... index.json. For more infor check https://z-uno.z-wave.me/install

What's new:

New features
  • Three new channel types: Color Switch, Thermostat and Door Lock
  • If only one channel, MultiChannel will be supressed (Command Classes outside channel will represent your single channel)
  • Handling of incoming reports from other devices. Handled reports are Basic/Sensor Binary/Alarm/Sensor Multilevel/Switch Binary/Switch Multilevel/Battery/Meter.
  • New inclusion mode: double click for unsecure inclusion, triple click for secure (as it was before). New security parameter added to zunoStartLearn(timeout, secure)
  • Two new functions: tone() and noTone()
  • ADC and PWM pins can now be referenced in pinMode/digitalWrite/digitalRead as PWMx и ADCx too (like in Arduino). Before was only via pin number:

    Code: Select all

    pinMode(A0, OUTPUT);
    digitalWrite(A0, HIGH);
    ...
    pinMode(PWM1, INPUT);
    digitalRead(PWM1);
    
  • Added FastPWM on pin A0.

    Code: Select all

    pinMode(A0, OUTPUT);
    zunoFastPWMInit(0);  // Flags are same as for GPT (only divider can be changed)
    zunoFastPWMSet(100, 100); // Low and high period in timer ticks. By default 4 MHz is one tick
    zunoFastPWMEnable(1); // Start PWM0
    ...
    zunoFastPWMEnable(0);  // Stop PWM0 when not needed anymore
    
  • New types added for SensorMultilevel:
    • ZUNO_SENSOR_MULTILEVEL_TYPE_FORMALDEHYDE_CH2O_LEVEL
    • ZUNO_SENSOR_MULTILEVEL_TYPE_RADON_CONCENTRATION
    • ZUNO_SENSOR_MULTILEVEL_TYPE_METHANE_DENSITY_CH4
    • ZUNO_SENSOR_MULTILEVEL_TYPE_VOLATILE_ORGANIC_COMPOUND
    • ZUNO_SENSOR_MULTILEVEL_TYPE_CARBON_MONOXIDE_CO
Bug fixes
  • Fixed multiple ADC influencing each other
  • Fixed OTA (broken since 2.1.3)
  • Fixed interrupts handlers inside libraries (was broken since 2.1.3)
  • Fixed compiler diagnostic messages if a too big sketch is uploaded. Before it was silently ignored.
  • Switch between S2 and S0 firmwares was broken (since 2.1.3)
  • s_pin interrupt handlers was corrupting value in another s_pin.
  • Only lower word part from the DWORD-value on channels was passed. (thanks to @petergebruers)
  • Pull Up mode was overriden by mode change on the same i/o port (8 pins) (broken since 2.1.1)
  • S2 bootloader upload fixed
  • analogWrite(pin, 0) was not working properly (was never actually 0)
  • zunoBatteryHandler was not working (since 2.1.3)
Changes
  • [!!!] Config parameters are now two bytes instead of four
  • Added new scale for general purpose sensor multilevel (unitless): SENSOR_MULTILEVEL_SCALE_DIMENSIONLESS_VALUE
New libraries
  • ZUNO_BMP280 - support for BMP280/BME280 sensors by Bosch (thanks to petergebruers for testing it)
  • ZUNO_MERCURY206R - support for electrical meters Mercury, model 206R.
  • SoftwareSerial - supports for slow UART. Valid speeds are 1200/2400/4800/9600 8-N-1
  • Wire. Added clockStretching. Enabled using Wire.enableTS(true). Slows down the speed by ~25%. Usefull to support modern I2C devices that do require Clock Stretching.
  • Added library for air quality sensor CCS811 from AMS. Example:

    Code: Select all

    #define MY_SERIAL Serial0 
    #include "ZUNO_CCS811.h"
    ZUNO_CCS811 ccs811; 
    
    // For precise values you need external temperature/humidity sensor like DHT. Here for example 50.0% humidity and 25.00 C are assumed.
    CCS811_Environment env_data = {500, 2500};
    
    void setup() { 
             MY_SERIAL.begin(115200);
             if (ccs811.begin()) {
                     MY_SERIAL.println("CCS811 found!");
                     ccs811.setEnvironmentalData(&env_data);
             }
    }
    
    void loop() {
             if (ccs811.readData() & CCS811_STATUS_DATAREADY) {
                             MY_SERIAL.print("CO2: ");
                             MY_SERIAL.print(ccs811.geteCO2());
                             MY_SERIAL.println(" ppm");
                             MY_SERIAL.print("VOC: ");
                             MY_SERIAL.print(ccs811.getTVOC());
                             MY_SERIAL.println(" ppb");
             }
             delay(5000);
    }
    

Post Reply