Fans loading as Lights

Describe The Bug
Describe The Bug:
Two out of eight in wall fan controllers: GE (Enbrighten) Z-Wave ZW4002, show up as "lights" instead of "fans"
IMG_9054
They are still controllable, but are not included in "Home" as "Climate" devices and the icon is a "light"
fans_before
The fans controllers are all identical....

The fans are all using the same edge driver,

In my troubleshooting, I have tried switching between two drivers.
https://community.smartthings.com/t/st-edge-driver-for-ge-jasco-honeywell-z-wave-switches-dimmers-fans-outlets-and-plug-ins/236733
https://community.smartthings.com/t/st-edge-enhanced-z-wave-fan-controller/249363
I did have initial success moving some fans from "light" to "fan" by changing drivers, but in these two cases - the fans are "locked" to "lights". In one case, a fan moved from "light" to "fan" after turning it on.
To Reproduce:
I remove the fans from "Accessories Cache" in HomeBridge.
I change the fan drivers in Smartthings (as listed above)
I ensure the fans show correctly in Smartthings - with the "fan" controls showing

Rebooting HomeBridge, the fans still load as "lights"

Expected behavior:
Fan Controllers either load as "fan" or are able to be switched from "light" to "fan" as other similar devices
Logs:
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Kids Fan command or request is proceeding.
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Kids Fan still waiting...
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] getLevel() SUCCESSFUL for Kids Fan. value = 0
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Office Fan command or request is proceeding.
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Office Fan still waiting...
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] getLevel() SUCCESSFUL for Office Fan. value = 0
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Guest Fan command or request is proceeding.
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Guest Fan still waiting...
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] getLevel() SUCCESSFUL for Guest Fan. value = 0
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Master Fan command or request is proceeding.
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Master Fan still waiting...
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] getLevel() SUCCESSFUL for Master Fan. value = 66
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Basement Fan command or request is proceeding.
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Basement Fan still waiting...
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] getLevel() SUCCESSFUL for Basement Fan. value = 0
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Living Fan command or request is proceeding.
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] Living Fan still waiting...
[9/23/2023, 9:52:01 AM] [Smartthings Plug (IK)] getLevel() SUCCESSFUL for Living Fan. value = 52
<<<<<<<<<<<<<<THE ISSUE IS HERE "LightService?">>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
This is the log after reloading and AFTER I "remove single cache accessory" in HomeBridge UI
<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Also, I cleared these from the HomeBridge Cache, but the logs still show "restoring from cache"?
Basement Fan:
[9/23/2023, 9:51:50 AM] [Smartthings Plug (IK)] DEVICE DATA: {"deviceId":"27db9f2f-9ff0-4acb-bb16-06a74616874c","name":"ge-fan-assoc","label":"Basement Fan","manufacturerName":"SmartThingsEdge","presentationId":"generic-fan-3-speed","deviceManufacturerCode":"0063-4944-3131","locationId":"fdd02356-c8b5-42f0-a6a3-924c828b7bae","ownerId":"1b75fae4-c35c-416b-b214-2a137f24190b","roomId":"40a0ddfc-f1d9-4bd8-9eee-6cdde52aa36e","components":[{"id":"main","label":"main","capabilities":[{"id":"fanSpeed","version":1},{"id":"switch","version":1},{"id":"switchLevel","version":1},{"id":"refresh","version":1}],"categories":[{"name":"Fan","categoryType":"manufacturer"},{"name":"Fan","categoryType":"manufacturer"}]}],"createTime":"2022-12-16T13:57:48.771Z","parentDeviceId":"61de8775-be9e-45dd-a999-20b6d1ff9907","profile":{"id":"d90ed16e-15d7-3a40-840c-9bd6ed7a228b"},"zwave":{"networkId":"A1","driverId":"260eba86-b00d-45b4-a1d9-69e659bbd182","executingLocally":true,"hubId":"61de8775-be9e-45dd-a999-20b6d1ff9907","networkSecurityLevel":"ZWAVE_LEGACY_NON_SECURE","provisioningState":"NONFUNCTIONAL"},"type":"ZWAVE","restrictionTier":0,"allowed":[]}
[9/23/2023, 9:51:50 AM] [Smartthings Plug (IK)] Restoring existing accessory from cache: Basement Fan
[9/23/2023, 9:51:50 AM] [Smartthings Plug (IK)] Creating instance of LightService for capabilities switch,switchLevel
[9/23/2023, 9:51:50 AM] [Smartthings Plug (IK)] Adding LightService to Basement Fan
[9/23/2023, 9:51:50 AM] [Smartthings Plug (IK)] Basement Fan supports switchLevel
[9/23/2023, 9:51:50 AM] [Smartthings Plug (IK)] Registered LightService for capabilities switch,switchLevel
Living Fan:
[9/23/2023, 9:51:51 AM] [Smartthings Plug (IK)] DEVICE DATA: {"deviceId":"7c22798f-4f4e-43ec-baa6-a43f50540224","name":"ge-fan-assoc","label":"Living Fan","manufacturerName":"SmartThingsEdge","presentationId":"generic-fan-3-speed","deviceManufacturerCode":"0063-4944-3131","locationId":"fdd02356-c8b5-42f0-a6a3-924c828b7bae","ownerId":"1b75fae4-c35c-416b-b214-2a137f24190b","roomId":"06129ef0-cac6-4db2-9a5b-61a4e412e20f","components":[{"id":"main","label":"main","capabilities":[{"id":"fanSpeed","version":1},{"id":"switch","version":1},{"id":"switchLevel","version":1},{"id":"refresh","version":1}],"categories":[{"name":"Fan","categoryType":"manufacturer"}]}],"createTime":"2022-12-16T17:14:16.210Z","parentDeviceId":"61de8775-be9e-45dd-a999-20b6d1ff9907","profile":{"id":"d90ed16e-15d7-3a40-840c-9bd6ed7a228b"},"zwave":{"networkId":"AA","driverId":"260eba86-b00d-45b4-a1d9-69e659bbd182","executingLocally":true,"hubId":"61de8775-be9e-45dd-a999-20b6d1ff9907","networkSecurityLevel":"ZWAVE_LEGACY_NON_SECURE","provisioningState":"NONFUNCTIONAL"},"type":"ZWAVE","restrictionTier":0,"allowed":[]}
[9/23/2023, 9:51:51 AM] [Smartthings Plug (IK)] Restoring existing accessory from cache: Living Fan
[9/23/2023, 9:51:51 AM] [Smartthings Plug (IK)] Creating instance of LightService for capabilities switch,switchLevel
[9/23/2023, 9:51:51 AM] [Smartthings Plug (IK)] Adding LightService to Living Fan
[9/23/2023, 9:51:51 AM] [Smartthings Plug (IK)] Living Fan supports switchLevel
[9/23/2023, 9:51:51 AM] [Smartthings Plug (IK)] Registered LightService for capabilities switch,switchLevel
Plugin Config:
{
    "name": "Smartthings Plug (IK)",
    "BaseURL": "https://api.smartthings.com/v1/",
    "AccessToken": "",
    "WebhookToken": "",
    "GarageDoorMaxPoll": 0,
    "PollLocksSeconds": 15,
    "PollDoorsSeconds": 0,
    "PollSensorsSeconds": 5,
    "PollSwitchesAndLightsSeconds": 10,
    "PollWindowShadesSeconds": 0,
    "ExposeHumiditySensorForAirConditioners": false,
    "OptionalModeForAirConditioners": "None",
    "IgnoreDevices": [
        "Garage Opener",
        "Garage Temperature",
        "Guest Temperature",
        "Kids Temperature",
        "Basement Thermostat",
        "Living Thermostat",
        "Master Temperature",
        "Closet Temperature",
        "Office Temperature",
        "Garage Door Opener",
        "MyQ-Controller",
        "Garage Door Tilt",
        "Front Doorbell"
    ],
    "_bridge": {
        "username": "",
        "port": 43258
    },
    "platform": "HomeBridgeSmartThings"
},

Environment:
Homebridge Version: v1.6.1
Node.js Version: v18.18.0
Running from Docker in QNAP - oznu/homebridge:latest
I did find, using Swagger a configuration difference:
Here is the output from Swagger for a correct one:
{ "aid": 90, "iid": 12, "uuid": "00000040-0000-1000-8000-0026BB765291", "type": "Fan", "humanType": "Fan", "serviceName": "Office Fan", "serviceCharacteristics": [ { "aid": 90, "iid": 13, "uuid": "00000025-0000-1000-8000-0026BB765291", "type": "On", "serviceType": "Fan", "serviceName": "Office Fan", "description": "On", "value": 0, "format": "bool", "perms": [ "ev", "pr", "pw" ], "canRead": true, "canWrite": true, "ev": true }, { "aid": 90, "iid": 15, "uuid": "00000029-0000-1000-8000-0026BB765291", "type": "RotationSpeed", "serviceType": "Fan", "serviceName": "Office Fan", "description": "Rotation Speed", "value": 0, "format": "float", "perms": [ "ev", "pr", "pw" ], "unit": "percentage", "maxValue": 100, "minValue": 0, "minStep": 1, "canRead": true, "canWrite": true, "ev": true }
Here is the output from a "light"
{ "aid": 39, "iid": 12, "uuid": "00000043-0000-1000-8000-0026BB765291", "type": "Lightbulb", "humanType": "Lightbulb", "serviceName": "Master Fan", "serviceCharacteristics": [ { "aid": 39, "iid": 13, "uuid": "00000025-0000-1000-8000-0026BB765291", "type": "On", "serviceType": "Lightbulb", "serviceName": "Master Fan", "description": "On", "value": 1, "format": "bool", "perms": [ "ev", "pr", "pw" ], "canRead": true, "canWrite": true, "ev": true }, { "aid": 39, "iid": 15, "uuid": "00000008-0000-1000-8000-0026BB765291", "type": "Brightness", "serviceType": "Lightbulb", "serviceName": "Master Fan", "description": "Brightness", "value": 66, "format": "int", "perms": [ "ev", "pr", "pw" ], "unit": "percentage", "maxValue": 100, "minValue": 0, "minStep": 1, "canRead": true, "canWrite": true, "ev": true }
Is there a method - perhaps using Swagger POST - to force a change?
Logs
No response
Config
No response
Homebridge UI Version
4.50.6
Homebridge Version
1.6.1
Node.js Version
18.18.0
Operating System
Official Homebridge Raspberry Pi Image
Environment Info

[ ] Using Docker?
[ ] Using Hyper-V?
[X] Using hb-service?

Raspberry Pi Model
Raspberry Pi 4 B

Tks for a well written issue, but this be raised against the plugin you are using, as the plugin provides the device type to HomeKit.  And homebridge just passes what it is given by the plugin.
but with that said, have you tried the ‘display as’ option in the Home app? Some devices have that option

I appreciate the response.
Display as only surfaces for "switches" and does not offer the same for "lights"
I do have this question poised the the plugin developer, but thought I would ask here as well - specifically around using the API to override the presented type.
Thanks again...

Hi @coryabooth there is no api to change the accessory type that a plugin specifies.
As it seems your are already familiar with, there is an option in the home app to display a simple switch or outlet device as a light or fan. But if the plugin already exposes the accessory as a light or fan device then it cannot be overridden in the home app.
The only option here is to contact the plugin developer to see if they can maybe offer a config option within the plugin settings to change how a device is exposed to homekit. Whilst this might seem like a trivial change from light to fan, a change or option like this can be complicated to implement for a plugin depending on how it is already coded.
hope this helps

Thanks for the reply!  I kind of knew this would be the answer, but I was hoping someone may of had a situation like this before.  Thank you again...


strange values when using rs2_deproject_pixel_to_point

hello,
i'm using rs2_deproject_pixel_to_point with a d415 camera, librealsense version 2.12.0.
for pixels 0,0 at a distance of 0.3 ( which i guess means 30cm )
I receive point[0] = -0 and point[1] = -0
while i should be getting something closer to -15,-11  ( assuming no optical skew , calculated using simply trigonometry).
Can someone please explain these results?
( i do get "reasonable results when using larger values for parm depth)
Thanks,
Omer.

[Realsense Customer Engineering Team Comment]
@omerbrandis
Can you share the code? I don't really understand what do you mean about pixels 0,0 with distance 0.3 meter. Since the depth generated from stereo camera use left camera as reference camera, the left sight of image contains t strip of black area which doesn't contain any depth information. pixel 0.0 must within this area, so I don't really understand why this pixel has the depth value of 0.3. you can refer to the image attached below.

Dear Realsense Customer Engineering Team,
I'm trying to calculate an object's physical position ( in relation to the camera ) from its pixel location.
according to https://github.com/IntelRealSense/librealsense/wiki/Projection-in-RealSense-SDK-2.0
this can be done using the rs2_deproject_pixel_to_point function.

a very similar strange value (0,0) is returned from rs2_deproject_pixel_to_point for the opposite point 639,479 ( i'm using 640X480 resolution) , while it should return something nearing 15,11.

please advise,
Omer.

[Realsense Customer Engineering Team Comment]
@omerbrandis
I still don't get your point, the 3D space center {0,0,0} referring to the center of the physical imager (Left IR). So the 3D point deprojected from upper left corner of 2D image pixel, you should get back the negative x, negative y, and positive z value. You can reference to the description below.
https://github.com/IntelRealSense/librealsense/wiki/Projection-in-RealSense-SDK-2.0#point-coordinates
"Each stream of images provided by this SDK is also associated with a separate 3D coordinate space, specified in meters, with the coordinate [0,0,0] referring to the center of the physical imager"
you can refer tot the description of rsutil.h function "rs2_deproject_pixel_to_point", what you should provide are 1)the pixel you want to deproject to 3D point, 2)depth value within the pixel, and 3)intrinsic of specific imager(left image) then you can get back the 3D point relative to the 2D pixel.
function description is "Given pixel coordinates and depth in an image with no distortion or inverse distortion coefficients, compute the corresponding point in 3D space relative to the same camera"

Dear Realsense Customer Engineering Team ,
you wrote:
"...what you should provide are"
"1)the pixel you want to deproject to 3D point,"
-> I have done this. for example pixel position x=639 y=479.
"2)depth value within the pixel"
-> i have done this. i've passed the value 0.3.
"3)intrinsic of specific imager"
-> i have also done this.
used the following code
 auto Color_stream   = MyPipelineProfile.get_stream(RS2_STREAM_COLOR).as<rs2::video_stream_profile>();     auto CamIntrinsicts = Color_stream.get_intrinsics();
the first two values I receive in the first output parameter (called point)  of function rs2_deproject_pixel_to_point are 0 and 0 .
values i expect to get should be near the values: 15,11.
Omer.

[Realsense Customer Engineering Team Comment]
@omerbrandis
There are two issue found form your input.

the depth value, you need to also multiply the depth scale unit, you can refer to the depth frame "get_distance" method also github issue #1890
the intrinsic you use is the color_stream intrinsic, which is not right, you should use the Left IR camera intrinsic, which can be retrieved from depth sensor.

100%,
Thanks.
Omer.

dear Realsense Customer Engineering Team,
I have performed additional tests,
using same code as mentioned above,
but i've changed camera to d435 ( firmware 5.9.11).
i have placed an object at pixel position 522. ( distance is 59cm , ( depth scale is 0.001 so input the the function is 590)
the deprojection function returns relative position of 30.3704,
but the object is only 18 cm to the right of the center of the camera.
please advise.
Omer.

here is the code
`// get & store camera's depth scale
rs400::advanced_mode MyDevice=MyPipelineProfile.get_device();
rs2::depth_sensor DepthSensor = MyDevice.firstrs2::depth_sensor();
DepthUnits = DepthSensor.get_option(RS2_OPTION_DEPTH_UNITS);
// get & store depth intrinsics
auto DepthStream = MyPipelineProfile.get_stream(RS2_STREAM_DEPTH).as<rs2::video_stream_profile>();
DepthIntrinsics = DepthStream.get_intrinsics();

// convert DistanceToTarget  from "Cm"  to camera's depth scale
float DistanceToTargetInDepthScale = (float)DistanceToTargetCm / 100 / DepthUnits;
std::cout << " !!!  depthunits = " << DepthUnits << "  DistanceToTargetInDepthScale  =  " << DistanceToTargetInDepthScale  << std::endl;
// using librealsense's built in function for this
float ResultVector[3];
float InputPixelAsFloat[2];
InputPixelAsFloat[0]=XPixelNumber;
InputPixelAsFloat[1]=YPixelNumber;

rs2_deproject_pixel_to_point(ResultVector, &DepthIntrinsics, InputPixelAsFloat, DistanceToTargetInDepthScale);
`
when
rgb&depth stream resolution are 640X480
InputPixelAsFloat[0] = 522
DistanceToTargetInDepthScale = 590 ( i.e. 59cm since depth_scale = 0.001)
i get a value of 303.704 in ResultVector[0] ( which means 30.3704 cm since my depth_scale is 0.001).
( i should be getting some closer to 18cm)
Please advise.
Omer.

I have reason to believe that the cause for this error is bad factory calibration settings.
when i change value for &DepthIntrinsics.fx from the factory set value of 383.806 to  a value  of 610.231 (determined by opencl camera calibration ) the results improve significantly.
this opens up a new set of questions

could this be a simple "bug" in the data stored for intrinsics of d435 , firmware <IP_ADDRESS> , for resolution 640X480 ?

is the intrinsics data used by RS for things like depth detection or rgb to depth stream alignment
( i.e. i should update the intrinsics in the camera itself with the new information ...)

thanks,
Omer.

[Realsense Customer Engineering Team Comment]
@omerbrandis
I don't think that's the calibration issue, since from my own 435, I got the same fx as you got. I think the problem comes from your distance, you divide depth_unit instead of multiply the depth_unit. I suggest you to use the "get_distance(int x, int y)" to get the depth value to feed into rs2_deproject_pixel_to_point.

Hello,
I'm not 100% sure I fully understand your last post,
but if you wrote that you have managed to reproduce (=received the same results for the same input) my results using your code and your camera
then it seems to me that you have proved that the problem is not in my code and not in my camera ( or its calibration ).
I repeat the relative world position of an object at 59cm away at pixel x=522 is not 30cm....
Please advise,
Omer.

[Realsense Customer Engineering Team Comment]
@omerbrandis
I mean the code you wrote "float DistanceToTargetInDepthScale = (float)DistanceToTargetCm / 100 / DepthUnits;" divides the depth scale. But the last parameter you feed into "rs2_deproject_pixel_to_point" should be pixel data in specific row/column to multiply the depth unit. And there is API inside the "depth_frame" class help to retrieve the right data which is called "get_distance", you only need to feed in the row and column then the function returns back the right data you need to feed into "rs2_deproject_pixel_to_point".

Dear Realsense Customer Engineering Team
a. I am familiar with the get_distance function.
b. I perform
"float DistanceToTargetInDepthScale = (float)DistanceToTargetCm / 100 / DepthUnits;"
since this is what i was instructed to do by the Realsense Customer Engineering Team ,
please review the full thread.
c. but to get things going , i have created a new version of my code that does what you have instructed:
rs2::depth_frame TempDepthFrame = AlignedLastCapturedFrames.get_depth_frame();
    float TempDistance = TempDepthFrame.get_distance(XPixelNumber,YPixelNumber);
    std::cout << " distance fed to deproject " << TempDistance << std::endl;
    rs2_deproject_pixel_to_point(ResultVector, &DepthIntrinsics, InputPixelAsFloat,TempDistance);

    std::cout << "deprojection float : relativex = " << ResultVector[0] << "  relativey= " << ResultVector[1] << std::endl;

here is the output:
distance fed to deproject 0.59
deprojection float : relativex = 0.303704  relativey= -0.120317
which is still incorrect.
please advise.
Omer.

[Realsense Customer Engineering Team Comment]
@omerbrandis
I've tried similar scenario as yours with the code attached, the result is right without any problem. Please try to test with the code and let me know if you still face the same error result for x and y point. I've also attached the test result and environment from me in below response.
#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include <librealsense2/rs_advanced_mode.hpp>
#include <librealsense2/rsutil.h>
#include "../example.hpp" // Include short list of convenience functions for rendering
#include <algorithm> // std::min, std::max
#include <string>
#include <iostream>
#include <time.h>
//#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
using namespace rs2;
using namespace std;
// Helper functions
void register_glfw_callbacks(window& app, glfw_state& app_state);
int main(int argc, char * argv[]) try
{
 // Create a simple OpenGL window for rendering:
 window app(1280, 720, "RealSense Pointcloud Example");
 // Construct an object to manage view state
 glfw_state app_state;
 // register callbacks to allow manipulation of the pointcloud
 register_glfw_callbacks(app, app_state);
 pipeline pp;
 config cfg;
 float ResultVector[3];
 float InputPixelAsFloat[2];
 InputPixelAsFloat[0] = 416;
 InputPixelAsFloat[1] = 316;
 cfg.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16 , 30);
 cfg.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_RGB8, 30);
 auto MyPipelineProfile = pp.start(cfg);
 rs400::advanced_mode MyDevice = MyPipelineProfile.get_device();
 rs2::depth_sensor DepthSensor = MyDevice.first<rs2::depth_sensor>();
 float DepthUnits = DepthSensor.get_option(RS2_OPTION_DEPTH_UNITS);
 // get & store depth intrinsics
 auto DepthStream = MyPipelineProfile.get_stream(RS2_STREAM_DEPTH).as<rs2::video_stream_profile>();
 rs2_intrinsics DepthIntrinsics = DepthStream.get_intrinsics();
 // convert DistanceToTarget from "Cm" to camera's depth scale
 for (int i = 0; i<10; i++)//to skip first few frames when device just initiated
  auto frames = pp.wait_for_frames();
 auto frames = pp.wait_for_frames();
 rs2::depth_frame depthFrame = frames.get_depth_frame();
 float distance = depthFrame.get_distance(416, 316);
 std::cout << " !!! depthunits = " << DepthUnits << " DistanceToTargetInDepthScale = " << distance << std::endl;
 // using librealsense's built in function for this
 rs2_deproject_pixel_to_point(ResultVector, &DepthIntrinsics, InputPixelAsFloat, distance);
 std::cout << "x = " << ResultVector[0] << ", y = " << ResultVector[1] << ", z = " << ResultVector[2] << std::endl;
 std::cout << "end" << std::endl;
 return EXIT_SUCCESS;
}
catch (const rs2::error & e)
{
 std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n " << e.what() << std::endl;
 return EXIT_FAILURE;
}
catch (const std::exception & e)
{
 std::cerr << e.what() << std::endl;
 return EXIT_FAILURE;
}
``

I select pixel 416, 316 in the depth image which indicate the point on my cup has the distance about 39cm.

Dear Realsense Customer Engineering Team
when I test my code using pixel 416, 316  and depth= 0.387
i get very similar results to the ones you received , my results are x = 0.0923275   y = 0.0753535.
but these values are incorrect.
I have recreated a scene in which an object projects at x=416,y=316,z=0.387 .
lets assume for the moment that rs2_deproject_pixel_to_point accepts depth data in meters, and returns ResultVector in meters,
If so, the result x=0.097 means that the object in question is 9 cm to the right of the center of the camera,
but its not, in my scene it is only about 1cm to the right of the center of the camera.
moreover, before you conclude that the results should be multiplied by 10
please retest with additional targets, like the example i've provided before in which the object is at around 59cm away and about 18cm to the right of the camera ( it should project at around pixel 522).
i expect you to receive a result of about 30cm
Thanks,
Omer.

@omerbrandis  hello,
It is not clear what do you mean by "values are incorrect" without supplying the reference data.
Please specify expected vs actual results along with rosbag recording, to present the case for in-depth review.
 Therefore it is importation to verify that &DepthIntrinsics in the above code refers to the intrinsic of aligned depth.
Also note that in the new aligned depth the location of the objects in the scene is different from original data and corresponds to the point-of-view of the color.

Dear Realsense Customer Engineering Team

i have done my best to explain what i mean by "in correct".
i have provided multiple examples of expected vs actual results.
and i can provide more if you wish.

(
I have explained at the very start that a returned value of 30cm for an object that is only about 18 to the right of the camera is not correct.
i have also written in regard to you previous post, that a returned value of 9cm for an object that is only 1 cm to the right of the camera is incorrect.
)
I'm afraid I don't know how i can be more clear about this.
you mentioned " reference data" , can you please explain what you mean by this?

i do not understand why you refer to rosbag, ros has nothing to do with my application.

regarding stream alignment:

3.a. to the best of my knowledge, the results of the deproject method have nothing to do with the actual stream data, and/or alignment,
only the data that is actually fed to it at run-time.
( i have tested multiple versions of the code, including the one that explicitly gets the distance to the object, all return incorrect values).
3.b. regardless, in my code the intrinsics are extracted before alignment is performed.
Thanks,
Omer.

Hello @omerbrandis ,
The data presented is partial and misses some critical elements, such as actual intrinsic values used in transformations and the source of depth data (raw depth/depth aligned to color).
Please record a attach short record (<5sec) with 'realsense-viewer' with depth and color sensor streaming and mark the measured position of the points of interest. (Rosbag is the format 'realsense-viewer' uses internally). The video will be used to verify and reproduce the results.
Deprojection of 2D pixels into 3D space is based on intrinsic of the stream , so by mentioning

in my code the intrinsics are extracted before alignment is performed.

it could be that the intrinsic passed to transformation was taken from the original depth, while the (i,j) pixel coordinates were obtained from the aligned depth, which can explain the offsets.

Dear Realsense Customer Engineering Team
[As we already have a solution to the problem] Management has instructed me to discontinue working on this thread.
Thank you for all your time and effort.
Omer.


added column slicin

added few column slicin syntaxes

@MMesch I think this is ok. But I'd like to have your opinion before merging. What do you think ?

OK! It can be reformatted to 80 columns later ...
On Thu, Mar 9, 2017 at 4:02 PM, Thomas Belahi<EMAIL_ADDRESS>wrote:

@MMesch https://github.com/MMesch I think this is ok. But I'd like to
have your opinion before merging. What do you think ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/IPGP/scientific_python_cheat_sheet/pull/31#issuecomment-285375533,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACejq1tMfiRCvEAUBEnJATQ-r4Q6BKr4ks5rkBSTgaJpZM4MTNfm
.


.Net: Add Support for Surfacing HTTP Verb for Function Calls in Semantic Kernel

Description
We would like to request the addition of support for surfacing the HTTP verb (e.g., GET, POST, PUT, etc.) for function calls in Semantic Kernel when working with OpenAPI specifications. This feature is needed to help keep humans in the loop and show action confirmations, such as prompting the user for confirmation when a POST request is made.
Proposed Changes

Update the parsing process in Semantic Kernel to recognize and store the HTTP verb associated with each operation in the OpenAPI specification.
Update the generated function models to include a property indicating the HTTP verb of the operation.

or

Update the parsing process in Semantic Kernel to recognize the HTTP verb associated with each operation in the OpenAPI specification and take in an optional list of 'consequential' HTTP verbs at parsing.
Update the generated function model to include a property indicating whether the function is 'consequential' and uses the HTTP verb and configuration at parsing time.

or

other

Additional Considerations
The existing issue for adding support for the x-openai-isConsequential property in Semantic Kernel (Issue #5506).
Thank you for considering this feature request. We believe that adding support for surfacing the HTTP verb for function calls in Semantic Kernel will enhance the overall capabilities of the platform and provide a more consistent experience for users interacting with actions.

I believe the issue is resolved by this PR - https://github.com/microsoft/semantic-kernel/pull/5911 and can be closed. Please reopen it if it is not.


Getting unassigned external datasource | High Priority

Trino folder is showing inside the /var/lib/grafana/plugin, while adding datasource getting 404 error.
Below is my Dockerfile
FROM grafana/grafana-oss:latest
COPY . /var/lib/grafana/plugins/trino
ENV GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=trino-datasource
EXPOSE 3000
VOLUME /var/lib/grafana/plugins/trino

I tried follwing the steps in https://github.com/grafana/loki/issues/6168 but not able to get the context of installing yarn.
Can you please help?

Are you running this in a local working copy of the repository or in a directory where you extracted the artifacts from the release? https://github.com/starburstdata/grafana-trino/releases/tag/v1.0.0-beta.2

@nineinchnick i tried accessing the zip but its showing me not found.
Can you please help me with the zip url?
Correct me if I am going wrong, steps should be:
1)Download zip in local
2)Create Dockerfile and build image
FROM grafana/grafana-oss:latest
COPY . /var/lib/grafana/plugins/trino
ENV GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=trino-datasource
EXPOSE 3000
VOLUME /var/lib/grafana/plugins/trino

3)Use image
Please let me know if i am missing anything.
Thanks & Regards
Nupur singh

Which URL did you try? The one I added in my first comment, which you can find in the releases tab in this repo?
The steps look ok, just unzip the zipfile after downloading it.

I'm closing this since it's not an actual issue with the connector but rather a question about usage.


Added Mathjax-MathMLsupport (chrome friendly)

Sorry about the double pull request, the first was a mistake. Anyway we implemented mathjax in our fork because we wanted to use it in our blog posts. There are other Hugo themes that have it implemented by default as well so I thought this theme could benefit.

Sorry, I did not get a chance to look at the pull request in full before it was closed.

Yeah sorry I ended up deleting the fork and it seems weird to have an open request from an unknown directory. But I can just open a new one under a branch because it's like two lines, if that's fine with you

Or if that's not weird and you're able to reopen the request that's fine too

No problem. I can't reopen the pull request though because it says the repository has been deleted.

I thought that would be the case. I'll open a new one in a little. Thanks


Su_Dyclink

@mikefhsu
I downloaded the virtual machine from https://github.com/Programming-Systems-Lab/dyclink, but Windows 8 tells me that the zip file is invalid. I tried twice, with the same result. Any idea what the problem could be?

@ctreude Hello, I just downloaded the zip file again and am able to unzip it. I used a Macbook pro. We also tried our zip file on Linux, and it also works pretty well. Do you have any chance to try it on any Mac or Linux machines? Thanks.

@mikefhsu Sorry, not at the moment. Hopefully the other reviewers will be able to confirm that it works on Mac / Linux.

@ctreude I can share with you the zip file that I just downloaded from our github(the google drive link). I have successfully unzipped it. Do you have any space for me to upload? Thanks.

@mikefhsu You could try something like Dropbox. Or maybe you could use your university's web server? Thanks!

@ctreude I just share with you another link to my google drive. Can you try and see if you can unzip this file?
Thank you.

The zip is invalid for my Win10 machine...we will try to find a Linux one.

I've tried WinZip, WinRAR and 7-Zip, all without success. @mikefhsu, is there anything you can change about the compression format? Thanks!

@ctreude @hongyujohn @cmcmil  It seems that the zip file cannot be extracted on Windows machine, so I upload the VM (without any zipping) directly. It is about 20GB. I've sent out the invitation on Google Drive. A directory called DYCLINK containing the VM. You can use Virtual Box to run my VM. Please let me know if you can access it or not. Thanks for your feedback.

@mikefhsu: I run Linux, so I didn't experience any problem.
Very Brief Summary
This artifact is the executable tool DyCLINK for detecting similar code.
Insightful
The insightfulness of the artifact is established in the associated paper: the artifact implements a new dynamic technique for detecting code that behavies in a similar way.  It works by observing the inputs and outputs of programs.
Useful
This artifact is definitely useful.  Since the work is newly-published, there is not another tool that does the same thing.  The artifact makes the tool available via a permissive MIT license, which I view as a strong positive.
Usable
The artifact is available on Github along with a virtual machine image and extensive README.  I appreciate that the dependencies are listed clearly in a Step 0, and that a setup script is provided to create the necessary directory structure (frequently tools forget to mention that structure).
This artifact does well on all three of the review criteria.  It will make a good addition to the artifacts track.

We are able to run the tool now and can see the results of SQL queries. However, how to evaluate the correctness of the results? I only see some class files, how do I know if they are similar or not? (any ground-truth?)

@hongyujohn In A6, we discuss about how to use the script "dyclink_query.sh" to compute the number of code relatives. This script can tell you the number of the code relatives of a specific comparison. For example, 2011-2012. The ground truth is in the Table3 of our FSE paper. Let me know if you need further information. Thanks.

@hongyujohn If you want to know which programs have the similar behavior, you can refer to our experiment of Software Community Clustering in Table4, even though this is out of the scope of our artifact evaluation. Basically, we assume that the programs in the same year have better opportunity to have similar runtime behavior. Thanks.

Currently, I don't have the paper to check the results, the paper given in your website is missing...
(with error message: "Oops! That page can’t be found").
So I am afraid that I cannot evaluate the results?

@hongyujohn I cannot publish our FSE paper, because we are still preparing for our camera-ready. I assume that you can have the paper from Easychair? Or I can send you our submission directly. Thanks.

I don't have the paper so I cannot evaluate the results now.

@hongyujohn I just pulled our paper from easychair, and send it to your gmail. Thank you.

@mikefhsu Thanks, the 20GB file worked as advertised.
Review:
The authors detect similarly behaving software by observing how programs compute their results at the instruction level by means of execution traces. Information is encoded in dynamic instruction graphs.
The artifact is useful and usable and works as advertised. All necessary information is present, and the instructions are easy to follow and make sense.
The separate steps -- graph construction, similarity computation, and results analysis -- follow directly from the approach. The authors could improve the convenience of their artifact by scripting parts of the result analysis as well -- removing the step of having to open the MySQL Workbench and digging into the database schema (but this is a minor detail of course).
Another minor detail is that I didn't understand the need for prompting the user to decide whether to store the results in the database. What alternatives are there? Also, "true" wasn't the most intuitive answer here -- why not include "y" or "yes" as well?

Brief Summary
We are able to run this tool as described, after an amount of setup effort (as shown in this thread). Its main feature is to detect similar code-pairs based on certain graph similarity metrics. However, we are  unable to check the correctness of the results and determine its recall/precision as the returned results are binary.
Insightful
DyCLINK may be able to detect some similar code based on execution trace.
Useful
If the accuracy of this tool is good, it may be useful for maintenance and refactoring work. But again, we are unable to check the correctness of the results as the returned results are binary.
Usable
This tool can be downloaded from Github, and a detailed tutorial is provided. Following the steps in the tutorial, the tool could run. A prepared virtual machine image is provided, which is also available online.

I concur with a "Platinum" rating for this artifact.

@ctreude @hongyujohn @cmcmil Thanks for your valuable feedback and comments for our artifact. This can be helpful for us to enhance our tool.
We have some feedback for @hongyujohn as follows:
As @hongyujohn mentioned, because the output of DyCLINK seems to be binary, so he is not able to judge the correctness. However, DyCLINK actually stores the similarity of each matched (sub)graphs in the database. As our artifact paper mentioned, the script "dyclink_query.sh" helps you collect the number of code relatives, which we recorded in Table 3 in our research paper. This is also the scope of our artifact paper and what our VM can reproduce.
Because DyCLINK detects code that has similar runtime behavior at instruction level that may have dissimilar syntaxes,  it is extremely hard for human to verify the correctness of the detected code relatives. Thus, we propose a KNN-based software clustering technique (Table 4) to help users understand which programs or modules behave similarly in runtime. We will appreciate the comments from our reviewers about the output format of DyCLINK: what will be the better output format that DyCLINK can offer to help users understand programs with similar runtime behavior?
The reason that we choose not to include this KNN-based experiment in the artifact evaluation is because of VM's performance. To reproduce our Table 4, the user needs to replay each comparison in Table 3, which may cost the user several days on the VM. Because DyCLINK conduct inexact sub-graph matching with hundreds/thousands of nodes, it is computational expensive (even with our newly developed algorithm in the research paper). Thus, we conducted our experiment on real machines with powerful CPUs and memory. The full experiments in our paper can then be done in hours as we mentioned in our research paper (Table 1).
We have provided our system settings and source code on github. If the reviewer is also interested in replaying our full experiment including Table 3 and Table 4 in our research paper, we would love to answer any technical questions to replay them. Hope our explanation can answer the questions of our reviewers.
Again, we appreciate your efforts and time to evaluate our system. Your comments will help us enhance our system.

Note these labels are still "under discussion" and are still subject to change prior to the final notifications Friday.

Thanks again for the valuable comments from @ctreude @hongyujohn @cmcmil .
Even though our cluster analysis is already in our github repo, we update our README to help future users reproduce Table4 (which is out of the scope of our artifact paper this time) in our research paper.
We appreciate your feedback!


Disable metadata in DMs

          I think for simplicity's sake we shouldn't enable these for DM's. That smooths over compatibility issues with V2, as well as issues involved in deduplicating DM's with different metadata in V3. Would recommend disabling it in libxmtp too

Originally posted by @richardhuaaa in https://github.com/xmtp/xmtp-android/pull/307#discussion_r1811246279

Great. I'd suggest all V2 convos with different conversation IDs get collapsed into one v3 convo on import.


[community] Form a community building working group

During the project call on Nov 2 there was discussion of forming a working group to focus on community building, hackathons, and event participation, to grow the community of contributors and consumers of ally-theme-builder.
@PaulaPaul will set up time with @lwnoble, @codyzu and others interested in community activities, and open issues to update documentation and meeting notes for the working group goals and activities.

@lwnoble also had this issue, but at the time she wasn't designated as a maintainer but I thought that you and Cody both were. Let me check with Juan.

@PaulaPaul I sent a request to FINOS for you to be able to write to the repo and wiki, to be able to assign issues and to create labels.  I'll update this issue when I know more.

@PaulaPaul, please try again.  You should have access now.

Confirmed access to create labels and assign myself issues!

@aaronreed708 to add to FINOS calendar, get new FINOS zoom link?
Every 2 weeks on Wednesdays at 11am EST starting 1/17

Email has been sent to FINOS to make these meetings public on the FINOS Calendar - once we receive that information and zoom we can add the information to the Theme Builder FINOS website and close this issue- thanks @aaronreed708

We have Zoom credentials - will close out this issue once the regular community call is on the FINOS calendar- thank you!
@TheJuanAndOnly99 @aaronreed708

Confirmed our community calls are now on the FINOS calendar, and I am all set up with the Zoom credentials to host calls. Thank you @TheJuanAndOnly99 and @aaronreed708 !
Will close out this issue as complete -


Run OtaDownloader as a separate thread

Move code associated with OTAs to run on a separate thread.

I think we can do a few clever things to significantly simplify code here. Let's discuss this tomorrow


SecureRandom.generateSeed can fail due to lack of entropy

This probably isn't the right place to report this, but I'm starting here in case others run into the same symptom with java-based images down the road.
The underlying issue is that Docker containers can sometimes be run on a machine with insufficient available_entropy. In the case of java-based images, this often manifests as an application hanging while trying to generate a seed value for a PRNG via SecureRandom.generateSeed(byte[]).
I've run into this issue a number of times with different images, both with those based on java and with others derived from different base images. I've had this occur both on boot2docker and on EC2. Most recently it came up as a comment on https://github.com/appropriate/docker-jetty/issues/20.
Here's a gist that can reproduce the issue on a low-entropy system, along with the resulting stack trace:
Gist: https://gist.github.com/md5/de5cea7195d757582621
Stacktrace:
"main" #1 prio=5 os_prio=0 tid=0x00007fcbb8009800 nid=0x6 runnable [0x00007fcbc0b1b000]
   java.lang.Thread.State: RUNNABLE
	at java.io.FileInputStream.readBytes(Native Method)
	at java.io.FileInputStream.read(FileInputStream.java:255)
	at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:539)
	at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144)
	at sun.security.provider.SecureRandom.engineGenerateSeed(SecureRandom.java:139)
	at java.security.SecureRandom.generateSeed(SecureRandom.java:533)
	at SecureRandomTest.main(SecureRandomTest.java:7)

There's not much that can be done within the context of this image, but I wanted to raise an issue here for others who run into this problem in the future. Ultimately, the ability to avoid or mitigate this issue will depend on making more entropy available to the JVM and other language runtimes.
I'm fine with this issue being closed as a WONTFIX here, but there may be something that can be done in the boot2docker/docker-machine case to make more of the host system's entropy available to the VM. In the case of other VM hosts with low entropy, the issue may be harder to avoid.

Here's an upstream discussion for VirtualBox, though this is probably more relevant if I open an issue for boot2docker or a related project: https://www.virtualbox.org/ticket/11297

Ouch -- I'm not sure there's much we can do here, either at the image level or even at the OS level. :cry:

(Except perhaps document that VMs have fairly chronic entropy exhaustion issues in general, perhaps, but I think that'd really be something to document at the Docker level if anything, not necessarily at the image level.)

(Except perhaps document that VMs have fairly chronic entropy exhaustion issues in general, perhaps, but I think that'd really be something to document at the Docker level if anything, not necessarily at the image level.)

Like I said before, I mainly wanted to document it here so that others experiencing the same symptoms can find it.
I'll close this issue.

:metal: :heart:


Added logic to share metrics/information from the interceptor to the app

I had a requirement to publish the response time for APIs to Analytics engine (Fabric Answers). This change in the codebase enables it.
Do merge, if you think this would be useful for others.

@HannanShaik, thank you for the PR contribution.
Logging of network call durations can be useful in some cases, so adding the logic to the OkHttp interceptor makes sense.
However, since the APIMetrics class does not interact with OkLog's logging, it can be completely separated from OkLog.
Therefore, I would suggest you create a new interceptor that only handles network call duration logging via your APIMetrics class, and use that interceptor in parallel to OkLog in your OkHttp instance.
TimingInterceptor snippet:
public class TimingInterceptor implements Interceptor {

    @Override public Response intercept(Chain chain) throws IOException {
        Request.Builder builder = chain.request().newBuilder();

        long startNs = System.nanoTime();

        Response response = chain.proceed(builder.build());

        long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);

        // TODO log tookMs via an interface

        return response;
    }
}

That way, OkLogInterceptor and TimingInterceptor can be two different interceptors, each of them handling their own use-case.


Update huggingface pipelines notebook

I've fixed the style. @baskaryan, please merge when CI is ready.


Update peer dependencies?

I'm seeing these yarn warnings when I install hecs along with hecs-plugin-core and hecs-plugin-three as dependencies:
warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>

That's really weird. I just double checked, in the master branch all the packages dependencies are set to 0.14.0 and all the published Npm packages are also at 0.14.0
I suspect you somehow have outdated node_modules or something. You may need to double check your source code is all referencing 0.14.0 and then reinstall all dependencies

Strange! Thanks for checking. There must be something left over from when I first checked out HECS a couple of months ago.

Ah! I think I see what's going on. The npm published package of hecs-plugin-core has a peerDependency as follows:
{
  "name": "hecs-plugin-core",
  "version": "0.14.0",
  "main": "dist/hecs-plugin-core.js",
  "scripts": {
    "start": "webpack --watch",
    "test": "jest",
    "build": "NODE_ENV=production webpack",
    "version": "node scripts/update-peers",
    "prepublishOnly": "yarn build"
  },
  "peerDependencies": {
    "hecs": "^0.13.0"
  },
  "devDependencies": {
...

FYI 0.16.0 also has this issue:
yarn upgrade hecs
yarn upgrade v1.21.1
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>[4/4] 🔨  Rebuilding all packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─<EMAIL_ADDRESS>info All dependencies
└─<EMAIL_ADDRESS>✨  Done in 6.71s.

Oh no you're right. It looks like the release script is somehow changing the version after its published not before :P

When we make a release of all the hecs packages we run yarn release from the root directory. This uses lerna to bump versions and then publishes to Npm.
Lerna doesn't actually bump peerDependency versions so we use the version script hook to do it ourselves using the scripts/update-peers.js file.
According to the lerna docs, this hook should run immediately after the package.json is given a new version. In my testing it does do this, but somehow it's publishing the pre-updated package.json file.
https://github.com/lerna/lerna/tree/master/commands/version#lifecycle-scripts
I couldn't find a quick fix for this so i'll need to shelf it until I have some more time


Seems not to compile anymore in platformio with espressif32 > 4.0

4 days ago version 4 was released for espressif32 framework.
It seems like FreeRTOS.h is now just RTOS.h in the new framework version. Changing the include to just RTOS.h works. But I do not know the background of this change.
I updated and now can't compile with the lib anymore with the following error messages:
> Executing task: platformio run --environment lolin_d32 <

Processing lolin_d32 (platform: espressif32; board: lolin_d32; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/lolin_d32.html
PLATFORM: Espressif 32 (4.1.0) > WEMOS LOLIN D32
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 3.20001.0 (2.0.1)
 - tool-esptoolpy 1.30100.210531 (3.1.0)
 - tool-openocd-esp32 2.1100.20220411 (11.0)
 - toolchain-xtensa-esp32 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 38 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <PubSubClient> 2.8.0
|-- <ArduinoJson> 6.19.4
|-- <Nuki Ble for Esp32> 0.0.4
|   |-- <NimBLE-Arduino> 1.3.6+sha.fc746b1
|   |-- <CRC16> 0.0.0+20220417211510.sha.f46d86b
|   |-- <Preferences> 2.0.0
|-- <ArduinoOTA> 2.0.0
|   |-- <Update> 2.0.0
|   |-- <WiFi> 2.0.0
|   |-- <ESPmDNS> 2.0.0
|   |   |-- <WiFi> 2.0.0
|-- <mqttdevice>
|   |-- <ArduinoJson> 6.19.4
|-- <WiFi> 2.0.0
Building in release mode
Compiling .pio/build/lolin_d32/src/main.cpp.o
Compiling .pio/build/lolin_d32/libea9/PubSubClient/PubSubClient.cpp.o
In file included from src/main.cpp:7:
.pio/libdeps/lolin_d32/Nuki Ble for Esp32/src/NukiBle.h:9:10: fatal error: FreeRTOS.h: No such file or directory

******************************************************************
* Looking for FreeRTOS.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:FreeRTOS.h"
* Web  > https://registry.platformio.org/search?q=header:FreeRTOS.h
*
******************************************************************

 #include "FreeRTOS.h"
          ^~~~~~~~~~~~
compilation terminated.
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLE2904.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEAddress.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEAdvertisedDevice.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEAdvertising.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEBeacon.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLECharacteristic.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEClient.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEDescriptor.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEDevice.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEEddystoneTLM.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEEddystoneURL.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEExtAdvertising.cpp.o
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLEHIDDevice.cpp.o
*** [.pio/build/lolin_d32/src/main.cpp.o] Error 1
Compiling .pio/build/lolin_d32/lib3c5/NimBLE-Arduino/NimBLERemoteCharacteristic.cpp.o
========================================================================== [FAILED] Took 3.05 seconds ==========================================================================
The terminal process "platformio 'run', '--environment', 'lolin_d32'" terminated with exit code: 1.

In the changelog I don't see much that could pinpoint to the issue but it seems like the freertos includes are not available anymore.

I've set the platform version explicitly in platform.ini and corrected for the breaking changes that this version has
Can you test again?

Do you know how I can force platformio to use the master instead of the 4.0.0 tag?
I'm including the lib via platformio.ini

You can specifiy platofrm version in platformio.ini like this:
platform =<EMAIL_ADDRESS>This will use the latest version smaller than 5.0.0

I meant for your lib, sorry. It uses the platform automatically after an update, but your lib, pulled through platformio is not what you commited to the master but the latest 0.0.4 (I messed up the versions)
I currently have:
bascy/Nuki Ble for<EMAIL_ADDRESS>in
in my platformio.ini

No you have to add the platform version to the platform property in [env] section of the platformio.ini

I think we are talking two different things.
I am not building your lib, I am using my own project which pulls your lib through platformio via dependency.
i.e. this:
https://github.com/peteh/doorauth/blob/main/doorauth/platformio.ini
If you build my project with platformio and espressif32 v4.x it will fail because version 0.0.4 version of NukiBleEsp32 lib will look for FreeRTOS.h still (as it is only available in 0.0.4 version) :+1:

However, if I build nukible with the current master, it works fine. So the changes on your master/main seem to be at least buildable. But I don't know how I can include the new version of your code in my own project because I usually just add the lib deps in platformio and it pulls the latest official release.

Ah, ok, I get you now
You can specify a dependency also by its github url, so if you add https://github.com/I-Connect/NukiBleEsp32 to your dependencies it will take the latest version from main branch

Thanks, that works. I built it and deployed it with my project. So I think this issue can be closed. But there probably needs to be a 0.0.5 published for platformio.
So far it seems to work. I can lock and unlock the door with the latest master.


Enhanced Cmdlets that take a username/password combination by adding support for SecureString for the password parameter and adding a Credential parameter set.

Enhanced Request-VCFToken by adding -Credential parameter set and adding support for SecureString for the Password parameter.
Enhanced Connect-CloudBuilder by adding -Credential parameter set and adding support for SecureString for the Password parameter
Enhanced Set-VCFMicrosoftCA by adding -Credential parameter set and adding support for SecureString for the Password parameter
Enhanced Set-VCFDepotCredential by adding -Credential parameter set and adding support for SecureString for the Password parameter

+1 with the change
but i think, there is some unwanted change (add the end of commit)

Seems like I perhaps have used the wrong branch when making changes. My proposed changes only pertain to the four cmdlets in the commit message.


SVG thumbnails

Description
IMO, there is no reason to convert high-quality scalable SVG to low-quality PNG thumbnails.
With full respect, I forked your project under https://gitlab.com/plgrnd/aac
If you can, please suggest a way how to render SVG server-side via /workspace/preview/{diagram}. SSR will help fix blank/eager/lazy thumbnails as well.
Priority
I have no budget and there's no rush, please add this feature for free
More information
No response

If you can, please suggest a way how to render SVG server-side

Diagrams are rendered client-side (i.e. in your web browser), so server-side rendering isn't possible.


플러터 2.0 버전에서 작동하지 않습니다.

최대한 빨리 업데이트 해주시면 감사하겠습니다!

@kim-mini6
https://pub.dev/packages/kakao_flutter_sdk/versions/0.6.0-beta.2
위 베타버전을 사용하셔도 작동하지 않나요?

베타버전으로 사용하면 잘 되는데 여러 패키지들이 충돌이 나서 사용을 못합니다 ㅠㅠ

@kim-mini6 에러 로그를 올려주시면 도움이 될 것 같아요. 베타버전은 아마 베타버전끼리만 사용하셔야 될거에요.. 사용하시는 패키지들에서 null-safety 적용된 베타 버전들이 배포가 안된 상태라면 2.0을 아직 안올라가시는게 어떨까 싶어요 ㅠ.ㅠ

사용하기 지~짜 어렵네요 ..
`* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.

Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.kakao.sdk:v2-user:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-user/2.4.2/v2-user-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-user/2.4.2/v2-user-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-user/2.4.2/v2-user-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-talk:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-talk/2.4.2/v2-talk-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-talk/2.4.2/v2-talk-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-talk/2.4.2/v2-talk-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-story:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-story/2.4.2/v2-story-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-story/2.4.2/v2-story-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-story/2.4.2/v2-story-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-link:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-link/2.4.2/v2-link-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-link/2.4.2/v2-link-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-link/2.4.2/v2-link-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-navi:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-navi/2.4.2/v2-navi-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-navi/2.4.2/v2-navi-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-navi/2.4.2/v2-navi-2.4.2.pom
Required by:
project :app

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 25s
Exception: Gradle task assembleDebug failed with exit code 1`
`def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}
sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "kr.co.cassystem"
    minSdkVersion 26
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.debug
        proguardFiles 'proguard-kakao.pro'
    }
}

}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.kakao.sdk:v2-user:2.4.2" // 카카오 로그인
implementation "com.kakao.sdk:v2-talk:2.4.2" // 친구, 메시지(카카오톡)
implementation "com.kakao.sdk:v2-story:2.4.2" // 카카오스토리
implementation "com.kakao.sdk:v2-link:2.4.2" // 메시지(카카오링크)
implementation "com.kakao.sdk:v2-navi:2.4.2" // 카카오내비
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'

}
`

flutter에서 SDK 사용하기 진심 어려움 ~~~~~ 하~
번거롭더라도 REST api 로 구현 하는게 편합니다.
'* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.

Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.kakao.sdk:v2-user:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-user/2.4.2/v2-user-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-user/2.4.2/v2-user-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-user/2.4.2/v2-user-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-talk:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-talk/2.4.2/v2-talk-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-talk/2.4.2/v2-talk-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-talk/2.4.2/v2-talk-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-story:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-story/2.4.2/v2-story-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-story/2.4.2/v2-story-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-story/2.4.2/v2-story-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-link:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-link/2.4.2/v2-link-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-link/2.4.2/v2-link-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-link/2.4.2/v2-link-2.4.2.pom
Required by:
project :app
Could not find com.kakao.sdk:v2-navi:2.4.2.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/kakao/sdk/v2-navi/2.4.2/v2-navi-2.4.2.pom
- https://jcenter.bintray.com/com/kakao/sdk/v2-navi/2.4.2/v2-navi-2.4.2.pom
- https://storage.googleapis.com/download.flutter.io/com/kakao/sdk/v2-navi/2.4.2/v2-navi-2.4.2.pom
Required by:
project :app

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 25s
Exception: Gradle task assembleDebug failed with exit code 1'
`def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}
sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "kr.co.cassystem"
    minSdkVersion 26
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.debug
        proguardFiles 'proguard-kakao.pro'
    }
}

}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.kakao.sdk:v2-user:2.4.2" // 카카오 로그인
implementation "com.kakao.sdk:v2-talk:2.4.2" // 친구, 메시지(카카오톡)
implementation "com.kakao.sdk:v2-story:2.4.2" // 카카오스토리
implementation "com.kakao.sdk:v2-link:2.4.2" // 메시지(카카오링크)
implementation "com.kakao.sdk:v2-navi:2.4.2" // 카카오내비
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'

}
`

flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.0.2, on Microsoft Windows [Version 10.0.19041.867], locale ko-KR)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.55.1)
[√] Connected device (3 available)

@kim-mini6  flutter 2.0 대응한 kakao_flutter_sdk 0.6.1이 배포했습니다. 해당 버전 적용 후에도 이슈가 발생하면 다시 제보 부탁드리겠습니다

네 알겠습니다 감사합니다!!


Feature Request Classic Support

Any chance to support classic?

there is this version
it works well, but it doesn't support multiple windows, it supports multiple tabs though, i have ZERO experience with LUA, but im going to look at the code and see what i can see.

there is this version
it works well, but it doesn't support multiple windows, it supports multiple tabs though, i have ZERO experience with LUA, but im going to look at the code and see what i can see.

another problem with it is no tab alerts

Classic support is definitely not happening because I'm only playing retail. Ngl, supporting even one WoW flavour is a pain these days due to my real life issues.


Very visible passcode

Not really a bug/issue with the code, but the fact that when I type the passcode on my keyboard, the on-screen buttons still light up sorta defeats the purpose, since anyone behind me can see the passcode I'm typing in.

Added option in the settings in bd8a84376b04a2373d8250c8f4ff1a66377e7a3b


util: Auto-comment some repeated abilities in make_timeline

Very basic and very naive. It doesn't work if there are interleaved abilities, but it catches most of them.
120.0 "Weight of the Land" sync / 1[56]:[^:]*:The Ultima Weapon:6F01:/
121.0 "Ceruleum Vent" sync / 1[56]:[^:]*:The Ultima Weapon:6EEF:/
134.1 "Eruption" sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
134.2 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
136.0 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
136.1 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
138.1 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
138.1 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
140.0 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
140.0 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
141.8 "Eruption" #sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
141.9 "Viscous Aetheroplasm" sync / 1[56]:[^:]*:The Ultima Weapon:6EEE:/
141.9 "Eruption" sync / 1[56]:[^:]*:The Ultima Weapon:6F03:/
150.7 "Tank Purge" sync / 1[56]:[^:]*:The Ultima Weapon:6EF9:/

(Eruption particularly bad about this because the "same time" casts are offset by a few milliseconds, and thus aren't caught by the "is this an AoE" multi-hit suppression.)

Could you leave a TODO (or file an issue [or both])? to handle the interleaving case? I feel like that happens with a good bit of frequency.

Sure. I have a feeling that the way to enable that involves building a giant entry map as an intermediate step to generating the entry list. Then we could add a syncComment boolean property to the TimelineEntry type and set it to true for any entry that has close neighbors in the map. I'll poke at that and write up a proper issue for it.


Update 7.23.md

Add runtime release note

Added manually: https://github.com/mendix/docs/pull/2604/commits/7ca9eb8d416a393e7af0768363f85e271ae6d218


AZ-107: Delete old network and connect the new one

Since this PR just broke integration tests from finality-aleph/src/testing/network.rs and finality-aleph/src/testing/data_io.rs I just deleted them and created a task for it.


upload_new_vcard results in 405 error with Baïkal 0.2.7

I'm trying to use pycarddav for a one-time upload of my vcards to a Baïkal 0.2.7 server. I'm using it in an IPython console and can connect to the server using the PyCardDAV object. With this object, I can do get_vcard, delete_vcard, and update_vcard without problems. However, when I try to upload_new_card, I get a 405 error:
HTTPError                                 Traceback (most recent call last)
<ipython-input-17-590b242bf088> in <module>()
----> 1 p.upload_new_card(s)

/home/equaeghe/.local/lib64/python2.7/site-packages/pyCardDAV-0.7.0-py2.7.egg/pycarddav/carddav.pyc in upload_new_card(self, card)
    214
    215                 return (parsed_url.path, etag)
--> 216         response.raise_for_status()
    217
    218     def _get_xml_props(self):

/home/equaeghe/.local/lib64/python2.7/site-packages/requests-2.5.1-py2.7.egg/requests/models.pyc in raise_for_status(self)
    829
    830         if http_error_msg:
--> 831             raise HTTPError(http_error_msg, response=self)
    832
    833     def close(self):

HTTPError: 405 Client Error: Method Not Allowed

I guess upload_new_vcard uses some method that is unsupported by Baïkal, but this seems strange to me, as Baïkal is reputed to be supported and I did not find any reports like mine.
What can I do to get at the bottom of this issue and hopefully resolve it?

Ok. I looked at my server logs and found the cause: I had forgotted the trailing / in my resource argument to PyCardDAV. Adding it resolved the issue.
Sorry for the noise.

I recommend using


Serialization of TimeZoneInfo (v3.0)

From @avo-tgundhus on Wednesday, September 25, 2019 11:39:34 AM
Serialization of TimeZoneInfo.Local fails and results in an incorrect json when sending over SignalR.
The Client uses version 3.0.
The Server is built on .NET core 2.2.
Client code:
HubConnection.SendAsync("Initialize", DateTime.UtcNow, TimeZoneInfo.Local);
Server code:
[public async Task Initialize(DateTime clientTimeInUTC, TimeZoneInfo clientTimeZone) { .. }]
Expected  behavior
How the TimeZoneInfo should be parsed, and is parsed if I use NewtonSoft serializer directly.
{
  "id": "W. Europe Standard Time",
  "displayName": "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
  "standardName": "W. Europe Standard Time",
  "daylightName": "W. Europe Daylight Time",
  "baseUtcOffset": {
    "ticks":<PHONE_NUMBER>0,
    "days": 0,
    "hours": 1,
    "milliseconds": 0,
    "minutes": 0,
    "seconds": 0,
    "totalDays": 0.041666666666666664,
    "totalHours": 1,
    "totalMilliseconds": 3600000,
    "totalMinutes": 60,
    "totalSeconds": 3600
  },
  "supportsDaylightSavingTime": true
}

Actual behavior
How it is sent via SignalR.  You can see an extra curly bracket on line 1 in the JSON. These are ONLY added if I sent through signalR. If I serialize TimeZoneInfo using NewtonSoft in either the server or the client, this works perfect and gives the json listed above.
{{
  "id": "W. Europe Standard Time",
  "displayName": "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
  "standardName": "W. Europe Standard Time",
  "daylightName": "W. Europe Daylight Time",
  "baseUtcOffset": {
    "ticks":<PHONE_NUMBER>0,
    "days": 0,
    "hours": 1,
    "milliseconds": 0,
    "minutes": 0,
    "seconds": 0,
    "totalDays": 0.041666666666666664,
    "totalHours": 1,
    "totalMilliseconds": 3600000,
    "totalMinutes": 60,
    "totalSeconds": 3600
  },
  "supportsDaylightSavingTime": true
}}

Exception
Exception message: System.Runtime.Serialization.SerializationException: Member 'Id' was not found.
2019-09-25 10:41:37 Failed to invoke hub method '"Initialize"'.
System.IO.InvalidDataException: Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked. ---> System.Runtime.Serialization.SerializationException: Member 'Id' was not found.
   at System.Runtime.Serialization.SerializationInfo.GetElement(String name, Type& foundType)
   at System.Runtime.Serialization.SerializationInfo.GetValue(String name, Type type)
   at System.TimeZoneInfo..ctor(SerializationInfo info, StreamingContext context)
   at lambda_method(Closure , Object[] )
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializable(JsonReader reader, JsonISerializableContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.BindArguments(JsonTextReader reader, IReadOnlyList`1 paramTypes)
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.BindArguments(JsonTextReader reader, IReadOnlyList`1 paramTypes)
   at Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.ParseMessage(Utf8BufferTextReader textReader, IInvocationBinder binder)

Copied from original issue: SignalR/SignalR#4409

In 3.0, the client now uses System.Text.Json by default. You could try switching back to Newtonsoft.Json on the client to see if that resolves the issue https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#switch-to-newtonsoftjson
I tried this with the 2.1 client and was successfully sending the TimeZoneInfo.

It worked perfectly for us before we updated as well.
I'll try to switch back and see if it helps.

If switching to Newtonsoft fixes it, I'd suggest filing an issue in https://github.com/dotnet/corefx to consider making changes to System.Text.Json to change the serializer behavior.

The extra curly braces definitely seem weird. That's invalid JSON.
@avo-tgundhus could you isolate this to a console app that uses JsonSerializer directly? If you can reproduce the issue there, I would definitely suggest filing a bug (including your repro code) on dotnet/corefx because there may be a bug in the serializer.

@anurse @BrennanConroy Changing back to Newtonsoft solved the problem. During the last 24 hours we encountered multiple issues on the hubConnection, so it might be other serialization issues like this. I'll see if I can take a deep-dive in the logs and check.
I have not yet created an isolated project for it, but I'll put it on my list.

I'm not able to repro an issue immediately in a Console app. This may be in how we interact with the serializer. @halter73 could you hack up a quick attempt to repro this and do a quick investigation?

I'm not seeing any double curly braces in my testing. I was able to reproduce the following error:
System.IO.InvalidDataException: Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked.
 ---> System.Runtime.Serialization.SerializationException: Member 'Id' was not found...

The cause of the error wasn't an issue with {{ (that wouldn't even be valid JSON), but because the System.Text.Json-based 3.0 client camelCases the property names, but the Newtonsoft-based 2.2 server does not accept it. You can workaround the camelCase issue, by forcing the System.Text.Json-based 3.0 client not to camelCase as follows:
await using var hubConnection = new HubConnectionBuilder()
    .WithUrl("http://localhost:5000/timezone")
    .AddJsonProtocol(options =>
    {
        options.PayloadSerializerOptions.PropertyNamingPolicy = new PassthroughJsonNamingPolicy();
    })
    .Build();

// ...

class PassthroughJsonNamingPolicy : JsonNamingPolicy
{
    public override string ConvertName(string name)
    {
        return name;
    }
}

This turns
{
  "id": "Pacific Standard Time",
  "displayName": "(UTC-08:00) Pacific Time (US & Canada)",
  "standardName": "Pacific Standard Time",
  "daylightName": "Pacific Daylight Time",
  "baseUtcOffset": {
    "ticks": -288000000000,
    "days": 0,
    "hours": -8,
    "milliseconds": 0,
    "minutes": 0,
    "seconds": 0,
    "totalDays": -0.3333333333333333,
    "totalHours": -8,
    "totalMilliseconds": -28800000,
    "totalMinutes": -480,
    "totalSeconds": -28800
  },
  "supportsDaylightSavingTime": true
}

into
{
  "Id": "Pacific Standard Time",
  "DisplayName": "(UTC-08:00) Pacific Time (US & Canada)",
  "StandardName": "Pacific Standard Time",
  "DaylightName": "Pacific Daylight Time",
  "BaseUtcOffset": {
    "Ticks": -288000000000,
    "Days": 0,
    "Hours": -8,
    "Milliseconds": 0,
    "Minutes": 0,
    "Seconds": 0,
    "TotalDays": -0.3333333333333333,
    "TotalHours": -8,
    "TotalMilliseconds": -28800000,
    "TotalMinutes": -480,
    "TotalSeconds": -28800
  },
  "SupportsDaylightSavingTime": true
}

Unfortunately, even this does completely fix the TimeZoneInfo serialization/deserialization problem, because Newtonsoft and System.Text.Json handle TimeSpans differently.
System.Text.Json serializes TimeSpans like BaseUtcOffset as an object as seen above whereas Newtonsoft expects the TimeSpan to be serialized into a string like the following: "BaseUtcOffset": "-08:00:00".
The end result is even with all the properties properly PascalCased by System.Text.Json, the Newtensoft will refused to deserialize the BaseUtcOffset TimeSpan with the following error:
System.IO.InvalidDataException: Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked. ---> Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.TimeSpan' because the type requires a JSON primitive value (e.g. string, number, boolean, null) to deserialize correctly.
To fix this error either change the JSON to a JSON primitive value (e.g. string, number, boolean, null) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.

That's where I stopped trying to make the System.Text.Json-based client work with the Newtonsoft-based server. If you want to upgrade the clients to 3.0 ahead of the server, I recommend just referencing the Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson and using that as follows:
await using var hubConnection = new HubConnectionBuilder()
    .WithUrl("http://localhost:5000/timezone")
    .AddNewtonsoftJsonProtocol()
    .Build();

I've confirmed this fixes the TimeZoneInfo deserialization issue.

@BrennanConroy pointed out to me that SignalR 1.1 (which corresponds with ASP.NET Core 2.2) already defaults to camelCase. I confirmed that sending camelCased objects to the 1.1 server does indeed work with a custom type.
I'm not sure why the PassthroughJsonNamingPolicy changed the TimeZoneInfo deserialization error. Either way, setting things up so both the client and server using the same Json serialization/deserialization library is probably your best bet for fixing these kinds of issues.

Closing as this is an issue with System.Text.Json's support of TimeZoneInfo.
Our recommendation in these cases is to use the same serializer/deserializer on the server and client.


importing cElementTree fails with PTVS

Hi,
This may well not be a PTVS error, but I can't figure out what else it could be.
When executing my Django project from VS from visual studio 15, the command
from xml.etree import cElementTree

throws an exception. This is discussed here: https://pytools.codeplex.com/workitem/2077. Based on the number of upvotes and the related discussion, this seems to be pretty easy to reproduce and not specific to my project. I understand that PTVS can't figure out that the exception is actually caught down the road and signals it to the user. That's ok.
The thing is that
   from xml.etree import cElementTree

should not leave in the first place! cElementTree is part of the standard Python distro and it's definitely available in my environment. (I'm on python 2.7)
You will find [here ] (https://www.codeplex.com/Download/AttachmentDownload.ashx?ProjectName=pytools&WorkItemId=3048&FileAttachmentId=1479001)a simple bottle project to reproduce. It's just the bottle template, where I added the import commands in the file routes.py.
If the import is called from the global context (line 10 of routes.py), it will throw.
If I delay the import to a later phase, for example moving it inside the function home(), line 15 of routes.py, the import will be successful.
   def home():
      """Renders the home page."""
      # Loading cElementTree succeeds, if called here.
      from xml.etree import cElementTree

Would it be possible that PTVS or the VS debugger would interfere with the import process if the cElementtree is imported early when the project is launched?
cElementtree represents a significant performance boost versus it's pure Python sibling, would be nice to be able to use it in a PTVS environment.

The exception is raised as part of the import. It does not cause the import to fail, because it is also caught as part of the import. PTVS is not really interfering with the process here, it's just (improperly) reporting an exception that normally occurs under the hood. If you tell it to continue running once it has reported it, it should complete the import successfully.

That's right, the import works : the leave is internal. I have no problems using cElementTree.
Thanks for the quick answer!


Correct cell method 'method' and interval for UM fieldsfile/pp data

The cell methods produced by loading a pp or fieldsfile in iris do not have the correct intervals or, for some fields, the method.
By default, all intervals are 1 hour (from incorrectly picking up the lbtim value). Fields that are accumulations are always read as means.
This snippet produces useful cell methods for typical NWP data, but does not cover all use cases.
def lbproc_interval_correct(field, cube):
'calculates the correct interval for a cube/field'
tbound_diff = None
if cube.coords('time'):
if cube.coord('time').bounds is not None:
tbound_diff = cube.coord('time').bounds[0,1] - cube.coord('time').bounds[0,0]
tproc_name = None
if field.lbproc == 128:
    # need to determine if this field is a mean, or an accumulation!:
    cubename = trui.stashnum_to_cubename(field.lbuser[3], model_num=field.lbuser[6]).lower()
    if 'amount' in cubename and cube.units == 'kg m-2':
        tproc_name = 'accumulation'
        tproc_name_match = 'mean'
    else:
        tproc_name = 'mean'
        tproc_name_match = tproc_name
elif field.lbproc== 4096:
    tproc_name = 'minimum'
    tproc_name_match = tproc_name
elif field.lbproc == 8192:
    tproc_name = 'maximum'
    tproc_name_match = tproc_name

if tproc_name:
    if field.lbtim.ib == 2:
        if field.lbtim.ia == 0 or tbound_diff is None or tproc_name == 'accumulation':
            new_cellm = iris.coords.CellMethod(tproc_name, coords="time")
        else:
            new_cellm = iris.coords.CellMethod(tproc_name, coords="time", intervals='{0:.2f} hour'.format(tbound_diff))
    else:
        raise ValueError('expecting ib=2')
    # now which cell method does this replace (if any)
    new_icellm = -1
    for i_cellm, cellm in enumerate(cube.cell_methods):
        if cellm.method == tproc_name_match and cellm.coord_names == ('time',):
            new_icellm = i_cellm

    # now replace/append:
    out_cellm = []
    for i_cellm, cellm in enumerate(cube.cell_methods):
        if i_cellm == new_icellm:
            out_cellm.append(new_cellm)
        else:
            out_cellm.append(cellm)
    if new_cellm == -1:
        out_cellm.append(new_cellm)
return tuple(out_cellm)

@malcolmbrooks I had a look at the docs, but I could not find a way to distinguish between a time mean and an accumulation. Using the cube name and unit seems to me a very brittle solution.

lbproc
https://github.com/SciTools/iris/blob/master/lib/iris/fileformats/_pp_lbproc_pairs.py#L33

according to the UM docs F03 the line above should be  "Time mean field or accumulation"

lbtim:

LBTIM is coded as (100 * IA + 10 * IB + IC)
IA: time interval in hours between the individual fields from which the mean [or accumulation] was computed. This has a minimum value of 1 even for sampling frequencies < 1h
"Note: This is not the period that the mean/accumulation is calculated over (which is defined by T1 and T2 as described above), rather it is the frequency with which the data in that period is sampled." (UM docs F03)

I've come across the same problem - I have started coding a solution to the cell method solution and I will shortly make a branch. Glad I discovered this ticket as its saved me a job.

I've created a branch on my fork to hold my potential solution. I've not tested it yet, and there's probably still lots of improvements. Note that this will not fix the ambiguity between mean and accumulation - that is inherent in the pp format.  I guess we could make the ambiguity explicit though.

code is at https://github.com/nhsavage/iris/tree/cell_t

This is still important, but I need to check if the problem is still present in the latest releases


I2C examples

Hello,
Is there any available examples of how to use I2C for a contact sensor and led for example?
I had a look at the tempsensorI2C example but it's quite too far from what I need for me to adapt it to a contact sensor or a led device.
How many devices max can we implement in one instance of HomeSpan?
thanks

https://github.com/danilkorotkov/recuperator
i2c counter & lcd

thanks, it still looks quite complex to me... all I need is to add more gpio to my esp for simple devices, no fancy temperature or fan speed or screen, just contact sensors and led.
I have to wait for my i2c module to arrive from aliexpress now, I ordered a PCF8575 Module

It sounds like you are not trying to control an I2C LED or I2C Contact Sensor, but rather you have ordered a generic I2C pin extender that you wish to use for connecting a standard LED and Contact Sensor switch.  Since every pin extender is different (some use I2C, others use a multiplexer), HomeSpan does not have a generic library to control them.  However, they usually come with their own library that you can use without needing to know the details.  For example, the module you mention above is also sold by Adafruit and comes its own library that handles all the I2C calls for you.
Once you get the pin extender working generically, adding a contact sensor or LED depends on how the pin extender hardware works and what library calls you will need to use.  I recommend first creating a standalone non-HomeSpan sketch to test the pin-extender's library and make sure you can turn on/off an LED and read a contact sensor using the pin extender's methods.
Once that's done, adding to HomeSpan is quite easy.  Simply create a contact sensor service and an LED service (example 5 shows you how to create a working LED).  BUT...instead of turning on/off the LED by setting the LED pin high/low using digitalWrite(), you turn it on/off using whatever function/method calls your pin extender expects, as determined from the standalone sketch.
Regarding the maximum number of devices, HomeKit is supposed to support 150 Accessories per bridge device but in practice HomeSpan running on the ESP32 does not have sufficient memory to handle that many.  HomeSpan currently imposes an internal limit of 41 instances of SpanAccessory().

It sounds like you are not trying to control an I2C LED or I2C Contact Sensor, but rather you have ordered a generic I2C pin extender that you wish to use for connecting a standard LED and Contact Sensor switch.

yes that's correct and thanks for the advice, I will try to use that outside of HomeSpan first and see how it works

Regarding the maximum number of devices, HomeKit is supposed to support 150 Accessories per bridge device but in practice HomeSpan running on the ESP32 does not have sufficient memory to handle that many. HomeSpan currently imposes an internal limit of 41 instances of SpanAccessory().

thanks, that's good to know, currently having two ESP32 running HomeSpan with 13 accessories each, some accessories using 3 or more gpio. The on board gpio are pretty much maxed out and I need to add more, that's why I need more gpio and hence the idea of using I2C


how about forex trading?

Is there a plan to follow up forex?

Would you like to check: https://github.com/AI4Finance-LLC/NeoFinRL
We are considering FOREX there, but not with demo codes yet.


RR-496 - Disabled in dev now that we've proved service to service API calls

This PR disables the feature toggle now that we've proved service to service API calls:

I realise I've just duplicated this PR. However we can keep this one for when we need it (and also set the replica count back to 2).

This has been superseded by PRs that also reset the replica count.


Selecting date that also appears in previous month's outDates highlights outdate instead tapped cell

I'm using JTAppleCalendar in an iPad app and I have a row of calendars displayed that can be swiped through, so generally three months are visible at once. If I select, say, December 1st, but December 1st also shows up as an outdate at the end of November, the november outdate will be highlighted. Any thoughts?

which version of the library are you using?

Yeah, selecting both is what I would expect, however it doesn't appear that December 1st proper is being selected, only the December 1st outdate.

So, it works as expected if I have allowsMultipleSelection = true. I really only want them to be able to have one date selected, so i just wrote some code to deselect the previous date when they pick a new one, works well enough. This library is fantastic, thanks for all your hard work!
One more question actually:
I'm trying to make the "in focus" calendar be in the center of the screen. So, December in the above image. I'm using :
calendar.scrollToHeaderForDate(currentDate, triggerScrollToDateDelegate: false, withAnimation: true, extraAddedOffset: -offset, completionHandler: nil)
to calculate and scroll the month into the center when they pick a date and that works great, however, when swiping it throws it off again. Ideally i'd like to page through the months with the month always being the center of the three visible months.  I'm using
calendar.scrollingMode = .stopAtEach(customInterval: offset)
but it's always off even though the calculation is right. Any thoughts how best to achieve this effect?
Thanks again so much for your help :)

hmm. that sounds like a bug to me.
With single select this should work as expected.
Can you join chat here? https://gitter.im/patchthecode/JTAppleCalendar
I need to know what version of the library you are using. Once I know the version I can let you know if my master-branch code already has the fix for it (will be releasing master-branch in a couple days).
About the 2nd Question, Let me think about it for a couple mins.

version 7.1.0 released.
closing this issue.
will continue to look  into the other update for centering the months


Support standardization process for upoming releases

[ ] STS interface
[ ] matching of scopes to credentials
[ ] review existing stadards regarding required changes /updates
[ ] Existing Standards: 0013, 0014, 0016, 0017, 0049, 0050, 0051

[ ] Review for 24.03: 0016, 0050, 0051 regarding consistency of EDC-policy expressions and credentialtype (important: policy scopes will be matched to VCs for VP generation in the VP-flow. See also: https://github.com/eclipse-tractusx/ssi-docu/blob/main/docs/architecture/policy_credentialtype_scope.md
[ ] possible standards for 24.05: scope matching, presentation flow,
[ ] 0051 possibly obsolete in 24.05 when summary credential is not needed anymore

@borisrizov-zf tag me please


Fix typo

Not sure whether this should actually read appended or prepended. Or maybe it is to make sure the chain ends in a pep? 🤷♂

It should read "prepended"; see e.g. the documentation for ApplicationInfoBuilder::push_next.

Thx -> #208


Move component browser icons to a separate crate

This task is automatically imported from the old Task Issue Board and it was originally created by Ilya Bogdanov.
Original issue is here.

We want to define all the icons used in the component browser in a single crate for future performance optimizations. ide_view_component_list_panel_icons crate is a perfect place for them.
This task has a serious blocker.
Blockers:
#183814161 blocked

In GUI2, we keep all icons in SVG file.


t2 update needs visual indicator

More on that to come

There is now a progress bar

@rwaldron I think this is only half complete because there is no progress bar for the upload progress. I have a WIP PR to do that but it only works over USB for the issue I described in that PR.

Dread. I've been avoiding that PR because I don't like the approach at all, I figured that would all shake out in time though ;)

I agree and I welcome any new suggestions on how to build it! The one I took seems to be impossible without artificially limited the throughput.