Commit Graph

1030 Commits

Author SHA1 Message Date
a34f90bcbb DS3231 RTC driver embedded in "local clock" (PR#1729) (#1792)
* Try NTP split update to actual source

* fix windows makefiles and timed_events

* fix typo

* Fix sprintf format

* sprintf format - next try to fix for ESP and ESP8266

* sprintf - special case for ESP8266

* Adding GUI button to set clock

* fix

* Add debug output

* fix missing HTTP output
use original obk_config.h - only renaming functions - to see filesizes

* limit functions to NTP ode CLOCK present

* try fix selftests

* Enable simple clock for all platforms, even if NTP is not enabled

* test fixing merge-conflict

* try fixing merge conflicts #1

* try fix merge conflict

* Fix typos
consolidate time display on main page
fix double comments preventing several documentation details ($mday, $month ...) on docs/constants.md
enabling more time stuff for W800 for local testing.

* Fix setDST argument passing

* only test DST if clock is running

* Fix setting epoch time - use atol(<string arg>) instead of Tokenizer_GetArgInteger(0) for epoch
Change user_main.c to use xticks as uptime for g_secondsElapsed

* Fix g_secondsElapesd for Windows - no xTicks there so stick to old way with g_secondsElapesd++ here ...

* Fix simulator build
remove additional defines for W800 used for testing

* Use esp_timer_get_time() instead of xTicks for ESP.
Seems much better, 30 seconds difference in one day
(used to be over 10 minutes off in 12 hours)

* Include DS3231 code

* Include DS3231 RTC driver

* Try simple fix for TXW81X without RTOS

* Second try fix TXW81X

* Fix comments for doc

* fix obk_config (still using "#define ENABLE_NTP_SUNRISE_SUNSET" instead of new "#define ENABLE_CLOCK_SUNRISE_SUNSET")
fix RDA5981
(as already done in branch Split_NTP_new)

* fix deviceclock code for corrected #define

* enable DS3231 driver for all platforms to test compilation and compare sizes

* fix selftest DST and sunrise/sunset (command names are "CLOCK_..." not "NTP...")

* Fix selftest for DST and sunset/sunrise events

* Add debug to try fixing selftest issue

* more debug

* Disable bedug output after fix.

* Disable DS3231 for all platforms. To tes, use previous commit

* Fix comments and handling of year when setting time of DS3231
Switch to internal time functions to reduce flash usage (avoid gmtime and mktime)

* Fix direct acces of NTP-time via g_ntpTime - use function "Clock_GetCurrentTime()"
switch to obktime instead of time.h "gmtime"

* Fix missing include for deviceclock and obktime

* made ds3231 driver dependent on "#define ENABLE_DRIVER_DS3231"
change "deviceclock.c" to set DS3231 RTC on every clock set command if driver is running, so e.g. every NTP update will also adjust RTC time

* fix missing includes for DRV_IsRunning() and DS3231_SetEpoch()

* introducing DS3231_informClockWasSet(bool force) - called by drv_deviceclock whenever clock is set.
so DS3231 driver can ste the clock, if needed - using "force" will force setting (no supprise ;-))

* Fixes to drv_main.c (missing args for onHassDiscovery)
Fixed missing arg "bPreState" in XX_AppendInformationToHTTPIndexPage()
Changed name from CLOCK to TIME
changed some "gmtime" to obktime "calculateComponents()a

* fixes

* fix obk_config.h

* fix missing include

* fix include for drv_txw81x_camera.c

* Directly call TIME "driver" functions, but don't use as real driver - so hiding it's presence in GUI

* fix missing OnEverySecond for TIME

* Prepare for merge: disable DS3231 driver for all platforms

* fix broken obk_config.h

* revert unintended change of src/driver/drv_max72xx_single.c
2025-12-04 14:46:51 +01:00
a23e4183c2 Fix missing "onHassDiscovery" and "XX_AppendInformationToHTTPIndexPage()" (#1877)
* Fix missing "onHassDiscovery" and "XX_AppendInformationToHTTPIndexPage()"

Fixes to drv_main.c (some missing args for "onHassDiscovery") - changed format to have one line per argument and driver
Fixed missing arg "bPreState" in some XX_AppendInformationToHTTPIndexPage() functions

* fix getcommands for new structure of drv_main.c (commands may be mutliple lines long)

* Make comments for "duplicate" drivers more readble

* Fix sourcefiles for documentation done with getcommands.js
Mainly missing comments or comments "contradicted" by function calls

* fixed one missed comment

* Fix path in descriprion command
make getcommands.js testing duplicates for content
 - if content (=documentation) is equal, show that ist potentially safe to ignore
2025-12-03 16:01:28 +01:00
30c8fc1a93 TCL AC - gen setting (reported as working by user) 2025-11-26 22:57:33 +01:00
deb6c7352a led_dimmerScale command so you can reduce LED heating but still hide it from HA/UI (it reduces brightnerss at 100% UI 2025-11-25 18:16:14 +01:00
22daaeb07e sm2235 add currents 2025-11-25 15:59:14 +01:00
e9e20ed445 esp8266 ADC, EEPROM driver, max7219 simulator
* test

* Update workflow.yaml

* t

* makes

* Update drv_simpleEEPROM.c

* Update drv_simpleEEPROM.c

* ber

* Update workflow.yaml

* tt

* ber

* charts

* owm

* tt

* rem charts

* smaller

* test

* test

* fixes

* test

* charts

* comments

* test

* tt

* test

* add file to proj

* try to add pin 13 as ADC (testing in progress)

* test

* test

* MAX7219 simulator HACK

* final fixes

* Update drv_max72xx_internal.c

* restore

* fx
2025-11-23 14:01:04 +01:00
c31cdd9d1c berry time and openweathermap access with self tests
* test

* owm

* fix

* test

* test
2025-11-20 13:30:13 +01:00
2086cb84fc Implementation of girier MCU driver for 2ch dimmer (#1846)
* Implementation of girier MCU driver for 2ch dimmer

* Fixed review notices

* makefiles

* dpType = 0; // TODO - uninitialized

* header

* add to vcproj

* header

* #if ENABLE_DRIVER_GIRIERMCU

* clear

---------

Co-authored-by: Tester <85486843+openshwprojects@users.noreply.github.com>
2025-11-18 22:00:19 +01:00
99cb33dae0 fx 2025-11-16 23:23:04 +01:00
59c6156d88 DP_TYPE_RAW_TAC2121C_VCP 2025-11-16 23:11:55 +01:00
60ca11183f Add support for Frequency variable in AddChangeHandler (#1853)
* add support for frequency variable in AddChangeHandler

* bl0942 frequency variable rounding correction

* move frequency to last args for VCPPublishThreshold

* frequency selftest precision adjustments

---------

Co-authored-by: kcstonacek <stonacek@stonacek.nz>
2025-11-11 21:35:39 +01:00
8be0c3bb6c uart cosmetic fixes
* fx

* tttttttttttttttt

* dis
2025-11-11 21:31:31 +01:00
f2c87bf690 merge max72xx clock progress and i2c pinwide scanner and misc fixes
* MAX72XX

* better

* faster buof

* eext

* test

* fx

* fxes

* tr

* fx

* Update drv_max72xx_clock.c

* fxes

* test

* fxes

* tests fxes

* fxes

* scr

* fx

* Update drv_local.h

* show

* Update drv_max72xx_clock.c

* test

* Delete lastEnumTemplate.txt

* TEST

* scan

* Update drv_main.c

* Update obk_main.cmake

* Update drv_multiPinI2CScanner.c

* dbg

* fxes

* Update drv_multiPinI2CScanner.c

* Update drv_multiPinI2CScanner.c

* Update drv_multiPinI2CScanner.c

* owm

* osm test

* restorew platfotms

* Update selftest_openWeatherMap.c

* test

* getter

* Update obk_config.h
2025-11-11 16:27:13 +01:00
73bbc45126 merge partition search driver (disabled by default)
* test

* search

* fx

* fx1

* enavble

* Update obk_main.mk

* 0x200000

* Update drv_bkPartitions.c

* chk

* crc

* finalize

* fxes
2025-11-04 20:29:54 +01:00
c23984d7e3 If we have both daylight saving time (DST) and sunset/sunrise calculation, (#1843)
a DST switch should fix the upcomming sunset/sunrise events
(which were calculated before the switch, hence with "old" time.)
Added one simple test case
2025-10-29 18:56:26 +01:00
689a97c3c9 UART tcp usage comment 2025-10-18 17:13:21 +02:00
1a291a82ad fix handling of "sunset" events (#1834)
* fix handling of "sunset" events:

Old code was

if (e->sunflags & (SUNRISE_FLAG || SUNSET_FLAG)) {

This will ignore sunset events ( SUNSET_FLAG = 1 << 1)
for the or of two values ( 1 || 2) is always true
and will result in testing (sunflags & 1)
so never true for sunset (2 & 1) is false.
probaly meant

if ((e->sunflags & SUNRISE_FLAG) || (e->sunflags & SUNSET_FLAG))

but it's sufficient to check is "sunsetflags" is not 0, so simple fix:

if (e->sunflags){

Additionally added code to change liste vents ("listClockEvents") so it also shows if a time is derived from sunset or sunrise:

before the output would be like:

Info:CMD:Ev 32 - 7:31:0, days 0xff, cmd setChannel 0 0
Info:CMD:Ev 31 - 19:7:0, days 0xff, cmd setChannel 0 1

and you won't see this is an "dynamic" time. Now it's (I also used %02i to fix time format)

Info:CMD:Ev 32 - 07:31:00 (sunrise), days 0xff, cmd setChannel 0 0
Info:CMD:Ev 31 - 19:07:00 (sunset), days 0xff, cmd setChannel 0 1

* forgot to commit fix for time display using "%02i" for hours, minutes and seconds
2025-10-17 10:08:41 +02:00
993a46a19d better uart debug 2025-10-10 19:26:49 +02:00
5ea4a6c5b9 test 2025-10-10 19:24:35 +02:00
c208c19f3e ttuyamcu noread flag (#1820)
* noread

* fx

* ping pong mode for addChannel

* Update new_pins.c

* test
2025-10-09 15:59:44 +02:00
4a2ae013ed HLW8112 Driver for energy measurments (#1810)
* initial test driver for hlw8112

Signed-off-by: Nizam <code@maxters.net>

* restrict build to BK7231N
will stub other platforms later

Signed-off-by: Nizam <code@maxters.net>

* fix newer gcc build

Signed-off-by: Nizam <code@maxters.net>

* fix channel b stat restore
after all i still doesnt get pointer arithmetic

Signed-off-by: Nizam <code@maxters.net>

* clean up flashvar bk7231 still use emetering struct to store data

Signed-off-by: Nizam <code@maxters.net>

* fix OpenBK7231N_ALT build fail

Signed-off-by: Nizam <code@maxters.net>

* disable incomplete spi device raw access commands and ui

Signed-off-by: Nizam <code@maxters.net>

* remove mqtt hack for commands. leverage existing tasmota command framework

Signed-off-by: Nizam <code@maxters.net>

* missed flashvar restore

Signed-off-by: Nizam <code@maxters.net>

* disable hlw812 driver for upstream pr

Signed-off-by: Nizam <code@maxters.net>

---------

Signed-off-by: Nizam <code@maxters.net>
2025-09-30 15:04:15 +02:00
6083ddfca5 RDA5981 (#1813) 2025-09-29 08:41:36 +02:00
17cc6353b6 change JSON for multiple DS18B20 (#1811)
* first try to set sensor output like tasmota, but add "name"

* Use extended tasmota style: Name + Tasmota-Id

* switch to "plain" tasmota style (only tasmota-Id aditionally to temperature)

* fix numbering - Tasmota starts with "DS18B20-1" not with "DS18B20-0"
2025-09-29 08:22:51 +02:00
c1d258fb60 Add DS1820 to JSON sensor output (#1809)
* first try for DS1820 sensors

* fix windows build

* Fix wrong comment format

* Fix code

* fix missing includes

* fix missing defines (only check if driver is included)

* Add DS1820 to sensors in "DRV_IsSensor
Fix string might be not empty

* fix output for long string in case of many DS1820 sensors
2025-09-27 09:15:20 +02:00
ce9e6c1443 txw81x configurable i2c pins and hi704 sensor (#1801) 2025-09-20 08:25:56 +02:00
38f4d51557 finalizing dmx , aliases
* ENABLE DMX on ESP

* test

* s

* Update hal_uart_espidf.c

* Update obk_main.cmake

* w

* test

* Update hal_uart_espidf.c

* Update drv_dmx512.c

* test

* test

* test

* w

* t

* c

* t

* test

* T

* Update drv_dmx512.c

* test

* test

* try flush

* try wait

* ticks w

* t

* fx

* 100 ms

* SIM fx

* Update cmd_newLEDDriver.c

* test 2x

* tests

* fixes

* free

* fix

* misc

* b

* hal

* s

* Update workflow.yaml

* pin

* fin

* test

* Update hal_uart_espidf.c

* t
2025-09-15 13:17:21 +02:00
481cc0ede2 DMX works on ESP32 LilyGO, other platforms requires porting code to change baudrate
* ENABLE DMX on ESP

* test

* s

* Update hal_uart_espidf.c

* Update obk_main.cmake

* w

* test

* Update hal_uart_espidf.c

* Update drv_dmx512.c

* test

* test

* test

* w

* t

* c

* t

* test

* T

* Update drv_dmx512.c

* test

* test

* try flush

* try wait

* ticks w

* t

* fx

* 100 ms

* SIM fx

* Update cmd_newLEDDriver.c

* test 2x

* tests

* fixes

* free

* fix

* misc

* b

* hal

* s

* Update workflow.yaml

* pin

* fin

* test

* Update hal_uart_espidf.c
2025-09-14 21:07:24 +02:00
c5116a4f2b fix getcommands.js (#1788)
* fix getcommands.js

Fix parsing
don't overwrite source files but generate alternate file

* Fix comments so "getcommands.js" won't complain.
Hpoe I got descriptions right ...

* Some more comments to fill "qqq" fields ...

* Fix getcommands.js generatind fn-entries for registered commands

Fix all source files with wrong "NULL);" as fn

* add some more tests to getcommands.js to verify commands:
	check filename of command
	check fn called
some more fixes to documentation commands as result from above tests
2025-09-09 21:53:07 +02:00
f68c6ac9f2 al;low empty entries in led remap (#1789)
* test

* some verification

* ha disc?
2025-09-06 10:30:11 +02:00
78ce33f01f prepare for I2C LED channels skip 2025-09-05 18:58:18 +02:00
6ee5729064 Changing HAL_Delay_us for Beken (#1727)
* Apply changes for Bekens HAL_Delay_us() as proposed in #1579 by @rpv-tomsk
Add TEST command to simply test usleep on a given pin

tested on BK7231N to work with both drivers (I am aware of) using HAL_Delay_us
DS1820 and DHT (tested on DHT11 only)

Timing on BK7231N looks really good with this driver, at least for usleep > 6 its allways 2 us more:

tested	read by analyzer

500	502
200	202
100	102
 50	 52
 20	 22
 10	 12
  6	  8
  4	  7

Now it's time to test on other Beken platforms, too

* Not working on BK7238 - trying to remove special case for lower usleep, since times are way to small here

* still not working on BK7238 - usleep ok fur > 50 , will not be below 30us according to my tests
so try to use the other approach for 7238, too

* No success on BK7238 - trying once again to use "usleep()" to find a factor with analyzer.

* try factor 6 for BK7238 (HAL_Dely_us(x) -> usleep(6*x))

* Testing factor 6.4 for BK7238

* Fixing BK7252  build not working, simply use original for code

* Restore original code for BK7252

* Change timing for BK7525

* Next try to adjust factors for BK7525

* fix typo

* Add adjustment for powersave on BK7238

* Update obk_config.h - disable ENABLE_DS1820_TEST_US
2025-09-04 18:05:57 +02:00
ea8f7e2617 Beken 3.0.78 (#1775)
* 3.0.78

* mbedtls play

* bk7252 tuya
2025-09-03 13:50:26 +02:00
0d007112b1 TXW817 support (#1779)
* txw81x base no makefile

* txw81x

* gpio fix?

* non-working ota

* mic
2025-09-03 11:46:06 +02:00
948237869f LN882H IR (#1783) 2025-09-03 11:45:24 +02:00
f3d3ff412a BL602 irRemoteESP (#1777) 2025-08-30 21:24:04 +02:00
6ea915a574 prelimary support for DDP sending - not tested outside simulator
* ddp send stub etc

* queue

* Update drv_ddp_send.c

* sender

* Update drv_ddp_send.c

* q

* enable

* fx

* test

* fx

* Update selftest_ws2812b.c

* Update drv_ddpSend.c

* Update drv_ddpSend.c

* hder

* test - will udp send adn receive work on github workflw?

* better wait method for self test
2025-08-29 20:18:31 +02:00
670798a83a merge LED strip backend separation before DMX support
* stub

* clear

* clear upo

* one more test

* split

* fx

* Update drv_led_shared.c

* step

* split

* Update drv_leds_shared.c

* Update selftest_ws2812b.c

* port

* dmx

* DMX

* s

* with test

* fix

* fx

* ChType_Ph test and RGBW test

* ddp formats unfinished

* Update selftest_ws2812b.c

* Update selftest_hass_discovery_ext.c

* fxes
2025-08-28 21:52:59 +02:00
f9134dd3ac BK IR fix? (#1771)
* BK IR fix?

* ir fix
2025-08-27 08:49:45 +02:00
f8b98ca0ff cosmetic only - finally move hal interrupts to _pins files
* moive out

* fixes

* fs

* f1

* fx

* fx?
2025-08-26 12:26:49 +02:00
707bd127ac Split interrupts code into HAL - part 1
* bl602 test

* w600 test

* simplify

* rtl clear

* t

* draft for beken etc

* draft w600

* fxes

* fxes bl602

* realtek

* fx bl_gpio_intmask

* xradio

* esp

* gpio_isr_handler_add cast

* not needed

* reorg

* fx

* ecr

* fxes

* almost?

* HAL_DetachInterrupt fx

* newline

* use hal_pins.h

* counter

* silly fx

* Update hal_pins.h

* XR FIX? HOW I DIDN'T SEE THAT EARLIER

* guard for double call of HAL_DetachInterrupt

* do not do much in interrupt handler routine, apply deltas in quick tick

* try w800 blindly

* try

* tls_clr_gpio_irq_status

* try intptr_t to see if it compiles

* call tls_clr_gpio_irq_status  first?

* fx 2 omg

* frgot

* change to pullup input by default, add partially counter_r

* more

* ADD POS/NEG EDGE FOR MORE PLATFORMS

* esp
2025-08-24 17:29:17 +02:00
e6dbea6007 simple TCA9554 driver, enabled by default on 4MB ESP32, for Waveshare barrd
* TCA9554

* fx

* proj

* makeff

* io

* better

* fx

* TCA9554 almoisy

* test

* fx
2025-08-22 09:07:28 +02:00
4d42d8bf43 SM16703P_setPixel out of range crash fix 2025-08-21 14:45:31 +02:00
9adcd9950f Realtek/BL602 spi led (#1763)
* realtek spi led

* fix RTL_A and RTL_B

* fix esp version

* Update docs
add missing esp8266 pins

* bl602 spi led

* fix

* deinit

* bl602 miso swap
2025-08-18 20:37:18 +02:00
36218fd38e ota cosmetic (#1762)
* step 1

* Update obk_main.mk

* Update OpenBeken.mk

* Update obk_main.cmake

* Update hal_ota_bk7231.c

* Update hal_ota_bk7231.c

* m

* split

* guards

* Update hal_ota_bl602.c

* Update hal_ota_bl602.c

* bk

* better

* header

* w

* TMP

* tttttttt

* Update rest_interface.c

* hal_ota is xradio header....

* undoi

* header

* move

* xradio

* read

* fx

* t

* makefile

* move out xradi o read

* fx

* move out esp

* move out bl602

* move out beken, ln

* move out w8

* ecr tr

* realtek

* Update rest_interface.c

* win

* forgot

* tr6260 split

* Update hal_ota_tr6260.c

* rename ota_progress

* use OTA_GetProgress on all paltforms

* fx

* not needed header

* call OTA_IncrementProgress on OTA so we at laest know that something is happening
2025-08-16 16:04:57 +02:00
a1501c00c4 RTL8721DA (AmebaDplus) and RTL8720E (AmebaLite) (#1718)
* amebadplus

* fix + amebalite

* ota, lfs, fast connect fix

* Fix TCP_MSL and hostname

* Readme and releaserc
fix esp irq

* small fixes

* setting mac on amebad/1

* ameba ir

* win ef

* update sdk & disable rtl8720e rest ota

* fix
2025-08-12 17:28:36 +02:00
94812a2587 BK7231T/U/ESP32/LN882H SPI LED (#1749)
* BK7231U/T_ALT SPI LED

* esp32 spi led dma

* ln882h led spi dma

* simplify

---------

Co-authored-by: Tester23 <85486843+openshwprojects@users.noreply.github.com>
2025-08-10 14:46:01 +02:00
0fb70227df add pinmutex driver (potentially for shutters); disabled by default
* draft

* Update drv_pinMutex.c

* working with self test?

* Update selftest_cmd_generic.c

* ENABLE_DRIVER_PINMUTEX on beken

* ChType_StopUpDown

* addRepeatingEventUID

* rest

* Update obk_config.h
2025-08-10 14:27:26 +02:00
3ccd7c293c Platforms.md WPA3 updates (#1754)
* Update drv_ir_new.cpp

* Update hass.h - add missing  "hass_init_textField_info()" to avoid breaking ESP builds 

ESP builds with "-Werror=implicit-function-declaration", so we get

 error: implicit declaration of function 'hass_init_textField_info';

* Update platforms.md - wpa3

* Update platforms.md

* revert ameba1 wpa3 to unknown

---------

Co-authored-by: MaxineMuster <146550015+MaxineMuster@users.noreply.github.com>
2025-08-10 08:45:57 +02:00
4b5a80312c restore original tuyamcu led behaviour by setting g_tuyaMCU_allowAutomaticSending from PR to true by default 2025-08-09 23:42:08 +02:00
a358187f32 fixes p1 2025-08-09 22:39:48 +02:00