-
Notifications
You must be signed in to change notification settings - Fork 4.8k
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Preparation to remove HARDLIMIT of 4 relays #995
Comments
It will be nice to implement at least 8 relays into main release, even not all of them are visible in the web interface |
My fork of this great project adds support for the pcf8574. This allows up to 32 relays with 4 of these modules. Currently, my fork only supports WRITE. the module can also be used to get DIO input. I haven't tried and tested this so far. I have 16 relay version running in my garden for irrigation. Because of the way the module is working there are some nasty side effects, if you work with pulsetimers and change other relays until the first one is finished. Anyhow switching on and off is working fine. Open it up to 8 relays should not be a big issue because the byte has enough space to do and the 0xFF too. My version uses a uint32_t having enough space to store configuration. |
I really like to support ionciubotaru's request for 8 relays. I tried to extend this awesome package to 8 relays, but ist is not fully working and the update speed of arendst ist too high for me... |
@OTrumpf. I updated my version yesterday to support 8 relays without add-on hardware. I agree that this was quite tricky and @arendst implemented some nasty stuff like &3 that drives me crazy until I found it. Anyhow, I assume that fork should work. I checked several scenarios and did not found an error right now. |
Working on it.... |
Ah, thnx for alerting about the &3 ! ;;--)) |
@arendst If you want to get to know what you have to change AT LEAST to get it working take a look at my fork. There were some side-effects. I suggest to replace the 0xFF or so on with an XOR on 0x0. In this case independent of the definition of the length of the variable it should work. I do not know if a -1 also works by creating a defined overflow on an unsigned variable. |
Yes. I'm looking at it. I will first release the good old 4 relay version but with updated power size and other tricks to start using more relays in the near future. |
5.8.0j * Set default altitude to 0 to be used with pressure sensors * Document flash settings area for future use * Prepare for 32-bit power control (#995) * Introduce sonoff.h master header * Fix TLS MQTT SSL fingerprint test (#808, #970) * Fix pressure calculation for some BMP versions regression introduced with version 5.8.0i (#974) * Fix Domoticz Dimmer set to same level not powering on (#945)
Hi @arendst , I just saw that the ESPeasy sorted the GPIO mapping just the other way around. Here we have the GPIO as a start and in the list is a longer and longer list to select what the GPIO is doing. If we do it the other way around we easily can add flexibility on enumerated items because they don’t need to be in the Dropdown list. This is for sure a real major change, but smart if we want to support more an more functionality. Just take a sleep and think about it. |
On Tue, 10 Oct 2017, stefanbode wrote:
Hi @arendst , I just saw that the ESPeasy sorted the GPIO mapping just the
other way around. Here we have the GPIO as a start and in the list is a longer
and longer list to select what the GPIO is doing. If we do it the other way
around we easily can add flexibility on enumerated items because they don’t
need to be in the Dropdown list. This is for sure a real major change, but
smart if we want to support more an more functionality. Just take a sleep and
think about it.
It's not quite that easy, because not all switches are interchangable, and you
really don't want a switch or relay to change what it's doing because someone
changed what another GPIO does
so you can't just have a bunch of switches and assume they are in some order.
currently Tasmota does a 1:1 mapping of GPIO to one of many functions.
I think the 'best' way would be to abstract this.
have 'thing templates' (switch, button, relay, LED, etc) that you can
instantiate.
When you instantiate a 'thing', you define what GPIO(s) are associated with it,
and what 'thing number' it is.
part of the 'thing template' defines if the GPIO is input/output/other. If
other, what type of other (serial I2C, etc). Other types get assigned to a
module, and you can only have one instance of each type of other (to keep things
sane)
if GPIOs are inputs, they are added to an input array, this is used to know what
to look for and what to do with it when found.
if GPIOs are outputs, they are marked as 'no longer available' and the module
for that type of output deals with it.
But this is a major re-write of much of the tasmota internals, and not likely to
take place until this set of code is thrown away and re-written
|
The interface looks great |
Really like and already decustomize my fork. Yeah! Great move forward. Also the other improvements in the GUI, like the module definition. |
5.9.0 20171030 * Rewrite code (partly) using Google C++ Style Guide (https://google.github.io/styleguide/cppguide.html) * Rewrite code by using command lookup tables and javascript (client side) web page expansions * Change HTML/CSS to enable nicer form field entry * Change default PWM assignments for H801 RGB(CW) led controller to support optional Color/Dimmer control * GPIO04 (W2) from GPIO_PWM2 to GPIO_USER to be user configurable for GPIO_PWM5 (second White - Warm if W1 is Cold) * GPIO12 (Blue) GPIO_PWM3 no change * GPIO13 (Green) from GPIO_PWM4 to GPIO_PWM2 * GPIO14 (W1) from GPIO_PWM1 to GPIO_USER to be user configurable for GPIO_PWM4 (first White - Cold or Warm) * GPIO15 (Red) from GPIO_PWM5 to GPIO_PWM1 * Change default PWM assignments for MagicHome RGB(W) led controller to support optional Color/Dimmer control * GPIO05 (Green) from GPIO_PWM4 to GPIO_PWM2 * GPIO12 (Blue) from GPIO_PWM5 to GPIO_PWM3 * GPIO13 (White) GPIO_USER to be user configurable for GPIO_PWM4 (White - Cold or Warm) * GPIO14 (Red) from GPIO_PWM3 to GPIO_PWM1 * Change default PWM assignment for Witty Cloud to support optional Color/Dimmer control (#976) * GPIO12 (Green) from GPIO_PWM4 to GPIO_PWM2 * GPIO13 (Blue) from GPIO_PWM5 to GPIO_PWM3 * GPIO15 (Red) from GPIO_PWM3 to GPIO_PWM1 * Change when another module is selected now all GPIO user configuration is removed * Change command name IRRemote to IRSend (#956) * Remove Arduino IDE version too low warning as it interferes with platformio.ini platform = espressif8266_stage * Fix command FullTopic entry when using serial or console interface * Fix possible UDP syslog blocking * Fix minimum TelePeriod of 10 seconds set by web page * Fix command GPIOx JSON response (#897) * Fix inverted relay power on state (#909) * Fix compile error when DOMOTICZ_UPDATE_TIMER is not defined (#930) * Fix alignment of web page items in some browsers (#935) * Fix setting all saved power settings to Off when SetOption0 (SaveState) = 0 (#955) * Fix timezone range from -12/12 to -13/13 (#968) * Fix Southern Hemisphere TIME_STD/TIME_DST (#968) * Fix TLS MQTT SSL fingerprint test (#970, #808) * Fix virtual relay status message used with Color/Dimmer control (#989) * Fix command IRSend and IRHvac case sensitive parameter regression introduced with version 5.8.0 (#993) * Fix pressure calculation for some BMP versions regression introduced with version 5.8.0i (#974) * Fix Domoticz Dimmer set to same level not powering on (#945) * Fix Blocked Loop when erasing large flash using command reset 2 (#1002) * Fix relay power control when light power control is also configured as regression from 5.8.0 (#1016) * Fix Mqtt server mDNS lookup only when MqttHost name is empty (#1026) * Add debug information to MQTT subscribe * Add translations to I2Cscan * Add translation to BH1750 unit lx * Add light scheme options (Color cycle Up, Down, Random) and moving WS2812 schemes up by 3 * Add Domoticz counter sensor to IrReceive representing Received IR Protocol and Data * Add option 0 to MqttHost to allow empty Mqtt host name * Add support for Arilux AL-LC01 RGB Led controller (#370) * Add esp8266 de-blocking to PubSubClient library (#790) * Add Domoticz sensors for Voltage and Current (#903) * Add platformio OTA upload support (#928, #934) * Add warning to webpage when USE_MINIMAL is selected (#929) * Add smoother movement of hour hand in WS2812 led clock (#936) * Add support for Magic Home RGBW and some Arilux Led controllers (#940) * Add command SetOption15 0 (default) for command PWM control or SetOption15 1 for commands Color/Dimmer control to PWM RGB(CW) leds (#941) * Add Domoticz counter sensor to Sonoff Bridge representing Received RF code (#943) * Add support for Luani HVIO board (https://luani.de/projekte/esp8266-hvio/) (#953) * Add PWM initialization after restart (#955) * Add IR Receiver support. Disable in user_config.h (#956) * Add support for inverted PWM (#960) * Add Sea level pressure calculation and Provide command Altitude (#974) * Add support for up to 8 relays (#995) * Add commands RfSync, RfLow, RfHigh, RfHost and RfCode to allow sending custom RF codes (#1001) * Add retain to ENERGY messages controlled by command SensorRetain (#1013) * Add commands Color2, Color3, Color4, Width2, Width3, Width4 and SetOption16 to set Ws2812 Clock parameters (#1019) * Add German language file (#1022) * Add support for connecting to MQTT brokers without userid and/or password (#1023) * Add support for esp8266 core v2.4.0-rc2 (#1024) * Add commands PwmRange 1,255..1023 and PwmFrequency 1,100..4000 (#1025) * Add Polish language file (#1044, #1047) * Add support for KMC 70011 Power Monitoring Smart Plug (#1045) * Add support for VEML6070 I2C Ultra Violet level sensor (#1053) * Add light turn Off Fade (#925) * Add IrSend command option Panasonic as IrSend {"Protocol":"Panasonic", "Bits":16388, "Data":<Panasonic data>} * where 16388 is 0x4004 hexadecimal (#1014) * Add retry counter to DHT11/21/22 sensors (#1082)
Implemented in master release v5.9.0 |
5.8.0j * Set default altitude to 0 to be used with pressure sensors * Document flash settings area for future use * Prepare for 32-bit power control (arendst#995) * Introduce sonoff.h master header * Fix TLS MQTT SSL fingerprint test (arendst#808, arendst#970) * Fix pressure calculation for some BMP versions regression introduced with version 5.8.0i (arendst#974) * Fix Domoticz Dimmer set to same level not powering on (arendst#945)
5.8.0k * Add support for up to 8 relays (arendst#995) * Fix Blocked Loop when erasing large flash using command reset 2 (arendst#1002)
Hi @arendst, could you please replace the different "0xFF" in the code with a constant defined and if possible the "byte" that is used in many places with an own type. e.g. relayarray =byte.
This would make it easier for my mod with 32 relays to keep code in sync because I only had to change the definition and not many lines of code. I assume the first change will also save you some bytes again.
For example, line 2422 in sonoff.ino is currently:
byte mask = 0xFF;
would be great if this could be something like:
relayarray mask = max_value;
The text was updated successfully, but these errors were encountered: