Following up from my issues #201

The issue with the Digital Badge Assets Directory being empty continues, I am not sure if this is related to any permission issues, but I am the Global Tenant Admin so ideally that shouldnt be a problem, is there a way we can get on a troubleshooting call.
I tried deleting the app, the sites both from active and deleted sites, and re did the entire process, but the issue continues
See below

Hi @preetamashetty,
Thanks reaching out to us.
Can you please upload this image to the "Digital Badge Assets" library and try opening teams in browser.

If it still doesn't work please open the Digital Badge screen and share the console logs from the browser so we can further investigate. Also share the screenshot of contents in "Digital Badge Assets".
Thanks.

Hi,
I saw the badge when I uploaded it manually, now when I try to access the Champion management app via web browser, I see the below error
@.***
And my issue with team desktop app continues,
@.***
Thanks,
Preetam Shetty | McLarens
Senior Director of IT Infrastructure and Operations
<EMAIL_ADDRESS>Remote - India
www.mclarens.comhttp://www.mclarens.com/
From: v-saikirang @.>
Sent: Wednesday, August 28, 2024 11:41 AM
To: OfficeDev/microsoft-teams-apps-champion-management @.>
Cc: Preetam Shetty @.>; Mention @.>
Subject: Re: [OfficeDev/microsoft-teams-apps-champion-management] Following up from my issues #201 (Issue #203)
Hi @preetamashettyhttps://urldefense.com/v3/__https:/github.com/preetamashetty__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5IhcrP4B8rSg$,
Thanks reaching out to us.
Can you please upload this imagehttps://urldefense.com/v3/__https:/github.com/OfficeDev/microsoft-teams-apps-champion-management/blob/main/src/webparts/clbHome/assets/images/CMPBadge.png__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5Ihcome7An0w$ to the "Digital Badge Assets" library and try opening teams in browser.
image.png (view on web)https://urldefense.com/v3/__https:/github.com/user-attachments/assets/b13ba952-b94f-4465-b785-79dee3b61ebe__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5IhcrFDpyLmw$
If it still doesn't work please open the Digital Badge screen and share the console logs from the browser so we can further investigate. Also share the screenshot of contents in "Digital Badge Assets".
Thanks.
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/OfficeDev/microsoft-teams-apps-champion-management/issues/203*issuecomment-2314396952__;Iw!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5IhcolMf9U7Q$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/BJP2PU3276AHFWMISOSYZH3ZTVSV3AVCNFSM6AAAAABNGZDPMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJUGM4TMOJVGI__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5Ihco42w_vTA$.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>PRIVACY STATEMENT: We are required to capture and process personal information supplied to us in the fulfilment of our services. Our obligations vary depending on the jurisdiction involved. For further details as to how this information is used, kept secure and your rights, please see the relevant Privacy Statement on our website – https://www.mclarens.com/privacy-policy/

After multiple refreshes, this is what I see on the browser
@.***
Thanks,
Preetam Shetty | McLarens
Senior Director of IT Infrastructure and Operations
<EMAIL_ADDRESS>Remote - India
www.mclarens.comhttp://www.mclarens.com/
From: Preetam Shetty
Sent: Wednesday, August 28, 2024 5:46 PM
To: OfficeDev/microsoft-teams-apps-champion-management @.>; OfficeDev/microsoft-teams-apps-champion-management @.>
Cc: Mention @.***>
Subject: RE: [OfficeDev/microsoft-teams-apps-champion-management] Following up from my issues #201 (Issue #203)
Hi,
I saw the badge when I uploaded it manually, now when I try to access the Champion management app via web browser, I see the below error
@.***
And my issue with team desktop app continues,
@.***
Thanks,
Preetam Shetty | McLarens
Senior Director of IT Infrastructure and Operations
<EMAIL_ADDRESS>Remote - India
www.mclarens.comhttp://www.mclarens.com/
From: v-saikirang<EMAIL_ADDRESS>Sent: Wednesday, August 28, 2024 11:41 AM
To: OfficeDev/microsoft-teams-apps-champion-management<EMAIL_ADDRESS>Cc: Preetam Shetty<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [OfficeDev/microsoft-teams-apps-champion-management] Following up from my issues #201 (Issue #203)
Hi @preetamashettyhttps://urldefense.com/v3/__https:/github.com/preetamashetty__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5IhcrP4B8rSg$,
Thanks reaching out to us.
Can you please upload this imagehttps://urldefense.com/v3/__https:/github.com/OfficeDev/microsoft-teams-apps-champion-management/blob/main/src/webparts/clbHome/assets/images/CMPBadge.png__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5Ihcome7An0w$ to the "Digital Badge Assets" library and try opening teams in browser.
image.png (view on web)https://urldefense.com/v3/__https:/github.com/user-attachments/assets/b13ba952-b94f-4465-b785-79dee3b61ebe__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5IhcrFDpyLmw$
If it still doesn't work please open the Digital Badge screen and share the console logs from the browser so we can further investigate. Also share the screenshot of contents in "Digital Badge Assets".
Thanks.
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/OfficeDev/microsoft-teams-apps-champion-management/issues/203*issuecomment-2314396952__;Iw!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5IhcolMf9U7Q$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/BJP2PU3276AHFWMISOSYZH3ZTVSV3AVCNFSM6AAAAABNGZDPMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJUGM4TMOJVGI__;!!N_yVCZ6JDw!WRdduyJIZsvlSHnQ1ZY9icR87_ZWQujDBzYwSmqNO3n09qI7uIIvE4PqtmBRRsAbQENAR-y9jx9UH353ON5Ihco42w_vTA$.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>PRIVACY STATEMENT: We are required to capture and process personal information supplied to us in the fulfilment of our services. Our obligations vary depending on the jurisdiction involved. For further details as to how this information is used, kept secure and your rights, please see the relevant Privacy Statement on our website – https://www.mclarens.com/privacy-policy/

Hi @preetamashetty,
Can you please directly share the images here in Git hub. Images sent through email are getting masked.
And as requested please share the console logs which will help us to investigate.
Thanks.

This is the error I am getting both on Teams Desktop Client

And this what I see on the browser

Can I send the console logs privately

teams.microsoft.com-1724863426441.log

Hi @preetamashetty,
Thanks for sharing the logs.
Can you please confirm if you have CDN enabled in your tenant.
Thanks.

Dear Sai,
No we don't have CDN enabled on our tenant
Thanks,
Preetam Shetty | McLarens
Senior Director of IT Infrastructure and Operations
<EMAIL_ADDRESS>Remote - India
www.mclarens.comhttp://www.mclarens.com/

From: v-saikirang @.>
Sent: Thursday, August 29, 2024 11:32 AM
To: OfficeDev/microsoft-teams-apps-champion-management @.>
Cc: Preetam Shetty @.>; Mention @.>
Subject: Re: [OfficeDev/microsoft-teams-apps-champion-management] Following up from my issues #201 (Issue #203)
Hi @preetamashettyhttps://urldefense.com/v3/__https://github.com/preetamashetty__;!!N_yVCZ6JDw!XV3K52hhBoJ8QOXHt-GCi3O8JZKRO2IgR3PoFqNbf4Z4MGLqg2qehluPXjF0L6Q_5MPQ7woduKwf9dcHWA4KHWaIfGoZkw$,
Thanks for sharing the logs.
Can you please confirm if you have CDN enabled in your tenant.
Thanks.
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/OfficeDev/microsoft-teams-apps-champion-management/issues/203*issuecomment-2316779104__;Iw!!N_yVCZ6JDw!XV3K52hhBoJ8QOXHt-GCi3O8JZKRO2IgR3PoFqNbf4Z4MGLqg2qehluPXjF0L6Q_5MPQ7woduKwf9dcHWA4KHWatwBVKxQ$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/BJP2PU4AVISOZZEKGUDJCGDZT22QTAVCNFSM6AAAAABNGZDPMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJWG43TSMJQGQ__;!!N_yVCZ6JDw!XV3K52hhBoJ8QOXHt-GCi3O8JZKRO2IgR3PoFqNbf4Z4MGLqg2qehluPXjF0L6Q_5MPQ7woduKwf9dcHWA4KHWa6o99qvg$.
You are receiving this because you were mentioned.Message ID: @.***>
PRIVACY STATEMENT: We are required to capture and process personal information supplied to us in the fulfilment of our services. Our obligations vary depending on the jurisdiction involved. For further details as to how this information is used, kept secure and your rights, please see the relevant Privacy Statement on our website – https://www.mclarens.com/privacy-policy/

Hi @preetamashetty ,
Another user had similar issue and it turned out they had CDN enabled. Can you please check this issue  and share screenshots by running those commands:

CDN is disabled

For some odd reason, teams web is working fine now, its only with desktop client, that I am seeing this error

Teams Web

Hi @preetamashetty,
Can you please try clearing your teams cache, sign out and sign in.
And can you also try opening the App directly from Apps section.
Thanks.

Did everything, cleared cache, reset the app, sign out and sign in and finally uninstall and reinstall the app, same issue
@.***
Thanks,
Preetam Shetty | McLarens
Senior Director of IT Infrastructure and Operations
<EMAIL_ADDRESS>Remote - India
www.mclarens.comhttp://www.mclarens.com/
From: v-saikirang @.>
Sent: Friday, August 30, 2024 12:47 PM
To: OfficeDev/microsoft-teams-apps-champion-management @.>
Cc: Preetam Shetty @.>; Mention @.>
Subject: Re: [OfficeDev/microsoft-teams-apps-champion-management] Following up from my issues #201 (Issue #203)
Hi @preetamashettyhttps://urldefense.com/v3/__https:/github.com/preetamashetty__;!!N_yVCZ6JDw!TXmBv-Yv223vRMg3ojD_6HXUIgQ1d21hnodNtImNkR4ti-XBnxarS-B5AzNAzX1wyOP9HKxInAvzy-AGo4yq9UUa7ucapg$,
Can you please try clearing your teams cache, sign out and sign in.
And can you also try opening the App directly from Apps section.
Thanks.
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/OfficeDev/microsoft-teams-apps-champion-management/issues/203*issuecomment-2320307343__;Iw!!N_yVCZ6JDw!TXmBv-Yv223vRMg3ojD_6HXUIgQ1d21hnodNtImNkR4ti-XBnxarS-B5AzNAzX1wyOP9HKxInAvzy-AGo4yq9UWLJSzlHA$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/BJP2PU2YCYEZPKP7FFQDT7DZUAL7DAVCNFSM6AAAAABNGZDPMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRQGMYDOMZUGM__;!!N_yVCZ6JDw!TXmBv-Yv223vRMg3ojD_6HXUIgQ1d21hnodNtImNkR4ti-XBnxarS-B5AzNAzX1wyOP9HKxInAvzy-AGo4yq9UU1B0DAwA$.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>PRIVACY STATEMENT: We are required to capture and process personal information supplied to us in the fulfilment of our services. Our obligations vary depending on the jurisdiction involved. For further details as to how this information is used, kept secure and your rights, please see the relevant Privacy Statement on our website – https://www.mclarens.com/privacy-policy/

Hi @preetamashetty,
Can you please share your email and availability for a Teams call. We are usually available during 10:00 AM - 7:00 pm IST.
Thanks.

Can we do this call on Monday 3 pm IST, my email address is<EMAIL_ADDRESS>Thanks,
Preetam Shetty | McLarens
Senior Director of IT Infrastructure and Operations
<EMAIL_ADDRESS>Remote - India
www.mclarens.comhttp://www.mclarens.com/
From: v-saikirang @.>
Sent: Friday, August 30, 2024 4:42 PM
To: OfficeDev/microsoft-teams-apps-champion-management @.>
Cc: Preetam Shetty @.>; Mention @.>
Subject: Re: [OfficeDev/microsoft-teams-apps-champion-management] Following up from my issues #201 (Issue #203)
Hi @preetamashettyhttps://urldefense.com/v3/__https:/github.com/preetamashetty__;!!N_yVCZ6JDw!WP0qRymEu1tPQdi9eEQX_pI4a2YovCnmnT_AiViYLpB49TiKBWLDun8a2cDch0yonqANUiJvHoRUWK69kWcFr_o94gWOrw$,
Can you please share your email and availability for a Teams call. We are usually available during 10:00 AM - 7:00 pm IST.
Thanks.
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/OfficeDev/microsoft-teams-apps-champion-management/issues/203*issuecomment-2320883764__;Iw!!N_yVCZ6JDw!WP0qRymEu1tPQdi9eEQX_pI4a2YovCnmnT_AiViYLpB49TiKBWLDun8a2cDch0yonqANUiJvHoRUWK69kWcFr_rpO9JD_Q$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/BJP2PU7ZONSJ7JYUED3SWCLZUBHORAVCNFSM6AAAAABNGZDPMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRQHA4DGNZWGQ__;!!N_yVCZ6JDw!WP0qRymEu1tPQdi9eEQX_pI4a2YovCnmnT_AiViYLpB49TiKBWLDun8a2cDch0yonqANUiJvHoRUWK69kWcFr_qY8QdpHQ$.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>PRIVACY STATEMENT: We are required to capture and process personal information supplied to us in the fulfilment of our services. Our obligations vary depending on the jurisdiction involved. For further details as to how this information is used, kept secure and your rights, please see the relevant Privacy Statement on our website – https://www.mclarens.com/privacy-policy/

Hi @preetamashetty,
Can you please share your email in github.
Thanks.


Android M Parallax problems on Nexus 5 (at least)

have no parallax effect on Nexus 5 + Android M (6.0) because there is a bug when someone is trying to register to sensor manager with SENSOR_DELAY_FASTEST rate.
so my workaround at this moment is:
public void registerSensorManager() {
        if (getContext() == null || mSensorManager != null) return;
        mSensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);

        if (mSensorManager != null) {
            int sensorUpdateRate = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                    ? SensorManager.SENSOR_DELAY_GAME
                    : SensorManager.SENSOR_DELAY_FASTEST;
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR),
                    sensorUpdateRate);
        }
    }

P.S. guess this bug appeared in Android M because of battery optimizations so maybe they are deprecated this rate or so. can't find details. bug is described here: https://code.google.com/p/android/issues/detail?id=189681&colspec=ID Type Status Owner Summary Stars

Hi ZuZuK, thanks for bringing this issue to attention! For now, it doesn't look like there has been any confirmation that SENSOR_DELAY_GAME is the fastest supported rate on Android M, only that there are specific instances where it doesn't work. Because of this, I'd hate to hardcode something like the workaround into the library prematurely.
That being said, my plan for now is to:

Expose sensorDelay as an optional parameter to registerSensorManager, as discussed in #11. This will at least allow the workaround you specified to be pushed out of the library for now.
Monitor the issue you linked to for future updates.

I have release version v1.1.2, which should expose an option to configure the sensor delay as a temporary workaround.

thx) working fot me


Bigquery labels lengths, key chars

https://cloud.google.com/bigquery/docs/labels-intro#requirements
Keys have a minimum length of 1 character and a maximum length of 63 characters, and cannot be empty. Values can be empty, and have a maximum length of 63 characters.
Keys and values can contain only lowercase letters, numeric characters, underscores, and dashes. All characters must use UTF-8 encoding, and international characters are allowed.

Thanks @joellabes! And thanks for merging. I'm a user!


fix create/start/stop/restart computeinstance

@vijetajo

@sdgilley : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Add more commercial Fortran compilers

And describe each of them using their own words as copied from their
websites.

I merged it. Now the compiler page looks decent, and we can keep improving it with further PRs.


Rust API: Expose RecordingStreamError

Describe the annoyance
My preferred coding style is to never use type aliases for std::result::Result (such as rerun::RecordingStreamResult), but the type RecordingStreamError is private. Rust libraries typically make their error types public even if they also offer a Result.
This lack of public type might also make it impossible to pass the error through some generic error-handling code that required the error type to be named, but I don't have a practical example of that.
Please make RecordingStreamError public (possibly as a struct wrapper if you wish to avoid revealing the enum variants).
Additional context

rerun 0.9.0

Good catch!
There really should be some compiler setting to catch this mistake 🤔

Oh, and I could write a PR for this if you like — just let me know whether the enum should be wrapped to be hidden or not as I mentioned above.

unreachable-pub does something else - it checks that everything marked pub is exported from the crate. What I want is that anything marked pub only uses types that are also marked pub

Let's just make RecordingStreamError public. Adding wrappers around everything is very annoying at this early stage in the project. A PR would be very welcome!


Reading from cache returns zero

Sometimes on read of codeLensCache the filename will successfully match while the data is empty until the cache finishes updating

Proposed fix: Cache timeout to refire code lens workflow after second to see if cache contains objects
if (cache.codeLensCache[filename]!.length === 0) {
                    setTimeout(() => {
                        this._onDidChangeCodeLenses.fire();
                    }, 1000);
                }


Solidity style guide

Our solidity code style isn't consistent. We should probably conform to the style guide: https://solidity.readthedocs.io/en/latest/style-guide.html

+1


Problem: No un-jail instruction in the testnet docs

It is provided in the chain-maind cli page but not included in the testnet docs.

I think we just need to mention some easier & common operations like transfer, staking & query balance is enough for the testnet doc guide. We may add a reminder and redirect people to chain-maind cli page, like "If you wish to perform more advance operations, please refer ..."


Svelte error reported in PearAI and not in VS-Code or Cursor

Type: Bug
When I open any svelte file in PearAI, I get an error on the script tag.
"Error in svelte.config.js
Error: Cannot find module @rollup/rollup-darwin-arm64. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try npm i again after removing both package-lock.json and node_modules directory.   svelte"
With the same set of files opened in VS-code or Cursor IDE this error is not displayed.
VS Code version: PearAI 1.89.1 (58996b5e761a7fe74bdfb4ac468e4b91d4d27294, 2024-09-18T15:04:04.945Z)
OS version: Darwin arm64 24.1.0
Modes:

System Info

Item
Value

CPUs
Apple M3 Max (16 x 2400)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_graphite: disabled_offvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
21, 11, 7

Memory (System)
48.00GB (0.61GB free)

Process Argv
--crash-reporter-id 0832704a-0485-442f-9154-e6e323dd23dc

Screen Reader
no

VM
0%

Extensions (7)

Extension
Author (truncated)
Version

vscode-json
and
1.5.2

vscode-tailwindcss
bra
0.12.10

postcss
css
1.0.9

prettier-vscode
esb
11.0.0

LiveServer
rit
5.7.9

tailwind-fold
sti
0.2.0

svelte-vscode
sve
109.0.1

A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscod805cf:30301675
binariesv615:30325510
vsaa593:30376534
py29gd2263:31024239
c4g48928:30535728
azure-dev_surveyone:30548225
962ge761:30959799
pythongtdpath:30769146
welcomedialogc:30910334
pythonnoceb:30805159
asynctok:30898717
pythonmypyd1:30879173
h48ei257:31000450
pythontbext0:30879054
accentitlementsc:30995553
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
cppperfnew:31000557
dsvsc020:30976470
pythonait:31006305
dsvsc021:30996838
bdiig495:31013172
a69g1124:31058053
dvdeprecation:31068756
dwnewjupytercf:31046870
impr_priority:31102340
nativerepl2:31139839
refactort:31108082
pythonrstrctxt:31112756
flighttreat:31134774
wkspc-onlycs-t:31132770
nativeloc2:31134642
wkspc-ranged-t:31125599
fje88620:31121564

Why did you report this as a VS Code issue?

I will remove the issue. PearAI’s error reporting system automatically directed the problem here which was a mistake. GaryOn Sep 22, 2024, at 11:46 PM, John Murray @.***> wrote:
Why did you report this as a VS Code issue?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Should have been posted in PearAI repo!


Add support for KH series

https://github.com/TonyM1958/HA-FoxESS-Modbus/issues/4#issuecomment-1517860676

https://github.com/nathanmarlor/foxess_modbus/issues/202#issuecomment-1527287063

Yep, we don't support the KH series yet - I really need someone with a KH to test things with.
The things we need to know are:

The values of holding registers 30000 - 30015. They contain the model number, which we use the detect the model
Exactly which holding registers are available over a direct lan connection, and which input registers are available over RS485 (although based on one of the comments above it doesn't make any input registers available). TonyM1958's integration just tries to poll all possible registers all of the time, and ignores any errors from the inverter saying that register isn't available, which doesn't work for us as we read multiple registers at a time.

Annoyingly I'm unwell and can't make it to a computer at the moment, and it's a bit hard to help from a mobile. If you're comfortable using modpoll, getting the values of 30000-30015, and seeing which of the registers in TonyM1958's yaml file are actually available on the KH (and which throw errors), that should be all we need. If you're a software person and are happy setting up a dev environment, that even better and I can guide you through which bits to change to add support.

Hope you return to health speedily!
I used Node-Red to read the values of holding registers 30000 - 30015:
they return as:
0: 75
1: 72
2: 49
3: 48
4: 46
5: 53
6: 32
7: 32
8: 32
9: 32
10: 32
11: 32
12: 32
13: 32
14: 32
I will work my way through the logs and see which input registers are available and revert.
not a software person, but can get through most things through a methodical approach!

Cheers! That's "KH105", with no funky business, which is great.
Are you connected using an RS485 adapter, or a direct lan connection? (Fox's inverters often expose different sets of registers over those two connection types)

It was one of the first KH10.5 systems installed in South Africa, have 3x energy cube high voltage series  batteries installed as well. I have a WiFi 2.0 dongle installed and running as well.
there isn’t a LAN port on the KH other than the BMS connection, so RS485 is the only local option for connection.
I used a RUNCCI-YUN-USB-to-RS485-Converter to connect to my odroid n2+ running HASS natively.
I polled registers 10000-10007 as well, and get the same values for the model details.
will work my way through the registers and put a spreadsheet together for the KH10.5

Aha, good to know ta! I believe it's got much the same as the H1, see here: https://github.com/TonyM1958/HA-FoxESS-Modbus/wiki/H1-H3-Modbus-Map.xls. We just need to know if there are any which aren't supported) return an error when

i've had a look through all of the logs for @TonyM1958's integration, and all of them are working on the KH10.5 via USB serial! so i reckon they are all supported.
Ive gone through the .XLS sheet, and these are the missing values i can locate from the modbus TCP document i have. not sure if they are relevant for the single phase devices, some seem to be replicated.

from what i can figure out, the "H" series from Fox ESS all use the same modbus protocols and registers. let me know if you need me to work on something else, id love to have the KH 10.5 included in @nathanmarlor 's integration. it seems to be the current "best access scenario" for using modbus to integrate locally into HA.

Ah, if you're just looking for errors from TonyM1958's integration, I think you need to ramp up the log level of pymodbus? I'll put together a beta which assumes the KH supports everything the H1 supports anysay (when I'm able to), and we'll quickly find out if there's a gap!
More importantly though... You've got a modbus document?! Is that from FoxESS? Are you able to share it?

from what i can figure out, the "H" series from Fox ESS all use the same modbus protocols and registers

Ish, the AIO seems to be missing some registers

Energy Storage Inverter Modbus TCP Communication protocols for FOXESS.pdf
hope this helps!
Send me whatever you need tested, im happy to be a part of getting it sorted and working for the KH10.5 and AIO6kw (installing HA on an odroid for my dads one soon)

Energy Storage Inverter Modbus TCP Communication protocols for FOXESS.pdf
appologies, i think that will load the file correctly..

Amazing! Where did you find that?

You won't believe the number of hours which have gone into trying to reconstruct that table through trial and error... I think we probably managed to get most of it flicking through, but the fault codes in particular are a goldmine

@TonyM1958 FYI

Thank you for all your hard work and effort it’s greatly appreciated! @canton7 @TonyM1958 @nathanmarlor
I spent many hours trying to get into the registers via modbus polling, and tried to get into the WiFi dongle to access data with no success. At least we can work from here!

Thank you for all your hard work and effort it’s greatly appreciated! @canton7 @TonyM1958 @nathanmarlor
I spent many hours trying to get into the registers via modbus polling, and tried to get into the WiFi dongle to access data with no success. At least we can work from here!

FYI if you want to play with the WiFi dongle you can NAT the traffic and intercept/manipulate. I did a PoC here but haven't had time to develop it further -> https://github.com/nathanmarlor/fox-local

@MJW911 If you have access to can protocol information I would be grateful for anything you have on the FoxESS protocol. It's 95% reverse engineered but some parts are difficult to resolve. Likewise with their parallelisation protocol.

Thank you for all your hard work and effort it’s greatly appreciated! @canton7 @TonyM1958 @nathanmarlor
I spent many hours trying to get into the registers via modbus polling, and tried to get into the WiFi dongle to access data with no success. At least we can work from here!

FYI if you want to play with the WiFi dongle you can NAT the traffic and intercept/manipulate. I did a PoC here but haven't had time to develop it further -> https://github.com/nathanmarlor/fox-local

That ship sailed for me when I hit a dead end on my own (didn’t know this existed), so went modbus via USB! may well be worth tinkering with further, will have a look and see.

Energy Storage Inverter Modbus TCP Communication protocols for FOXESS.pdf appologies, i think that will load the file correctly..

Just looking through this pdf. Some of the information explains values I've been looking at - for example, true, reactive and apparent power values for inverter grid and EPS output fills in some of the gaps.
I'll work through and look at updating the spread sheet with names and unique ID, scale, precision, units over the next few days and validate against my H1 so we have a common reference.

BTW - although the PDF gives addresses in the 11000 input range, we have already mapped some of  them to registers in the 31000 holding range, so I'll try document both where I can.
Possibly important as, from what I have seen so far, KH presents holding registers rather than input registers via modbus RTU. In my integration code, where I can, I use the holding registers for sensors to allow the same code to work on both H1 and KH.
I also don't (yet) know if we will be able to infer more about H3 addresses from the PDF?

Also found this on AWS a few days ago:
Fox.Cloud.API.Protocol.pdf
Does not add anything in terms of address, but does contain a list of fault codes and messages that correspond to the alarm codes raised by Fox e.g. e.g. Grid Volt Fault = ID26. I've added the codes from this to a new tab in the spread sheet.
I will look at how this relates to the bit fields in the other PDF when I get a chance. So far, there seem to be ID1-ID256 in this document (which I had assumed meant a unsigned byte code) but there are 8 x 16-bit fields (=128 bits) in the latest PDF. Some mapping from bits to code seems to be required here?

You won't believe the number of hours which have gone into trying to reconstruct that table through trial and error... I think we probably managed to get most of it flicking through, but the fault codes in particular are a goldmine

I find it quite baffling that these documents aren't publically available and easily found on their website, since they've gone to the engineering effort of making it available via Modbus and specifically mention the use case in the user manual.

Three is a document somewhere which says if you're making some kit to integrate with a foxess inverter, you need to get in contact, sign an NDA, and they'll tell you about just the registers you'll need.

Three is a document somewhere which says if you're making some kit to integrate with a foxess inverter, you need to get in contact, sign an NDA, and they'll tell you about just the registers you'll need.

Instructive to compare to eg https://www.kamstrup.com/en-en/heat-solutions/meters-devices/modules/hc00382-modbus-kmp-tcpip which is documented to the Nth degree. Cultural differences between different mfrs, perhaps. Anyway, getting well OT now, good that the info is out there for all to use, NDA or not!

I've created the beta v1.5.1b1 with my first attempt at KH-series support.
@MJW911 Please try it out, and let me know what works / doesn't work.
Thanks!

Epic!
Feedback:

Downloaded and installed without issue.
selected the RUNNYUCCI device from the USB serial menu, and initially got this error:

after trying a few restarts with no success, i went looking for what else was accessing the modbus device... Node-Red was the culprit. I disabled all of the nodes related to modbus, restarted HA, and success!
I have also downloaded and installed @nathanmarlor 's energy management GH which is also working.
will work through checking sensors and matching data with the system readings on the screen to assess accuracy and performance and revert.
not sure is its an issue with the whole integration, but i cannot see a total PV power entity, only the readings for each string (i have two strings running on 2/4 MPPT's on the system.

Aha perfect, thank you! Yep, please check that each sensor looks correct, compared to the foxess app etc, if you can.
Yeah, the inverter doesn't provide a total PV power register (although it does provide total PV energy). You can add a template sensor, or wait for #129

i've updated to ver 1.5.2 and gone through all the sensors and compared to foxcloud and the machine screen. all are accurate and the system appears to be stable in operation.
The KH series has 4x MPPT's available, so there will be registers for PV3 and PV4 but i cannot seem to locate them.
is there a sensor available for Min SOC (On-Grid), register 41011 (16bit) and a toggle functionality? i see that it keeps defaulting back to 10%. In SA we have loadshedding (4 hours at a time, up to 16 hours/24 hour period) so using the min SOC (on Grid) as a buffer is essential for functionality in keeping a buffer present. would also like to be able to adjust it according to weather, upcoming scheduled heavy use power periods and the loadshedding data (integrated via an API from a data pool)
the number of batteries connected, cycle count, and an estimate of their lifespan would also be useful, along with a reading of residual energy (remaining battery BMS power).
having mapped the foxcloud data, app data, and data available on the device screen, its great to be able to see entities via modbus which aren't available on other platforms.

i've updated to ver 1.5.2 and gone through all the sensors and compared to foxcloud and the machine screen. all are accurate and the system appears to be stable in operation.

Great, thanks!

The KH series has 4x MPPT's available, so there will be registers for PV3 and PV4 but i cannot seem to locate them.

:(

is there a sensor available for Min SOC (On-Grid), register 41011 (16bit) and a toggle functionality?

If the register exists and is writable, yes I can add a sensor. However, as far as I know, the KH only exposes holding registers (not input registers) and 41001 is an input register (and has to be, as it's writable).
So, you tell me: does that register exist and is it writable? You can test with modpoll.

the number of batteries connected, cycle count, and an estimate of their lifespan would also be useful, along with a reading of residual energy (remaining battery BMS power).

Again, depends on whether the KH exposes registers for these. The register for kWh remaining is input register 11037 -- does that exist on the KH? Please test with modpoll.

i am learning a lot and getting my head around the programming and how this all works and the programming side of things, and whilst i can dimestack weld a fart onto a rainbow in a thunderstorm, i am coming short on getting modpoll to work on my setup. could you assist?
i have tried node red, but as soon as i poll from node red, the modbus foxess integration throws an ex-wife and refuses to communicate and i have to re set it all. i have tried to get modpoll working on my setup, but am not coming right. (odroid n2+ running HASSIO native. accessing via Macbook m2, but have a windows VM on the mac if needed).
i really want to contribute meaningfully to this project, but am phoning-a-friend on this...

Matt: I can access modbus on both LAN and RS485 on H1, but there is only the RS485 port on KH so I am guessing you are polling the same connection that HA is using, so your messages are probably getting mixed up and confusing HA.  In my case, I unplug the USB adapter from HA and plug it into a PC to poll for registers on RS485.
This is the tool that I use: https://github.com/ClassicDIY/ModbusTool. Its a windows GUI that can read a block of addresses. Use whichever tool works best for you.
Poll holding registers 31000 to 31005 to start with - these are PV1 Voltage, Current and Power and PV2 Voltage, Current and Power so you can see what the values look like. I think you are looking for a similar set of 6 consequetive registers for PV3 and PV4, somewhere higher than 31039? When you run out of registers, you will get an error.
If you record or screen shot the values you get back for any registers you find it would be useful to post them. I'm still looking for holding registers addresses for some of the input registers we now know about and can probably recognise some of them.
You can also check if you have any input registers in the range 11000 - 11095 as discussed above. We get both holding and input registers on H1, but so far, have only detected holding registers when looking at KH.

thanks Tony!
that makes sense, i will do that and revert!

righto, after some serious pain with Mac and windows running on VM, we have success!
so the KH series DOES expose input registers!

the challenge with establishing where the PV3 and PV4 addresses are stems from the fact i only have PV1 and PV2 installed with strings...
these are the holding registers i could poll

will work through what i have polled and see how it relates to data recorded from foxcloud and through @TonyM1958 's spreadsheet.

Oh fantastic, nice one! My guess is that it's probably almost identical to the H1, but with PV3 and PV4 tacked on somewhere

Not for the faint hearted, so don't try if not completely confident... you could switch off DC from panels if you have an isolator and swap PV1, PV2 to PV3, PV4 and look for where they pop up? Warning though, possible high DC voltages as panels will be live...?

I'd definitely only recommend doing that after dark!

Definitely, unless they are wired through an external DC isolator switch that means you can disconnect safely.

it seems to be a bit of a blend between the H1 and H3 registers, with some overlap between the input and holding registers in some entities. lets see if fox has the protocol document for all the registers...
in the meantime, i guess its a case of balancing between accessing the entities you need, and having access to all of the registers.
ill try anything twice, so when i get a gap ill disconnect the PV1 and PV2 strings and see where they pop up on PV3 and PV4.
both are on dual-pole isolators, with heir own surge protectors so it wont be an issue to switch across. I WOULD NOT RECOMMEND ANYONE JUST TRY THIS! ( theres live AC in&out, Battery DC in, and Panel DC connections all in close proximity)
whilst we love the high voltage capabilities of the fox systems, the amount of damage DC voltage and current that high will cause wont buff out!!

We can look at what's common and what different and add a KH tab if needed. H3 has 3 x PV inputs but only 2 x MPPT and hence only 2 sets of PV registers. So far as I can tell PV1 and PV2 operate in parallel so, technically PV2 registers are really PV3.
KH has 4 x MPPT however, so I expect there will be 4 sets of registers. Also PV3 and PV4 are listed on the foxesscloud, so I don't think we are barking up the wrong tree here...

If you can't identify registers, here's what I tend to do: create a dummy sensor e.g. called 31039 in HA that just scans the 16 bit register every minute or 2 and let it run for 24 hours. You can then go through the dummy sensors to see how they behaved. Stuff like PV has an obvious signature. Others correspond to battery charge or discharge, load power etc. Often you find another sensor with a similar shape that gives you a strong clue to what is going on.

Another approach I've used is to compare the holding registers (which we're pretty confident in, as they seems to be the same as the H1) to the input registers. E.g. if you're looking for PV1, read the current value of the PV1 holding register, then scan through the input registers for a register with the same value (being aware that the holding registers might change its value as you do this!).
Once you've found a candidate, poll the input and holding registers together for a bit: if they change to the same values at the same time, they probably represent the same value.

Also, are you using the W610? If you are, be aware that it can't reliably read more than 8 registers or so, and the modbus tool will often just give you garbage / zeros for any register beyond this.

I’m using a cheapie USB to Modbus converter. Downloaded the RTU to TCP converter app from the iOS App Store and it works great!
I’m limited to 10 registers at a time for polling, but have managed to switch between windows on the VM running the classic DIY modbus tool, and the converter app easily to check things in batches.
the plan is to work through the holding registers first and ensure the values are accurate, and then work my way through the inputs to match values.
Once I’ve narrowed in, I can poll the holding and inputs at the same time to see if they’re matching. Will take some time…

Matt, quick look through the registers... looks like Moat match what I expect for H1 in latest spreadsheet so I don't think you need to spend ages comparing the ones already documented if the values are in the right ball park. Hope I can look later and try to pick out stuff with values that is not documented.
From what I recall, I didn't add the registers around 42000 to the spread sheet as it's mostly specialised grid and inverter settings that it's probably best not to mess with as understanding the effects might be very hard or even worst case void warranties...

Thanks Tony! imho, its pretty slack on the part of Fox to allow modbus connections, without some element of control or publishing the registers for values.
Given the cost of these things i'm very cautious with what is done to and with the data, would hate to have a "rapid unscheduled disassembly" on any of it!
is there a spreadsheet for this project which sets out the goals for what is intended to be achieved in terms of monitoring entities, adjusting specific settings, or tracking specific data values? i believe for most folks its a case of "knowing what the time is" at the end of the day, without "needing to know how the watch works".

For me, it's understanding what is there and how it can be used to better monitor and support users and solve issues that come up. The spreadsheet is documenting what I find as a reference. My code is a test bed for looking at sensors on my H1 and what they show me (and others, if they want), For me, during this development phase, it's a bit more agile than the production code developed by Nathan and Antony so I can play with stuff but that may change in the future. It's entirely up to Nathan / Antony what they decide to incorporate into their code - mostly driven by their own use, user comments and issues added here, it seems.
Other people are down and getting dirty looking into stuff on the battery CAN bus, delving a lot deeper into stuff. I think I'm here to look at the system rather than its component, if that makes sense.
BTW - looking at your data is useful. Registers 11056 and 11061 to 11068 are telling me your inverter had a recoverable fault when you did the scan. Grid Lost / Grid Volt Fault. We don't often see active faults in the data. I hear Load Shedding Events are quite common in SA? Be useful to look for the same pattern in the holding registers - 31027 is the inverter state as a starting point but that is now telling me you switched to EPS and the fault codes, possibly 31031 to 31038, went away?

From what I recall, I didn't add the registers around 42000 to the spread sheet as it's mostly specialised grid and inverter settings that it's probably best not to mess with as understanding the effects might be very hard or even worst case void warranties...

What I meant by this is that there is almost certainly some factory calibration of the inverter after it's built. From the PDF, some of these settings look like they might relate to this, so could well vary from one inverter to another and require test rigs to set. Changing or trying to compare calibration settings across different inverters would be bad and probably a waste of time.

i'm with you 100%!
the old adage of "it was fine, then we fiddled with it, then we fixed it, and now its F#####!" springs to mind! there seem to be a few different sets of goals for folks out there, from maximising savings on grid recharge, to tracking performance, to adjusting parameters. I have a lot of experience with user interface development and selecting work flows, perhaps that will assist with how the features and options are laid out? e.g. features and options are grouped and assigned levels, a basic user may want just PV total, battery SOC, and grid usage, to a more advanced set of options (with a disclaimer!)
your spreadsheet is extremely useful, so ive been putting together a UI map for levels of data which can hopefully assist the project.
in SA the grid power is a massive problem! firstly, exporting back to grid is not an option in most cities, but may get there in future.
secondly, loadshedding is a daily headache. the power is off on the grid for four hours (sometimes longer) at a time, often there is residual 5V - 8V AC current in the incoming (possibly an earth leakage on the municipal side, or earth-neutral issue etc).
due to the frequent power off/power on situations, there are frequent surges and low voltage scenarios in the minutes preceeding a shutdown, and immediately after a return of power (up to 297V have been recorded!) - hence a set force charge period is irrelevant as the scheduled time could be in a power off period one night, and fine the next. min SOC (On grid) being adjustable would be the way to go to maintain a buffer in the batteries.
for my system: i get a grid  Voltage, grid frequency error multiple times a day. i also regularly have a situation where my system shuts down and restarts a few minutes later due to the incoming grid fluctuations in the morning.
pretty much everyone in SA uses an app called Eskomsepush (a play on afrikaans words for a female anatomy related slur) to track when their area will be loadshed (the schedules and times vary daily, sometimes hourly) - this has an API plugin for HA which is very useful in terms of programming when the next power off will be, and how to work around it.
i believe the "safe zone" for this project is to provide an easily configurable integration which keeps updated, that can show/do a lot, without risking the safety of the installs or equipment. leave the factory and installer calibration out the loop and up to the installer.

is there a spreadsheet for this project which sets out the goals for what is intended to be achieved in terms of monitoring entities, adjusting specific settings, or tracking specific data values?

No. It's pretty much everything we've managed to map, which we think people might care about (or which people have requested). I'm deliberately avoiding letting people write anything which might harm their inverter setup (there's a service which lets people write arbitrary values to registers if people need, but the barrier to entry here is a lot higher than a box with a number in which is easy to change). So, anything which people can change from a user account in the foxess app is fair game, and other parameters which we think are harmless (e.g. max soc, and I'll probably get max charge/discharge currents in one day).

your spreadsheet is extremely useful, so ive been putting together a UI map for levels of data which can hopefully assist the project.

Bear in mind that the integration doesn't get to define the UI. We just provide a list of sensors -- it's up to the user to place those on their dashboards as they want.
In most cases, I don't think there's an argument for just providing a subset of sensors, either. It's much more efficient for us to read all registers in one go, and having read a register we might as well expose it as a sensor (the only downside is that if the sensor changes a lot we can end up filling HA's database with the history of a sensor that the user doesn't care about, but in practice the sensors that change a lot are the ones that users care about). People can just not put a sensor they don't care about on their dashboard, or if they really don'f want it they can disable it.

Have a look at 11096, 11097, 11098, 11099, 11100, 11101 - my guess from your data is that these might be PV3 Voltage, Current and Power and PV4 Voltage, Current and Power. This is based on the residual voltages showing, which could be the result of the MPPT floating with no connections. Hopefully, these will read something if you connect them up?
Can you also let me know how many batteries and what type they are? Looking at 31020, 31021 - these could be BatVolt and BatCurrent?
11047 is a bit of mystery. We have this down as BMS Subsystem Count - which should be the number of batteries. but the value is 1795 so that may need looking into.
Also 11054, BMS module type. I have 84 with my BMS v2, you have 83.

is there a spreadsheet for this project which sets out the goals for what is intended to be achieved in terms of monitoring entities, adjusting specific settings, or tracking specific data values?

No. It's pretty much everything we've managed to map, which we think people might care about (or which people have requested). I'm deliberately avoiding letting people write anything which might harm their inverter setup (there's a service which lets people write arbitrary values to registers if people need, but the barrier to entry here is a lot higher than a box with a number in which is easy to change). So, anything which people can change from a user account in the foxess app is fair game, and other parameters which we think are harmless (e.g. max soc, and I'll probably get max charge/discharge currents in one day).

your spreadsheet is extremely useful, so ive been putting together a UI map for levels of data which can hopefully assist the project.

Bear in mind that the integration doesn't get to define the UI. We just provide a list of sensors -- it's up to the user to place those on their dashboards as they want.
In most cases, I don't think there's an argument for just providing a subset of sensors, either. It's much more efficient for us to read all registers in one go, and having read a register we might as well expose it as a sensor (the only downside is that if the sensor changes a lot we can end up filling HA's database with the history of a sensor that the user doesn't care about, but in practice the sensors that change a lot are the ones that users care about). People can just not put a sensor they don't care about on their dashboard, or if they really don'f want it they can disable it.

im with you now, getting to grips with HA and how it all comes together! havent seen any major red flags in anything in terms of inputs etc. the only thing i cant quite fathom is why my system keeps defaulting back to a min SOC (On Grid) of 10%? cant find it anywhere in the code.
I am trying to set up @nathanmarlor 's foxess EM integration, but it starts and then immediately gives me a list which all the values say "unknown" - could this be a limitation with using the USB serial access where the foxess modbus kicks out any other access to the device?

Have a look at 11096, 11097, 11098, 11099, 11100, 11101 - my guess from your data is that these might be PV3 Voltage, Current and Power and PV4 Voltage, Current and Power. This is based on the residual voltages showing, which could be the result of the MPPT floating with no connections. Hopefully, these will read something if you connect them up?

i believe you are spot on! on the device screen, the Voltages for PV3 and PV4 float between 0.9 and 1.3 V ( with the 0.1 scale, these would then match!)
will do the switch and test when i get a chance (the mrs is writing exams, so cutting power right now isnt an option!!)

Can you also let me know how many batteries and what type they are? Looking at 31020, 31021 - these could be BatVolt and BatCurrent?
I have three energy cube batteries: A CM4100 master, with two CS4100 slaves ( in the ECS4100-H3 configuration [Nominal energy: 12.09kwh, nominal voltage: 172.8V, voltage range: 145.8 - 197.1Vdc. 70ah rated capacity, max charge/discharge 50A. each battery has a 57.6Vdc nominal voltage] they are all version 1 batteries.

for 31020: i polled 1827 (182.7 with the 0.1 scale) which matches the battery voltage at the time i polled.
for 31021: i polled 65393 (i dont believe this is the Battery current, as that was 13.3A - 13.7A at the time) given that the max charge/discharge is 50A, i doubt 31021 is battery current... im guesing it is more likely to be a reactive power of sorts? [ a limitation of how i polled was that i could only poll 10 entities at a time via the serial-CTP converter app, so the values recorded are not all congruent for a given time point.]

11047 is a bit of mystery. We have this down as BMS Subsystem Count - which should be the number of batteries. but the value is 1795 so that may need looking into.

11047 seems to have different values between the H1 and H3, on the data i polled i cant map it to anything obvious...ill need to repoll it and mark the time to see if it is congruent with any of the foxcloud values.

Also 11054, BMS module type. I have 84 with my BMS v2, you have 83.

I have V01 batteries, 83 may well be the version code?

for 31020: i polled 1827 (182.7 with the 0.1 scale) which matches the battery voltage at the time i polled.
for 31021: i polled 65393 (i dont believe this is the Battery current, as that was 13.3A - 13.7A at the time) given that the max charge/discharge is 50A, i doubt 31021 is battery current...

Apologies - 31020 and 31021 are already known, they are InvBatVolt and InvBatCurrent - the values sent to the batteries measured by the inverter (mapped as 11006, 11007). 11034 / 11035 are BatVolt and BatCurrent - these look like the same values but are generally a bit different as these are the values measured by the BMS. A negative value means the battery is being charged, positive is dischage. I don't (currently) have holding register addresses for these - the working theory is that BMS data is only exposed on RS485 input registers until we find otherwise.

i believe you are spot on! on the device screen, the Voltages for PV3 and PV4 float between 0.9 and 1.3 V ( with the 0.1 scale, these would then match!)
will do the switch and test when i get a chance (the mrs is writing exams, so cutting power right now isnt an option!!)

Look at 31039 - 31044 as well. Looks like these are the holding registers for PV3 and PV4 as the numbers more or less match 11096 to 11101

ok righto i'm with you now...got confused with the maths behind the values!
i believe you are spot on, i will run the switch test for the strings as soon as i can to see if we can button PV3 and Pv 4 down.
i,m currently getting 0.0 values for the battery charge, current and voltage readings on the integration (am i correct the beta version for the KH only works on holding registers, not inputs, so it wont be seeing this data?)

Matt - probably best to DM if you want to dig into individual sensor values. Use Messenger in FB and look for Tony Matthews in the Fox ESS group?

(You're welcome to keep using this issue if you want -- keep the knowledge you gain in the public domain)

Thanks - I'll keep posting findings here, but it will get a bit protracted if we go back and forth diagnosing individual values.

Matt - I've added PV3 and PV4 into my integration in the file modbusKH_RS485.yaml so you try it out if you want and see if this works for you? I've split the files as PV3 and PV4 give illegal address when run on my H1.
Let me know if you see any stuff that doesn't work as expected as I dont have access to KH for testing. There are notes on the installation and configuration of the files in the wiki as well.
(obviously depends on what you are currently running - don't break stuff if you are setup and running OK already...)

I'm happy to put together a prerelease, but I'm thinking it probably makes sense to wait until you've come up with a reasonably solid mapping. Let me know if you disagree!

I think we are still just poking around in the dark. If we get a working set of registers into a prototype, it will be easier to build once stuff firms up. Sure you've still got plenty of stuff to do?

I’ll commit to mapping holding and input registers into a list so it’s a more reliable set of values to work from. As it stands the current beta provides adequate data for managing the system effectively, we need accurate data points to land the KH integration. Will revert soonest.

I've done a full review of the registers scans - thanks Matt - and I've updated the spread sheet with the results. Here's what I found:
PV3 / PV4 look to be where we thought (11096-11101/31039-31044) and I've added the sensor definitions for these into the file modbusKH_RS485.yaml in my integration using the input registers. Obviously, it would be good to verify these when someone gets panels connected to these inputs.
There are values in holding registers 31045-31050 (0,33,0,34,0,35) but I have no indication what these are, so I've added them into the spread sheet as Not Known for now, just so we don't lose track. If anyone with KH wants to monitor these and look for state changes, that might be helpful.
I've looked at 11047 (BMS Subsystem Number). On my H1 with 6 batteries, the value is 6. On Matt's KH with 3 batteries, the value is 1795, which is 0x0703. I've concluding this is byte encoded as Matt has 3 x ECS4100 batteries and the LSB follows the battery count. The MSB may indicate the type of BMS or something else. I have 0x00 with my HV2600 and 0x07 for Matt's ESC4100. We may need values from more models to work out any coding.
There aren't any other register values in the scans that look out of place when compared to the known H1 registers. There appear to be ranges of addresses with 0. I'm going to assume these are not used unless someone sees a value appear.
I've updated my integration code for testing and split out the H1 LAN connection from the H1 RS485 and KH RS485. The H1 LAN is just using the holding register addresses and the RS485 connections are just using the input register addresses. This is working fine on my H1 over RS485.
So, unless you see anything that looks out of the ordinary, I think we have a workable mapping for now?
(you had me slightly worried yesterday when you went quiet Matt... please acknowledge so we know you haven't been electrocuted while playing about with your PV inputs!??)

KH Series Modbus.pdf
Hi Tony
i am alive and kicking, my appologies i was up to my eyeballs in work.
i believe this will "close the case" for us (some translation required).
thanks again for the great work!

Thanks Matt, thats brilliant. Where did you get it?
I think it verifies all of the holding, control registers and fault codes we know!
Only difference I spotted is the decode of the inverter state compared to H1 as there is an addition wait state and the other numbers are bumped. I think that means decoding the state is now model dependent. Previously when you captured state 4 with grid lost fault showing, this was EPS mode and state 3 was normal operation? These are states  3 and 2 on H1 and H3.
Many thanks for your help and for sharing.

pleasure Tony!
sourced it legitimately ;-)
From what i understand, Fox's development ethos is to spec hardware to the max, and then use firmware to throttle and lock/unlock functions and parameters based on the intended performance spec. hence there are capabilities in the KH for multiple trackers on three phase, 4XMPPT's, and a few other trick features and options. i believe we have an absolute reference point for coding in the complete KH bundle, and all the error codes to put it to the next level!
@canton7 @nathanmarlor sorry i forgot to tag you on the .pdf post with some new project gold dust!

Awesome! This is on my todo list to implement (time permitting...)

On a related note, do we have the fault codes for the H3 mapped out anywhere?

The cloud api pdf here has some alarm codes: https://github.com/TonyM1958/HA-FoxESS-Modbus/wiki/Data-Sheets-and-Manuals
But it does not provide the fault code bit field mapping. Also, we have Fault 1-4 addresses for H3. Don't know if there is Fault 5-8.
Could do with some scans from someone with H3 to check the addresses...

Added the BMS and Battery serial number addresses to my integration for testing. So far as I can tell over RS485, neither the holding or input registers work on H1 - modbus returns illegal address which comes from the inverter not recognising the requested address.
So, I'm assuming these are KH only and I've kept them in the file modbusKH_RS485.yaml. I' not able to test if these get the correct values - we will need someone with KH to verify that these work as expected.

The files in https://github.com/TonyM1958/HA-FoxESS-Modbus are up to date. @canton7 can tell you where this integration is up to. Depends what you are currently running...

Give 1.5.3b2 a test

@MJW911 Have you had a chance to try out v1.5.3b2 by any chance?

i just got a gap to test.
i deleted v1.5.2b1, and then downloaded 1.5.2b and installed. i get the 4 battery system entities and settings which is awesoem! but dont get any other values!
i get this log error:
Logger: homeassistant.components.sensor
Source: custom_components/foxess_modbus/entities/entity_factory.py:94
Integration: Sensor (documentation, issues)
First occurred: 2:25:34 PM (3 occurrences)
Last logged: 2:27:44 PM
Error while setting up foxess_modbus platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 304, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/foxess_modbus/sensor.py", line 22, in async_setup_entry
async_add_devices(create_entities(SensorEntity, controller, entry, inverter))
File "/config/custom_components/foxess_modbus/inverter_profiles.py", line 181, in create_entities
return inverter_connection_type_profile_from_config(inverter_config).create_entities(
File "/config/custom_components/foxess_modbus/inverter_profiles.py", line 60, in create_entities
entity = entity_factory.create_entity_if_supported(
File "/config/custom_components/foxess_modbus/entities/modbus_sensor.py", line 49, in create_entity_if_supported
addresses = self._addresses_for_inverter_model(self.addresses, inverter_model, register_type)
File "/config/custom_components/foxess_modbus/entities/entity_factory.py", line 94, in _addresses_for_inverter_model
assert result is None
AssertionError
any suggestions?

Thanks! That's my mistake, try v1.5.3b3?
No need to delete the old version first: upgrades are handled fine.

ive installed V1.5.3b3 and get an assertion error
Logger: homeassistant.components.sensor
Source: custom_components/foxess_modbus/entities/entity_factory.py:94
Integration: Sensor (documentation, issues)
First occurred: 6:11:00 PM (1 occurrences)
Last logged: 6:11:00 PM
Error while setting up foxess_modbus platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 304, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/foxess_modbus/sensor.py", line 22, in async_setup_entry
async_add_devices(create_entities(SensorEntity, controller, entry, inverter))
File "/config/custom_components/foxess_modbus/inverter_profiles.py", line 181, in create_entities
return inverter_connection_type_profile_from_config(inverter_config).create_entities(
File "/config/custom_components/foxess_modbus/inverter_profiles.py", line 60, in create_entities
entity = entity_factory.create_entity_if_supported(
File "/config/custom_components/foxess_modbus/entities/modbus_sensor.py", line 49, in create_entity_if_supported
addresses = self._addresses_for_inverter_model(self.addresses, inverter_model, register_type)
File "/config/custom_components/foxess_modbus/entities/entity_factory.py", line 94, in _addresses_for_inverter_model
assert result is None
AssertionError
the battery soc option buttons and readings are fine, just no sensor values pulling through...

Are you sure you restarted Home Assistant after upgrading?

have done a restart and reboot, the same error occurs.

My bad. Can you try v1.5.3b4?

brilliant! houston, we have a lift-off! i will monitor and check parameters and revert.

Thanks! Let me know if anything looks off

so far so good, ive activated @nathanmarlor 's energy management integration as well. had some transient logs for USB polling, but all seems ok now.
im getting an "unknown" reading for "PV Power" (sensor.pv_power), is that because its currently night time here, or is there an interger/calculation factor that isnt reading? do all four PV data sensors need to be active for it to calculate correctly? (i disabled PV3 and PV4 as they are currently not in use)

Ah good point, yes PV Power will return unknown if any source sensor is unknown or unavailable. I'll tweak that.

That'll be fixed in the next release.

Fox - AIO H1 modbus - 2023.pdf
not sure if these will assist the H1 AIO integration. some updated registers for the system and error codes.

Thanks - will go through and have a more detailed look. First impression - most of these match the previous pdf and are in the spread sheet. The new input registers 11096 - 11105 all give illegal address on my H1 so, as this document is specifically dated 2023, I wonder of this document relates to the new G2 inverter models?

These are for the H1 6kW all in one, with built in batteries. May have platform crossover as well.

It's definitely problematic this file, so more work required before we can use it. I've added the new registers to the spread sheet. We really need someone with AIO to probe input registers 11096-11105 to see what values they get back.
The fault codes are a subset of what we have already, with a couple of new slave fault codes in Fault 5.
11096-11101 re-define the registers we identified for PV3 and PV4 voltage, current and power on KH so these are a direct conflict . We have holding register addresses for PV3 and PV4 so could split them but we are going to get conflicting / incorrect values as the overlapping register definitions are now model specific.
The other register I have a problem with here is 11105, Battery Capacity. This is defined as 0.1wh and uint16, so the maximum value is 6.5535kwh, which is too small for a lot of batteries. It would be good to see what this actually reads to check how it works.
The new value SOH (state of health) will be interesting and probably contentious - this is explained a bit more here: https://www.biologic.net/topics/battery-states-state-of-charge-soc-state-of-health-soh/. Basically, intended to measure the deterioration of batteries over time but also likely to be heaviy influenced by cell imbalance, given how it is generally defined,

11096-11101 re-define the registers we identified for PV3 and PV4 voltage, current and power on KH so these are a direct conflict . We have holding register addresses for PV3 and PV4 so could split them but we are going to get conflicting / incorrect values as the overlapping register definitions are now model specific.

Not a problem for foxess_modbus of course, just your integration!
Nice that we get total PV, but I'm currently summing that manually so not sure whether it's worth reading.
SOH might be interesting!
And to be honest, I'm not sure how much we care about the others:

Do we care about RMS? Not even sure what it's the RMS of
Inv Frequency: I disable the other frequency sensors by default, as they generate a lot of history and people don't really care about them
Grid Active Power: I'm not sure exactly what this refers to. I thought we had all of the various powers already?
Grid Reactive Power: I currently disable the other reactive powers, again because they change a lot and people by and large don't care
Grid Power Factor: Do we care?
Grid Current: Don't we have this already?
Battery Capacity: Don't we have this already?

Not a problem for foxess_modbus of course, just your integration 😉

It's problematic in the spreadsheet in terms of maintaining a view that allows you to easily see what's available across models. It adds complexity in terms of maintaining foxess_modbus but I'm sure that's something you will cope with... Not a problem for me, as I can't read the new registers on H1 or KH anyway so I haven't changed my code. Unless someone comes up with a scan from AIO that shows some useful data, I don't think we should add them.
Agree, there's not much here that I'm desperate to track. We currently have grid power from the CT clamp reading - most people won't understand the other grid sensors here. I currently calculate Battery Capacity in a template, so it would be interesting to see how this compares as there doesn't seem to be enough range in the register as defined in the pdf.
SoH would be useful to look at, but its more likely just to cause angst about battery state with lots of people trying to explain why it says what it does...

@TonyM1958 I notice the new registers are listed as "G2" in your spreadsheet. The AIO is one of these things: https://www.fox-ess.com/all-in-one -- they've been around for a while.

Agree - that's why it's noted as TBC in the notes for that column. AIO has been around for a while but these registers have not been documented before and they now appear in a file specifically marked 2023 and highlighted, like they are a new additional.
What's needed is someone with an existing AIO to scan the registers and see if there is anything there on the current model so we can classify them correctly.

As soon as stock of the odroid come in, I’ll set up one at my dads and the work through the process with the AIO he has. For now I believe it’s useful to have the official fox data for reference purposes.
there doesn’t seem to be a linear development track with fox in terms of modbus, may be related to components or teams developing in silos, hence there is not a uniform modbus library.
I believe there is merit in having this available as the integration is developed further, as there are clearly registers which conflict or have different data overlapping.

I think this is now complete? Please re-open if you disagree.

Probably more suited to a discussion than an issue. Feel free to add stuff here if needed: https://github.com/TonyM1958/HA-FoxESS-Modbus/discussions


Fixes #85 Support html-loader 1 and raw-loader 4

Makes content capture more robust by replacing the default export with a variable, and then using that variable. Instead of the crazy custom string parsing I was doing before.

@peterpoe @cb-eli @benochr  thanks for your feedback on #85
Could you please test this version for me? I don't have a production angular 1 project anymore.

Hello @WearyMonkey
Sorry for the delay in response. Been on holiday last week.
I can confirm that our problems are solved when using the version in this branch toby-html-loader-1-fix
When using the old version with html-loader version 1.1.0 we get following error when running our tests:
Chrome Headless 84.0.4147.0 (Mac OS 10.15.5) ERROR
  An error was thrown in afterAll
  Uncaught Error: Module parse failed: Unexpected token (3:0)
  File was processed with these loaders:
   * ./node_modules/ngtemplate-loader/index.js
   * ./node_modules/html-loader/dist/cjs.js
   * ./loaders/i18n-loader.js
  You may need an additional loader to handle the result of these loaders.
  | var path = 'dialogs/app.directive.html';
  | var html = // Module
  > var code =

A similar error occurs when starting a local development server.
After updating ngtemplate-loader with this branch the errors are gone:
Chrome Headless 84.0.4147.0 (Mac OS 10.15.5): Executed 391 of 395 (skipped 4) SUCCESS (0.905 secs / 0.608 secs)
TOTAL: 391 SUCCESS

PS: I also checked this branch with the old version of html-loader we were using, version 0.5.5, and all works well. So it seems backward compatible.

@WearyMonkey any plans to merge and release this?

Sorry for the delay, I've released it now.


Cross compatibility issue.

Live app 2.0.65 crashes when I try to accept secret phrase (or any advanced option) gift from app v2.0.67.
Also When I try to scan the F&F request,app crashes.

@cakesoft-swati Can you please try to replicate this and provide me with more details(if this is replicable)?

Unable to recreate the above issue on same version.


A few identifier rendering issues, possibly duplicates

Sorry I don't know how to make reproducers.
In short, https://github.com/brendanhay/amazonka/issues/970 , which I will copy here for ease of reading:

Take for example https://hackage.haskell.org/package/amazonka-s3-2.0/docs/Amazonka-S3.html#v:newPutObject

Where is all the $sel stuff coming from?
Why are the comments for the first two arguments erroneous?
Maybe related: #1608

It may be related to the fact that PutObject is a record type but gets rendered as a non-record type.

https://gitlab.haskell.org/ghc/ghc/-/issues/24558

Fixed upstream.


Create Client Interface for MediaServer access

Need to generalize the access requests into an Interface, so that the implementation can be injected based on which media server is being accessed.

This is now complete, and implemented.


[Docs] Update Config Doc to Add WandB Hook

Motivation
To better use MMDetection functionality.
Modification
It's a few lines modified to add more logger hooks to docs.

Thanks for your contribution! The lint failed. Please install pre-commit first and then run pre-commit run --all-files to fix this.

lint passed. Thanks for this suggestion.


Getting the value of LazySeries inside mutate_with

Hi! I am trying to set the value of a new column based on another column's value via mutate_with. The code I have at the moment is this:
house_df = house_df |> Explorer.DataFrame.mutate_with(fn df ->
  income = df["median_income"]
  Explorer.Series.less(income, 10) |> IO.inspect()
  cond do
  Series.less(income, 1.51) == true ->
    [income_category: 1]
   Series.less(income, 3.01) == true ->
    [income_category: 2]
   Series.less(income, 4.51) == true ->
    [income_category: 3]
  Series.less(income, 6.01) == true->
    [income_category: 4]
   Series.less(income, 7.51) == true->
    [income_category: 5]
  true ->
    [income_category: 99]
  end
end)

How would I change this to acheive the desired result?
More specifically, when inspecting the value of income I see that it is a LazySeries. I am assuming it is behaving like a stream under the hood. How do I actually run math and add a new column based on the underlying value in this situation?

It is not possible right now. You need to use put/3 and compute it outside of a data frame. We can support cond/if inside mutate/2. :)

Thanks! I'll see how well that goes :)

Hi @appdevland :wave:
This is not possible because you cannot access a series value inside _with functions, due to the fact that you only have a virtual representation of the series.
One possible way to do it is to use a chain of Series.select/3
house_df =
  house_df
  |> Explorer.DataFrame.mutate_with(fn df ->
    income = df["median_income"]

    income_category =
      Series.select(
        Series.less(income, 1.51),
        1,
        Series.select(
          Series.less(income, 3.01),
          2,
          Series.select(
            Series.less(income, 4.51),
            3,
            Series.select(
              Series.less(income, 6.01),
              4,
              Series.select(Series.less(income, 7.51), 5, 99)
            )
          )
        )
      )

    [income_category: income_category]
  end)

I didn't try it, but it should work.

Would an approach similar to to dplyr vectorised switch (case_when and case_match) work? It appears to be a lazy friendly construct that can also be vectorised.
vectorised switch

@ahacking I believe that's equivalent to select/3 except we could make it easier to write by using macros, correct?

Yes I believe macros could be based on using the nested select approach you have shown.
By the way that particular use of select with a predicate was kind of hidden, I had previously looked for an if_else type construct and didn't find it, but I'm glad it's there!

This will now be tracked here #515.


WIP: Add Golang support for scanner

Hi @viktorbenei and @gaborszakacs,
I'm closing this PR as part of cleaning up old PRs. Please reach out or reopen it if it is still valid.

😿
Sure, totally valid, thanks for the heads-up! I'll save the branch- should we want to resuscitate this project..


Question

Just a question, would like to know how to convert the edges to a position like a coordinate system (X, Y). I am working on a game that uses angles as a direction (the map is like a graph) that my player uses to move. Having the position of the edges would be really helpful.
Should I create more nodes to store my obstacles?
Sample code usage of this library would be really helpful.

Hey MAYasin,
I'm not sure if I follow. Each node has a position property which gives the position of the node. Or are you using the Grid class to generate a grid of connected nodes? In that case you should map the 'abstract' location of a node (for example {1, 1}) to a physical location like,  New York or {1254.42f, 41.2f} in your own code using a mapping function.
Alternatively you can also generate the nodes yourself so you can use the position property.
You can take a look at the viewer or the tests if you want more sample code to study the library.
Does that help? (Closing for now, please re-open if you have more questions)


[FluentInputBase] Use Debouncer instead of PeriodicTimer for debouncing ValueChanged handler with ImmediateDelay.

Pull Request
📖 Description
This pull request applies the use of the internal Debouncer instead of the PeriodicTimer to debounce values. A live demonstration has also been added to the FluentSearch page to show how Immediate can be used, as opposed to the oninput method.
🎫 Issues
#2030: Using the FluentSearch input box, but likely any debounce with ImmediateDelay, you can reliably force it to throw an exception, by firing the debounce while the PeriodicTimer is resetting itself. The exception shows that the CancellationToken used to reset the timer is set to cancelled, as the timer tries to tick.
👩💻 Reviewer Notes
The only code-flow change I've had to make is to push the invocation of the ValueChanged handler back to the Dispatcher, within FluentInputBase.cs. This is a thread safety precaution, as the use of the Debouncer takes the invocation of UI state changes off-thread.
📑 Test Plan
Because this is an implementation swap, any unit tests that cover the debouncing process will still pass, as intended. No further coverage necessary. Systems tests added by way of a working live example.
✅ Checklist
General

[x] I have added tests for my changes.
[x] I have tested my changes.
[x] I have updated the project documentation to reflect my changes.
[x] I have read the CONTRIBUTING documentation and followed the standards for this project.

Component-specific

[ ] I have added a new component
[ ] I have added Unit Tests for my new component
[x] I have modified an existing component
[x] I have validated the Unit Tests for an existing component

⏭ Next Steps
It would be nice to expose the Debouncer as public, and promote its use as a simple and effective debouncer, for most situations.

@microsoft-github-policy-service agree


Create Catalog not working on demo.backstage.io

After landing on https://demo.backstage.io/catalog and on submitting "Create Component" button, getting Http 404.
Expected Behavior

Current Behavior

Getting this response, instead of the working page :
ERROR 404: PAGE NOT FOUND
Looks like someone dropped the mic!
Go back... or if you think this is a bug, please file an issue.
Possible Solution

Steps to Reproduce

Go to https://demo.backstage.io/
Click on "Create Component"

Context

Your Environment

NodeJS Version (v12):
Operating System and Version (e.g. Ubuntu 14.04):
Browser Information:

Hey! Yes, this is expected from the demo.backstage.io site since it is mostly a ready-only website, and no "Create" functionality is enabled since it can cause exploitation. :)
Leaving this issue open since the error can be user friendly.

Hey! Yes, this is expected from the demo.backstage.io site since it is mostly a ready-only website, and no "Create" functionality is enabled since it can cause exploitation. :)
Leaving this issue open since the error can be user friendly.

Got it. It's a bad user experience to have the button there that is not working :-) You could have a job scheduled to prune/clean these demo data or just create in session without persisting ...

Got it. It's a bad user experience to have the button there that is not working :-) You could have a job scheduled to prune/clean these demo data or just create in session without persisting ...

Yep, doesn't look great. I suggest we fix this by making a nicer error page that tells you that component creation is not enabled in the demo deployment. That's until we can properly switch whether the create button should be displayed at all.

Yep, doesn't look great. I suggest we fix this by making a nicer error page that tells you that component creation is not enabled in the demo deployment. That's until we can properly switch whether the create button should be displayed at all.


Offer taikai rules through arch-unit-maven-plugin

Hi there,
I am following the activity in the project, which seems great by the way!
One thing I would like to know if it is been considered already, is providing Taikai with/within arch-unit-maven-plugin: https://github.com/societe-generale/arch-unit-maven-plugin
Because if I have many modules and would like to run against all of them, would be better to run trough the plugin instead of replicating the same rules all over the place.
Do you consider it a feasible idea or do you have another approach in mind?

Hi!
Thanks for your ticket and your suggestion. Yes, I would like to be able to offer something like this. I'm not quite sure yet in which direction this support should go - Maven plugin or something else. Would leave the ticket open until then.
Thank you very much

I can share my thoughts on how I currently handle shared rules across multiple repositories (projects). Disclaimer: I use Gradle along with the societe-generale/arch-unit-gradle-plugin.
I've created a rule:
public class SharedRuleTest implements ArchRuleTest {
    @Override
    public void execute(String packagePath, ScopePathProvider scopePathProvider, Collection<String> collection) {
        Taikai.builder()
                .classes(importAllClassesInPackage(scopePathProvider.getMainClassesPath(), packagePath))
                .java(java -> java
                        .fieldsShouldNotBePublic()
                        .utilityClassesShouldBeFinalAndHavePrivateConstructor()
                )
                .logging(logging -> logging
                        .loggersShouldFollowConventions(LoggerFactory.class, "logger", EnumSet.of(PRIVATE, STATIC, FINAL))
                )
                .spring(spring -> spring
                        .noAutowiredFields()
                        .configurations(ConfigurationsConfigurer::namesShouldEndWithConfiguration)
                        .controllers()
                        .services()
                        .repositories()
                )
                .build()
                .check();

        Taikai.builder()
                .classes(importAllClassesInPackage(scopePathProvider.getTestClassesPath(), packagePath))
                .test(test -> test
                        .junit5(junit5 -> junit5
                                .classesShouldBePackagePrivate(".*Test")
                                .methodsShouldBePackagePrivate()
                        )
                )
                .build()
                .check();
    }
}

and use it in the gradle conventions plugins like:
plugins {
    id 'com.societegenerale.commons.arch-unit-gradle-plugin'
}

archUnit {
    preConfiguredRules = [
            'com.thulium.SharedRuleTest',
    ]
}


Consider adding support for VisualVM

We require a conversation to take place in the appropriate Gitter Room before raising a new Github Issue. Please note that issues will be closed immediately if prior discussion did not take place. We need to do this to help manage the quality and validity of Issues raised on this project.
Please tick one:

[X] this is a new Feature Request, a conversation was started in the Gitter CLI Development Room.
[ ] this is a new Bug Report or Issue, a conversation was started in Gitter User Issues Room.

Please explain the Issue / Feature Request here:
It would be nice to have VisualVM available as a candidate in SDKMAN.
Even though VisualVM is distributed as a part of Oracle JDK, providing first class support would be highly beneficial to OpenJDK users, and would also ensure the users are able to run the same version of VisualVM regardless of the currently used JDK version.
The standalone VisualVM project is available at https://visualvm.github.io/.

VisualVM 1.3.9 has now been added. Please feel free to raise a PR on our DB Migrations if you want to use other versions (or if newer versions are released).


Allow REST-Authentication endpoints to send warnings for the AuthenticationResult

With this PR RestAuthenticationHandler reads two custom HTTP headers which can contain warnings for the created AuthenticationHandlerExecutionResult:

X-Cas-PasswordExpirationDate will generate a PasswordExpiringWarningMessageDescriptor
X-Cas-Warning will generate a DefaultMessageDescriptor (can be used multiple times)

@mmoayyed Please review again

Looks great. Will merge at the right time. Thank you.


[TIR] Use known dtype for integer arguments of Range(0, expr)

Prior to this commit, Range(0, expr) would automatically convert 0 to IntImm(DataType::Int(32), 0) using the automatic conversion of int to PrimExpr.  This can result in ranges where the bounds are of different dtypes.  Since this is a common idiom (25 uses of Range::FromMinExtent(0, expr) and 49 uses of Range(0, expr)), it should be supported rather than forbidden.
This commit adds overloads that take (int, PrimExpr) arguments for Range and Range::FromMinExtent.  These overloads convert the first argument to an IntImm of the same dtype as the second, and then delegate to the (PrimExpr, PrimExpr) overload.

This PR is currently a draft, in order to see if any test cases rely on the mixed dtype behavior.


generateTribute method does not initiate the second metamask transaction

metamask will ask for approval for DAI but will not mint

Update: this is working on Android, and @vrortvedt iOS, still waiting on more confirmation from other iOS users.


Add a health check to the Docker container

Health checks are useful for monitoring the deployment. This feature will require a new routing endpoint.

Fixed in da1aa3c3b8d6e1ac418916e5548c9b0967483e51.


update gitattributes

add non-distributable (dev) files to gitattributes so they are ignored on regular install

What do you mean by "regular install"?

When npm publishes the distributable package for this, it will exclude development related files from distribution archive. In short, the files in .gitattributes will be excluded from the release.
More info on .gitattributes:

https://www.reddit.com/r/PHP/comments/2jzp6k/i_dont_need_your_tests_in_my_production/
https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

I do believe the package.json files property take care of that already.

Oh I see, then this is redundant. Closing.


Generate video from jpeg stream without a constant FPS input

Hi all,
I'm recording a video from an application that sends a stream of jpeg images. The problem is that the app only sends new frames when there are changes (like vnc for example). I've got kind of working video, but it plays very fast when no new frames arrived to the fluent-ffmpeg end. This app can send up to 30 fps, but it also can send one frame each 30 seconds if nothing changes in the image. So, if the original stream had a duration of 30 seconds I'd like to obtain a 30 seconds video.
Do you know if fluent-ffmepg can "fill" the gaps. I don't mind about file size, because I understand that by repeating frames you'll get a bigger output video file.
Version information

fluent-ffmpeg version: 2.1.2
ffmpeg version: ffmpeg version 2.8.11-0ubuntu<IP_ADDRESS>
OS: Ubuntu 16.04

This is what I've tried so far:
Code to reproduce

FFmpeg(imagesStream)
	.inputOption('-re')
	.inputOption('-r 12')
	.videoCodec('libx264')
	.outputOption('-movflags frag_keyframe+faststart')
	.outputOption('-vsync 2')
	.outputOption('-r 24')
	.outputFPS(24)
	.outputOption('-pix_fmt yuv420p')
	.noAudio()
	.saveToFile(fileName)
	.run()

(note: if the problem only happens with some inputs, include a link to such an input file)
Expected results
If the original stream lasted for 30 seconds, I'd like to have a 30 seconds output video.
Observed results
If the original stream was 30 seconds with little changes in the actual images, the output video can be only of 5 seconds (this is just an example).
Checklist

[x] I have read the FAQ
[x] I tried the same with command line ffmpeg and it works correctly (hint: if the problem also happens this way, this is an ffmpeg problem and you're not reporting it to the right place) --> Not really, because I cannot attach directly to the stream source, since it provides a non-standard jpeg headers, and it's inside a protocol I must "clean-up" before getting the jpeg data. This is the reason for using fluent-ffmepg and not using ffmepg cli directly.
[x] I have included full stderr/stdout output from ffmpeg --> Sorry, but I just couldn't due to the previous comment.

Sorry to ask here, I don't know how to properly ask to ffmpeg directly, and maybe some of you know hot to achieve this.
Thanks for your help and your awesome project.

I still have a fast video playback when there's a low framerate input, but I close the issue because it was more a question than an issue. Keep rocking!


AMQ-5669 Update Karaf feature files to add required namespace (minimal

available version)

Good patch, except that the version is too old. Fixed the code using a more recent version. This PR is similar to #75, you get the credit though too. Many thanks for the contribution.


max length of player name

While an absurdly long player name is truncated during gameplay, it is not truncated on the summary page. Would you please consider truncating this after so many characters (30 or 40 or something?)

Hi, thanks for the report. A screenshot would help quite a bit in this kind of case.
What do you mean by the summary page? Do you mean the lobby before the game, with the table? Or the game browser with the list of games and the username in the top right?

At the end of the game, when you are viewing the points, the long name makes the table very wide and basically unreadable. You can zoom out and then view information.

Ah, got it, thanks

Maybe we should just prevent player names that are unrealistically long. I don't think there is a point in a player name of more than 30-40 characters. And it would avoid problems in places where it's nice to see the full non-ellipsized name (like the game browser).
But I agree that maybe in the score table we don't want any name to span multiple lines, and should probably prefer to ellipsize it in this case.


fix(aws_lambda.py): extract api gateway domain name in trigger

🆙

:tada: This PR is included in version 1.14.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


hotfix: change order_by=guest -> order_by=guest_cnt

这个 PR 实现什么功能/修复什么问题:
参数和返回值保持一致，前端好做排序
是否需要 backport 到之前的 release 分支:

release/2.11
release/2.10.0

/area region
/cc @swordqiu @yousong

Codecov Report

Merging #2094 into master will increase coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master   #2094      +/-   ##
=========================================
+ Coverage    7.16%   7.16%   +<.01%
=========================================
  Files         445     445
  Lines       69552   69552
=========================================
+ Hits         4982    4985       +3
+ Misses      64157   64155       -2
+ Partials      413     412       -1

Flag
Coverage Δ

#aFlag
7.16% <0%> (ø)
:arrow_up:

Impacted Files
Coverage Δ

pkg/compute/models/secgroups.go
2.52% <0%> (ø)
:arrow_up:

pkg/util/rbacutils/rbac.go
74.3% <0%> (+0.92%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ce0809c...75e4b81. Read the comment docs.

/approve
/lgtm


HUGE PAGES ARE UNSUPPORTED

Is this a successful run?
Built from latest main commit with
cargo build --release; cargo run --release
Same without release flag.
LIBERTY-OS
KERNEL VERSION 0.9.7

VirtAddr(0xb8000) -> Some(PhysAddr(0xb8000))
VirtAddr(0x201008) -> Some(PhysAddr(0x401008))
VirtAddr(0x10000201a10) -> Some(PhysAddr(0x27fa10))
panicked at `[ERR] HUGE PAGES ARE UNSUPPORTED`, src/mem.rs:37:43

If so, please, provide expected behavior in the README.md
% qemu-system-x86_64 --version
QEMU emulator version 6.0.0 (Debian 1:6.0+dfsg-2expubuntu1.1)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers

% lsb_release --all
Distributor ID:	Ubuntu
Description:	Ubuntu 21.10
Release:	21.10
Codename:	impish

% rustc --version
rustc 1.59.0-nightly (0fb1c371d 2021-12-06)

Hello! First, I want to thank you for bothering to check out this repository. :)
As for the error message in question, there is nothing to worry about. The message is a holdover from when paging was first being implemented in the kernel. All the messages (aside from the normal message) will be removed in the next update (either 0.9.8, or 0.10.0).
If you have any ideas, complaints, or technical issues, please open another issue or send me a message on the official Discord server.
Thank you, and God bless!

Daniel Teberian

P.S. If you wouldn't mind, I would really appreciate it if you submitted a PR with an issue template that is similar to the one you used here. Your message was concise, informative, and did not forget anything.

Hello!
Where can I find a link to official Discord server? It appears that link in closed issue(aka 'Little help') is not valid anymore

https://discord.gg/3SuPAgsA


A solution to extend AWS Config to OS level resources

Hey guys, I came up with a solution for using AWS Config for on-premise resources using AWS Config and SSM. It'd be appreciated if you have time to take a look and see if it's worth to be formalized :)
This is an example of using a customized rule for checking Windows AD users:
https://github.com/totoleon/aws-config-rule-ad-users

Hey @totoleon , this is really cool. Any idea how much this solution could augment Amazon Inspector?
FYI @aaronkhoo

Hey @jongogogo thanks for replying :) I think it serves different purposes from Inspector. Inspector is for common OS level vulnerability scan. From what I understand, Inspector provides 4 Rule packages which you can run, but there is no flexibility to customized or extend. With SSM run command, you can do any compliance check on-premise.
I guess in comparison, Inspector is more useful for getting common compliance status of a batch of instances. For this part, Config+Lambda+SSM can do the same but might be duplicating. But on top of that, it provides flexibility to customize checks. On the other hand, if it's just application level compliance check, Config+Lambda should be enough for many situation. But again, working with SSM can be a way to extend.
In our case, we just didn't find any existing approach for checking compliance status of AD users. Having Lambda perform AD functions was too complicated. So we decided to let AD itself reporting back to Config using SSM run command.

Comment taken to the service team for consideration on their side. Closing, please reopen if anything else.


[LOI Cards] Add LOI icon next to LOI name

Any chance you can share a screenshot of the LOI icon, that would be super helpful!

AFK now but should be in Figma. @rawbzz in case you beat me to pasting the design into this bug.

@sufyanAbbasi FYI. The icon will be replaced with the "area" icon used on web when the LOI has a polygon or multipolygon geometry.


Non-static bounce buffer option

closes #451
closes #452
Also some refactor/clean up

Does this also close #452?

Thanks for the review @wence-

/merge


feat(network): show connected peers first

Description:
Show list of nodes in network search list when no search criteria have been entered. Sort list with connected peers at the top of the list.
Additionally, refetch node and network info on an exponential backoff schedule to ensure that node data is available when users need it. This starts off fetching every 2 seconds and increases by a factor of 1.5 until a maximum of a 10 minute refetch schedule is reached, where it remains until the app is unmounted.
Motivation and Context:
Make the network list more useful.
Rebase and update https://github.com/LN-Zap/zap-desktop/pull/340 to work with latest codebase
How Has This Been Tested?

Spin up a new local node.
As soon as it has finished syncing, click the Add channel button.
You will see an empty node list.
Within a few seconds, the list should start to fill up with node data.

Connected peers sill show at the top of the list
Types of changes:
Enhancement
Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[ ] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Tested ACK 067e873


discrepancies to Bertrand's interface

e.g. when selecting "midline extension" (+) as the only filtering criteria, Bertrand's and this interface are off by a count of 2. Other cases must be checked as well

As far as I know, now the discrepancies are almost gone. Also, there's not much in terms of the codebase that I could improve here, since it mostly depends on the data that is uploaded afterwards.


Opening file with a superatom label saved in RXN v3000 format removes a custom s-group

Steps to Reproduce

Open Ketcher
Create reaction or open from ketcher (37).zip
Press S-Group tool and select Na and Cl
In S-Group Properties window select Type->Superatom, Name->sodium chloride and press Apply
Save file in RXN v3000 format
Open saved file

Actual behavior
The custom s-group disappears in the opened file.
Expected behavior
File with the superatom label saved in RXN v3000 format opens without errors as saved, the custom s-group is present.
Screenshots
https://user-images.githubusercontent.com/101649391/216015685-2a7cd50b-7c52-47e8-b9c2-73b8f5441601.mov
Ketcher version
Version 2.7.0-rc.10
Additional context
Add any other context about the problem here.

Will be done on Indigo side. So closing this issue as not planned.

Will be tested after the fix on the Indigo side. Approximately in build 1.11.0-rc.1


Overhaul passwords

TODO

[x] make it possible to change ones own password (#93)
[x] add a way to reset passwords (#98)
[x] check new passwords against HIBP (#116)
[x] replace fallback login with @ssbid || an alias
[ ] Update privacy notice to indicate use of HIBP.
[ ] Add tests

[ ] Use form to update own password
[x] Create Reset Link
[ ] Consume link to update password (not logged in)

add label to own entry in members list ( eaaed06 )
Shows a green "this is you" label on the members list. Green because that's also the color of the tag on the top right. Also changes the color of the  moderator label from green to blue to be less confusing. (ps: totally open for another color then blue for mods, just didnt want both to be green)

cc @SoapDog IIRC you suggested this on our office hour. I really liked the idea.

 ;)