qtstyleplugin-kvantum-qt4: 1.0.1 -> 1.0.4

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/tsujan/Kvantum/releases.
meta.description for qtstyleplugin-kvantum-qt4 is: "SVG-based Qt4 theme engine"
meta.homepage for qtstyleplugin-kvantum-qt4 is: "https://github.com/tsujan/Kvantum"
meta.changelog for qtstyleplugin-kvantum-qt4 is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.0.3 in filename of file in /nix/store/xfv5s3dff3b2mg8f0n2f6jqkg00c1by4-qtstyleplugin-kvantum-qt4-1.0.3

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
qtstyleplugin-kvantum-qt4

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xfv5s3dff3b2mg8f0n2f6jqkg00c1by4-qtstyleplugin-kvantum-qt4-1.0.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A qtstyleplugin-kvantum-qt4 https://github.com/r-ryantm/nixpkgs/archive/1f74d84bfc68d5451f38aba726481544cc1055f1.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xfv5s3dff3b2mg8f0n2f6jqkg00c1by4-qtstyleplugin-kvantum-qt4-1.0.3
ls -la /nix/store/xfv5s3dff3b2mg8f0n2f6jqkg00c1by4-qtstyleplugin-kvantum-qt4-1.0.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

qtstyleplugin-kvantum-qt4

Maintainer pings
cc @bugworm for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/tsujan/Kvantum/releases.
meta.description for qtstyleplugin-kvantum-qt4 is: "SVG-based Qt4 theme engine"
meta.homepage for qtstyleplugin-kvantum-qt4 is: "https://github.com/tsujan/Kvantum"
meta.changelog for qtstyleplugin-kvantum-qt4 is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.0.4 in filename of file in /nix/store/ag8gq7ii7vxiaxxzq4a4wmvpdbpcd7jd-qtstyleplugin-kvantum-qt4-1.0.4

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
qtstyleplugin-kvantum-qt4

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ag8gq7ii7vxiaxxzq4a4wmvpdbpcd7jd-qtstyleplugin-kvantum-qt4-1.0.4 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A qtstyleplugin-kvantum-qt4 https://github.com/r-ryantm/nixpkgs/archive/066177e5a95af2dcdf26d701bc1c93f2630c61b9.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ag8gq7ii7vxiaxxzq4a4wmvpdbpcd7jd-qtstyleplugin-kvantum-qt4-1.0.4
ls -la /nix/store/ag8gq7ii7vxiaxxzq4a4wmvpdbpcd7jd-qtstyleplugin-kvantum-qt4-1.0.4/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

qtstyleplugin-kvantum-qt4

Maintainer pings
cc @bugworm for testing.

Result of nixpkgs-review pr 183785 run on x86_64-linux 1

1 package built:

qtstyleplugin-kvantum-qt4


Publish an updated image of microsoft/azure-functions-runtime

Am I in the right repo for this image (microsoft/azure-functions-runtime:2.0.0-nanoserver-1709)?
The latest update was six months ago and because of this issue the host runtime needs to be updated in order to work with Microsoft.NET.Sdk.Functions > 1.0.6.

Thanks!


Local file stopped working on Brave 1.59.117

After upgrading brave-browser from 1.57.64 to 1.59.117, the extension no longer opens up the local file on new tab, instead just opens a blank page.
Downgrading brave fixes the issue, so it's something they "broke" or "restricted" in one of later versions that probably needs to be accounted for on the extension side of things?
OS Info:
$ lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

$ uname -sr
Linux 6.2.0-34-generic

Could be related to https://github.com/jimschubert/NewTab-Redirect/issues/218 ?

Chrome introduced a new option for local file access. I assume the same option exists on Brave which is based on Chromium. See the screenshot in #222.
It's definitely related to #218 because to resolve that issue, the extension had to be updated to Manifest v3 since they no longer allow publishing of v2.

see https://github.com/jimschubert/NewTab-Redirect/blob/master/README.md#missing-local-files


[new] md-tabs improvements : md-tooltip

Improvement in md-tabs : Can display a tooltip (md-tooltip) on the tab header.

Doc update

The branch has a conflict. Could you fix this first?

@marcosmoura I changed the default value initialization with the last commit.
But for the conflit, i'm not very familiar with the git-pull requests so I don't really know how to do this. I think the conflit is only with the latest updates (the last pull request I made), but maybe i'm wrong?

Can you make sure to sync your fork here and here.

It seems to be ok right now :-)


Support for use Wifi Communication in Modbus Protocol for ESP32 (IDFGH-3730)

Hello, my friends. I used to program my ESP32 in the IDE Arduino, but now I have a project which is necessary to use the Eclipse IDE with the expressif IDF. So, I need to configure my ESP32 to act as a MODBUS SLAVE and communicate with an industrial PLC S71200, which is the Modbus Master. The communication needs to be via WI-FI. So, my ESP32 needs to connect to the AP Wi-fi by entering with the respective SSID and Password, and then establish a connection with the PLC. The problem is that I am a new programmer and I'm not getting this program done in the Eclipse. I've tried to change the ESP_IDF Example available abou Modbus Slave, but this example doesn't use Wi-Fi communication and I don't know how to change it for make my project works. Can someone help me? The program in the IDE Arduino is working perfectly. I will show  above the IDE Arduino code, that is correct. The ESP_IDF project template in the Eclipse that I am trying to adapt in order to do exactly what the Arduino one does is available in the folder Protocols/Modbus_Slave (which is the template's name).
(The point here is just try to adapt the Modbus_Slave template example in the ESP_IDF in order to use Wifi communication for connecting the ESP32 and then communicate with the Modbus Master via port 502 (The example uses UART comm and not Wifi).
//IDE Arduino Code (working perfectly)
/*

More Tutorials:
Website http://trialcommand.com
In English: http://en.trialcommand.com
En Español: http://en.trialcommand.com
*/
#include <WiFi.h>

const char* ssid = "Diego";
const char* password = "dgsp1618";
int ModbusTCP_port = 502;
//////// Required for Modbus TCP / IP /// Requerido para Modbus TCP/IP /////////
#define maxInputRegister 20
#define maxHoldingRegister 20
#define MB_FC_NONE 0
#define MB_FC_READ_REGISTERS 3 //implemented
#define MB_FC_WRITE_REGISTER 6 //implemented
#define MB_FC_WRITE_MULTIPLE_REGISTERS 16 //implemented
//
// MODBUS Error Codes
//
#define MB_EC_NONE 0
#define MB_EC_ILLEGAL_FUNCTION 1
#define MB_EC_ILLEGAL_DATA_ADDRESS 2
#define MB_EC_ILLEGAL_DATA_VALUE 3
#define MB_EC_SLAVE_DEVICE_FAILURE 4
//
// MODBUS MBAP offsets
//
#define MB_TCP_TID 0
#define MB_TCP_PID 2
#define MB_TCP_LEN 4
#define MB_TCP_UID 6
#define MB_TCP_FUNC 7
#define MB_TCP_REGISTER_START 8
#define MB_TCP_REGISTER_NUMBER 10
byte ByteArray[260];
unsigned int MBHoldingRegister[maxHoldingRegister];
//////////////////////////////////////////////////////////////////////////
WiFiServer MBServer(ModbusTCP_port);
void setup() {
pinMode(14, OUTPUT);
Serial.begin(115200);
delay(100) ;
WiFi.begin(ssid, password);
delay(100) ;
Serial.println(".");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
MBServer.begin();
Serial.println("Connected ");
Serial.print("ESP8266 Slave Modbus TCP/IP ");
Serial.print(WiFi.localIP());
Serial.print(":");
Serial.println(String(ModbusTCP_port));
Serial.println("Modbus TCP/IP Online");
}
void loop() {
// Check if a client has connected // Modbus TCP/IP
WiFiClient client = MBServer.available();
if (!client) {
return;
}
boolean flagClientConnected = 0;
byte byteFN = MB_FC_NONE;
int Start;
int WordDataLength;
int ByteDataLength;
int MessageLength;
// Modbus TCP/IP
while (client.connected()) {
if(client.available())
{
flagClientConnected = 1;
int i = 0;
while(client.available())
{
ByteArray[i] = client.read();
i++;
}
client.flush();
///// code here --- codigo aqui
///////// Holding Register [0] A [9] = 10 Holding Registers Escritura
///////// Holding Register [0] A [9] = 10 Holding Registers Writing
MBHoldingRegister[0] = random(0,12);
MBHoldingRegister[1] = random(0,12);
MBHoldingRegister[2] = random(0,12);
MBHoldingRegister[3] = random(0,12);
MBHoldingRegister[4] = random(0,12);
MBHoldingRegister[5] = random(0,12);
MBHoldingRegister[6] = random(0,12);
MBHoldingRegister[7] = random(0,12);
MBHoldingRegister[8] = random(0,12);
MBHoldingRegister[9] = random(0,12);
///////// Holding Register [10] A [19] = 10 Holding Registers Lectura
///// Holding Register [10] A [19] = 10 Holding Registers Reading
int Temporal[10];
Temporal[0] = MBHoldingRegister[10];
Temporal[1] = MBHoldingRegister[11];
Temporal[2] = MBHoldingRegister[12];
Temporal[3] = MBHoldingRegister[13];
Temporal[4] = MBHoldingRegister[14];
Temporal[5] = MBHoldingRegister[15];
Temporal[6] = MBHoldingRegister[16];
Temporal[7] = MBHoldingRegister[17];
Temporal[8] = MBHoldingRegister[18];
Temporal[9] = MBHoldingRegister[19];
/// Enable Output 14
digitalWrite(14, MBHoldingRegister[14] );
//// debug
for (int i = 0; i < 10; i++) {
Serial.print("[");
Serial.print(i);
Serial.print("] ");
Serial.print(Temporal[i]);
}
Serial.println("");
//// end code - fin
//// rutine Modbus TCP
byteFN = ByteArray[MB_TCP_FUNC];
Start = word(ByteArray[MB_TCP_REGISTER_START],ByteArray[MB_TCP_REGISTER_START+1]);
WordDataLength = word(ByteArray[MB_TCP_REGISTER_NUMBER],ByteArray[MB_TCP_REGISTER_NUMBER+1]);
}
// Handle request
switch(byteFN) {
case MB_FC_NONE:
break;
case MB_FC_READ_REGISTERS: // 03 Read Holding Registers
ByteDataLength = WordDataLength * 2;
ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.
ByteArray[8] = ByteDataLength; //Number of bytes after this one (or number of bytes of data).
for(int i = 0; i < WordDataLength; i++)
{
ByteArray[ 9 + i * 2] = highByte(MBHoldingRegister[Start + i]);
ByteArray[10 + i * 2] = lowByte(MBHoldingRegister[Start + i]);
}
MessageLength = ByteDataLength + 9;
client.write((const uint8_t *)ByteArray,MessageLength);
byteFN = MB_FC_NONE;
break;
case MB_FC_WRITE_REGISTER: // 06 Write Holding Register
MBHoldingRegister[Start] = word(ByteArray[MB_TCP_REGISTER_NUMBER],ByteArray[MB_TCP_REGISTER_NUMBER+1]);
ByteArray[5] = 6; //Number of bytes after this one.
MessageLength = 12;
client.write((const uint8_t *)ByteArray,MessageLength);
byteFN = MB_FC_NONE;
break;
case MB_FC_WRITE_MULTIPLE_REGISTERS: //16 Write Holding Registers
ByteDataLength = WordDataLength * 2;
ByteArray[5] = ByteDataLength + 3; //Number of bytes after this one.
for(int i = 0; i < WordDataLength; i++)
{
MBHoldingRegister[Start + i] = word(ByteArray[ 13 + i * 2],ByteArray[14 + i * 2]);
}
MessageLength = 12;
client.write((const uint8_t *)ByteArray,MessageLength);
byteFN = MB_FC_NONE;
break;
}
}
}

Thanks for raising this feature request.

Hi @diegopivoto,
I just completed implementation and preliminary testing of Modbus TCP Master/Slave support in ESP_IDF and it was merged recently. The stack allows to connect to network over Ethernet or WiFi (with using SSID and password) and esteblish Modbus TCP communication as Modbus master or slave. I can help you to create Eclipse ESP-IDF project for TCP slave application. Could you provide additional informtion:
I need to know what kind of data the PLC is going to access and Modbus register map for your slave device.
Once you provided the specification of your future slave device I will help you to create your TCP slave project.
If it is enough for you to simply access ten holding registers of your device (as in the code above) I can provide this. But the modbus controller interface in the stack could provide access to complex parametrs in your device memory. You could create the structure in your code for example and allow PLC to read and write these parameters over Modbus TCP.  Then you can easily access its data.
Thanks.

Dear @alisitsyn
Thank you so much for this. It will help a lot! So, my project is about a Master Degree Thesis, which I will implement a Future Internet Architecture (FIA) that allows the user to access industrial data remotely and then change industrial parameters. For example, an user that wants to read the status ON/OFF of a Lamp (Action 1) or to change the status of a motor from ON to OFF (Action 2) remotely: This user, with a remote PC with the FIA, sends the Action that he wants to do (i.e., Action 1 or 2) to the ESP32. The chosen Action will be linked with a Holding Register (HR). For example, if the user wants the Action 1, the HR_0 will receive value 1, and if the user wants the Action 2, the HR_1 will receive the value 1 (just an example to simplify). Finally, these HRs values will communicate with a PLC Siemens S71200 via Modbus TCP and then the actions will occur with the PLC code later. What I really need for now is just a program able to process the HRs and communicate with the PLC. So, I think that access 10 HRs as described in the code above is enough for now. But, my PLC is connected with the internet via Ethernet cable, while my ESP32 is connected with the Internet via Wifi by addressing the SSID and Password. If you think that there is another way to do this more easily or in a more interesting way, as you cited the possibility of create a structure in conde to allow PLC to read/write the fields over Modbus TCP, I am accepting suggestions, because I'm new in this area.
Thank you very much and sorry about the big text, but I try to explain as best as possible. (Just remembering that the FIA part is just another thing that is not included in the code that I want in this moment. I just cited all the context of the project in order to you understand better what I am planning to do.)

Dear @diegopivoto,
Your project is pretty clear. I am going to complite some current tasks and will prepare and then test the example for you.
I plan to complete this up to end of this week.
I will return back to you ASAP.

Thank you very much, @alisitsyn
I will wait for your return!

@diegopivoto,
The modbus slave example project to access IIOT data and perform user defined actions is attached to this post.

Please specify your SSID and PASS for WiFi AP in the "Example Connection Configuration" of kconfig menu. CONFIG_EXAMPLE_CONNECT_IPV6 should be set per your network requirements to enable IPV6 communication or just IPV4.
Make sure "Modbus configuration->Modbus stack support for TCP communication mode"
The mb_tcp_s/main/tcp_slave.c - main file that contains your logic to perform your actions on access to holding register parameters defined in mb_example_common/modbus_params.c/h files. The parameters defined as fields of structure holding_reg_params.device_action_0 - 9 they starts from address 0 of modbus holding registers area. Once you change the field or just access it, the application set/reset the discrete discrete_reg_params.device_action_stateN and set the corresponded LED to on/off. The discrete inputs can be read over Modbus to get state of leds/LAMPs.
Once you compiled and started the project (idf.py build, idf.py flash monitor) it connects to AP using SSID and name you configured and shows its IP address in the line:

I (3652) example_connect: - IPv4 address: <IP_ADDRESS>
I (3662) example_connect: - IPv6 address: fe80:0000:0000:0000:bedd:c2ff:fed1:b210, type: ESP_IP6_ADDR_IS_LINK_LOCAL

Use this address to connect your slave from PLC or just from external PC with Modbus poll software installed.
You can filter R/W access (MB_EVENT_HOLDING_REG_{RD/WR}) and perform your actions using this code per your requirements.
Your PLC should be connected to the same network over Ethernet and be able to establish client connection to slave IP with port 502.
mb_tcp_slave_action_handler.zip

Hi @diegopivoto,
Could you share some results related to this issue?

Hi @alisitsyn !
Sorry for take a long time to answer this. Due to fact that I am using the PLC S71200 and other equipment from the lab of my university, and the pandemy is limitating the use of students there, I did not have the chance to test the example in the practice. I think that I will be able to use the lab tomorrow (06/08), because there is a schedule here for organizing the number and hours of use of people in the same are in order to avoid crowds and for security reasons. So, for now I will test today with simulation, and tomorrow in the real scenario, and I will post here the results. Thank you very much and again, sorry for the long time to answer, but unfortunately it is a situation that we are living that is above us. But, I am sure that everything is gonna be ok!

@diegopivoto,
Please take your time and good luck with your project! Just give me some feedback once you get results or have any questions.

Hi @alisitsyn
First of all, thank you very much for spend your time collaborating with my project. As said before, I am very new in this area, and I used to program in the IDE Arduine, which is easier, but I need to learn how to program in the ESP-IDF with the Eclipse. I confess you that I was very "scared" about the size of the program, because in the IDE Arduine it has just few lines in a script and in the Eclipse it has a lot of folders, config_menus, libraries, examples, and all of them are so big, and I am a little bit confused and lost in the project. But I am emphasizing here that it is because I don't have a lot of knowledge in this area, and not because the project that you send me. So, I don't even know where is the first part that you said here:
"Please specify your SSID and PASS for WiFi AP in the "Example Connection Configuration" of kconfig menu."
I am a little bit lost and I didn't find where is the option to specify these data. I want to apologize for my few knowledges in the area and for this question that can be obvious for people who works with that, but unfortunately I am trying to learn yet.
If you can tell me where can I found the "Kconfig menu" and the "Example Connection Configuration" to specify the SSID and PASS I would be very  happy. I tried to find this in the Kconfig of the mb_tcp_s folder but I didn't found.

Hi @alisitsyn
I am trying to learn all the project as soon as possible, because I didn't imagine that it was so big! But when I finish my studies I will publish here the results. If I have some doubts about the code that you sent me, I will publish here too. Thank you very much and I will keep you informed about everthing!

I just need to learn more about how to use this example. For example, I am a little bit lost, because I want to monitore the Holding Registers via the Serial Terminal from the Eclipse, as I did in the IDE Arduino. In the Arduino Interface, the 0-9 Holding Registers (HRs) were seen in the terminal during all the time with the respective values in the moment, and when I changed one of the HRs, they updated in the serial terminal. Another thing that I was a little bit confused is about how to send values of the HRs to the master, and how to write in the HRs when the master is sending. I know that you said that the option "MB_EVENT_HOLDING_REG_{RD/WR}" is responsible for this, but I don't know how to make this work easily. My questions in the moment are How can I change this example for transmit in the serial terminal of the Eclipse the HR values and see their updates in real time as I saw in the Arduino, and where I set the values of the HRs to send them to the Master? Thank you so much!

Hi @diegopivoto,
Ah, sorry, I did not know how good you are familiar with ESP-IDF. It is a bit different compare to Arduino IDE.
Hope the instruction below is not to complex for you.

Please follow this instruction first to setup ESP-IDF:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started
Create the project folder (for example esp32_tcp) and unpack the files from archive I sent you.
Open your terminal or MSYS32 window and type cd esp32_tcp/mb_tcp_s
Type idf.py menuconfig in your terminal, this will show the kconfig menu.
Set the kconfig options as below:

Your HR registers structure is defined in esp32_tcp/mb_example_common/include/modbus_params.h as device_action_0 - N
Your application code is located in esp32_tcp/mb_tcp_s/tcp_slave.c::app_main() function.
Type idf.py build to compile project.
Type idf.py -p ESP32PORT -b 921600 flash monitor to flash your app into board. The ESP32PORT is the virtual serial port of the connected esp32 board under your system.
Configure your Wifi AP to allow board to connect to your Wifi network. Once Application starts you will see the picture below:

Use the ip address and port 502 showed in the line: I (4645) example_connect: - IPv4 address: <IP_ADDRESS> to establish client connection from your external Modbus master.
Once you connected the app shows the log like below:
![example_output_rw](https://user-images.githubusercontent.com/37483886/

89882438-1ffef980-dbc7-11ea-8f8b-165256d48b5b.png)
12. You can use the ModbusPoll master softwarehttps://www.modbustools.com/modbus_poll.html for example to connect to your slave. The ModbusPoll configuration file is below:
tcp_slave_mb_action_tracker_config.zip
13. The example is designed to work on ESP32_WROVER board: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-wrover-kit-v3.html but can be easily be changed for other ESP32 board.
14. See the description below on how to configure Modbus Poll:

15. The RGB LED on the board will reflect the changes in 'MB_ACTION_0 - 2' registers. For example the value in holding_reg_params.device_action_0 corresponds to MB_ACTION_0 in master project.
16. You can change the value of your action registers as below:
portENTER_CRITICAL(&param_lock); // The critical section is required because these values accessible also from stack
holding_reg_params.device_action_2 = 0x1234; // the value set here will be showed in  MB_ACTION_2 of the project.
portEXIT_CRITICAL(&param_lock);

When I am going to the step 8 that you type here to build the project, I think it is not working, but I think that it can be caused by some configs that can be wrong in my computer. I will put the print of the terminal when I try to build with the comman idf.py build.
Att.
Diego Gabriel Soares Pivoto
Engenharia de Controle e Automação
Instituto Nacional de Telecomunicações - Inatel

De: Alex Lisitsyn<EMAIL_ADDRESS>Enviado: terça-feira, 11 de agosto de 2020 07:10
Para: espressif/esp-idf<EMAIL_ADDRESS>Cc: diegopivoto24<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Assunto: Re: [espressif/esp-idf] Support for use Wifi Communication in Modbus Protocol for ESP32 (IDFGH-3730) (#5652)
Hi @diegopivotohttps://github.com/diegopivoto,
Ah, sorry, I did not know how good you are familiar with ESP-IDF. It is a bit different compare to Arduino IDE.
Hope the instruction below is not to complex for you.

Please follow this instruction first to setup ESP-IDF:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started
Create the project folder (for example esp32_tcp) and unpack the files from archive I sent you.
Open your terminal or MSYS32 window and type cd esp32_tcp/mb_tcp_s
Type idf.py menuconfig in your terminal, this will show the kconfig menu.
Set the kconfig options as below:
[Menuconfig_root]https://user-images.githubusercontent.com/37483886/89879332-1378a200-dbc3-11ea-8542-15fd0d9f33e1.png
[wifi_ssid_pass]https://user-images.githubusercontent.com/37483886/89879292-0196ff00-dbc3-11ea-8530-e0ac6dc1bf89.png
[Mb_example_config]https://user-images.githubusercontent.com/37483886/89879342-17a4bf80-dbc3-11ea-9ffd-da4bd56ecd4c.png
Your HR registers structure is defined in esp32_tcp/mb_example_common/include/modbus_params.h as device_action_0 - N
Your application code is located in esp32_tcp/mb_tcp_s/tcp_slave.c::app_main() function.
Type idf.py build to compile project.
Type idf.py -p ESP32PORT -b 921600 flash monitor to flash your app into board. The ESP32PORT is the virtual serial port of the connected esp32 board under your system.
Configure your Wifi AP to allow board to connect to your Wifi network. Once Application starts you will see the picture below:
[example_output]https://user-images.githubusercontent.com/37483886/89881561-f396ad80-dbc5-11ea-8a29-44c50a95cf03.png
Use the ip address and port 502 showed in the line: I (4645) example_connect: - IPv4 address: <IP_ADDRESS> to establish client connection from your external Modbus master.
Once you connected the app shows the log like below:
![example_output_rw](https://user-images.githubusercontent.com/37483886/

89882438-1ffef980-dbc7-11ea-8f8b-165256d48b5b.png)
12. You can use the ModbusPoll master softwarehttps://www.modbustools.com/modbus_poll.html for example to connect to your slave. The ModbusPoll configuration file is below:
tcp_slave_mb_action_tracker_config.ziphttps://github.com/espressif/esp-idf/files/5056128/tcp_slave_mb_action_tracker_config.zip
13. The example is designed to work on ESP32_WROVER board: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-wrover-kit-v3.html but can be easily be changed for other ESP32 board.
14. See the description below on how to configure Modbus Poll:
[Mb_poll_project]https://user-images.githubusercontent.com/37483886/89884608-13c86b80-dbca-11ea-8bcb-351a842452a4.png
15. The RGB LED on the board will reflect the changes in 'MB_ACTION_0 - 2' registers. For example the value in holding_reg_params.device_action_0 corresponds to MB_ACTION_0 in master project.
16. You can change the value of your action registers as below:
portENTER_CRITICAL(&param_lock); // The critical section is required because these values accessible also from stack
holding_reg_params.device_action_2 = 0x1234; // the value set here will be showed in  MB_ACTION_2 of the project.
portEXIT_CRITICAL(&param_lock);
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/espressif/esp-idf/issues/5652#issuecomment-671857391, or unsubscribehttps://github.com/notifications/unsubscribe-auth/APRRLWU7RRBLGXQUHABSXA3SAEKIZANCNFSM4PKFFMQA.

Hi @alisitsyn !
I got until the Step 5 of the steps that you put here. The Steps 6 and 7 are just comments, so when I go to the Step 8 and put "idf.py build" to build the project, it starts to running, but in the middle of the process it failed

Here is the problem for now. Do you know what is going on here? Thank you for the help and patience!

Hi @diegopivoto,
Your current branch is not latest and this causes this issue. Please go to your github idf folder then type the command: git describe, record the showed version in format v4.3-dev-nnn-g_________ and send it to me. Then type git checkout origin/master then again git describe. The version after this should be showed like v4.3-dev-771-gc77c4ccf6. Once completed please follow with idf.py build and follow the compilation process and then flash software when compiled.
Let me know if you have further issues.

Hi @alisitsyn ,
When I use the command "git describe", it shows the version "v4.0" and nothing else. I don't know why the version wasn't showed in format "v4.3-dev-nnn-g_________" as you said. So, typing after that "git checkout origin/master" an error  appears and then it is aborted. So, typing "git describe", it is showed just "v4.0". Here is a print of the git describe command and the error:

Hi @diegopivoto,
You are on the v4.0 branch that was an issue. Please type git log - push Q. Send me the output, then git stash, git checkout origin/master, git log and send me the log (copy the text output from cmd window). This will allow you to go further and checkout the origin/master branch then you can follow with idf.py build item in the instruction above.

Hi @alisitsyn ,
I followed yours instructions step-by-step, but I think that the error holds on. I will put the prints here:
First, I typed "git log":

Then, I typed "Q" to enter in the IDF Folder, and type "git stash", followed by the command "git checkout origin/master", but the message was the same before, aborting, as follows:

Finally, I typed "git log" again:

So, using idf.py won't work yet.

Hi @diegopivoto,
Use these comands to force checkout origin/master and build example:
git fetch, git checkout origin/master -f, git submodule update then follow idf.py build to compile application.
Once you are able to build: git checkout -b feature/modbus_slave_action_tcp_example

Hi @alisitsyn !
I think it doesn't work again and some things got wrong, because before that I could at least use the command "idf.py menuconfig" to configure the application, but now neither this command is working. The scream shows me that some packages were uninstalled and I need to run a .bat archive to install it, but I don't know how to do it. In addition, the other errors that were happening still persists and weren't solved and I think that a lot of thing got wrong now, but I don't know how to solve it.
First of all, as you said, I typed "git fetch" and "git checkout origin/master -f", but the same error before has persisted as  printed in the second printof the last message that I sent here, with the message "Aborting" and asking me to commit my changes or stash them before switch branches. So I followed by the command "git submodule update", but it doesn't work perfectly. I can't print what is the message that these commands returned to me because something got wrong and now when I try to use these commands again other error messages are given for me like a lot of things had been uninstalled:
When I execute the ESP-IDF CMD, it starts with a lot of errors that wasn't happening before, with a lot of things uninstalled. Then, when I try to use these commands again, a lot of errors persists. I will comment in the prints the errors and commands requested for you in a detailed way. Please check the prints:

Thank you very much for the patience and for trying to teach me. I hope it can works in the end haha

Hi @diegopivoto,
Don't worry this should work just fine. Something might be broken. The good think is that you are on the master branch now.

Please check your tools using command python.exe %IDF_PATH%\tools\idf_tools.py check. This command will check the tools and will show if some tools not found or installed incorrectly. The output should be similar to this if there are differences:

Checking for installed tools...
Checking tool xtensa-esp32-elf
    version found in PATH: esp-2020r2-8.2.0
    version installed in tools directory: esp-2020r2-8.2.0
Checking tool esp32ulp-elf
    version found in PATH: 2.28.51-esp-20191205
    version installed in tools directory: <IP_ADDRESS>70517
Checking tool cmake
    version found in PATH: 3.16.4
    version installed in tools directory: 3.13.4
Checking tool openocd-esp32
    version found in PATH: v0.10.0-esp32-20200406
    version installed in tools directory: v0.10.0-esp32-20200709
Checking tool mconf
    version found in PATH: v<IP_ADDRESS>-idf-20190628
    version installed in tools directory: v<IP_ADDRESS>-idf-20190628
Checking tool ninja
    version found in PATH: 1.10.0
    version installed in tools directory: 1.9.0
Checking tool idf-exe
    version found in PATH: 1.0.1
    version installed in tools directory: 1.0.1
Checking tool ccache
    version found in PATH: 3.7
    version installed in tools directory: 3.7

If something is incorrect or not installed correctly you can download and install tools using command: python.exe %IDF_PATH%\tools\idf_tools.py install. Alternatively you can just start the install.bat script from esp-idf folder to install tools.
Once it is installed you can export path using export.bat this shall update the %PATH% environment and then show:

Adding ESP-IDF tools to PATH...
Checking if Python packages are up to date...
Python requirements from c:\esp32\esp-idf\requirements.txt are satisfied.

Done! You can now compile ESP-IDF projects.
Go to the project directory and run:

  idf.py build

Now you can go to project directory and try to configure and compile the project.
As about git submodule update try

git submodule foreach git fetch
git submodule update

If the above does not work I think it is better to remove existing IDF folder then clone the esp-idf repo again as described here: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started
and install tools again and export PATH. Hope the above works.
To clone esp-idf repo to your current esp folder:

git clone --recursive https://github.com/espressif/esp-idf.git

Please feel free to ask! This is little bit hard to perform just for first time. The above must work finally!

Hi @diegopivoto,
Was it possible to solve above issues on your side?

Hi @alisitsyn,
Unfortunately, I used my time on September in order to write my Master Thesis, because the project wasn't working and I tried a lot of things to solve the problmes for running the ESP32 projects on Eclipse and it didn't work.
I followed your instructions of the comment in the day 17 Aug, but in the Step 3 that you said me "Once it is installed you can export path using export.bat this shall update the %PATH% environment",  the following message was send:

In the last comment from 28 Aug, I tried to follow the steps by plugging ESP32 on Eclipse, but it also didn't work. I performed the Step "Installing IDF Plugin using update site URL", but the next one "Installing ESP-IDF Tools" asked to Navigate to Help > ESP-IDF Tools Manager > Install Tools, but clicking on Help, the option "ESP-IDF Tools Manager wasn't found and I don't have any idea what I can do for just test the project. I can confess it is a little bit frustrating for me, because there are more than one month I am just trying to install the basic programs to just test ESP projects and I just can't do it. That is the cause I startet to write my thesis and focus on other things, but now everything is done, and the only thing that rests is the project test. I really don't know what to do anymore.

Hi, @alisitsyn
I have some news. First of all, I could fix some issues. Now, I can enter on the menu by the command "idf.by menu config" on ESP-IDF Prompt Command. So, I updated the SSID and Password from the Wi-fi parameter. Then, I put in the ESP-IDF Prompt Command the command "idf.py build" and it started to build the project. But, an error has occurred. I will put the print of the error while trying to build your code:

These were the failings now. What can I do in order to try to fix these failures and build the project?
Thank you fot your attention.

Just a comment here. When I fixed the problems before, it appears in the prompt that there wasn't directories added to PATH. But I continued to use the idf.py menuconfig and build. So, I don't  knowif these failures has something in common with this.
C:\Users\diego\Desktop\esp-idf>export.bat
Setting IDF_PATH: C:\Users\diego\Desktop\esp-idf
Adding ESP-IDF tools to PATH...
No directories added to PATH:
C:\Users\diego.espressif\python_env\idf4.3_py3.7_env\Scripts;C:\Users\diego.espressif\tools\xtensa-esp32-elf\esp-2020r2-8.2.0\xtensa-esp32-elf\bin;C:\Users\diego.espressif\tools\xtensa-esp32s2-elf\esp-2020r2-8.2.0\xtensa-esp32s2-elf\bin;C:\Users\diego.espressif\tools\esp32ulp-elf\2.28.51-esp-20191205\esp32ulp-elf-binutils\bin;C:\Users\diego.espressif\tools\esp32s2ulp-elf\2.28.51-esp-20191205\esp32s2ulp-elf-binutils\bin;C:\Users\diego.espressif\tools\cmake\3.16.4\bin;C:\Users\diego.espressif\tools\openocd-esp32\v0.10.0-esp32-20200709\openocd-esp32\bin;C:\Users\diego.espressif\tools\ninja\1.10.0;C:\Users\diego.espressif\tools\idf-exe\1.0.1;C:\Users\diego.espressif\tools\ccache\3.7;C:\Users\diego.espressif\tools\dfu-util\0.9\dfu-util-0.9-win64;C:\Users\diego\Desktop\esp-idf\tools;C:\Users\diego\AppData\Local\Programs\Python\Python37;C:\Program Files\Git\cmd;C:\Program Files\Common Files\Siemens\Automation\Simatic OAM\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\PuTTY;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk-14.0.1\bin;C:\Users\diego\AppData\Local\Programs\Python\Python37\Scripts;C:\Users\diego\AppData\Local\Programs\Python\Python37;C:\Users\diego\AppData\Local\Microsoft\WindowsApps;C:\Users\diego\AppData\Local\Programs\MiKTeX 2.9\miktex\bin\x64\
Checking if Python packages are up to date...
Python requirements from C:\Users\diego\Desktop\esp-idf\requirements.txt are satisfied.
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:
idf.py build

Hi @diegopivoto,
I understand your complaints, but the ESP-IDF has a dependency on the python interpreter and git and requires some familiarity with required instruments. Usually, it is enough to follow the Get started guide and install tools using IDF Tools installer. I don't know where your failures happen during installation and can not check your steps.

I followed your instructions of the comment on the day 17 Aug, but in the Step 3 that you said me "Once it is installed you can export path using export.bat this shall update the %PATH% environment", the following message was send:

This requires to update the python modules using the command (this should also be updated on installation steps):
python -m pip install -r %IDF_PATH%\requirements.txt

Step "Installing IDF Plugin using update site URL", but the next one "Installing ESP-IDF Tools" asked to Navigate to Help > ESP-IDF Tools Manager > Install Tools, but clicking on Help, the option "ESP-IDF Tools Manager wasn't found and I don't have any idea what I can do for just test the project.

I can not check what you missed during your install but the ESP-IDF Tools Manager shall exist there after correct installation. Did you try to restart Eclipse? I followed the guide ESP-IDF Eclipse Plugin and was able to install the plugin on my Windows machine successfully. Make sure you correctly installed prerequisites in Installing Prerequisites.

Then, I put in the ESP-IDF Prompt Command the command "idf.py build" and it started to build the project. But, an error has occurred. I will put the print of the error while trying to build your code:

I think you missed the submodule update stage here.
git submodule sync
git submodule update
According to your feedback, you are missing something during your installation steps. In order to help you, I need more than just get messages once a week or per month. Can you install Skype tool for example to be able to guide you during your setup?

Hi @alisitsyn
I used the commands "git submodule sync" and "git submodule update", but when I try to use  "idf.py build" the error persists. I will put the print below.

Do you know how can I fix this? I f you have another idea, I wanna try again and I'm here for listen and try to fix this. If it goes wrong again, we can talk in Skype as you said, and we can make an appointment for solve this.
Thank you so much for your attention!
Related to the Skype, we can talk

Hi, @alisitsyn
I have some good newshere! Finally, with your help, I got it, and the commands 'idf.py menuconfig' and 'idf.py build' run without errors. I will put below the prints:

Now, I have another problem, that is try to finally test it on the ESP32 using the command 'idf.py -p ESP32PORT -b 921600 flash monitor', but I download the Modbus Slave one month ago and now that I can test the free license has expired. I can't use the PLCs on the lab university at this moment because things are really bad here due to the pandemy and the access is restrict for a while. So, I need to use some simulator for try to test it. Do you have any suggestion? Is there another simulator for free for the Modbus Slave? Thank you so much for your attention!

@diegopivoto There are various bits of software for testing MODBUS TCP/IP. Any of them should work fine with the esp-idf implementation. I used this, which does have a free trial, although after the free trial runs out you still get 10 minutes of testing time before you simply have to restart the software.
https://modbustools.com/modbus_poll.html

Hi, @gecko242
The problem is that I used the software Modbus Slave that is of the same company of the Modbus Poll that you mentioned. In the free trial, I could use only for 10min, and after that I can't use any time without a license key. The Modbus Poll is a software for its use on the Master mode, and for my implementation I need a software for the Slave mode, which is the Modbus Slave that I downloaded and it has expired before I start testing.

Hi @diegopivoto,
There are bunch of software for Modbus. The code which I sent you is the Modbus TCP Slave. You can use the Modbus Master simulator to test your slave as example. However I did not try this yet. This simulator supports Modbus TCP/IP and has interface very similar to ModbusPoll tool. Try to use it to check your slave device while you don't have access to your PLC. Also you can use ModbusPoll started under Windows virtual machine. There are some other options (pymodbus as example).

Hi @alisitsyn
Unfortunetaly, the Modbus Master Simulator simulates a device as a master, and in my case I need to test using the ESP32 as a Master and the PLC as a Slave. So, the software needs to use the Modbus Protocol as a slave. The Modbus TCP Slave is the option for testing it, but the license has expired and there is no way to use it unless I had a license key. I will try to use a Windows virtual machine for running the Modbus TCP Slave software and when I test it I return here with the results.
Thank you for your attention!

Hi @diegopivoto,
Ok, I was thinking right opposite, that your PLC will be Modbus TCP master and you need Modbus slave. Just in case the Modbus TCP Master ESP32 example is also available and can be used. Take your time and let me know if you need help.

Hi @alisitsyn
So, in the code example you sent me, what do I need to change in order to perform the ESP32 as a masterand not as a slave? Because I thought that the project was adapted to work with a Master ESP32 and a Slave PLC. I will use the ESP32 as a master because it will be responsible for specifying the service function to be performed in the PLC, such as an I/O reading or writing.
Thank you for your attention!

@diegopivoto,
You can find the Modbus TCP Master example here: %IDF_PATH%\examples\protocols\modbus\tcp\mb_tcp_master.
It is not hard to adopt it for your needs:

Enable CONFIG_MB_MDNS_IP_RESOLVER option in your kconfig, this allows Master to find active Modbus TCP slave in the same network. Also provide the WiFi SSID and pass options as I described before.

Configure your slave Modbus data dictionary, configure characteristics (parameters or even Modbus registers) you are going to read/write in your slave(s):

...
examples\protocols\modbus\tcp\mb_tcp_master\main\tcp_master.c:

// Enumeration of all supported CIDs for device (used in parameter definition table)
enum {
    CID_ACTION0 = 0,
    CID_ACTION1,
    CID_ACTION2,
// .... put your additional characteristic IDs here
    CID_COUNT
};
mb_parameter_descriptor_t device_parameters[] = {
    // { CID, Param Name, Units, Modbus Slave Addr, Modbus Reg Type, Reg Start, Reg Size, Instance Offset, Data Type, Data Size, Parameter Options, Access Mode}
    { CID_ACTION0, STR("Action 0"), STR("__"), MB_DEVICE_ADDR1, MB_PARAM_HOLDING, 0, 1,
            HOLD_OFFSET(device_action_0), PARAM_TYPE_U16, 2, OPTS( 0, 10000, 1 ), PAR_PERMS_READ_WRITE_TRIGGER },
// >>>>> add all characteristics you are going to access in the slave device here with unique CID (similar to first one, the description of the fields are in the example)
....
};

Configure the data structures (add your action parameter instances into corresponded holding register structure) %IDF_PATH%\examples\protocols\modbus\mb_example_common\include\modbus_params.h

#pragma pack(push, 1)
typedef struct
{
    // Actions to be performed by device when write
    uint16_t device_action_0;
    uint16_t device_action_1;
    uint16_t device_action_2;
    uint16_t device_action_3;
    uint16_t device_action_4;
    uint16_t device_action_5;
    uint16_t device_action_6;
    uint16_t device_action_7;
    uint16_t device_action_8;
    uint16_t device_action_9;
    uint16_t device_action_last;
    // >>>>>> add instances for each characteristic you are going to access here  as above (can be accessed from your code later)
    uint16_t test_regs[150];
} holding_reg_params_t;
#pragma pack(pop)

The actual read/write of parameters (logic of your master) is performed here: tcp_master.c::master_operation_func().
By default it reads all parameters defined in object dictionary and keeps values in the fields of structures defined in object dictionary accordingly (HOLD_OFFSET(device_action_0) ->holding_reg_params.device_action_0 ) and prints its values.
You can use the mbc_master_get_parameter(), mbc_master_set_parameter() API to read and write corresponding parameter from/to Modbus TCP slave.

Refer to the Modbus official documentation and example readme.md files for more information.

Hi @diegopivoto,
Ah, sorry, I did not know how good you are familiar with ESP-IDF. It is a bit different compare to Arduino IDE.

Please follow this instruction first to setup ESP-IDF:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started
Create the project folder (for example esp32_tcp) and unpack the files from archive I sent you.
Open your terminal or MSYS32 window and type cd esp32_tcp/mb_tcp_s
Type idf.py menuconfig in your terminal, this will show the kconfig menu.
Set the kconfig options as below:

Save the settings (Push S button) and confirm saving.

Your HR registers structure is defined in esp32_tcp/mb_example_common/include/modbus_params.h as device_action_0 - N
Your application code is located in esp32_tcp/mb_tcp_s/tcp_slave.c::app_main() function.
Type idf.py build to compile project.
Type idf.py -p ESP32PORT -b 921600 flash monitor to flash your app into board. The ESP32PORT is the virtual serial port of the connected esp32 board under your system.
Configure your Wifi AP to allow board to connect to your Wifi network. Once Application starts you will see the picture below:

Use the ip address and port 502 showed in the line: I (4645) example_connect: - IPv4 address: <IP_ADDRESS> to establish client connection from your external Modbus master.
Once you connected the app shows the log like below (this is analog of serial terminal in Arduino):
The value in the output line reflects the value of holding_reg_params.device_action_0: I (1957104) SLAVE_TEST: Handle ACTION_0 READ , value = 1. and can be changed later from master application.

You can use the ModbusPoll master software https://www.modbustools.com/modbus_poll.html for example to connect to your slave. The ModbusPoll configuration file is below:
tcp_slave_mb_action_tracker_config.zip
The example is designed to work on ESP32_WROVER board: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-wrover-kit-v3.html but can be easily be changed for other ESP32 board.
See the description below on how to configure Modbus Poll:

The RGB LED on the board will reflect the changes in 'MB_ACTION_0 - 2' registers. For example the value in holding_reg_params.device_action_0 corresponds to MB_ACTION_0 in master project.
You can change the value of your action registers in your modbus slave application as below:

portENTER_CRITICAL(&param_lock); // The critical section is required because these values accessible also from stack
holding_reg_params.device_action_2 = 0x1234; // the value set here will be showed in  MB_ACTION_2 of the project.
portEXIT_CRITICAL(&param_lock);

The link can be used to setup eclipse for the project: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/eclipse-setup.html
Open the project follow File -> Open Projects From File System...-> Input source -> Directory and point to the esp32_tcp/mb_tcp_s then push Finish button.

Hi, @alisitsyn
In the weekend, I will finally test the program, because I will be able to use another computer and then install/use the trial version of the Modbus Poll, due to the fact that both Modbus Poll and Modbus Slave Simulator expired on my computer.
In order to advance and test it with no doubts, I checked the commands idf.py menuconfig and idf.py build, flash and monitor it on my ESP32m and it returned me the expected values, such as the connection to the Wi-fi network and also the IP Address of my slave to be set in the Modbus Poll later (I will use the ESP32 as the slave, as the code was firstly done).
So, finally, my question is:
The code has 10 holding registers (0-9), discrete inputs and etc. In order to simplify my doubt here, I will just talk about the Holding Registers. In the Arduine code that I had, there was 10 holding registers for writing (0-9) and 10 holding registers for reading (11-20). In this example for Eclipse that you implemented, there are 10 holding registers (holding_reg_params.device_action_0 - 9). I'm not sure about this, but these 10 holding registers can be used as reading as writing,  differently in the Arduine code whose holding registers for reading and writing had specific positions? If i'm right, I don't know exactly how to configure these 10 HRs ((holding_reg_params.device_action_0 - 9) for reading or for writing.
For example, what do I need to do if I want to use the "holding_reg_params.device_action_0" to write a value (e.g. 1) and send it to the Master (MB_Action_0 of the Modbus Poll). In addition,  what do I need to do if I want to use the "holding_reg_params.device_action_1" to read a value from the Master (MB_Action_1 of the Modbus Poll)? This is a little bit confused to me and I think that you can help me to test it in the weekend with less doubt.
Thank you!

Hi @diegopivoto,

For example, what do I need to do if I want to use the "holding_reg_params.device_action_0" to write a value (e.g. write value "1" in holding_reg_params.device_action_0) and send it to the Master (e.g. see the value written in MB_Action_0 of the Modbus Poll Simulator).

Your slave device sends the data by request of Master. The master can set holding_reg_params.device_action_X parameter to the appropriate value to control LEDs for example. The written value can be also read back by master.
All read write registers values are logged into console. So, the device_action_x registers corresponds to  MBHoldingRegister[10-19] in your example. You can easily change the value of the register. The master can read it back and do appropriate action accordingly. The code below allows to change the values of additional holding_reg_params.device_data_x registers in your slave example to random value each time master reads these values (change is performed in critical section to avoid access conflicts from Modbus stack). This is something similar to your example  MBHoldingRegister[0-9]. The same way you can change the device_action_0
modbus_params.h:
#pragma pack(push, 1)
typedef struct
{
    // Actions to be performed by device when write
    uint16_t device_action_0; // register address 0
    uint16_t device_action_1;
    uint16_t device_action_2;
    uint16_t device_action_3;
    uint16_t device_action_4;
    uint16_t device_action_5;
    uint16_t device_action_6;
    uint16_t device_action_7;
    uint16_t device_action_8;
    uint16_t device_action_9;   // register address 10
    uint16_t device_data_0;     // register address 11
    uint16_t device_data_1;
    uint16_t device_data_2;
    uint16_t device_data_3;
    uint16_t device_data_4;
    uint16_t device_data_5;
    uint16_t device_data_6;
    uint16_t device_data_7;
    uint16_t device_data_8;
    uint16_t device_data_9;
    uint16_t test_regs[150];
} holding_reg_params_t;
#pragma pack(pop)

tcp_slave.c::app_main():

// ReInitialize the holding_reg_params.device_data_X to random value each time we read device data
            if ((event & MB_EVENT_HOLDING_REG_RD) && ((uint32_t)reg_info.address > (uint32_t)&holding_reg_params.device_action_9)) {
                // This is how to safely change fields in the Modbus structure that being accessed by Modbus driver
                // (Implementation of critical section)
                portENTER_CRITICAL(&param_lock);
                holding_reg_params.device_data_0 = (uint16_t)esp_random();     // set register to random value
                holding_reg_params.device_data_1 = (uint16_t)esp_random();
                holding_reg_params.device_data_2 = (uint16_t)esp_random();
                holding_reg_params.device_data_3 = (uint16_t)esp_random();
                holding_reg_params.device_data_4 = (uint16_t)esp_random();
                holding_reg_params.device_data_5 = (uint16_t)esp_random();
                holding_reg_params.device_data_6 = (uint16_t)esp_random();
                holding_reg_params.device_data_7 = (uint16_t)esp_random();
                holding_reg_params.device_data_8 = (uint16_t)esp_random();
                holding_reg_params.device_data_9 = (uint16_t)esp_random();
                portEXIT_CRITICAL(&param_lock);
            }

In addition, what do I need to do if I want to use the "holding_reg_params.device_action_1" to read a value from the Master (e.g. set value "1" in MB_Action_1 of the Modbus Poll and see this value in the monitor of the prompt)?

You can check that the value is changed by master
if (IS_FIELD_IN_RANGE(reg_info.address, reg_info.size, device_action_1, action_value) ) {
if (event & (MB_EVENT_HOLDING_REG_WR)) {
// perform whatever you need with the value of holding_reg_params.device_action_1 == action_value updated by master
}
}

tcp_slave.zip
Similar approach was already explained in the example I sent you.
Please refer to the Modbus official documentation  and try to use it in order to understand.

@diegopivoto,
Do you have some progress related to your project? Thanks.

@alisitsyn,
I would like to apologize for the long time to answer you, because I was focused on an article to be re-submitted in a Journal and it had a short deadline to do it. So, I have good news! I've tested the code and it finally works! I used the CMD Prompt Command and the software Modbus Poll, changing the values of the holding registers in the code and the results in the simulator. I tested the other way too, by changing the value of the holding registers in the ModBus Poll simulator and checking the new values in the CMD prompt monitor. I did not test the code in the Eclipse, because I did not have time to try to make ESP32 codes work on this platform, but I think that it will works, because it works in the ESP32 Prompt and the language/code is the same, right? So, I will try to fix the Eclipse issues for running ESP codes there and run this code, but as I said I think it will works. If it doesn't work, I will return here and ask for some help. But again, thank you very much for the help, and mainly for your patience on teach me due to the fact I've never worked on it before!
Finally, if I have some problems related to Eclipse I return here, but if it works on ESP CMD I'm sure it will work on Eclipse too.
Thank you for everything!

@diegopivoto,
Good news.

I did not test the code in the Eclipse, because I did not have time to try to make ESP32 codes work on this platform, but I think it will work, because it works in the ESP32-IDF Prompt and the language/code is the same, right?

Eclipse is just IDE, the final binary after compilation will be the same. When install Eclipse please make sure that you installed prerequisites in "Installing Prerequisites" section correctly. What is more important you need to install Java11 on your machine for plugin to work.
Once you completed your project, please let me know and let us close the issue.

Hi @alisitsyn
I tested on Eclipse of my friend and it works. Now, I just have one question: I will add in the ESP an architecture for data exchange and this architecture was modeled for exchanging data directly from the wifi raw socket, physically. On the other words, this architecture doesn't use the TCP on transport layer. So, I'm not sure, but I think I have two ways to follow:

Use two different ESP32, one for implementing this architecture and another one for using this code already done for communicate via MODBUS TCP with the PLC, and an UART or another way for communicating the 2 ESP32;
Use just one ESP32, implementing the architecture and the communication MODBUS in the same ESP32 code. In this case, for the correct operation of the architecture, I should use Modbus RTU instead Modbus TCP because as I said the architecture doesn't work with TCP and it would be a problem.

So, my question is, if I want to use the option 2, my code already supports Modbus RTU and I need to do just few changes? If yes, what would be that changes in order to change the code from Modbus TCP to Modbus RTU? Or the answer is No, and I will need to do another code totally different if I want to use Modbus RTU?
As I said, I just want to know all my possibilities, if I can easily change the Modbus or if I would need to do another code and it will be easier to use 2 ESP32.
Thank  you very much!

@diegopivoto,
I just can guess about what logic you mean under "architecture". Probably you mean something like Modbus RTU over TCP. Because of this I  can not answer your questions related to architecture of your system. It is up to you.

If yes, what would be that changes in order to change the code from Modbus TCP to Modbus RTU? Or the answer is No, and I will need to do another code totally different if I want to use Modbus RTU?

The ESP-IDF Modbus supports TCP and RTU mode. Examples in the ESP-IDF for serial RTU. The master and slave code for these modes are very similar and use just different options in the configuration. You can compare the examples for TCP and RTU and easily change the communication settings.

Hi @diegopivoto,
Any news on the project? Was it possible to solve the issues?

@diegopivoto,
Could you give me update on the status?

Hello, @alisitsyn
Sorry abou the long time without updates, but now the project is in the same situation as before. The reason for that is because the future internet architecture I will implement embedded in ESP32 need to be checked, seen that it possible won't work woth the transport layer and consequently TCP protocol. So, for a while the project is working very well with the initial propose, but I really don't know if I will have to change the features of the code for working using ModBus RTU, using ModBus TCP with two ESP32 working separetely (one withe the future internet architecture and another one with this code), or using ModBus TCP maintaing this code. In other words, it will depend on how the future internet architecture deals with the Modbus TCP, if it works with the transport layer or not, and if it will be capable of work with TCP ou change the code to RTU. I am now waiting for answers to these questions, but just my teacher and developer of the architecture is able to give me a solution. Finally, I will keep using this code, which is working very well, and if I need to change my code I return here for a possible solution. Furthermore, if I don't need to change anything in the code, I will return here too to keep you informed about everything.
Thank you very much!

Hello @diegopivoto,
As I understand you don't have any issues related to ESP-IDF library and it works on your side.
Since it is opened for very long time, I would suggest you to close the issue for now. Later if you have any problems you can reopen the issue.
Thanks.

Hello @diegopivoto,
As I understand you don't have any issues related to ESP-IDF library and it works on your side.
Since it is opened for very long time, I would suggest you to close the issue for now. Later if you have any problems you can reopen the issue.
Thanks.

Thanks for reporting, feel free to reopen.

Thanks for reporting, feel free to reopen.


[WIP]: Update tokens

Had to rebuild tables.json manually since the updates in Figma hasn’t been published yet
Storybook at https://eds-storybook-react-fontweight.azurewebsites.net/?path=/story/components-table--simple-table
resolves #457

/azp run storybook-react

manually edited for evaluation purposes and will not be merged


Fix Eslint for TypeScript

Description
As mentioned in #1837 there are currently a few problems when linting TypeScript code. See also this CI run which reports nonsense errors on TypeScript Enums..
I did improve the following:

The typings overrides in tsconfig.json were pointing to wrong pathes, now they are picked up correctly
Removed a lot of boilerplate code from the .eslintrc.js
Reorderd the eslint configurations, to properly apply TypeScript and Prettier rules (this should come last)
Upgraded and locked the prettier version as recommended
Change the husky/lint-staged command to only lint code which is stage and fix it (I think contributors should not be stopped to commit by code they didn't change
Fixed Eslint Errors and Warnings where possible without implementation changes; Error Count is now 0!

Checklist

[x] I have tested this on a device/simulator for each compatible OS
[x] I formatted JS and TS files with running yarn lint:fix in the root folder
[x] I updated the documentation with running yarn generate in the root folder
[ ] ~I mentioned this change in CHANGELOG.md~
[x] I updated the typings files (index.d.ts)
[ ] ~I added/ updated a sample (/example)~

Screenshot OR Video

@mfazekas looks good to me - ok with merge?

👍

@KiwiKilian 🎉


Paper project

Create a paper project in the projects directory for all plots related to the paper.

Let's structure this project as having following folder

scripts
figures
notebooks

scripts directory has a script per figure which gets stored and versioned in the figures folder. And instructive code snippets and visuals can go inside the notebooks.

All figures will be generated with a matplotlib style file. Put a publication.mplstyle under the matplotlib configuration directory with the following content:
$ cat ${HOME}/.config/matplotlib/publication.mplstyle
font.family : serif
font.serif : Times, Palatino, New Century Schoolbook, Bookman, Computer Modern Roman
font.sans-serif : Helvetica, Avant Garde, Computer Modern Sans serif
font.cursive : Zapf Chancery
font.monospace : Courier, Computer Modern Typewriter
text.usetex : true
figure.figsize : 7.4, 5.8
axes.titlesize : 18
axes.labelsize : 18
lines.linewidth : 1
lines.markersize : 3
xtick.labelsize : 14
ytick.labelsize : 14

Then every figure script should use that:
import matplotlib.pyplot as plt
plt.style.use('publication')
.
.
.

the methods paper is submitted. closing.


feat: add Delete feature to list

          Will it be out of scope if I add a `Delete` flow for the list?

https://github.com/open-sauced/app/assets/62995161/76b049ed-d2b0-4676-a427-c0cf8826c412
Similar to what was done with insights pages
Originally posted by @OgDev-01 in https://github.com/open-sauced/app/issues/1698#issuecomment-1728578103

.take


Nitpicks

Replace make -j with make -j nproc
Add missing CMSIS DSP matrix sources breaking the build in some cases
Make clean .a in static versions instead of .so

@furtiman thanks for the fixes.
nproc is a linux utility part of coreutils. Which may not be available on the host. Perhaps we can use a safe value of -j and document how to set the the value if nproc is available

@rajames updated, let me know if it's too much :)


Add Lake HRU handling logic to all emulators

Description
One of RavenPy's objectives is to simplify the setup of semi-distributed model configurations. Those configuration will typically include lakes, but not all emulators are designed to handle them.
We propose to add basic lake-related processes in each emulator that doesn't have something built-in already. This would change nothing to outputs when models are run in "global" mode.
TODO: Find the minimal configuration change that can be applied to emulators missing lake HRU handling.

There are multiple different ways to represent lakes in Raven model emulators, and configurations are model-dependent. I have run several tests with HBV-EC, which is a unique model in that "HBV treats all landscapes as if they have some presence of lakes, but does not explicitly treat LAKE HRUs" (Raven manual v3.7).
(a) To implicitly handle the presence of lake HRUs in HBV-EC (the bottom soil layer stores excess water and acts as a delay to mimic the presence of lakes), all we need to do is adding this to the emulator:
class LakeHRU(HRU):
land_use_class: str = "WATER"
veg_class: str = "WATER"
soil_profile: str = "LAKE"
aquifer_profile: str = "[NONE]"
terrain_class: str = "[NONE]"
hru_type: str = "lake"
The land use and vegetation classes may be slightly different and depend on the user's HRU shapefile: "All Lake HRUs should be assigned (1) a LAKE soil profile (except wetlands), (2) a WATER/LAKE land use type and (3) an OPEN/BARREN (or similar) vegetation type with zero LAI" (Raven manual v3.7).
For other models (which do not treat all landscapes as if they have some presence of lakes), hydrological processes may additionally need to be altered to handle lake evaporation and baseflow from the lake storage to the river network properly.
(b) To explicitly handle the presence of lake HRUs and treat them as natural lakes or managed reservoirs with their own storage, more changes are needed.
As this is very model-dependent and to not diverge from the original emulators, my suggestion would be to keep the emulators as they are. For the model emulators that do not handle lake HRUs, we could add a more detailed error message when the model fails. Example error message: "This model does not explicitly treat lake HRUs. Different options exist to represent lakes and are discussed in the Raven manual (see section 4.5 for manual v3.7). You can find examples of the HBV-EC emulator that has been altered to handle lake HRUs here: ". I would be happy to share my examples in a public folder somewhere (they are now on PAVICS).


splash floods logs when run in docker

hi, when i run splash with docker using aquarium (https://github.com/TeamHG-Memex/aquarium) the output gets flooded. setting verbosity of splash to 0 does nothing, likewise setting docker logging driver to none in the YML file does nothing, does any one knows how to silence all output to the terminal ?
below is how my terminal looks

P.S. here are my configuration files
docker-compose.yml.txt
haproxy.cfg.txt


Add acknowledgement for cdsdashboards

Reference Issues or PRs
Acknowledging https://github.com/ideonate/cdsdashboards

What does this implement/fix?
Put a x in the boxes that apply

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds a feature)
[ ] Breaking change (fix or feature that would cause existing features not to work as expected)
[ ] Documentation Update
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build related changes
[ ] Other (please describe):

Testing

[ ] Did you test the pull request locally?
[ ] Did you add new tests?

Documentation

Access-centered content checklist
Text styling

[ ] The content is written with plain language (where relevant).
[ ] If there are headers, they use the proper header tags (with only one level-one header: H1 or # in markdown).
[ ] All links describe where they link to (for example, check the Nebari website).
[ ] This content adheres to the Nebari style guides.

Non-text content

[ ] All content is represented as text (for example, images need alt text, and videos need captions or descriptive transcripts).
[ ] If there are emojis, there are not more than three in a row.
[ ] Don't use flashing GIFs or videos.
[ ] If the content were to be read as plain text, it still makes sense, and no information is missing.

Any other comments?

suggested language tweak:
This project is heavily inspired by and uses code from @danlester's [cdsdashboards](https://github.com/ideonate/cdsdashboards), without his work building this would have been a whole lot harder.


jf_ disco in salesforce

Esko SC Script issue
Affected script

Name: jan
Version:

OS

Name: mac osx
Version: 10.11.6
Language: german

Browser

Name: firefox
version: 50.0.2
language (if different from OS): german

Short summary if your issue
if you move with your mouse curser over the send screenshot you see a disco ;)
the screenshot pops up and hide
Steps to reproduce the issue
go in a job and move over the screenshot
Other details:
Don't hesitate to include details and screenshots.
it is also not possible to save or delete the screenshot, because the disco of screenshot is on top ;)
salesforce.zip

@tuxfre

Converted the file to ananimated GIF (https://cloudconvert.com/mov-to-gif)

Hi @ortenau
I'm afraid that there's not much I can do here, your screen isn't wide enough :rofl:
Ask IT for a bigger monitor.
Do you know what is your current screen resolution on this monitor?
Let me explain, when you hover the link, it triggers the popup, which appears where your pointer is, thus it no longer hovers the link (but the popup) which triggers hiding the popup... and then your cursor is back hovering the link (and it goes on, and on, and on...)
By default, the popup window should have a width equal to 50% of the center column of ServiceCloud (including the "blue" column where the file list is), but if the center column is very small that could cause what you see.
I'll try preventing it from using this blue column as well if I can.

@ortenau
I've just pushed a new version (https://github.com/tuxfre/esko-SC-scripts/commit/15acd8cc7869db2eba17622c076d24f209ebba93, yet untested) let me know if this helps ;)

woops didn't want to close

Hi @ortenau
Did the new releases help?

no, sorry,
still the same issue.
I think it has to do with the size of the screenshot.
smaller images works fine.
Bei weiteren Fragen, stehen wir Ihnen gerne zur Verfügung.
Mit freundlichen Grüßen
Jan Fässler
Jan Fässler  |  Senior Solution Support Engineer  |  Esko
Für Support besuchen Sie: http://esko.com/support
[unknown.png]
Esko-Graphics GmbH  -  Heerskamp 6  -  25524 Itzehoe  -  Germany
Geschäftsführer: Holger Jacobsen, Dagmar Reimers, Bruno Vaes
Amtsgericht Itzehoe HRB 2184, Sitz der Gesellschaft: Itzehoe
From: Benjamin <notifications<EMAIL_ADDRESS>Reply-To: tuxfre/esko-SC-scripts <reply<EMAIL_ADDRESS>Date: Donnerstag, 23. März 2017 um 08:52
To: tuxfre/esko-SC-scripts <esko-SC-scripts<EMAIL_ADDRESS>Cc: Jan Faessler <Jan.Faessler<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>Subject: [Commercial] Re: [tuxfre/esko-SC-scripts] jf_ disco in salesforce (#20)
Hi @ortenauhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_ortenau&d=DwMCaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=VPpdbBpfH7r2g4j_wX-q5cxBzxe5iPP3jgEg6q4QkQg&s=XpXHDXQ0ZECqDahLzwG_nKoC0WSD-stuhGVMoSJwRK4&e=
Did the new releases help?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tuxfre_esko-2DSC-2Dscripts_issues_20-23issuecomment-2D288642110&d=DwMCaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=VPpdbBpfH7r2g4j_wX-q5cxBzxe5iPP3jgEg6q4QkQg&s=-5dDPo79tWY1s5jZkh00i52omvIYgbYo5skl5FesKzQ&e=, or mute the threadhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AZWA-5FATOdreCcGXI0DGZmPrrrqdshX49ks5roiS1gaJpZM4Mj6BZ&d=DwMCaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=VPpdbBpfH7r2g4j_wX-q5cxBzxe5iPP3jgEg6q4QkQg&s=MAWuA5W5Rjdy6rncowlJAKmW5rs_0PBAKqm0yn9p4cU&e=.
Please be advised that this email may contain confidential information. If you are not the intended recipient, please notify us by email by replying to the sender and delete this message. The sender disclaims that the content of this email constitutes an offer to enter into, or the acceptance of, any agreement; provided that the foregoing does not invalidate the binding effect of any digital or other electronic reproduction of a manual signature that is included in any attachment.

Hi @ortenau
Yes, more or less that's the root of the issue, we don't have enough width...
But what is strange is that it shouldn't span over the links...
Could you give me the screen resolution you use, and also if your browser window spans the whole screen width...

Hi,
I use a third-part tool to merge two monitor in one.
Matrox Powerdesk
[cid:3114DA41-63DB-4351-8D12-FF1E19B9FE33]
Bei weiteren Fragen, stehen wir Ihnen gerne zur Verfügung.
Mit freundlichen Grüßen
Jan Fässler
Jan Fässler  |  Senior Solution Support Engineer  |  Esko
Für Support besuchen Sie: http://esko.com/support
[unknown.png]
Esko-Graphics GmbH  -  Heerskamp 6  -  25524 Itzehoe  -  Germany
Geschäftsführer: Holger Jacobsen, Dagmar Reimers, Bruno Vaes
Amtsgericht Itzehoe HRB 2184, Sitz der Gesellschaft: Itzehoe
From: Benjamin <notifications<EMAIL_ADDRESS>Reply-To: tuxfre/esko-SC-scripts <reply<EMAIL_ADDRESS>Date: Donnerstag, 23. März 2017 um 09:48
To: tuxfre/esko-SC-scripts <esko-SC-scripts<EMAIL_ADDRESS>Cc: Jan Faessler <Jan.Faessler<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>Subject: [Commercial] Re: [tuxfre/esko-SC-scripts] jf_ disco in salesforce (#20)
Hi @ortenauhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_ortenau&d=DwMFaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=-nuWvXdCMg7dH0b07JD5TtyI-fK64Z3eVIPRABt9LRk&s=DzSavbY5PrXj00l54JJhHK3QPk8VpWz6l9HDPY1_dug&e=
Yes, more or less that's the root of the issue, we don't have enough width...
But what is strange is that it shouldn't span over the links...
Could you give me the screen resolution you use, and also if your browser window spans the whole screen width...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tuxfre_esko-2DSC-2Dscripts_issues_20-23issuecomment-2D288653444&d=DwMFaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=-nuWvXdCMg7dH0b07JD5TtyI-fK64Z3eVIPRABt9LRk&s=tjLhu4YzZqwiburLZQU6c_d-iM3PXpDaQsXwUgjfxVA&e=, or mute the threadhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AZWA-5FLwdJ6NcamEAWvY-2DcnsuhxQQPH8Cks5rojHqgaJpZM4Mj6BZ&d=DwMFaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=-nuWvXdCMg7dH0b07JD5TtyI-fK64Z3eVIPRABt9LRk&s=W142M7c23c0FKpwOjutS8ee8b9QWDW8jUoI34NfmIj8&e=.
Please be advised that this email may contain confidential information. If you are not the intended recipient, please notify us by email by replying to the sender and delete this message. The sender disclaims that the content of this email constitutes an offer to enter into, or the acceptance of, any agreement; provided that the foregoing does not invalidate the binding effect of any digital or other electronic reproduction of a manual signature that is included in any attachment.

Ah ok...
try going to http://whatsmy.browsersize.com/ so we have some idea on how big it is...

[cid:2ACD37FA-7D11-4AB1-A1DD-1AC2BBD9E4A8]
Bei weiteren Fragen, stehen wir Ihnen gerne zur Verfügung.
Mit freundlichen Grüßen
Jan Fässler
Jan Fässler  |  Senior Solution Support Engineer  |  Esko
Für Support besuchen Sie: http://esko.com/support
[unknown.png]
Esko-Graphics GmbH  -  Heerskamp 6  -  25524 Itzehoe  -  Germany
Geschäftsführer: Holger Jacobsen, Dagmar Reimers, Bruno Vaes
Amtsgericht Itzehoe HRB 2184, Sitz der Gesellschaft: Itzehoe
From: Benjamin <notifications<EMAIL_ADDRESS>Reply-To: tuxfre/esko-SC-scripts <reply<EMAIL_ADDRESS>Date: Donnerstag, 23. März 2017 um 09:58
To: tuxfre/esko-SC-scripts <esko-SC-scripts<EMAIL_ADDRESS>Cc: Jan Faessler <Jan.Faessler<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>Subject: Re: [tuxfre/esko-SC-scripts] jf_ disco in salesforce (#20)
Ah ok...
try going to http://whatsmy.browsersize.com/https://urldefense.proofpoint.com/v2/url?u=http-3A__whatsmy.browsersize.com_&d=DwMCaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=eOyru4XU2_y2qWGizhW66-HvxYyll8PmigvDR9L342I&s=3dTv0hMlokEjrPBBLsne7pZzXWxwxuv-zJslkDx8djk&e= so we have some idea on how big it is...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tuxfre_esko-2DSC-2Dscripts_issues_20-23issuecomment-2D288655757&d=DwMCaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=eOyru4XU2_y2qWGizhW66-HvxYyll8PmigvDR9L342I&s=p7GlXaTPgeppQE2dhBSHIwMIiLhpYRcpqev_njskP14&e=, or mute the threadhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AZWA-5FFUT8BnMQiTXRwTSq4jf63d0RvNoks5rojRTgaJpZM4Mj6BZ&d=DwMCaQ&c=9mghv0deYPYDGP-W745IEdQLV1kHpn4XJRvR6xMRXtA&r=sAOIcfrkcklf16hd-MZNs_-XWoaa-RJ4zqEFzlfMYH8&m=eOyru4XU2_y2qWGizhW66-HvxYyll8PmigvDR9L342I&s=DfZc_HH6J9fN8TybDi3jin2-fUn04sB1ut3Uxcv8X2s&e=.
Please be advised that this email may contain confidential information. If you are not the intended recipient, please notify us by email by replying to the sender and delete this message. The sender disclaims that the content of this email constitutes an offer to enter into, or the acceptance of, any agreement; provided that the foregoing does not invalidate the binding effect of any digital or other electronic reproduction of a manual signature that is included in any attachment.

Hi @ortenau
Unfortunately when you answer by mail the images aren't posted to github...
Can you post to https://github.com/tuxfre/esko-SC-scripts/issues/20 ?

mmm...
So basically the browser window is in a very wide screen... and it has (roughly) a 1:2 ratio
I'd have to see how I can simulate this and figure a workaround for such a special case
I'lll think of it today, and see if I can come up with something
Thanks for the details

I'm closing as "can't reproduce"... sorry


is it possible to change button menu color when it is expanded?

Hi, I would like to set a different color to my menu button when it is expanded. Is it possible with this library? I only know these options:
    fab:fab_addButtonColorNormal="@color/black"
    fab:fab_addButtonColorPressed="@color/red"

is there any way to change it from the code?
Thank you very much!

+1

This will be possible once #49 is implemented.


Most sounds lenghts seem to have shortened

Description

Blender, lightning strike when an artifact spawns, the science upgrade thingy
Reproduction

Screenshots

Additional context

wat

So, the thing is that the sounds they make stop when the do-after finishes, which abruptly cuts it and makes it sound bad.


No optimal performance on Raspberry Pi due to governor "powersafe"

The cpufreq governor on HassOS is set to "powersafe" which on a Raspberry Pi 3B+ leads to a cpu frequency of always 600 MHz. It will never use the higher speeds. On other Raspberry Pi version it is similar.
I changed this to governor "ondemand" for testing purposes and after that the boot time speeded up and even there are much lesser warnings about platforms which take longer than 10 seconds to start. My Raspberry Pi 3B+ then dynamically uses frequency from 600 Mhz to 1400 Mhz.

Hey @tyborall,
How did you cange the setting please, id love to be able to update that setting becuase i constantly get the startup time warnings and reboots and upgrades seem to take ages

I recompiled and switched the kernel, but you can just try to add this to your /mnt/boot/config.txt (on development console):
force_turbo=1
But this will set waranty bit on Raspberry. I never had problems with overclocking.
See also here: https://www.raspberrypi.org/documentation/configuration/config-txt/overclocking.md

Hey @tyborall,
When you say "add this to your /mnt/boot/config.txt (on development console):" how do you mean
Like via a putty session?
or from somewhere in the hassio interface?

You need access to development console if on Hassio: https://developers.home-assistant.io/docs/en/hassio_debugging.html

I also tested on stock HassOS kernel with "force_turbo=1" in config.txt. It will then stay on 1400 MHz (Raspberry Pi 3B+) and will never throttle down and governor still is set to "powersafe".
@pvizeli I suggest to switch to "ondemand" governor on Raspberry Pi platform, which is also default on Raspbian (don't know since when, but they switched that some time ago).

Ah so you did mean via something like putty, I already had that access setup so have been able to add that string to the config file.
Thanks for your help

This issue has nothing to do with overclocking the RPi. This is not what I want to suggest. I just want to point out that Hassio HassOS has governor "powersafe" as default which holds the RPi always at the lowest default cpu frequency (e.g. on RPi 3B+ it is 600 MHz and on RPi 2 it is 700 MHz). This is a performance issue. If this is switched to default "ondemand" then it will dynamically switch to higher frequency if needed and falls back to lowest frequency if the power is not needed. This will do no harm to the hardware...

will do that 👍

Don't know why, but on my Raspbian systems there is ondemand governor used. Double checked right now.

Is there a cpufreq package installed?

We should it now also selected as default. I read that the rpiconfig change that to ondemand but we have no rpiconfig on hassos.

The latest kernel has a cpufreq kernel driver with the "ondemand" governor enabled by default. It has no effect if you have no overclock settings. But when you do, the arm frequency will vary with processor load. Non default values are only used when needed according to the used governor. You can adjust the minimum values with the *_min config options or disable dynamic clocking with force_turbo=1

That is strange. The min/max should be different and in that case the ondemand should be go up/down, I need try it out on evening.

But when I change it to ondemand on HassOS and check current frequency when idle it says 600 MHz an when I then e.g. start addon installation it jumps to 1400 MHz.

And this is default on HassOS:
~ # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
600000
~ # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1400000

perfectly


chore/PSD-3325-amend_ga_cookie_name

PSD-3325
Description
Updated cookie implementation.

do rubocop -A then rebase

Needs further review.


⚠ Bofrost.es has degraded performance

In 982ef4f, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1796 ms

Resolved: Bofrost.es performance has improved in 5de6f6e after 6 minutes.


Switch build_test_android from pixel 6 to pixel 8.

The pixel 6 is around three years old and has outdated Vulkan drivers. We could keep testing on it as a min-spec device, but we should also be testing on the latest device with recent drivers.
ci-exactly: build_all, build_and_test_android

Not sure why we hadn't enabled pixel 8 tests earlier. The pixel 8 phones don't even appear to be used?
https://github.com/iree-org/iree/pull/15796 tried switching the benchmarks but that didn't stick (too much variance compared to pixel 6)

So sketchy...
+ adb shell 'cd /data/local/tmp && LD_LIBRARY_PATH=/data/local/tmp TEST_TMPDIR=/data/local/tmp/iree/tests/e2e/stablehlo_ops/check_vulkan-spirv_vulkan_clamp.mlir/test_tmpdir /data/local/tmp/iree/tests/e2e/stablehlo_ops/check_vulkan-spirv_vulkan_clamp.mlir/iree-check-module --module=/data/local/tmp/iree/tests/e2e/stablehlo_ops/check_vulkan-spirv_vulkan_clamp.mlir/check_vulkan-spirv_vulkan_clamp.mlir_module.vmfb --device=vulkan'
[==========] Running 4 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 4 tests from module
[ RUN      ] module.i8
work/runtime/src/iree/modules/check/module.cc:374: Failure
Failed
Expected equality of these values. Contents does not match.
  lhs:
    4xi8=10 4 8 10
  rhs:
    4xi8=0 4 8 10

[ RUN      ] module.widen_int_i16_i32
work/runtime/src/iree/modules/check/module.cc:374: Failure
Failed
Expected equality of these values. Contents does not match.
  lhs:
    3xi32=65494 0 42
  rhs:
    3xi32=-42 0 42

[ RUN      ] module.xla_reverse
work/tools/iree-check-module-main.cc:65: Failure
Value of: iree_vm_invoke(context_, function_, IREE_VM_INVOCATION_FLAG_NONE, nullptr, nullptr, nullptr, iree_vm_instance_allocator(instance_))
Expected: error code OK
  Actual: 0xb40000787b10f96d, whose error code is INTERNAL: work/runtime/src/iree/hal/drivers/vulkan/direct_command_queue.cc:115: INTERNAL; VK_ERROR_DEVICE_LOST; while invoking native function hal.device.queue.execute; while calling import;
[ 1]   native hal.device.queue.execute:0 -
[ 0] bytecode module.xla_reverse:930 [
    /work/tests/e2e/stablehlo_ops/reverse.mlir:11:3,
    /work/tests/e2e/stablehlo_ops/reverse.mlir:10:11
  ]
      at /work/tests/e2e/stablehlo_ops/reverse.mlir:1:1

I strongly suspect that some of these are us - Android vulkan drivers are often ... special .... but the rate at which we hit issues in them is orders of magnitude higher than others. Wish we had resources to track these down - they're useful canaries :(

I refactored the Android build/test workflow and It does not run on a physical Android device at the moment. The Android lab devices may also go offline at some point. Closing this PR for now.


Update button spacing

Related to https://github.com/github/primer/issues/253#issuecomment-949215306
I'm changing the Button ERB structure so we can avoid unwanted spaces and newlines, which were interfering with spacing. See https://github.com/github/view_component/pull/1121
As stated in the issue, I'm increasing the spacing from icon and counter to 8px and I'm also updating Dropdown to use the Button caret instead of creating a custom one
Before/After:

The change is really subtle, but it does have a slight difference. Before we used margins of 4px but also had a whitespace at the beginning of the text, which made the actual distance of around 6px

Where is the actual 8px change in this diff?

I updated the description with a screenshot.
Now, the button looks like:
icon 8px text 8px counter

could I get 👀  @joelhawksley @ashygee ?


Versioned frequent backups (since typed text gets erased)

This is actually two issues:

A bug;
A proposed workaround.

1. The bug,
which just happened to me,  is that -- sometimes -- when switching between the app and other apps...
... some of the text I typed is "rewound" back to my initial input, and it "loses" more recent text.
.
Reproduce attempt:
i.) Type some form-text in a DIFFERENT app (not notepad),,
then
ii.) highlight & use the android "Share..." clipboard/context menu
to send it to the Notepad app.
iii.) This creates a brand-new Note, w/ the relevant text.
iv.) In this new Note, type some more additional text.
v.) Without exiting, Switch out of the app back to first (unrelated) app.
...
From that point, I dont remember the exact steps.
.
But somehow (maybe by re-Sharing the same text again?? Not clear)...
... When I went back into Notepad,
it "reset" my Note to just its initially-shared text.
.
Last 10 minutes of typing gone.
.
Yes, auto-save was enabled.
.

2. Proposed workaround fix:
Create a 'version' automatic feature,
which saves changes every X frequency -- either time-based, or bytediff-based, or...
... Maybe could simply store the last 5 Save states
?
Like,
My note WAS auto-saved, several times.
.
Maybe that could have kept it
?
2b.
Add a button to restore X saved version,
in case of:
user's latest save (automatic or not)
failed and corrupted/deleted text.

I was able to reproduce the original bug.  Thanks for bring this to my attention.
I'll look into this and get this fixed.

Ok, I just committed a fix for this.  I'll get a release out soon (within the next couple days, if not sooner) since this is a fairly critical issue.

Oh wow- I'm really impressed.
Thank you so much!
I hope it wasn't too difficult to reproduce.
On Mon, Jun 1, 2020, 20:57 Braden Farmer<EMAIL_ADDRESS>wrote:

Ok, I just committed a fix for this. I'll get a release out soon (within
the next couple days, if not sooner) since this is a fairly critical issue.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/farmerbb/Notepad/issues/69#issuecomment-637256231,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA2KHHEWORZEAJ7FDT44L3LRUR2BDANCNFSM4NQIWEPA
.

P.S.
I should point out that other apps, such as Gmail Go, also seem to suffer
related symptoms in similar (not nec. identical) cases.
.
IDK whether the steps-to-reproduce / root cause(s) are the same, or not.
.
(Obviously not your problem, but interesting side trivia...)
On Mon, Jun 1, 2020, 23:15 Joseph Herbert<EMAIL_ADDRESS>wrote:

Oh wow- I'm really impressed.
Thank you so much!
I hope it wasn't too difficult to reproduce.
On Mon, Jun 1, 2020, 20:57 Braden Farmer<EMAIL_ADDRESS>wrote:

Ok, I just committed a fix for this. I'll get a release out soon (within
the next couple days, if not sooner) since this is a fairly critical issue.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/farmerbb/Notepad/issues/69#issuecomment-637256231,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA2KHHEWORZEAJ7FDT44L3LRUR2BDANCNFSM4NQIWEPA
.


Ping issue

Ever since i have had the datapack, my ping would not stay stable. The weird thing is that if the server starts with datapack on my ping would go sky high, if i install the datapack while playing the ping would be fine. Very weird. Please do tell me if you need more info.

I have also tried disabling it, which lowered my ping to double digits. But upon reenabling it, ping just spikes up.

I'm having the same issue

This is mentioned in the readme. https://github.com/slicedlime/seasons#performance

But the TPS is fine so is the MSPT, i dont understand how the ping is related to the data since its just the amount of time it takes the machine to talk to the router.

And I have very fast wifi, my ping usually is in the double digits.

The amount of network data transmitted when using the fillbiome command has been optimized

1.19.4 changelog.

Literally noted in the readme.


Added option to always update the mouse picking via saving the last m…

Hi! We implemented the ff:

Added option to always update the mouse picking even when mouse is not moved via saving the last mouse position
By default it is false.
Snippet to set as always_on:
.with(PickSource {     always_on: true,     ..Default::default()   })
Solves issues: https://github.com/aevyrie/bevy_mod_picking/issues/64 and https://github.com/aevyrie/bevy_mod_picking/issues/67

Thanks! What is the impact of defaulting to always on?
For example, if the window is not active, will it continue to check for intersections every frame? I think the answer is yes.
I ask because based on @Sheepyhead's use case, they would need it to be enabled, and it might actually make sense if this is default behavior. However, my only worry is that it will always be running even when not needed. This isn't an issue now, because mouse events are not sent when the window is inactive.

Looks like the multiple_window example needs a small fix with this change.
https://github.com/aevyrie/bevy_mod_picking/pull/68/checks?check_run_id=1540877088#step:6:405


Activate JohnnyQ5 for sync workflow

Many thanks for contributing to QUBE!
PR Checklist
Please fill in the appropriate checklist below (delete whatever is not relevant). These are the most common things requested on pull requests (PRs).

[ ] This comment contains a description of changes (with reason)
[ ] Referenced issue is linked
[ ] If you've fixed a bug or added code that should be tested, add tests!
[ ] Documentation in docs is updated
[ ] CHANGELOG.rst is updated

Description of changes
Please state what you've changed and how it might affect the user.
Technical details
Please state any technical details such as limitations, reasons for additional dependencies, benchmarks etc. here.
Additional context
Add any other context or screenshots here.

I guess that this should then be commented out:
https://github.com/qbicsoftware/qube-cli/blob/master/qube/create/github_support.py#L67


Unify category names

Description
Corrects two additional categories which appear on the site due case insensitivity or character difference.
See screenshot

你好，来信已收到，请放心。

Approving this to address the issue in the PR 👍. Will create another PR to address issues in the build checker


Add APIs for local changes

Get all local updates
Delete all local changes by resource (id, type)

Implemented in #146


chore: bdd-sbrp-import-1581637118 to 0.0.1

chore: Promote bdd-sbrp-import-1581637118 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@cjxd-bot-test: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

promotion-build
b3d6596d893cb9ed54ca5f43a24817583aef1fa2
link
/test this

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.