Commit Graph

2854 Commits

Author SHA1 Message Date
Maxim Prokhorov
dc8a672e00 ... on second thought, just bump the cfg version 2020-08-26 22:59:11 +03:00
Maxim Prokhorov
378cfdc09a settings backwards compat on demand 2020-08-26 10:57:23 +03:00
Maxim Prokhorov
4b93369706 fix not reading_until_length after buckets 2020-08-26 09:17:44 +03:00
Maxim Prokhorov
2fc0ab0a17 tweak logging 2020-08-25 23:21:49 +03:00
Maxim Prokhorov
8b01c29a28 learnok was never matched as length+payload 2020-08-25 23:21:49 +03:00
Maxim Prokhorov
a43dc16825 recover learn codes from old source
ref.
https://github.com/Portisch/RF-Bridge-EFM8BB1/wiki/0xA2 (desc: Learning OK)
https://github.com/Portisch/RF-Bridge-EFM8BB1/wiki/0xA3 (desc: Learning failed)
were used, but the pages did not reflect the actual implementation:

af1bddb3d8/inc/uart.h
...
RF_CODE_LEARN_KO = 0xA2
RF_CODE_LEARN_OK = 0xA3
...
2020-08-25 23:17:55 +03:00
Maxim Prokhorov
11f815fc69 cleanup 3
- no need in template when size set as constexpr
- remove size param completely, deduce size based on buffer
2020-08-25 22:24:21 +03:00
Maxim Prokhorov
40a387522d cleanup 2
- queueing efm8bb1 msg, pass around array as reference since the size is fixed
- make use of learn timestamp
2020-08-25 21:29:55 +03:00
Maxim Prokhorov
2e77818ae1 cleanup 2020-08-25 20:11:39 +03:00
Maxim Prokhorov
7cfde70d85 broker publish with protocol included 2020-08-25 20:10:40 +03:00
Maxim Prokhorov
83e22b09cd codacy 2020-08-25 15:40:44 +03:00
Maxim Prokhorov
9bc8afe81c use correct rfb_provider for stock rfbridge env 2020-08-25 15:25:16 +03:00
Maxim Prokhorov
61daecee05 log advanced sniffing methods of efm8bb1 alternative fw 2020-08-25 15:24:35 +03:00
Maxim Prokhorov
8e6c474160 fix debug log 2020-08-25 14:07:47 +03:00
Maxim Prokhorov
d7e32ec866 fix hexDecode result check for rfraw & rfb.write 2020-08-25 14:07:47 +03:00
Maxim Prokhorov
b8db57e460 fix hexDecode result & input checks
- for some reason we were never checking it's output
no need to increase +1 since we write the exact number
- allow hexEncode output be decoded, enforce even-ness
- raw msg must have at least 3 bytes - start+code+end
2020-08-25 14:07:29 +03:00
Maxim Prokhorov
81358d98a3 forgot 1 byte prefix 2020-08-23 23:43:43 +03:00
Maxim Prokhorov
82b06536b3 codacy, fix not setting the protocol when sending 2020-08-23 21:31:16 +03:00
Maxim Prokhorov
5da8c5262e fixup! fixup deprecated flags migration 2020-08-23 21:05:17 +03:00
Maxim Prokhorov
3cc9aa6853 try to fix build with gcc4.8 2020-08-23 12:06:31 +03:00
Maxim Prokhorov
741302e7bd fix webui flags 2020-08-23 11:57:04 +03:00
Maxim Prokhorov
a51b57b57d fix rfbridge-direct pio env 2020-08-23 11:56:07 +03:00
Maxim Prokhorov
e19c16e222 Merge remote-tracking branch 'origin/dev' into rfb/refactoring 2020-08-23 11:54:21 +03:00
Maxim Prokhorov
02cff4607d fixup deprecated flags migration 2020-08-23 11:54:01 +03:00
Maxim Prokhorov
7a24806adb test: try using rc-switch from open-mqtt-gateway 2020-08-23 11:50:59 +03:00
Maxim Prokhorov
f890a06fc5 rfb refactoring
- RF_... -> RFB_...
- rework rcswitch integration, support variable length payload
- rework rfbridge parser (not tested)
- rework settings scanning routine when trying to match rf payload
  with the relay ID
- update build tests
2020-08-23 11:48:50 +03:00
Max Prokhorov
210a6601bc libs: fix relative include path
resolve #2326
2020-08-22 01:55:15 +03:00
Max Prokhorov
1d957506b3 PIO: remove Arduino Core 2.3.0 support (#2333)
As this is no longer an option since PIO 4.4.0
ref.
04694b4126
https://docs.platformio.org/en/latest/core/history.html

*...I have known you for so long
When we ran in circles...*
2020-08-22 01:36:44 +03:00
Maxim Prokhorov
0f11b662a1 compat: c++ alternative to the UNUSED / void-cast macro 2020-08-15 02:37:59 +03:00
Alex. Tircovnicu
e8b80845bc ir: fixed build error in case IR TX is not used in raw mode 2020-08-14 23:14:44 +03:00
Alex. Tircovnicu
22f0b9b0d3 ha: fix swapped device model and manufacturer fields in the discovery 2020-08-14 23:14:24 +03:00
Max Prokhorov
ff1c9e4991 domoticz: allow dimmer device to control brightness (#2317)
Per PR comment:
> I'm running simple 1-channel led dimmer and couldn't get brightness control working, as it was called only if lightHasColor().
> This PR changes conditions slightly, and allows domoticz's dimmer device to control brightness as well. I think this device type is more appropriate/comfortable in this case."

- remove lightHasColor() check, try to parse the payload and manually adjust the channels
- when domoticz payload does not have "Color" field, still fall-through to the brightness update
2020-08-13 18:06:39 +03:00
Max Prokhorov
6f98861ce1 Merge pull request #2321 from mcspr/api/no-std-func
- share relay dummypin instance between relay objects, replace unique_ptr with basic pointer (as we never destroy things, everything is brought up on boot and is essentially static)
- reduce overall size of the Api (web_api_t) structure, store a single required unsigned char id inside of the Api object itself.
- drop std::function for the same reason, current implementation only needs a single u8 ID in all cases
- tweak internal functions to expect a certain path size, drop strange comparisons with sprintf return value
- (kind of a hack) add manual calls to vector<Api>::reserve() as we go over the current capacity and vector increases it's size times 2. e.g. for 9 relays, we would allocate space for 32 Api objects as vector size goes from 16 to 32, after we add 18 Api objects with relay + pulse
- (breaking) json calls on a separate path, don't waste time encoding a single entity as json object when we can encode more things
- rfbridge API learn will return the current status instead of a plain OK
2020-08-13 17:43:51 +03:00
Max Prokhorov
69c65a6a40 wifi: softap dhcp leases (#2320)
Remember MAC for the current IP sequence number
(e.g. lease 0 -> xxx.xxx.xxx.2, lease 1 -> xxx.xxx.xxx.3 and etc.)

~500 bytes of code
2020-08-13 17:42:38 +03:00
Max Prokhorov
b718636ecc Fix unused vars
As codacy points out, move stype and switchType to the LIGHT_PROVIDER != NONE block
2020-08-13 17:00:30 +03:00
Maxim Prokhorov
d03f8a7399 rfb: let API show learning status 2020-08-13 16:54:37 +03:00
Maxim Prokhorov
f3c185cc73 api: rework storage & json calls, drop std::function
- reduce overall size of the structure, store a single required entity
  inside of Api object itself.
- tweak internal functions to expect a certain path size
- (kind of a hack) add manual calls to vector<Api>::reserve() as we go over
  the current capacity and vector increases it's size times 2.
  e.g. for 9 relays, we would allocate space for 32 Api objects
  when vector size goes from 16 to 32, after we add 18 Api objects with relay + pulse
- (breaking) json calls on a separate path, don't waste time encoding
  a single entity as json object when we can encode more things
2020-08-13 16:54:36 +03:00
Maxim Prokhorov
a453aa1296 relay: share dummypin instance
- no need for smartptr when instance is static
- default ctor, set default values in the body
2020-08-13 16:53:52 +03:00
mkozlowski
fe6386cfe9 Allow domoticz dimmer device to control LIGHT_PROVIDER_DIMMER brightness 2020-08-11 23:31:41 +02:00
m-kozlowski
f849dc4111 domoticz: fix idx truncation when reading from settings (#2316)
Co-authored-by: mkozlowski <gitcmt@empeka.pl>
2020-08-11 15:32:37 +03:00
Max Prokhorov
2b69c7eb6d rpn: update to rpnlib 0.24.1 (#2314)
* rpn: bump to rpnlib 0.24.1

- `i` and `u` suffixes for numbers in expressions, parse as Integer or Unsigned respectively
- `checkedTo...()` method variants for numeric conversions
- strings can contain escape sequences (\x61\x62\x63, \n, \t, \r)
- improve float number parsing
- more consistent whitespace checks, tokens also can be separated by \n or \t
- various parser fixes

* fix captures
2020-08-10 20:13:12 +03:00
Max Prokhorov
1df4a1aaa2 debug: use rfc5424 format when adding syslog header (#2315) 2020-08-10 20:12:18 +03:00
Max Prokhorov
8510f77d12 pio: use gcc10.1 package from registry
ref.
https://github.com/platformio/platform-espressif8266/issues/224#issuecomment-667053958
https://bintray.com/platformio/dl-packages/toolchain-xtensa/2.100100.200706
2020-08-02 13:36:15 +03:00
Max Prokhorov
35305f1f36 Update rpnlib to 0.23.x (#2274)
## [0.23.0] 2020-07-26
### Added
- `p` operator to print the top of the stack via debug function
- `&var` syntax to create variable reference in expression
- `=` operator for variable assignment in expression
- `exists` operator to check for variable existance (only for references)
- `deref` operator to convert variable reference into a value (only for references)
- Allow to use either float or double as floating type, parse numbers in expressions as specified type
- Add boolean type, parse `true` and `false` in expressions
- Add null type, parse `null` in expressions
- Add string type, parse double-quoted `"string"` in expressions
- Add integer and unsigned integer type, used in operators
- Allow to configure underlying types from rpnlib\_config.h and -D... flags
- Return `rpn_error` from operators, split error types into categories
- Create a new stack by using `[` keyword. Move stack contents into the previous stack + size by using `]`.

### Changed
- Stack structure no longer holds raw `float`, but internal `rpn_value` type
- rpn\_... setter and getter methods use `rpn_value` type
- Operator functions return `rpn_error` type, allowing to return both value and operator errors
- Variables in expressions are no longer required to exist when using `&var`
  Expression will automatically create the variable, set it to `null` and push it's reference on the stack
- It is possible to create 'reference' stack values
- Improve precision of `e` and `pi`

### Fixed
- Proper value for `e` constant
- Allow to use multiple contexts simultaniously, replace `rpn_error` and `rpn_debug_callback`
  with the current `rpn_context` members `error` and `debug_callback` respectively
2020-08-02 13:14:44 +03:00
Rui Marinho
15819d7c18 general.h: fix comment typo (#2311) 2020-08-02 09:13:52 +03:00
Rui Marinho
6266930a4d sns: Add BME680 (#2295)
Add support for BME680 using libalgobsec proprietary algorithms for precise Indoor Air Quality (IAQ) measurement. Unlike traditional CO2 sensors - and good ones are expensive - it measures nearly all VOCs compounds in the air (plus other gases) and compensates those measurements with its built-in temperature and humidity sensors to determine indoor air quality.

Co-authored-by: Max Prokhorov <prokhorov.max@outlook.com>
2020-08-02 09:12:38 +03:00
Maxim Prokhorov
6919d11eca utils: fix hexEncode / hexDecode out-of-bounds index
Using generic size type instead of unsigned char
2020-07-25 04:44:44 +03:00
Maxim Prokhorov
5e5d0d0dd7 relay: don't init RelaysMax relays when using rfbridge provider 2020-07-25 04:44:44 +03:00
Rui Marinho
ea111c4cf2 sns: set pH decimals to 3 (#2306) 2020-07-19 23:30:59 +03:00
Max Prokhorov
2dcb5ea748 sns: revert "Power factor fixes" (#2304)
This reverts commit d57eb0721b.

We can use raw value as-is. While the lack of unit is true for the value represented as cos θ , we don't specifically have any other sensors using it as such. As comment suggest (huh), we want to express the thing as a percentage.
2020-07-18 18:55:19 +03:00