figwheel compile error,  Invalid :refer, var re-frame.core/console does not exist

dependencies:
[org.clojure/clojurescript "1.9.89"]
[reagent "0.5.1"]
[re-frame "0.5.0"]
[day8.re-frame/http-fx "0.0.4"]
Invalid :refer, var re-frame.core/console does not exist

As the README notes:

Requires re-frame >= v0.8.0-alpha3
which in turn requires reagent 0.6.0

Be slightly cautious.  You are using the alpha end re-frame.  Hopefully no further changes,  but you never know, it isn't beta yet.


Update Docs to Reference AppHost NuGet Packages

Describe the issue or suggestion
With P5 there are app host packages that need to be installed. We should update all docs on how to do this.

During the meeting we basically concluded that any component doc should include:

The name of the nuget package
The name of the hosting nuget package
Where to install both (as in, in which project - we shouldn't presume folks know to put hosting packages into the hosting project and vice-versa, we should be explicit about this)

And the normal flow for folks will be to install something into their apphost first and then integrate it into their client project so we should be consistent if possible


Create onmounted Event

resolves #631
resolves #517
resolves #804
resolves #423
Implements a new onmounted event with a trait object in the HTML crate. (More API discussion in #631)
The element allows:

The raw element type of the platform
The position of the element
Scrolling to the element
Focusing the element
Each of these APIs are optional for the underlying renderer to implement.

Todo:

[x] Create new event in html crate
[x] Platform specific implementations

[x] Web
[x] Desktop
[x] Liveview
[x] TUI

[x] Add example of onmounted event

This looks so cool! I've been writing components that render svg shapes and have been using polling hacks to query JS for the the rendered size of the SVG element so I can calculate scaling factors, etc. Can't wait to toss that code out 😄 This seems like it will open up quite a few new possibilities.

Awesome! Thank you! @Demonthos

A bit late, but should the event name not be onmount?
All event names in the browser are in this form onmousemove onmouseenter, onkeypress, ...
I'm not aware of one event name in past tense.

Hooks are dropped when the component is dropped.

Right, I remember seeing a comment in Discord where you mentioned that :facepalm:

I can't think of a use case that would use the element.

Right, the information I would be interested in is available in the components state anyway.


The instructions on this page do not match what we see in the portal.

The screenshots shown in this page is not accurate. The Azure Portal has no setting called "geo-replication" that is visible in the Azure Portal.

Can someone please update this page with the steps that needs to be performed if we need to set up replication and do a failover?
This article was updated last in February-2019 and the Portal has had a lot of changes after this date. Can this document also reflect the subsequent changes?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ec15230c-5892-782c-89f2-18da183786eb
Version Independent ID: f0a94c7d-bb31-91fa-ece6-59dcd550b6f2
Content: Tutorial: Geo-replication & failover in portal - Azure SQL Database
Content Source: articles/azure-sql/database/active-geo-replication-configure-portal.md
Service: sql-database
Sub-service: high-availability
GitHub Login: @BustosMSFT
Microsoft Alias: robustos

@binoyjt Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

Hi @binoyjt ,
Kendra here from the SQL Docs team. I've reviewed your issue and see that changes were committed by @jdmartinez36 and merged in which resolve the problem you reported.
Thanks for reporting this issue and for contributing to the SQL docs!
Kendra
Senior Content Developer, SQL Docs Team
#assign:emlisa
#assign:litknd
#please-close

The following users don't have valid GitHub IDs, or are not collaborators on this repo: emlisalitknd#please-close

assign:LitKnd

#assign:emlisa


Add test suites, adapt zeta for BLS12-377

Description
as per title.
The test suites are generated from my fork of h2c IRTF draft: https://github.com/mmagician/draft-irtf-cfrg-hash-to-curve/tree/bls12-377

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against correct branch (master)
[ ] Linked to Github issue with discussion and accepted design OR have an explanation in the PR that describes this work.
[ ] Wrote unit tests
[ ] Updated relevant documentation in the code
[ ] Added a relevant changelog entry to the Pending section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer

LGTM :+1:


Problem with Animated Object

So I was gonna use this thing with an Animated Object and use the Recording Mode to sync diffrent colliders to diffrent frames and when I pressed Regenerate Collider it made the collider a box which was like 1/2 the charcters length diagonally upwards from him. Is this happening because this is an Animated Object?(If yes you should make it so it supports Animated Objects)

Thanks for raising an issue.  The script just regenerates a collider based on whatever sprite is in the sprite renderer so depending on how you animate the character and where the polygon collider and sprite renderer are you might have some problems i don't know.  I never tested this script with animations because changing the collider during game play can cause clipping and out of bounds glitches.  I would recommend making a child gameobject for each frame of the animation and then adding the required collider and sprite to that child.  Then have the animator just enable and disable the children gameobjects?  Not sure if you provide more details on what you want im happy to code a fix.  Thanks again for the comment

The thing is there is a sprite in the sprite renderer and even when I remove the animator component the problem persists, should I maybe send you the project file to see what is wrong with it?(Also I didnt know how do you send this with the tag but you should make the Pixel Perfect Collider 2D for tilemaps. The tilemaps have the custom outline shape and custom physics shape which are similar to the Polygon collider(And Im saying you should also do the custom outline so people could have for exampled coloured backround is there sprite sheets))

The thing is there is a sprite in the sprite renderer and even when I remove the animator component the problem persists, should I maybe send you the project file to see what is wrong with it?(Also I didnt know how do you send this with the tag but you should make the Pixel Perfect Collider 2D for tilemaps. The tilemaps have the custom outline shape and custom physics shape which are similar to the Polygon collider(And Im saying you should also do the custom outline so people could have for exampled coloured backround in there sprite sheets))

Great idea i would love to make a version of this for tilemaps.  and as for animation the problem likely is that the animator component changes the sprite of the spriterenderer but the pixelcollider only regenerates when you press the button or call the Regenerate method.  Maybe I should add an option to check every frame and see if the collider needs to be regenerated.  Ill get to work on that.  Let me know if you have any other ideas.

Ok cause for like the Pixel Perfect Collider 2D you can add a major improvement to it to make it work with multiple things. The improvement would include a drop down menu which you could choose what the script would affect. So something like this:
public enum ColliderType { Auto, Animated, Normal, Tilemap }
public ColliderType colliderType;

The Auto feature would try top detect what object you attached the script too via detecting the components
The Animated feature would detect every frame then set the collider for thoose(if you cant it would just be a fix for my problem)
The Normal would just be your script
The Tilemap would change the custom physics shape of the object
Then I also would imagine that you would have a tickbox that would appear when you choose tilemaps which would be Remove Colored backrounds or something like that which when you press it two options apear. The first one is amount and you can make the max five for example and then the others would be the colours and it would remove colors from the tilemaps.
Also thx for even just reading this msg and thx a lot more if you actually do this.

Ok im on it!


On Reconnection, unable to set client name right before resubscribing to channels

Version: 2.6.3
Platform: Ubuntu 16.14
Description:

In code, I am able to do a client setname right before I placed it into subscriber mode to track the name through a platform, but if the client reconnects.. the setname erases or I can't have noderedis set the client name at the in-between time before it reconnects to the channels.
Note, this happens when I have disable_resubscribing = false
The error it generates seems like its already in subscriber mode by the time I try to hook into the reconnection function through node when trying to do a client('setname')
 ReplyError: ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
 0|node-mul |     at parseError (/home/nodeuser/node_modules/redis-parser/lib/parser.js:167:12)
 0|node-mul |     at parseType (/home/nodeuser/node_modules/redis-parser/lib/parser.js:228:14)

It would be nice if it could or maybe inside the retry_strategy, i could do any commands before the subscribing of channels, or get the last client setname

@noriega3 I like the idea of having such a function

Have you guys figured out how to workaround this without the feature?
I'm on 2.8.0 and would like to keep my sub client named even after a re-connection.
Thanks.

I was able to work around this by setting disable_resubscribing: true and moving both the SETNAME and the SUBSCRIBE commands to the connect event handler, in that order.
Cheers.

see name here.


[Bug]: "." added to imports by default

What happened?
py_library, py_binary and py_test macros set imports attribute to ["."] by default. This pollutes top-level import namespace.
https://github.com/aspect-build/rules_py/blob/c37e67963502a401de4b117fa8104da2091b5d1c/py/defs.bzl
Version
Development (host) and target OS/architectures:
Output of bazel --version: bazel 7.0.2
Version of the Aspect rules, or other relevant rules from your
WORKSPACE or MODULE.bazel file: HEAD (v0.7.3+)
Language(s) and/or frameworks involved: none
How to reproduce
Check out `rules_py` repository. Apply the following patch:

diff --git a/py/tests/repo_relative_imports/test/test.py b/py/tests/repo_relative_imports/test/test.py
index 8e87756..60a33da 100644
--- a/py/tests/repo_relative_imports/test/test.py
+++ b/py/tests/repo_relative_imports/test/test.py
@@ -1,3 +1,3 @@
-from py.tests.repo_relative_imports.lib import adder
+import adder

 assert adder.add(2, 3) == 5

Run `bazel test //py/tests/repo_relative_imports/test`.

Expected result: test fails since no top-level module `adder` is installed.
Actual result: test passes

Any other information?
This is extremely problematic if instead of adder.py your users create numpy.py, since import numpy will import this file instead of numpy library.
rules_python defaults to import = []

I am seeing this behavior in the current version (1.0.0), when I check sys.path from within Python the test's path is there for some reason, causing the same naming conflict issues.
Currently investigating where it's being added.


key_pair does not exists issue

Hi I placed my key pair in currect directoy name as yeshwanth.pem

and for your reference below is my ec2 module terraform code and i defined keypai in veriable section

but in terraform validate gots key pair not exist issue

can you help ?

You need to create EC2 key pair in the AWS region you use. You can use this module, for example.
Then you will have to specify key_name argument pointing to the name of that key pair (not filename) in this ec2-instance module.
Please ask generic Terraform questions on discuss.hashicorp.com


In multi-trigger, if one trigger crashes, others may keep running

I created a multi-trigger app with http, timer and sqs triggers.  I knew that the SQS trigger was not yet compatible with multi-trigger.  The SQS trigger obligingly crashed during startup, but the timer trigger continued to run.
I believe this is due to the timer trigger being a plugin.  To run the trigger, we start a spin process, which in turn starts a timer-trigger process.  I believe that when we kill that spin process, the child timer-trigger process continues to run.
Further evidence for this is from logging the PIDs of the trigger processes.  None of these PIDs matched the ID from doing ps -A | grep timer after SQS had crashed.
This may be a bit gnarly to fix because when we kill the Spin process it just dies, it doesn't get to say "goodnight sweet prince" or (more relevantly) "die, actual plugin process, die" - we can try setting kill_on_drop on the child but I am not sure if finalisers will run in this case.  Anyway I will take a look at it and see if I can make a dent.
cc @kate-goldenring if you have any thoughts on this!

Confirmed finalisers do not appear to run.

@itowlson I was able to repro this. With a neverends plugin:
#!/bin/bash

i=0
while true; do
   echo $i
   i=$(( i+1 ))
   sleep .5
done

Interestingly adding kill_on_drop(true) did resolve it for me. Stopping the spin (cargo run) process also killed the plugin process
    let mut command = Command::new(binary);
    command.args(args);
    command.envs(get_env_vars_map()?);
    command.kill_on_drop(true);

Oh interesting!  How did you stop the Spin process?  In my case the parent process is kill_on_drop-ing the Spin process so maybe your way of stopping is giving it a chance to clean up okay.  Thanks!

I had to add a Ctrl+C handler to external - that seemed to work but more cruft sigh

I cannot repro my success with my changes, so I agree that kill_on_drop does not work. Will also keep trying!

(not you Kate. just the unfeeling cosmos in general)

oh SOMETIMES it works


Flexible array member is not supported in C++11, so emit an array of …

…size 1.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.

The purpose of this PR is just emit [1]  when size is zero  in type_to_array_glsl, so you can find a way to fix it more efficient way. It may better to introducing some flag args  in type_to_array_glsl. This will  reuse CompilerGLSL code as much as possible.

It should be easier to add a flag to CompilerGLSL::BackendVariations. That struct is designed to handle tiny variations like this without having to reimplement virtuals.

Implemented it with a BackendVariations check instead.

Cool! Thanks!


system class

Hi,
I am just curious and testing your library.
Now I have one question:
Which type of system does your library support? Only polynomial ODEs?
I am asking because I am getting the following error, when parsing a MWE model:
 ode = @ODEmodel(     x1'(t) = a*x1(t)+sin(u(t)),     y(t) = x1(t)      )
This leads to the following error:
[ Info: Summary of the model: [ Info: State variables: x1 [ Info: Parameters: a, sin [ Info: Inputs: u [ Info: Outputs: y ERROR: Number of variables does not match number o f values
where sin is recognized as parameter. Am I doing something wrong or is this a limitation of your toolbox?
Thx.

Hi @FabiJa , thank you for your question! Yes, currently only rational functions are supported for the right-hand side of the ODE system.

Ok, thank you. I missed this in the documentation.


Include "convert_png_to_jpeg" in "recompress_images" group

Filter "convert_png_to_jpeg" specifies whether we can change "lossiness" of the image. If it's disabled, we always convert images of lossless format to another lossless format. If it's enabled, we check the content of the images and if we decide that they are not sensitive to compression noise, we convert them to lossy format, i.e., JPEG or WebP Lossy.
We've been including this filter in Core and Bandwidth levels, and in rewrite_images group. No complains so far, so I think it's safe to use. Furthermore this filter doesn't require any particular UA, unlike WebP Lossless or Animated.
With this change (and in the future) we'll use these two filter groups as:

recompress_images: all filters which we recommend for IPRO
rewrite_images: all filters which we recommend for non-IPRO, i.e. Core level. With this change, rewrite_images = (recompress_images + inline_images + convert_to_webp_lossless).

Commit: https://github.com/pagespeed/mod_pagespeed/commit/e38ededfb5e2c6eb99ec8b7b4dab9977be5ba50e


limayaml.Save does have some encoding bugs

The function uses a custom marshaller to make sure null and ~ are quoted. It is missing entries for Null and NULL which in the YAML spec also denote the missing value.

I found that tab characters get an extra backslash during the roundtrip (I've filed https://github.com/goccy/go-yaml/issues/475) for this. This bug only happens when using a custom marshaller, but not with the default one.

So (1) can be fixed by added the missing cases, but (2) can only be fixed by removing the custom marshaller, making it impossible to fix (1).
But by lucky synchronicity a PR has been filed just 10 hours ago to fix the null issue upstream (https://github.com/goccy/go-yaml/pull/474). I've tested that branch, and it fixes both (1) and (2) when you remove the custom marshaller.
So it is possible to fix the issue right away with a replace directive in go.mod and dropping the custom marshaller:
replace github.com/goccy/go-yaml => github.com/denieryd/go-yaml v0.0.0-20240927195919-fa39d09da8ae

I don't think this is important enough, and we should instead wait a while to see if upstream makes a release. We could fix (1) while we wait, if we want to.

Thx for mention ;)

The main problem was the mount of the home directory, "~", which got marshaled into ~ (null)

https://github.com/lima-vm/lima/pull/2338

So it was the same issue as "null", even if I don't think the strings "null" (or "Null" or "NULL") are used:

https://github.com/goccy/go-yaml/issues/413


iOS duration is always elapsed

Found this in the code when I was trying to figure out how I can add prev/next buttons
        NSNumber * duration = [NSNumber numberWithInt:[musicControlsInfo elapsed]];
        NSNumber * elapsed = [NSNumber numberWithInt:[musicControlsInfo elapsed]];

Guess I should tag @0505gonzalez on this?

This was fixed a few days ago Commit 961bf19.


Updated "Session window" function page

In a note, it was referring to the "Sliding" window function instead of the "Session"

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

@Geims83, thank you!
#sign-off


Fixed issue with creating a resource from png using Image_lib

Due to this pr https://github.com/bcit-ci/CodeIgniter/pull/5883 while changing the function image_create_gd to add support for webp, the option to create a resource from png is no longer possible.

Good catch :+1:


DDPB-3590: Remove court order creation code from lay registration

In this PR we have removed the code which creates a court order for new
registrations. We have done this because the court order schema will
change soon and the first part to changing the schema is making sure no
new court orders are created when a users registers
Fixes DDPB-3590
Checklist

[x] I have performed a self-review of my own code
[ ] I have updated documentation (Confluence/ADR/tech debt doc) where relevant N/A
[ ] I have added tests to prove my work N/A
[ ] The product team have approved these changes

Nice job - I know this was a pain to test but hopefully the registration flow makes more sense now 🙌
:shipit:

It definitely does 😄


0.9.0: cli: TypeError when using globally stored tasks: [readme]

As we know currently we can store things globally through --save, so i stored some configs
verb --save tasks:readme
verb --save layout:empty
verb --save toc:false

So, when run just verb it simply fails with
[TypeError: tasks.split is not a function]

very cool :D I'm digging to find from where come from about an hour ;d Maybe composer or even bach, but i can't see such thing lol.
notice it's specific, all other is working correctly (for example verb readme is as expected), also works if configs are stored locally in package.json on the project.
~/data-store/verb.json
{
  "layout": "empty",
  "tasks": [
    "readme"
  ],
  "toc": false
}

Oookey, that was cool, found it. lol.
I can bet problem is coming from here base-runner/index.js#L212-L219

closing as per https://github.com/node-base/base-runner/issues/2

awesome, thanks for debugging. we'll get these all streamlined over time, it will get easier


When will the new version or the current version will be released

When will the new version or the current version will be released

@keerthinath-ganjam
this repo is abandoned.
There is a new solution integrated now in .NET Core 2.0 and gives you the way to correlate your traces and restore causality between them.
Please check new Actiity class in .NET.
It works together with DiagnosticSource.
HttpClient in .NET Core is instrumented with DiagnosticSource and Activity. Here is a HTTP diagnostics guide in .net core 2.0
Asp.Net Core on incoming boundary is also instrumented with DiagnosticSource and Activity.
ApplicationInsights SDKs for .NET now use this API and instrumentation and natively support correlation with no code modification.

@lmolkova  - You mean to say that if i update the latest App Insight nugets In any of the app (.NetCore 1.1 or MVC or WEBAPI) the correlation b/w the applications??

Yes, if you update AppInsights SDKs to the latest available, you would get end-to-end tracing with correlated telemetry across your stack (as long as your apps communicated over HTTP).


Get new IPv6 prefixes for nihal and biham

These two storage hosts were physically moved to a different datacenter a while ago and their IPv6 prefixes were deprecated. Need to order two new prefixes and update the network configuration.
We'll have both the old and new prefixes configured for a few days, and then shut off the old prefixes.

Ran ip addr add and modified /etc/network/interfaces as follows:
iface eth0 inet6 static
  address 2a01:4f8:101:230::2
  netmask 64
  gateway fe80::1
  up ip addr add 2a01:4f8:221:2f45::2/64 dev eth0

Also updated DNS as follows:

AAAA nihal.i.ipfs.io 2a01:4f8:221:2f45::2
AAAA biham.i.ipfs.io 2a01:4f8:221:2bc4::2

Will close this issue once the old prefixes are removed.


ceph_purge-container-cluster.yml cannot be run multiple times.

Hello,
In my configuration I have set up Logical Volume.
When I deploy this it works fine.
the problem is during the purge, I cannot run the purge role (ceph_purge-container-cluster.yml) more than once.
I have the impression that this role is not idempotent.
I would like to know if I am the only one having this problem?
Thank you for your help.
regards
Bug Report
TASK [zap and destroy osds created by ceph-volume with lvm_volumes] ***************************************************************************************************************
Friday 12 February 2021  14:54:08 +0100 (0:00:00.136)       0:10:26.168 *******
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 102, in <module>
  File "<stdin>", line 94, in _ansiballz_main
  File "<stdin>", line 40, in invoke_module
  File "/usr/lib64/python3.6/runpy.py", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 759, in <module>
  File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 755, in main
  File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 633, in run_module
  File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 475, in is_lv
  File "/usr/lib64/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
failed: [neocore6] (item={'data': 'LV_data_OSD1', 'crush_device_class': 'hdd', 'data_vg': 'vg_data_HDD_1', 'wal': 'LV_wal_OSD1', 'wal_vg': 'vg_data_SSD_1'}) => changed=false
  ansible_loop_var: item
  item:
    crush_device_class: hdd
    data: LV_data_OSD1
    data_vg: vg_data_HDD_1
    wal: LV_wal_OSD1
    wal_vg: vg_data_SSD_1
  module_stderr: |-
    Traceback (most recent call last):
      File "<stdin>", line 102, in <module>
      File "<stdin>", line 94, in _ansiballz_main
      File "<stdin>", line 40, in invoke_module
      File "/usr/lib64/python3.6/runpy.py", line 205, in run_module
        return _run_module_code(code, init_globals, run_name, mod_spec)
      File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code
        mod_name, mod_spec, pkg_name, script_name)
      File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 759, in <module>
      File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 755, in main
      File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 633, in run_module
      File "/tmp/ansible_ceph_volume_payload_462rwwao/ansible_ceph_volume_payload.zip/ansible/modules/ceph_volume.py", line 475, in is_lv
      File "/usr/lib64/python3.6/json/__init__.py", line 354, in loads
        return _default_decoder.decode(s)
      File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  module_stdout: ''
  msg: |-
    MODULE FAILURE
    See stdout/stderr for the exact error
  rc: 1

What happened:
when I re-run the role a second time, the task "zap and destroy osds created by ceph-volume with lvm_volumes" crashes.
My logical volumes were deleted when I started the playbook for the first time.
the second I have a module failure error
What you expected to happen:
I am waiting for the task to detect that my Logical Volumes are deleted and continue following the purge role.
How to reproduce it (minimal and precise):

With a LVM configuration in your ceph inventory, can you run the purge role several times without any problem?
Share your group_vars files, inventory and full ceph-ansibe log:
@all:
  |--@ceph_cluster:
  |  |--@cephfs:
  |  |  |--neocore3
  |  |  |--neocore4
  |  |  |--neocore5
  |  |  |--neocore6
  |  |  |--neocore7
  |  |--@clients:
  |  |  |--neocore3
  |  |--@grafana-server:
  |  |  |--neocore3
  |  |--@mdss:
  |  |  |--neocore5
  |  |--@mgrs:
  |  |  |--neocore1
  |  |  |--neocore2
  |  |  |--neocore3
  |  |--@mons:
  |  |  |--neocore1
  |  |  |--neocore2
  |  |  |--neocore3
  |  |--@osds:
  |  |  |--neocore4
  |  |  |--neocore5
  |  |  |--neocore6
  |  |  |--neocore7
  |  |--@rgws:
  |  |  |--neocore4
  |  |  |--neocore5
  |  |  |--neocore6
  |  |  |--neocore7

groups_vars:

lvm_volumes:
  - data: LV_data_OSD1
    crush_device_class: hdd
    data_vg: vg_data_HDD_1
    wal: LV_wal_OSD1
    wal_vg: vg_data_SSD_1

ceph_iscsi_config_dev: false
osd_objectstore: bluestore

Environment:

OS (e.g. from /etc/os-release): RHEL 8.3
Kernel (e.g. uname -a): 4.18.0-240.10.1.el8_3.x86_64
Docker version if applicable (e.g. docker version): podman version 2.0.5
Ansible version (e.g. ansible-playbook --version): ansible 2.9.13
ceph-ansible version (e.g. git head or tag or stable branch): ceph-ansible-4.0.41-1.el8cp.noarch
Ceph version (e.g. ceph -v): ceph version 14.2.11-95.el8cp (1d6087ae858e7c8e72fe7390c3522c7e0d951240) nautilus (stable)

Hi @hmeAtos ,
i'll try to reproduce and let you know

ok thanks

Hi @hmeAtos ,
i'll try to reproduce and let you know
ok thanks

Hi @hmeAtos ,
i'll try to reproduce and let you know

ok Thanks

@hmeAtos if you could provide a full playbook log, that would be helpful

Of course,
The first purge ceph Playbook that works: purge_ceph.TRACE.txt
The second purge ceph playbook that not works :  purge_ceph_fail.TRACE.txt
The role task : TASK [zap and destroy osds created by ceph-volume with lvm_volumes]
seems not idempotent.

@hmeAtos I could reproduce the issue and found out the cause.
thinking about a patch now.


add ASL LICENSE file

I'm assuming everything in here is ASL licenses? Perhaps we can just put the usual LICENSE file... if nothing else, it will make GitHub show the license in that bar on top of the project.

Thanks for caring!


[Add LOI task] Allow user to name LOIs when adding

@rawbzz FYI

Requested by @lecrabe. Added to the next milestone after field testing.

Had a chance to discuss the solution with @shobhitagarwal1612, who gave me some implementation details to consider.  I found that the code complexity increases substantially when the dialog is to be triggered inside of the *TaskFragment (i.e. capture location, point, and polygon tasks), in between when the location is captured but before hitting next while the user has a chance to undo. I would avoid retriggering the dialog every time the user wants to undo the location, since adjusting the pin requires a lot of microadjustments. What if instead, we trigger the dialog after the user hits "Next", before moving on to the next task? That way, the user can adjust the location without retriggering the dialog and allow the user to go back to the LOI task if they decide they want to rename, making sure to load the previously selected name into the dialog. Here is a quick implementation sketch:

Use Composable dialogs to create the dialog, instead of using XML -> Fragment -> ViewModel system.
Trigger the dialog in DataCollectionViewModel and save the LOI data in a persistent manner.
Send the LOI data to SubmitDataUseCase where it will be saved locally then later sent remotely.

WDYT, @gino-m?

@rawbzz ok to trigger the LOI name dialog after the user clicked "Next" for the reasons @sufyanAbbasi mentions above?
In terms of implementation, that all sounds good with one delta - iirc SubmitDataUseCase represents the user hitting the "submit" button at the end of the data collection flow. The data collection flow keeps internal state with all the user responses, I assume the LOI name would belong in there until the data collection flow is completed.

Ah yea that makes sense..It wouldn't be good for the dialog to trigger every time the user tries to move the pin. I think it sounds good that once they drop the pin and move it around to the exact location and then pressing "next"  has the dialog come up.

Thank you so much @rawbzz for the leniency! This is the rare occasion when taking the simpler approach doesn't detract from the UX :).
Makes sense, @gino-m. SubmitDataUseCase is where we extract the final LOI data from the LOI task of a given job in addLocationOfInterest(), so the challenge will be to figure out how to pipe the LOI name into here for property construction.
For 2) We will want to save the loiName to the local DB alongside loiID in DraftSubmissionEntity where it can be recovered in draft state. I will also use a new saveState key, TASK_LOI_NAME_KEY to handle fragment refresh etc.

That makes sense based on my fuzZy recollection. If you like, send a scratch PR so we can discuss in context!

Edit on 1) I found success in intercepting the "next" click handler on the AbstractTaskFragment, detecting whether the task is an LOI task and open the dialog, set the LOI name on the linked DataCollectionViewModel from the AbstractTaskFragment. From there it seems to work as intended!


Replace git submodules with published dependencies

Contributes to https://github.com/tarides/infrastructure/issues/389

Thank you for the review!


question: what format should the date prop in the audit object have?

Looking at the change created through the inkVisitor interface in the DB, I see that the date prop has a format
"date": {
            "$reql_type$": "TIME",
            "epoch_time":<PHONE_NUMBER>.739,
            "timezone": "+00:00"
        },

Looking in the audit.json imported, the date has a format
string: 2021-12-05T19:10:15.739Z

The IAudit class is expecting "string" (could be a quirk of the way I created the object from the typescripts definition).
So... what should be in the audits.json?

Irrelevant.  The import script is transforming time strings to date object.


Add initial SBOM docs

Proposed changes
Add initial docker sbom docs. It would be great to add some practical examples in a follow up like diffing images or checking for vulnerable libraries.

Unreleased project version (optional)
The command will be available with Docker Desktop 4.7.0.
Related issues (optional)
N/A

@chris-crone Thanks for the PR. Had a quick look and suggested updates so we can publish docs for the 4.7 release. PTAL and let me know if you have any questions.
@thaJeztah Thanks a lot for reviewing the PR 🤗

Thank you both!


Clarify encryption label limits

Near the end of the 'What label policies can do' section, just before "Label policy priority (order matters)" section  it reads, "There is no limit to the number of sensitivity labels that you can create and publish, with one exception: If the label applies encryption, there is a maximum of 500 labels".
It's not clear to what the maximum applies:
Is that 500 labels total as long as at least one has encryption ?  Or just 500 with encryption with an unlimited number of labels not encrypted?
Is that limit then applicable to a single Label Policy ? Or, across all the Label Policies ?
If the same label is used in multiple Label Policies, is it counted just once or for each instance it is used?
If it's 500 total labels when encryption is used across all label policies then 500 is the maximum and it might be good to make that explicit.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: fb0c964d-2d1b-601a-c8a2-14378fc24fb8
Version Independent ID: ee549bd1-0652-2167-0f23-d22a58cf895b
Content: Learn about sensitivity labels - Microsoft 365 Compliance
Content Source: microsoft-365/compliance/sensitivity-labels.md
Service: o365-seccomp
GitHub Login: @cabailey
Microsoft Alias: cabailey

@bholzmmc  Thanks for the question, I'll clarify in the docs. The 500 limit is for creating and storing the backend protection templates that get automatically created when you configure a label for encryption.  So you can have 500 labels that include encryption and use these labels repeatedly in different policies. There is no limit to the number of labels without encryption because these don't create backend protection templates.

Hi Carol,
A follow-up question, are ‘Archived’ templates counted as well as Published ones toward the 500 limit.
Thanks,
Brian
Brian Holzman, Storage Engineer
Marsh & McLennan Companies
Global Technology Infrastructure (MGTI) | Enterprise Systems Engineering
121 River Street, Hoboken, NJ 07030, USA
+1<PHONE_NUMBER> | Fax +1<PHONE_NUMBER> | brian.m.holzman<EMAIL_ADDRESS>www.mmc.comhttp://www.mmc.com/
From: Carol Bailey<EMAIL_ADDRESS>Sent: Friday, June 05, 2020 3:41 PM
To: MicrosoftDocs/microsoft-365-docs<EMAIL_ADDRESS>Cc: Holzman, Brian<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/microsoft-365-docs] Clarify encryption label limits (#2119)
@bholzmmchttps://github.com/bholzmmc Thanks for the question, I'll clarify in the docs. The 500 limit is for creating and storing the backend protection templates that get automatically created when you configure a label for encryption. So you can have 500 labels that include encryption and use these labels repeatedly in different policies. There is no limit to the number of labels without encryption because these don't create backend protection templates.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/microsoft-365-docs/issues/2119#issuecomment-639751267, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AI4UQ5YTTHIFDTGKHK4SGGDRVFC3XANCNFSM4NU6UZLQ.

This e-mail, including any attachments that accompany it, may contain
information that is confidential or privileged. This e-mail is
intended solely for the use of the individual(s) to whom it was intended to be
addressed. If you have received this e-mail and are not an intended recipient,
any disclosure, distribution, copying or other use or
retention of this email or information contained within it are prohibited.
If you have received this email in error, please immediately
reply to the sender via e-mail and also permanently
delete all copies of the original message together with any of its attachments
from your computer or device.

Do labels that have encryption but have the permission set to “Let users assign when they apply label”  count in any way ?
What about OME ?
And if not, why ?
Thanks,
Brian
From: Carol Bailey<EMAIL_ADDRESS>Sent: Friday, June 05, 2020 7:40 PM
To: MicrosoftDocs/microsoft-365-docs<EMAIL_ADDRESS>Cc: Holzman, Brian<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/microsoft-365-docs] Clarify encryption label limits (#2119)
@bholzmmchttps://github.com/bholzmmc Yes. Very few customers hit this limit but if you do, evaluate whether you really need old templates and if not, delete them. But do an export first, as a backup. More info: https://docs.microsoft.com/en-us/azure/information-protection/configure-templates-with-powershell
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/microsoft-365-docs/issues/2119#issuecomment-639897980, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AI4UQ54RO5Q2O6ZHUD37F4DRVF66DANCNFSM4NU6UZLQ.

This e-mail, including any attachments that accompany it, may contain
information that is confidential or privileged. This e-mail is
intended solely for the use of the individual(s) to whom it was intended to be
addressed. If you have received this e-mail and are not an intended recipient,
any disclosure, distribution, copying or other use or
retention of this email or information contained within it are prohibited.
If you have received this email in error, please immediately
reply to the sender via e-mail and also permanently
delete all copies of the original message together with any of its attachments
from your computer or device.


D435 camera cannot be opened!

Required Info

Camera Model
{ D400 }

Firmware Version
(Open RealSense Viewer --> Click info)

Operating System & Version
{Win (10)

Kernel Version (Linux Only)

Platform
PC

SDK Version
{2.50 }

Language
{C++ }

Segment
{Robot/Smartphone/VR/AR/others }

Issue Description
Using SDK C + + to open the camera and get the frame display program, which is normal on the developed computer
But change the program to a computer without network and plug the camera into the computer without network
The program failed to open the camera. Tip: This is the first time that this computer without network is plugged into the d435 camera device
What is the reason? Is it because the first time you plug in a computer, you need to install some drivers on the network?

Hi, are you using the re-server ethernet networking system to network the camera, please?
https://dev.intelrealsense.com/docs/open-source-ethernet-networking-for-intel-realsense-depth-cameras
If you are using rs-server then it sounds as though there may be instructions in the C++ code for treating the camera as a Network Device (a networked camera) and so it does not understand how to operate as a normal camera outside of a network.  In such a script, commenting out the line of code that defines the camera as a Network Device - such as rs2::net_device** - should enable it to function outside of a network.

The USB 3.0 connection is used,
When the d435 camera is connected to a new computer for the first time through USB 3.0, will it automatically download some files or drivers Online

Thanks very much for the clarification.  When a camera is attached to a Windows computer for the first time, the computer will install two RGB and Depth drivers that can be viewed in the Cameras section of the Windows Device Manager interface.  It will only install the drivers for that particular camera if they are not currently installed.  The image below shows the example of drivers for the D455 camera model listed in the Device Manager.

I performed a test where I disconnected from the internet, uninstalled the drivers and then unplugged the camera and re-inserted it to initiate a driver installation.  The drivers reinstalled successfully without an internet connection.

Thank you very much for your reply. I will repeat your experiment and find the problem of my own program

Thanks very much for the clarification. When a particular camera is attached to a Windows computer for the first time, the computer will install two RGB and Depth drivers that can be viewed in the Cameras section of the Windows Device Manager interface. It will only install the drivers for that particular camera upon insertion into the USB port if they are not currently installed. The image below shows the example of drivers for the D455 camera model listed in the Device Manager.

I performed a test where I disconnected from the internet, uninstalled the drivers and then unplugged the camera and re-inserted it to initiate a driver installation. The drivers reinstalled successfully without an internet connection.

OK，I have found the problem. Let me ask you a question: is there an excuse for the SDK to obtain whether the current camera is connected to a USB 2.0 or USB 3.0 port?

Thanks very much for the clarification. When a particular camera is attached to a Windows computer for the first time, the computer will install two RGB and Depth drivers that can be viewed in the Cameras section of the Windows Device Manager interface. It will only install the drivers for that particular camera upon insertion into the USB port if they are not currently installed. The image below shows the example of drivers for the D455 camera model listed in the Device Manager.

I performed a test where I disconnected from the internet, uninstalled the drivers and then unplugged the camera and re-inserted it to initiate a driver installation. The drivers reinstalled successfully without an internet connection.

OK，I have found the problem. Let me ask you a question: is there an excuse for the SDK to obtain whether the current camera is connected to a USB 2.0 or USB 3.0 port?

I have found the interface. I think this topic can be closed. Thank you for your reply!

The USB port can decide whether a connection is USB 2.1 or USB 3 based upon the connector's pins, as USB 3 cables have additional wires and connector pins that USB 2.1 cables do not have.
Even if a USB 3 cable is used though, it may be detected as USB 2.1 if the connector is not inserted all of the way into the port.
Sometimes though it is mis-detected for unknown reasons, such as showing as USB 3,2 in the RealSense Viewer program but 2.1 in the RealSense ROS wrapper.
I'm pleased to hear that you found a solution.  Thanks very much for the update.  As you suggested, I will close the case.  Thanks again!


patch: small tweak on :body usage

I didn't update CHANGES.md as this seems such a trivial change. I assume that you will roll it into your next release with more interesting changes!
The tests still pass :)

Great, thanks!


Problem: We don't have an interpreter for the ValueObject ASTs

Solution: Write an interpreter for the ValueObject ASTs
SuccessCriteria: The ASTs from issue #84 are turned into unit tests, and those tests pass

Breaking this down into 3 subproblems, one for each type that we're building.

All three prototypes are working, though the code isn't great. There is clearly a "check" concept emerging. I propose a new issue, around extracting this functionality. Once that's created, we can mark this as complete.

As per the above, new issue created, #94. Closing this issue.


Rect::contains should be exclusive for right and bottom edges

This may require some discussion as it is a breaking change.
The pixels with coordinates equal to the right and bottom edges are not included for drawing operations such as fill_rect. Therefore they should not be included for the contains method either. This caught me out when using Rect::contains to check if the mouse cursor was inside a drawn rectangle, it was giving a false positive when the mouse was 1 pixel outside the rectangle to the right or bottom.
Current implementation:
https://github.com/AngryLawyer/rust-sdl2/blob/master/src/sdl2/rect.rs#L301-L306
    /// Checks whether this rect contains a given point.
    pub fn contains<P>(&self, point: P) -> bool where P: Into<(i32, i32)> {
        let (x, y) = point.into();
        let inside_x = x >= self.left() && x <= self.right();
        inside_x && (y >= self.top() && y <= self.bottom())
    }

Proposed fix (only 2 characters different, "<" rather than "<=" for right and bottom):
    /// Checks whether this rect contains a given point.
    pub fn contains<P>(&self, point: P) -> bool where P: Into<(i32, i32)> {
        let (x, y) = point.into();
        let inside_x = x >= self.left() && x < self.right();
        inside_x && (y >= self.top() && y < self.bottom())
    }

Additionally, I would expect this method to be consistent with SDL_PointInRect which is inclusive for the lower bound and exclusive for the upper bound:
https://hg.libsdl.org/SDL/file/bfddf6a4bcad/include/SDL_rect.h#l70
/**
 *  \brief Returns true if point resides inside a rectangle.
 */
SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
{
    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
}

Breaking the APi is fine, but breaking it "sneakily", meaning it doesn't change the signature but changes the behavior, is not fine at all.
Either you replace this " contains" by a contains_inclusive and add another contains_exclusive as well, or you simply add another function "contains_exclusive" which does exactly what you said, without changing the current "contains".

I agree 100% with your comments regarding changing the name to not sneakily break code.
Just out of curiosity, does anyone have an example of a use-case for the current behavior? In what case would you want this to be inclusive?

Just an image to help visualize the problem:

The white area is the rectangle {x: 2, y: 2, width: 4, height: 4}.
The green pixel is the point {x: 2, y: 2} this is clearly "contained" by the rectangle.
The red pixel is the point {x: 6, y: 6} this is clearly not "contained" by the rectangle.

I feel that the name "contains_exclusive" could be misleading. What do you think about something more neutral like "includes" or "contains_point" and removing the current behavior?

That makes sense, we can delete this function and "rename" it, and add an explicit warning in the description of the new one.
That or we can just call it a bugfix, hoping it won't break too much someone's code.
I'm leaning for the first option, but I guess the second is fine as well ? It's clearly invalid behavior right there.

I think this counts as a bugfix, but I'm happy for a rename too.

Maybe we can think about .bottom and .right as well. Here is bottom :
/// Returns the y-position of the bottom side of this rectangle.
    pub fn bottom(&self) -> i32 {
        self.raw.y + self.raw.h
    }

In your example this function would return 6 (2+4 == 6), but as it stands I'm led to believe it would be "the y-position of the bottom side of the rectangle" and in other words "the lowest y-position of the rectangle", meaning it should return 5 instead of 6. Now which one is correct ? Depends on your use-case I'd say.

But the way, this is also the case for
    /// Returns the bottom-right corner of this rectangle.
    ///
    /// # Example
    ///
    /// ```
    /// use sdl2::rect::{Rect, Point};
    /// let rect = Rect::new(1, 0, 2, 3);
    /// assert_eq!(Point::new(3, 3), rect.bottom_right());
    /// ```
    pub fn bottom_right(&self) -> Point {
        Point::new(self.right(), self.bottom())
    }

Is the corner included in the rectangle or excluded ? Here it's told as if it would be included, but a t first sight you might want to think it's the included one.

Does the basic SDL2 library have any similar function? I feel this should be the same as the library we're wrapping, if at all possible :)

There is nothing of the like in SDL2, so it's up to us.

I am not aware of any similar function in SDL2 either.
Personally I am a fan of the lower-bound-inclusive, upper-bound-exclusive style. As such, I like the current implementation of bottom/right/bottom_right. Here are some use-cases where this behavior is nice, but I'm sure you can find others where the converse is true.
Iterating though all pixels in a Rect:
let rect = Rect::new(2, 2, 4, 4);
for y in rect.top()..rect.bottom() {
    for x in rect.left()..rect.right() {
        // ...
    }
}

Defining some non-overlapping Rects:
let rect1 = Rect::new(2, 2, 4, 4);
let rect2 = Rect::new(2, rect1.bottom(), 4, 4);
let rect3 = Rect::new(2, rect2.bottom(), 4, 4);

The last element in a Vec is "size() - 1", the last pixel in a Rect is "right() - 1".
"right = left + width" feels more natural than "right = left + width - 1".

I don't mind, but then additional documentation is required. Ideally a diagram with every method represented explicitly would be perfect.

Sure. In which case, lets fix Contains and add some doc comments in the meantime

@hoqhuuep what did you use to create that little diagram of yours ?

My WIP tile/pixel art editor. Which is the project which I am using rust-sdl2 for. Not currently available ;-)
Here are a few I made just now using MS Excel:
let rect = Rect::new(2, 1, 6, 4);

rect.left()

rect.right()

rect.top()

rect.bottom()

rect.top_left()

rect.top_right()

rect.bottom_left()

rect.bottom_right()

left and right

top and bottom

four corners

four sides

I think the key to it making sense is that the origin of each pixel is it's top-left corner.

I think we should still add inclusive_bottom, inclusive_right, inclusive_bottom_left, inclusive_bottom_right and inclusive_top_right as well (if we take your diagram would be 4, 7, (2,4), (7,4), (7,1))

I can see value in that because they are the coordinates of the pixels which are stroked in a draw_rect call. Just needs to be explained well.

This issue is also affecting me.  (I've been using Rect::contains() all this time assuming it was exclusive, and am now finding bugs in my game due to the fact that it isn't.  Oops!)
Is anyone already working on a PR for this?  If not, I can try to put one together.

This issue was made months ago, I doubt anyone is working on it right now, otherwise it would have been implemented already and I'd have received a PR about that by now. Feel free to do a PR, they are always welcome !

Looks like base SDL2 actually does have an equivalent function now, SDL_PointInRect.  The docs don't specify whether it's inclusive or exclusive on the right/bottom edges, but looking at the source, it is in fact exclusive:
SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)
{
    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&
             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;
}

As an additional data point, the Pygame library (which also wraps SDL, but for Python) has an equivalent method (Rect.collidepoint), and that method's docs explicitly specify that it is exclusive.
So I think exclusive is correct behavior here.


A specific stop is broken, what to do?

I am using the integration succesfully for over 2 months now and everything seems to work fine for the most part. I've added the 3 closest stops to me in YAML and... well, only 2 work well. These two work actually very well, with accuracy in seconds!
The third stop gives always bogus info, and is 100% unreliable (not even once it gave a good estimate about when the tram was coming). I tried adding it multiple times and still nothing.
Furthermore it does not match the readings from Wien Mobil App which tells me there is something else involved here potentially.
Please let me know what type of info you need, and I will make sure to post it here!
Thank you tofuSchnitzel!

please tell me the stopid you have issues with

Thanks for replying! Sure, the stopID is 1741 (62 Rosenhügelstr. direction Oper)

this will be fixed in the next update. 1741 is for 62 and 58B so the data you see in HA is for the 58B.

please try the new beta version: https://github.com/tofuSCHNITZEL/home-assistant-wienerlinien/releases/tag/1.3.0-beta
(enable "show beta versions" under "redownload" in hacs)

Thanks for this!
First impression: it does not work. Here is my code:
sensor:
platform: wienerlinien
firstnext: first
stops:

3790
3761
1741
stop: 1741
line: 62
firstnext: next

This creates two sensors for stop 1741 for 58B in both directions weirdly.... and none for stop 3761
In trying to fix this I've changed the code to:
sensor:
platform: wienerlinien
firstnext: first
stops:

3790
3761
stop: 3761
line: 58B
firstnext: next
1741
stop: 1741
line: 62
firstnext: next

Now I am getting a code error saying YAML expected 58B to be an integer...
Any advice on what to try? Thank you!

Please see the readme. The lineid is not the name of the line but an ID given by wienerlinen:
The Line ID you can get from the URL in your browser after selecting a Line on the site (https://till.mabe.at/rbl/?line=301) or in this csv: wienerlinien-ogd-linien.csv

Please see the readme. The lineid is not the name of the line but an ID given by wienerlinen:
The Line ID you can get from the URL in your browser after selecting a Line on the site (https://till.mabe.at/rbl/?line=301) or in this csv: wienerlinien-ogd-linien.csv

I see! I updated and there are no errors now but...
Is it possible that the sensors are not created because there are no buses/trams at this hour? Because I still do not see any sensor for 3761 and for 1741 I only see nightlines now...

Yes that could be. I thought about this case - but I have not had enough time yet to test it and figure out what the best course of action will be...

No worries - that is really not a problem - well unless people like to restart their HA's during the night,,,,
I can report back tomorrow about how it goes. Interestingly though I did get a sensor for 3790 (single line stop) with data: 'unavailable'

Hm weird, maybe it was already setup from "before"? Because currently 3790 also returns no monitors

Perhaps the first time I restarted with the new beta version there was one last bus or something....
Eitherway, thank you for actively developing and troubleshooting this amazing tool!! I will give you all the feedback I can tomorrow after I see how it handles daytime.
I use this more than anything in HA for now...on my phone and on a tablet next to the front door of my apartment :)

Good morning! New info available: it seems that with the new update you HAVE to add the lines to each stop or it will not create the sensors (so it's not optional). Then, all the sensors created in the past still remain as sensors - they are just "Unavailable" - this is potentially problematic when you try many combinations before you settle on a specific sensor config
Lastly, a question: how can I have sensors for both first and next departure? I deleted from the code the firstnext but still it generates only the first arrival (the rest are Unavailable, like I mentioned above)

New update: the sensor for stop 3761 line 258 (58B) is not updating - last update is 8 hours ago when I restarted HA
stop 1741 & 3790 work fine

Good morning! New info available: it seems that with the new update you HAVE to add the lines to each stop or it will not create the sensors (so it's not optional). Then, all the sensors created in the past still remain as sensors - they are just "Unavailable" - this is potentially problematic when you try many combinations before you settle on a specific sensor config

I tested it and not adding a line creates a sensor for the first monitor that is returned.
all the ones that are "unavailable" might be the old ones that were added before? (check out the entity name and if there is no line name in there its an "old" sensor)

Lastly, a question: how can I have sensors for both first and next departure? I deleted from the code the firstnext but still it generates only the first arrival (the rest are Unavailable, like I mentioned above)

you add it again e.g.:
sensor:
  platform: wienerlinien
  stops:
    - stop: 4429
      firstnext: first
    - stop: 4429
      firstnext: next

New update: the sensor for stop 3761 line 258 (58B) is not updating - last update is 8 hours ago when I restarted HA
stop 1741 & 3790 work fine

I think since it was added when no monitor was available it will never work - I'm trying to find a way to fix this (have HA retrying until there is data and then add the sensor)

I tested it and not adding a line creates a sensor for the first monitor that is returned.
all the ones that are "unavailable" might be the old ones that were added before? (check out the entity name and if there is no line name in there its an "old" sensor)

Well... I tested your theory and it did not work, once I deleted the info for the line - the sensor went "Unavailable"
Also all the "Unavailable" sensors are "new" sensors that have line numbers

I think since it was added when no monitor was available it will never work - I'm trying to find a way to fix this (have HA retrying until there is data and then add the sensor)

stop 3761 line 258 (58B) did update when I restarted HA during the day....but it only updated itself once....

Lastly, a question: how can I have sensors for both first and next departure? I deleted from the code the firstnext but still it generates only the first arrival (the rest are Unavailable, like I mentioned above)

you add it again e.g.:
sensor:
  platform: wienerlinien
  stops:
    - stop: 4429
      firstnext: first
    - stop: 4429
      firstnext: next

is there a way to make it the default for all lines to show both first and next rather than adding it manually? something like firstnext: {first} or (next) or {both}

After some months of testing the 1.3.0 beta version I can safely say that this isssue has been resolved


Please use uuid module instead

Installing paymenthighway produces the following warning:

warning paymenthighway ><EMAIL_ADDRESS>use uuid module instead

node-uuid should be switched to uuid to fix this warning.

Fixed in https://github.com/solinor/paymenthighway-javascript-lib/pull/9/ . Will be published in next release


[3.9] Docker files for Ehcache

Backport to 3.9
Please review https://github.com/ehcache/ehcache3/pull/3105

Updated READMEs to add the necessary header and footer (licensing, etc) required to be deployed on hub.docker.com

Added ./docker/buildAndTest.groovy to automate building and testing of images

Added 3.9-SNAPSHOT tag to built images

Changed image names to:
terracotta/ehcache-terracotta-server
terracotta/ehcache-terracotta-config-tool
terracotta/ehcache-terracotta-voter

Updated ./docker/buildAndTest.groovy to include an Ehcache put/get test

Fixed base images to azul/zulu-openjdk-alpine:17.0.5-17.38.21

Added resource filtering in Groovy build script to generate docker files with the correct project version


Tracking aiobotocore

Starting with 2021.08.0, we have a hard pin on the aiobotocore version, after their removal of the top level reference to the session class broke our code.
For the future, how do we decide on the best pin? Do we need a set of rolling PRs updating the pin and seeing if tests pass?

FYI I started to work on creating env files for testing here (https://github.com/fsspec/s3fs/pull/554). Could be a way to specify aiobotocore version in tests/ci.

Pinning aiobotocore to 1.4.2 depends on botocore 1.20, but up to date versions of boto3 need botocore >= 1.23.

I opened PR to bump aiobotocore to 2.1.0 which supports botocore 1.23.14.
https://github.com/fsspec/s3fs/pull/564

Apologies if it's unrelated, but the error from https://github.com/fsspec/s3fs/issues/514 has shown up again in https://github.com/zarr-developers/zarr-python/pull/914

I'm afraid you'll need to update your s3fs too. The required version of aiobotocore is now fixed, since that happened, but of course I can't fix the previous ones.

(If that was meant for me) @martindurant: isn't 2021.11.1 from https://github.com/zarr-developers/zarr-python/pull/892 the latest?

I thought so, which was why I was worried when https://github.com/zarr-developers/zarr-python/pull/914 started failing (last ~12 hours). I'll re-launch.

(No change)

Looks related to use of fsspec[s3]. Updated on zarr-developers/zarr-python#914

It is now impossible to use s3fs and boto3 in the same project. At least pip-tools doesn't know how to resolve a suitable boto3 version and we get 0.4.0, which hardcodes vulnerable urllib3 and all.

I want to echo @ztane  that the aiotbotocore pin and consequent incompatibility with any other package that requires (even vaguely modern) boto3 when managing via pip-tools is a huge problem.  Most critical is moto[boto3] being incompatible, which essentially means projects cannot use s3fs and test their s3 protocols.
I understand that packaging dependencies across projects is annoying for the maintainers of any individual github project, but I'd love to see this one get resolved.

I agree that installs not doing the right thing or not working at all, and requiring more precise definitions of package versions is a pain. However, it still seems like a lesser pain then relaxing the pin on our end, and having an upstream update break our code, as has happened before.
I would also not that the large fraction of the community that installs via conda/mamba, there is no problem.
Finally, testing with s3fs and moto is clearly possible, since we do exactly that in this repo :)


Automate Helm charts releasing process via GitHub action

Add two GitHub actions to automate Helm charts releasing process. First action would be responsible for packaging the charts and pushing them to the releases and the second action is responsible for updating the index.yaml whenever there is a new release available.
In other words, one GitHub action to package helm charts and upload those charts including the source code to GitHub releases and create a draft release. This job gets triggered when a new tag is pushed.
Second GitHub action - to officially release the charts once official release is published. When repo maintainers, publish the draft release this action gets triggered in updates the index.yaml in gh-pages branch with the corresponding URLs of the chart packages.
The benefit of storing index.yaml in gh-pages is that it will be a single source of the trust for the chart package URLs even though there will be multiple branches on the project in the future. Second, if we happen to use artifacthub.io, then it is easy to configure it, because artifacthub.io reads the charts info from index.yaml located on the GitHub pages of the project.
Here is a short POC how two actions would look like in action.
https://github.com/containers/nri-plugins/assets/35802557/70d85fa0-9710-49fc-84f2-3d405fb9b4a3

Forgot to mention, the assets are not signed and if want them to be signed automatically as the uploading process we will need to generate a GPG key and import it in GA.

Thanks for the review @marquiz. Updated the commit, PTAL

@marquiz updated the patch. PTAL


Dockathon

Hey everybody,
I think we are at a stage where mainly @ejhumphrey implemented a lot in the backend and we should spread knowledge to all project members.
Maybe it's time to document some basic concepts (also there is already much data in the google docs documents etc.).
There is this Dockathon next week (https://bids.github.io/docathon/) maybe that's a good motivation for us to get some docs starting?
What you think?
Best
Stefan

saw this and was wondering what was afoot...
I love this idea. +100
On Sun, Mar 5, 2017 at 12:40 PM Stefan Balke<EMAIL_ADDRESS>wrote:

Hey everybody,
I think we are at a stage where mainly @ejhumphrey
https://github.com/ejhumphrey implemented a lot in the backend and we
should spread knowledge to all project members.
Maybe it's time to document some basic concepts (also there is already
much data in the google docs documents etc.).
There is this Dockathon next week (https://bids.github.io/docathon/)
maybe that's a good motivation for us to get some docs starting?
What you think?
Best
Stefan
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/cosmir/open-mic/issues/50, or mute the thread
https://github.com/notifications/unsubscribe-auth/AA4iq0jE14yoky3jcW3TMLe1gJXYtUVbks5rivNygaJpZM4MTe7F
.

Like that list: https://bids.github.io/docathon/encouraging-user-docathon.html
Perfect fit for our situation 😆


Foxy Release

I have verified that the dashing-devel branch of this repo builds without error (or even warning) on Foxy. Could we please get a Foxy release of this driver and messages?

Sure thing, I meant to do that a while back and it just slipped my mind:
https://github.com/ros/rosdistro/pull/26842

Thanks, PJ!


Appveyor support

Need Appveyor CI integration

Working on it:
https://github.com/vinniefalco/Beast/commits/b35
https://ci.appveyor.com/project/vinniefalco/beast


STM32F103 port

The library seems to compile without errors with the Arduino IDE and the STM32F103 core provided by this project: https://github.com/rogerclarkmelbourne/Arduino_STM32
Still, there are some minor problems that prevent this from actually working. After fixing them all examples work well. I'll make a PR with these changes immediately.

Here is the PR for this: https://github.com/miguelbalboa/rfid/pull/108

This works for me now. Thanks for integrating this @miguelbalboa !


I have env files but still showing this -><EMAIL_ADDRESS>{"code":"MISSING_ENV_FILE"}

Hi, i am trying to use different environment file on my project using dotenvx, but getting unexpected warning.
I have 2 environment files following ->
   .env.production
   .env.development

package.json ->
    "start": "dotenvx run -f .env.production -- node dist/index.js",
    "dev": "dotenvx run -f .env.development -- nodemon src/index.ts",

Node.js version -> v20.12.2
The warning i am getting ->

thanks!

you must have dotenvx loaded twice somehow. that second call is looking for a .env file instead of a .env.development file.
I see you have it in your start scripts:
"start": "dotenvx run -f .env.production -- node dist/index.js",

are you also require('@dotenvx/dotenvx')-ing it somewhere in your code?

it looks like it must be this because the second injection log happens after you run tsc. going to close this and will reopen if something else. let me know.


Solarman DDZY422-D2

Describe the bug
A clear and concise description of what the bug is.
I try to install my Solarman DDZY422-D2 Smart Meter using the integration ha-solarman.
When setting everything up, I got an error message "Échec de la configuration, nouvel essai: [SERIALNUMBER] Querying IP-ADRESS:PORT failed: [0, 0]."
Attach the debug log
As a file or using the 'code' formatting.
To Reproduce
Steps to reproduce the behavior:
From the setting, add an integration
set your IP address
Port
Serial number
select solarman_dtsd422-d3.yaml
apply setting
Wait for the confirmation and notice the error message "Échec de la configuration, nouvel essai: [SERIALNUMBER] Querying IP-ADRESS:PORT failed: [0, 0]."
Expected behavior
A clear and concise description of what you expected to happen.
I don't know if it's the right configuration path as it's the D3 on the choice list
Screenshots
If applicable, add screenshots to help explain your problem.

Metadata:
Version: 24.09.27
Additional context
Add any other context about the problem here.
I don't know if it's a bug report or if it's a request feature to add the configuration .yaml for the D2 smart meter (I thought D2 / D3 where the same.. ?)

about the log details, If you could explain how to extract them it would be helpful and I would be able to past the code here. thanks ! :)

Hi @bobybob69, like this:

it was running on my screenshot but I didn't understand the file was downloading when clicking on stop 😅
please found bellow the log file
home-assistant_solarman_2024-10-02T19-02-14.489Z.log.zip
Let me know if you get everything
thanks for looking at it ! and let me know if you need anything else to help

Extracted flow from the log file:
2024-10-02 21:00:41.664 DEBUG (MainThread) [custom_components.solarman.api] [????????????] Scheduling 2 query requests. #0
2024-10-02 21:00:41.664 DEBUG (MainThread) [custom_components.solarman.api] [????????????] Querying 0001 - 0041 | 0x0001 - 0x0029 # 041 ...
2024-10-02 21:00:41.664 INFO (MainThread) [custom_components.solarman.api] [????????????] Connecting to <IP_ADDRESS>:8899
2024-10-02 21:00:41.672 DEBUG (MainThread) [custom_components.solarman.api] [????????????8] SENT: a5 17 00 10 45 02 00 9e 8e ee 9b 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 01 00 29 d5 d4 fc 15
2024-10-02 21:00:43.683 DEBUG (MainThread) [custom_components.solarman.api] [????????????] RECD: a5 10 00 10 15 02 4a 9e 8e ee 9b 02 01 8d 8b 48 00 fc 15 00 00 ce 0c b5 66 05 00 a4 15
2024-10-02 21:00:43.684 DEBUG (MainThread) [custom_components.solarman.api] [????????????] Querying 0001 - 0041 | 0x0001 - 0x0029 # 041 failed. [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]

Hi @githubDante, Exception with code 05 (0x05) | Acknowledge. Does that says anything useful? The profile is made for D3 version so it can be just about incompatibility but I'm curious what are your thoughts?

Hi @davidrapan,
Incompatible profile 100% - wrong start address or quantity

Thanks @githubDante,
So you will have to try probe registers using built-in service for reading and create new profile for your device @bobybob69

Hi @davidrapan and @githubDante  thanks for looking at the log.
Well, I'm not familiar with that.
What could I do to help implement that easily ?
After comparing D2 and D3 it seems like it's just difference of power distribution (simple-phase or triple-phase)
D2 is a simple phase, the type of install I've at home.
Let me know I would be more than happy to help learn and implement that with one of you guys
Thanks for helping

Let me know if there is anything I could do to help integrate the D2 guys
Thanks !

It's quite simple. You just have to copy for example inverter_definitions/solarman_dtsd422-d3.yaml into inverter_definitions/custom/solarman_ddzy422-d2.yaml

Add device using this new custom profile
Remove all sensors which are causing issues
Use bult-in services for reading (Developer Tools > ACTIONS > Solarman reading services 0x3 and 0x4)

And you will have to find those register which shows matching values in the Solarman App.
Sadly without documentation there is no other way than trial and error.

hi @davidrapan , thanks for the tips !
I try to do the copy / paste yaml parts. But the integration mark an error (see bellow) , I attach also the log.
Since the integration failed, there is nothing more for me to do using the Developper ACTION parts .. ?

Any tips that I could try to implement the D2 ?
Thanks !

home-assistant_solarman_2024-10-12T18-50-02.280Z.log

It's not relevant during this process and you can ignore it. Using the ACTIONS will still work.

Bellow are the log after adding the proper modbus register but I still have an issue..
Any thought @davidrapan ?
home-assistant_solarman_2024-10-12T19-24-08.095Z.log

According to the log requests to your Smart Meter still contain invalid addresses.

Humm... progress but still some errors.. any thoughts @davidrapan  from where I can found these modbus register ? any macOS tools I can use to read theses address using the IP ? I sent an email to see if they have theses for me as there is nothing on the user guide unfortunately
I found these on the net , what do you think ?
solarmlan_DDZY422.yaml.txt

Yeah it's not publicly available information and not sure if solarman will be willing to provide the docs.

from where I can found these modbus register ? any macOS tools I can use to read theses address using the IP ?

I told you using the ACTIONS trough this integration. That is the best tool you can get.

I found these on the net , what do you think ?

I don't have the device so I can't really tell. But take it slowly. Just start even with single sensor defined in the file with registers you verified that works using said ACTIONS. 😉

Found this through google
solarmlan_DDZY422.yaml.txt

Hey @davidrapan @githubDante
I think I understand how the actions from HA is working.
However, how can I use it even if the Smart Meter isn't list ?
Would it be better to use YAML config instead of UI ? And so what would be the next step ?
If I understand, There is an action I use to read values , but how can I read values from a devices that's not listed of even setup ? From what I understand from your previous message

Bellow is what I'm seeing from the actions section when I choose reading value code 4 :

Here's my config for the smart meter :

Any tips would be helpful :)
Thanks guys !

If I understand, There is an action I use to read values , but how can I read values from a devices that's not listed of even setup ?

I told you that you have to setup the device first. And ignore when it shows errors. Then try read different registers and find those which works...

I'm sorry if I don't understand but I just want to make I understand what you say @davidrapan

first I need to found a way to have the meter not showing any error for the first setup (it doesn't matter if for sensor from the smart meter there is error right)
then for the sensor that will have errors, I need to investigate using the action menus from HA right ?
then , when troubleshooting everything, it should works properly

Did my thinking is on the right way ? If no please let me know
Thanks for your help I will owe you a coffee at the end 😜

first I need to found a way to have the meter not showing any error for the first setup (it doesn't matter if for sensor from the smart meter there is error right)

I saying again. it does not matter if it shows errors. IGNORE IT! Just add it so you can use the ACTIONS. Thats all.

hey guys @davidrapan @githubDante , I just get an answer from solarman, does this helps ?
Single Phase meter DDZY422-D2 parameters_1728884136958_yiy4p.pdf

first I need to found a way to have the meter not showing any error for the first setup (it doesn't matter if for sensor from the smart meter there is error right)

I'm saying again. it does not matter if it shows errors. IGNORE THEM! Just add it so you can use the ACTIONS. Thats all.

To be faire @davidrapan , I should miss something.. I'm sorry. When you say "if it show error ignore them" what do you mean ?
Here's the status of the meter actually

How can I ignore this error ? Even in this state, iit doesn't appear on the action menu .. :(

What I mean is that even you see error ACTIONS will still work so you just can leave it as it is.

Well @davidrapan , don't ask me how, I change few line on the code (helped by ChatGPT) and now the smart meter is added

now when I'm in the action menu what would be the best to troubleshoot each register ? I think I'm not using the correct syntax for the register .. ?

what about this screenshot, I'm on the right way ?
thanks for helping

what about this screenshot, I'm on the right way ?

Yes you are. That means that you just can't read register number 1 so you need to continue with 2... and so on. But to be 100% sure I would also try reading using Modbus Function Code 3 (it has separate service for that).

There are two ACTIONS for reading:

Modbus function code 3
Modbus function code 4

Did you also tried with the other one?

Hey @davidrapan , yes I try with both methods.
Still having same error message.
How can I be sure the meter is reachable from HA after I set it up ?
The IP if a fixed one so I'm 100% sure this is the good one.
What I'm less sure is the YAML for the config.
It let me add the smart meter , but the only entities I've is "connection" and it appear "disconnected"
I don't know if it's 100% sure but I've a doubt..
What's your thought ?
Thanks and have a great day

How can I be sure the meter is reachable from HA after I set it up ?

Because you are getting replies from it?

I don't know @davidrapan ..
how can I know if I've answer, since the beginning I'm facing error so I don't know if I'm receiving anything..
Nothing else to do except the action button ?
What would you need (except the Modbus) to be able to add the smart meter into HA , even if it's without any data ?

V5 frame does not contain a valid modbus RTU frame.
This means that the device is talking with you but you send incorrect request.

oh ok , so , it's a good things ..
But to be honest I try several number of Modbus register and none if working.. is there a way to at least have 1 modbus register that should works as it's kind of a standard ? No matter the register I always have theses error and I tried different combination .. no one works.

Or if we compare to the solarman_dtsd422-d3.yaml , is there some "classic" register that should work 100% sure ?
Maybe this can help to see if it's working anyway
Thanks for your help @davidrapan as always

I also saw this pages : HERE
Which register modbus should I use if I want to try ? dec or hex address ?
Thanks!

Also get theses errors from the logs when trying each time the action of modbus reading.. which setting would need to be changed ?

Hey @davidrapan how are you ?
Well, after few investigation here's what's I get from SOLARMAN
It's in Chinese for the moment I'll need to translate and integrate it.
If you want I can share it with you bellow if you want to take a look at the file and try isolate few data's.

Sure thing, put the untranslated original here.

hey @davidrapan please found bellow the file :)
Let me know if it's a good starting point !
DDZY422-D2型单相远程费控智能电能表-modbus通讯内容（HT-YF2018-0929-01）_1729757263801_10de75.xlsx

Hey @davidrapan
Does that helps ? I try on my side but I didn't found a way to have it works I shoukd have something set wrong at some point ..

If you have still issues just take it slowly. Create file with just single entity description and add more after you make sure that what you already have works.

Try this:
#
# Solarman Smart Meter DDZY422-D2
#
# Reference: https://github.com/user-attachments/files/17586995/DDZY422-D2.-modbus.HT-YF2018-0929-01._1729757263801_10de75.xlsx
#

default:
  update_interval: 5
  digits: 3

parameters:
  - group: Variable Data 1
    items:
      - name: Voltage
        class: voltage
        uom: V
        rule: 1
        registers: [0x0001]

      - name: Current
        class: current
        uom: A
        rule: 2
        magnitude: True
        registers: [0x0003, 0x0002]

      - name: Power
        class: power
        uom: W
        scale: 0.001
        rule: 2
        magnitude: True
        registers: [0x0007, 0x0006]

      - name: Power Factor
        class: power_factor
        state_class: measurement
        scale: 0.001
        rule: 2
        magnitude: True
        registers: [0x000C]

      - name: Frequency
        class: frequency
        state_class: measurement
        uom: Hz
        scale: 0.01
        rule: 1
        registers: [0x000D]

hey @davidrapan
I got the same error message .. "Échec de la configuration, nouvel essai: [2616102558] V5FrameError: V5 frame does not contain a valid Modbus RTU frame"
As you did the file and you used the modbus config Solarman share with me for this model, it confirm there is something else wrong on my side.. but what could be wrong ?
Bellow is the config from the solarman

Can it be the port that's not the good one ?
Maybe the way I use add the config ?
I'm using File Editor module
then I go to customer component > solarman > inverter_definitions > I create a file I named solarman_DDZY422-D2.yaml and I copy paste the code you sent.
Then I save and I restart entirely my HA instance..
Ping on the IP from the smart meter is working so I know there is a response from the smart meter.
What could be wrong here ? :/
thanks mate for our collaboration I appreciate !

Enable debug log and upload the file.

I can't see in the doc to which memory area are the registers mapped so maybe it's worth the shot to try 0x04.
Try to replace that default section with:
default:
  update_interval: 5
  code: 0x04
  digits: 3

hi @davidrapan ,
I tried to adjust the default section as you mentioned but nothing changed
Please found bellow the logs.
So if I understand, we are just looking for the correct memory right ? and for you, all the rest of the config is ok 👍
home-assistant_solarman_2024-11-03T20-38-21.631Z.log

Yeah well if it's not even working with this minimal yaml file (which is was made using xlsx file you provided)...
I'm afraid that there is something else going on which is outside of our reach.
I'm out of ideas... there is proly not much we can do, right @githubDante?

Why don't you try with the registers from the XLS file e.g. from 0x105 to 0x107 ? It's a 6 byte Date&Time.

Okay, try this one:
#
# Solarman Smart Meter DDZY422-D2
#
# Reference: https://github.com/user-attachments/files/17586995/DDZY422-D2.-modbus.HT-YF2018-0929-01._1729757263801_10de75.xlsx
#

default:
  update_interval: 5
  digits: 3

parameters:
  - group: Variable Data 1
    items:
      - name: Date & Time
        platform: datetime
        rule: 8
        registers: [0x0105, 0x0106, 0x0107]

hey guys,
just tried now, and still same error message ... "Echec de la configuration, nouvel essai: [2616102558] V5FrameError: V5 frame does not contain a valid Modbus RTU frame"
please found bellow the logs (in the meantime It can maybe help for #203 as logs turn all day until it turn off when I restart HomeAssistant during no solar production)
home-assistant_solarman_2024-11-04T20-14-28.300Z.log
you confirm when I made the change from the config file, I restart HA instance and I re-set the meter ?
thanks guys

Uhm but you don't have that device<PHONE_NUMBER>) configured w/ solarman_DDZY422-D2.yaml!
I see it configured with deye_hybrid.yaml!

Hummmm strange I double checked, it's configured with the right profile..
See logs bellow
home-assistant_solarman_2024-11-04T20-28-09.595Z.log

just so you know, I deleted the devices and I re-install it properly .
And the config file with the latest logs I sent only contain what you shared bellow , is it right ?

Okay, try this one:
#
# Solarman Smart Meter DDZY422-D2
#
# Reference: https://github.com/user-attachments/files/17586995/DDZY422-D2.-modbus.HT-YF2018-0929-01._1729757263801_10de75.xlsx
#

default:
  update_interval: 5
  digits: 3

parameters:
  - group: Variable Data 1
    items:
      - name: Date & Time
        platform: datetime
        rule: 8
        registers: [0x0105, 0x0106, 0x0107]

Yes now it uses correct one. Unfortunately w/ the same result.. 😞

can it be the port that cause issue ? by default 8899 ?
what could be wrong.. it's so frustrating at this level to not be able to integrate it even with the modbus xls 😞
Any troubleshoot I could do locally ?
The errors are because the meter doesn't answer back the data we're looking for right ?
Or it's the modbus that is not correct apparently ?

can it be the port that cause issue ? by default 8899 ?
what could be wrong.. it's so frustrating at this level to not be able to integrate it even with the modbus xls

No, it's not the port. The smart meter is responding with an error/exception code, which means that the request is wrong (wrong address/wrong function).

Any troubleshoot I could do locally ?
The errors are because the meter doesn't answer back the data we're looking for right ?
Or it's the modbus that is not correct apparently

The best you can do is to request the proper/full MODBUS documentation for the smart meter from IGEN. Apparently the one in the XLS file is wrong and incomplete.

hi @githubDante , how are you ? I got answer form the support team of solarman, and they confirm the file is the good one.. what can we do to integrate it ? from where the issue can come from ? :/
thanks mate and have a pleasant day

Did you mentioned what responses are we getting from the meter?

hi @davidrapan , just answer back to their message adding the error message we're facing and I'm waiting for their answer.. will share it with you as soon as I got the answer

Hello,
I have the same device (DDZY422-D2), the zucchetti ZH3ES non-hybrid inverter. I have a solarman logger that HA can read, but I also have the DDZY422-D2 meter, in which I can't get the integration to work.
I am new to Home Assistant, but if you can explain what tests I can do to add my logs as well, if I can be of any help, it is an issue I am interested in solving.
I have done some of the tests you mention here, but for example in Actions I can't find the Solarman action. How come?
Also in configuration I can't find the files I create from file manager.
I have created the file
/homeassistant/custom_components/solarman/inverter_definitions/solarman_DDZY422-D2.yaml
with the values you suggested in it, but in the device menu I do not see the file, so I copied the same values to the custom_parameters.yaml file and configured the device with this file, but of course it still always goes to error.
Despite this when I then review the device configuration it seems to be reading the zcs_blue-ktl-v3.yaml file I started from.
By reading or log I realized that I used to get an error because I was using the external HA url with *.duckdns.org, but then they resolved the moment I started using the local one.
Thank you

Show me a screenshot where did you put the file.

You are not running this integration.

Sorry, I didn't understand your comment. What should I do to make it go?
Is it not the correct integration?

@teoJam hi mate !
Yes you should perform theses steps #61 and then install the good SOLARMAN integration from @davidrapan
Since I did multiple troubleshoot, I decided to remove the SOLARMAN smart meter and I order 2 HomeWizard single phase meter to mesure house consumption and solar production.
It would be more stable for me and my needs
Hope at some point the integration for the D2 will works and I would be able to put it back for other measurement :)

I need to perform these steps: https://github.com/davidrapan/ha-solarman/discussions/61
?

I'm not sure if you are having the same "issues" but you certainly need to remove that older one from HACS and then install this one using the big blue button in the readme.

Thank you for the support.
I have a plan b for the meeter too because I have a shelly that I could leverage to read the house load instead of the Solarman, but since I have to have the electrician step in and the Solarman anyway I have it I would prefer to make it work.
I downloaded the right version.
Right now I have these errors:

Right now the configuration is going
Solarman Smart Meter DDZY422-D2
ed il log è il seguente.
home-assistant_solarman_2024-12-04T22-10-46.998Z.log
Grazie

Yes this is the usual output of every attempt we had so far...
Maybe you could try register scanner from pysolarmanv5

It's my same problem, I get the same errors as the colleague bobybob69, in my case I have managed to integrate my sofar 5ktlm g3 inverter by reading the solarman usb stick logger, but I have no export readings to the network or consumption of my home, I am still trying to integrate solarman ddz422-d2, to obtain that export and consumption data, the same error codes as the colleague

hello, I'm new to home assistant and I can't integrate my DDZY422-D2 even though my 2 DEYE inverters are OK. Here is the error message I got.
Can anyone help me?


How do I compile .so (dynamic) libraries in Linux, instead of .a (static) ones?

See: https://github.com/microsoft/vcpkg/blob/master/docs/examples/overlay-triplets-linux-dynamic.md

@srgbtl, thanks for your comments! @MrBolt2005, could you try above solution?


Fixed typo

Suggested fix for a possible typo.

@stefanflegg : Thanks for your contribution! The author, @sharad4u, has been notified to review your proposed change.


Refactor test

Refactor code to move tests into a submodule.
Pep8/flake8

This PR is only two commits. It is easier to see the changes separately, because the second one is pep8/flake8.

NOTE: I don't mind merging before/after the scm_version PR. They are conflicting, but they are simple changes, so I can do it either way.

This was not passing tests locally because _norm was not included in the top-level from quatutil import *.  So I just made that function public by changing _norm() to norm() .
Also, the setup.py was not resulting in a working (installable) distribution.  I believe one needs to either call find_packages() or explicitly provide them in packages.  What is confusing to me is that I looked at the source distribution tarball generated with 0d3912c and with my version dc0317a, and by eye I could not see an obvious difference.  But only the latter will import after pip install . into a test env.
What we really should be doing is just deprecating this package completely and moving remaining bits of functionality into chandra_aca.transform.  I'm opening an issue FWIW.

About removing this package, I just checked and it does get used in a lot of places.  Probably not worth the effort, though we could port all functionality to chandra_aca.transform and recommend that for new code.

I have reviewed this and tested and it all looks good to me now, so merging.


[RFC]: hyperkernel: high level architecture

NOTE: These changes will be made to the hyperkernel repo and not the main Bareflank repo as we want to keep Bareflank simple. Also note that the hyperkernel will leverage / extend the APIs provided by the extended_apis repo.
The goal of the hyperkernel is to provide Bareflank with guest VM support. Unlike traditional hypervisors however, the hyperkernel will implement a micro-kernel architecture, leveraging virtualization to not only execute traditional virtual machines (e.g. Windows, Linux, etc..), but also Unikernels like IncludeOS and regular applications (called vm-apps) like a traditional micro-kernel. In other words, the hyperkernel will bridge the gap between traditional hypervisors and operating systems to create a new kernel architecture that is capable of executing everything, in one heterogeneous environment.
Proposed Design:
Like a micro-kernel, the most security critical component of the hyperkernel is the code responsible for maintaining isolation. This includes isolating vCPUs and RAM (both the CPU's view and a device's view). The hypervisor component of the hyperkernel will only contain this logic. That is, the hyperkernel's drivers, schedulers, RAM allocation, etc... will all exist in virtual machines, outside of the hypervisor. These components can be in their own virtual machines (likely the type 1 case), or in a single virtual machine (likely the type 2 case), or any combination of the two. Keeping the hypervisor logic small not only helps reduce complexity, but drastically improves security.
The problem with this design is the chicken and egg problem. For example, if the scheduler, exec VM, and RAM allocation all exist in their own VMs, who starts these VMs if they have not been started to start themselves? To overcome this issue, the hyperkernel will leverage Bareflank's existing bfdriver / ELF loader bootstrapping code to pre-load the hypervisor, and the system critical VMs. Just like Bareflank, the hyperkernel will use this bootstrap logic from either UEFI (type 1 case), or and existing host OS (like Linux, Windows, etc... for the type 2 case). Once the hypervisor is up and running, the bootstrap logic will provide the hypervisor with a list of pre-loaded VMs for the hypervisor to execute. In the type 1 case, this would include VMs like the scheduler, exec VM, and RAM allocation.

Once the system critical VMs have been launched, the exec VM can launch additional virtual machines, which can be scheduled for execution by the scheduler VM.
RAM VM:
Just like the scheduler creates and destroys execution threads, a dedicated RAM VM will alloc / free resources. Once allocated, the hypervisor will guard / isolate said RAM using EPT, VT-d, etc... The important point here is that the hypervisor doesn't own a giant chunk of RAM that is gives out to VMs. Instead, a RAM VM owns free memory, and gives out pages similar to sbrk. If the hypervisor, the exec VM, or a vm-app needs additional RAM, it can allocate this RAM by asking the RAM VM for more resources. Although this design is less traditional, it solves a problem unique to Bareflank. Since Bareflank supports multiple operating systems and hypervisor types, it's not possible to give all free memory to the hypervisor because the type 2 case should only use as much free memory as needed (to leave remaining memory for the host OS to manage). Allowing a virtual machine to own free RAM satisfies both the type 1 case, and the type 2 case as the bootstrap driver can provide all free memory to a dedicated RAM VM while bootstrapping in the type 1 case, while the the hypervisor and VM's can ask the host OS for more memory in the type 2 case when needed.
Scheduler VM:
The scheduler VM runs the needed code to schedule virtual machines (both vm-apps and traditional VMs). In the type 1 case, this could be a dedicated VM with a custom scheduler algorithm, or it could be an existing scheduler from an OS that is started at boot (e.g. after the hypervisor and system critical VMs have been loaded, UEFI could continue to boot an existing operating system like Windows, Linux, etc... and it's exiting scheduler could be used). In the type 2 case, the host OS's scheduler would likely be used.
Exec VM:
The exec VM executes new virtual machines. The hyperkernel will not only isolate each vm-app, but it will also isolate based on groupings called "domains" (not to be confused with a Xen domain). Each domain that the hyperkernel is managing will have it's own exec VM, providing domain isolation from the most privileged VMs, all the way to the individual vm-apps. Each domain will have a vCPU per physical core (and thus a VMCS, exit handler, etc... per physical core) to run vm-apps, as well as a set of vCPUs for traditional OS's. vm-apps in the same domain will share the vCPUs, reducing the number of VMCS's that are needed, while also optimizing the CPU's cache while VPID is enabled, and the hypervisor will maintain isolation using traditional ring 0 / ring 3 isolation techniques. Traditional OS's however will have their own dedicated set of vCPUs like traditional hypervisors. This design maximizes efficiency without sacrificing isolation.
To launch a VM, the exec VM will allocate RAM from the RAM VM, and load the contents of the vm-app / OS into RAM, perform any needed ELF relocations / processing, and then inform the hypervisor (using the same APIs that the bootstrap driver used), to launch the vm-app / OS. Once a vm-app has concluded it's execution, the exec VM will keep the executable cached in RAM in case the executable needs to be execute again. The RAM VM will have a means to ask the exec VM if it has RAM it can give back in the event that resources become constrained. Caching vm-apps is specifically designed to optimize UNIX style applications that tend to execute in scripts at an alarming rate (e.g. think about how many times the [ binary is executed in a single bash script).
File System / Networking / Serial / Etc:
Like a micro-kernel, various different services will be provided in their own VMs. The hyperkernel will leverage VT-d were possible to provided individual vm-apps / OS's with better isolation. Ideally, new device drivers, or so-called AnyKernel drivers will be used to manage devices. In the event this is not possible, the hyperkernel architecture provides a unique opportunity to leverage existing device drivers from exiting monolithic kernels if needed, while still being able to provide isolation, and generic application support. For example, a vm-app could use open() to open a file handle to a file that it is interested in. Under the hood, libc will use the hypervisor's vmcall interface to make a VM->VM connection between the vm-app and the VM managing the filesystem (assuming policy allows), which could be Linux, and using this IPC mechanism, can acquire the needed handle. This same architecture could apply to more complicated devices like network devices. Existing monolithic kernels like Linux could be used to manage various different wired / wireless devices, abstracting these devices to a set of common IPC interfaces that vm-apps could connect to and use via an existing user-space socket library. Over time as custom, hyperkernel specific device drivers become available, dependencies on Linux could be removed.
Furthermore this design supports both type 1 and type 2 cases. For type 1, devices are divided in different VMs, based on the availability of VT-d, and how the device driver is implemented. The type 2 case however would just use the host OS for device support, and implement the needed IPC mechanisms that the vm-apps / OS's need.
Thoughts?
@brendank310 @ktemkin @tklengyel @connojd @mor619dx @RicoAntonioFelix @alfred-bratterud @ilovepi

You're the guru here - this looks really cool and we'd be happy to collaborate on the details!

The initial version of this is done. There is still a ton of work to do here, but if you want to see a VM app working, feel free to give the hyperkernel repo a try