Skip to content

Windows I2C simulator / SHTxx driver / GUI and tokenizer extension / Fix Linux simulator webif#2021

Open
MaxineMuster wants to merge 3 commits intoopenshwprojects:mainfrom
MaxineMuster:_WIN_SIM_I2C
Open

Windows I2C simulator / SHTxx driver / GUI and tokenizer extension / Fix Linux simulator webif#2021
MaxineMuster wants to merge 3 commits intoopenshwprojects:mainfrom
MaxineMuster:_WIN_SIM_I2C

Conversation

@MaxineMuster
Copy link
Contributor

@MaxineMuster MaxineMuster commented Mar 9, 2026

Add Windows I2C simulator for BMP280/BME28, AHT2X, SHT3x/SHT4x, CHT83xx
Add SHTxx driver to serve (multiple) STH3x / SHT4x sensors
Add extension to tokenizer to allow "named" arguments like "SDA="
Add command to "register" a pin as used by a driver w/o an IOrole set in webif

Add SHTxx driver to server (multiple) STH3x / SHT4x sensors
Add extension to tokenizer to allow "named" arguments like "SDA=<pin>"
Add command to "register" a pin as used by a driver w/o an IOrole set in webif
@MaxineMuster
Copy link
Contributor Author

MaxineMuster commented Mar 9, 2026

Windows: Add I2C simulator for BMP280/BME28, AHT2X, SHT3x/SHT4x, CHT83xx
Adding a simulated sensor with
Sim_AddI2Csensor SCL=[SCL-pin] SDA=[SCL-pin] address=[I2C address] type=[SHT3x|SHT4x|bmp280|bme280|aht2x|CHT83xx|CHT8305|CHT8310|CHT8315]

Examples:


	 Sim_AddI2Csensor type=SHT3x SCL=24 SDA=17 address=0x45
	 Sim_AddI2Csensor type=SHT4x SCL=26 SDA=16 			// using default address 0x44
	 
	 Sim_AddI2Csensor type=AHT2x SCL=16 SDA=26			// using default address 0x38
	 
	 Sim_AddI2Csensor type=bmp280 SCL=17 SDA=27 address=0x76
	 Sim_AddI2Csensor type=bme280 SCL=15 SDA=25 address=0x76
	 
	 Sim_AddI2Csensor type=CHT83xx SCL=17 SDA=27			// using default address 0x40
	 Sim_AddI2Csensor type=CHT8305 SCL=15 SDA=25 address=0x40
	 Sim_AddI2Csensor type=CHT8310 SCL=16 SDA=26			// using default address 0x40
	 Sim_AddI2Csensor type=CHT8315 SCL=18 SDA=28 address=0x40

Add SHTxx driver to serve (multiple) STH3x / SHT4x sensors

Starting driver with
startDriver SHTXX SCL=[SCL-pin] SDA=[SCL-pin] address=[I2C address] chan_t=[temperature channel] chan_h=[humidity channel] type=[3|4]

Adding additional sensors:
SHTXX_AddSensor SCL=[SCL-pin] SDA=[SCL-pin] address=[I2C address] chan_t=[temperature channel] chan_h=[humidity channel] type=[3|4]

Examples:

	startDriver SHTXX SCL=13 SDA=23 chan_t=2 chan_h=3 type=4		// using default address 0x44
	SHTXX_AddSensor SCL=14 SDA=24 chan_t=4 chan_h=5 type=3 address=0x45 

Extended CHT35XX to allow setting pins and channels by CMD:
startDriver CHT83xx SCL=[SCL-pin] SDA=[SCL-pin] chan_t=[temperature channel] chan_h=[humidity channel]

Example:
startDriver CHT83xx SCL=17 SDA=27 chan_t=2 chan_h=3

Add extension to tokenizer to allow "named" arguments like "SDA="
see above - used for SHTXX and CHT35xx driver

New commands (since we don't know if the argument is present, we always provide a default to return if argument is missing):

const char *Tokenizer_GetArgEqualDefault(const char *search, const char *def);
int Tokenizer_GetArgEqualInteger(const char *search, const int def);
int Tokenizer_GetPinEqual(const char *search, const int def);

Add command to "register" a pin as used by a driver w/o an IOrole set in webif
setPinUsedString(PIN, [string to show as usage in webif]);
Used e.g. in SHTxx driver with

	setPinUsedString(dev->i2c.pin_clk, "SHTXX SCL");
   	setPinUsedString(dev->i2c.pin_data, "SHTXX SDA");

Example in Windows simulator with

	backlog Sim_AddI2Csensor type=CHT8305 SCL=17 SDA=27;  startDriver CHT83xx SCL=17 SDA=27 chan_t=2 chan_h=3
	backlog Sim_AddI2Csensor type=bme280 SCL=11 SDA=21 address=0x76 ;startDriver BMP280 11 21 6 7 236
	backlog Sim_AddI2Csensor type=SHT3x SCL=14 SDA=24 address=0x45; Sim_AddI2Csensor type=SHT4x SCL=15 SDA=25; startDriver SHTXX SCL=14 SDA=24 chan_t=4 chan_h=5 type=3 address=0x45;  SHTXX_AddSensor SCL=15 SDA=25 chan_t=8 chan_h=9 type=4;

Bildschirmfoto vom 2026-03-09 20-56-22

simulated sensors on WebPage:

Bildschirmfoto vom 2026-03-09 20-56-45

Mainly a wrong replacement for Sleep (sleeping seconds(!) instead of ms)
Main_Init() and HTTPServer_Start() was never called (missing OBK_Start) onLinux
@MaxineMuster MaxineMuster changed the title Windows I2C simulator / SHTxx driver / GUI and tokenizer extension Windows I2C simulator / SHTxx driver / GUI and tokenizer extension / Fix Linux simulator webif Mar 12, 2026
@MaxineMuster
Copy link
Contributor Author

Linx Webif (with simulated I2C sensors like Windows simulator):

grafik

now supports
-XY 23
and
XY=23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant