Rio Buildkit not working

Describe the bug
The image is not building and I got the message
+ my-project-cicd my-app-cicd-v0794bm-62004-4c11d-pod-fd25a2 › step-build-and-push
+ my-project-cicd my-app-cicd-v0794bm-62004-4c11d-pod-fd25a2 › step-git-source-source-fs7mq
my-app-cicd-v0794bm-62004-4c11d-pod-fd25a2 step-git-source-source-fs7mq {"level":"warn","ts":1587133986.679937,"logger":"fallback-logger","caller":"logging/config.go:69","msg":"Fetch GitHub commit ID from kodata failed: \"ref: refs/heads/master\" is not a valid GitHub commit ID"}
my-app-cicd-v0794bm-62004-4c11d-pod-fd25a2 step-git-source-source-fs7mq {"level":"info","ts":1587133987.196259,"logger":"fallback-logger","caller":"git/git.go:103","msg":"Successfully cloned ssh://user@my.gitlab:my-project/my-app.git @ 2183508b9dfc47f71b9ccde82256b44b7b6f3bb9 in path /workspace/source"}
my-app-cicd-v0794bm-62004-4c11d-pod-fd25a2 step-build-and-push error: failed to get status: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: error while dialing: dial tcp <IP_ADDRESS>:8080: i/o timeout"

The ip <IP_ADDRESS>:8080 is Buildkit, and from the node, I can telnet it
telnet <IP_ADDRESS> 8080
Trying <IP_ADDRESS>...
Connected to <IP_ADDRESS>.
Escape character is '^]'.

To Reproduce
I am not able to reply to that question. My cluster was working fine, then I observe that all linkerd pods were not working anymore (details here: https://github.com/rancher/rio/issues/1028 and https://github.com/rancher/rio/issues/1029) so I decided to uninstall and reinstall rio. It worked fine and now all containers are ok.
Expected behavior
Image should be build and push to registry. It was working before I uninstall and reinstall
Kubernetes version & type (GKE, on-prem): kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T21:03:42Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T20:55:23Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}

Type:
Rio version: rio info
Rio Version: v0.7.0 (4afd4901)
Rio CLI Version: v0.7.0 (4afd4901)
Cluster Domain: xxx.on-rio.io
Cluster Domain IPs: <IP_ADDRESS>
System Namespace: rio-system
Wildcard certificates: xxx.on-rio.io(true)

Additional context
kubectl get service --all-namespaces
output:
NAMESPACE           NAME                                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                        AGE
rio-system          buildkitd                                  ClusterIP      <IP_ADDRESS>      <none>        8080/TCP,80/TCP                                160m
rio-system          buildkitd-v0                               ClusterIP      <IP_ADDRESS>    <none>        8080/TCP,80/TCP                                160m

Please, give me a clue to solve this problem

So after some investigations, here are my conclusions.

The continuous integration is stucked at the step step-build-and-push error because the pod can't connect to buildkit pod (transport: error while dialing: dial tcp <IP_ADDRESS>:8080: i/o timeout)
From one node of the k8s cluster, I can telnet the buildkit on 8080 so there is no problem on buildkit side: telnet <IP_ADDRESS> 8080

Trying <IP_ADDRESS>...
Connected to <IP_ADDRESS>.
Escape character is '^]'.

This is a connectivity problem between the taskrun and the buildkit
3.1. It can be a connectivity problem on the taskrun side, because this log:

linkerd-proxy-injector-888fbb9f6-ln885 proxy-injector time="2020-04-18T07:33:55Z" level=warning msg="couldn't retrieve parent object my-project-cicd-taskrun-my-app-cicd-v0qt9fd-62004-1ab0c; error: rpc error: code = Unimplemented desc = unimplemented resource type: taskrun"
linkerd-proxy-injector-888fbb9f6-ln885 proxy-injector time="2020-04-18T07:33:55Z" level=info msg="skipped pod/my-app-cicd-v0qt9fd-62004-1ab0c-pod-53fd4c: neither the namespace nor the pod have the annotation \"linkerd.io/inject:enabled\""

I tried to add the annotation "linkerd.io/inject:enabled" on the namespace my-project-cicd without success, I got the same result.
3.2. It can be a connectivity problem on the buildkit side
I tried to telnet <IP_ADDRESS> 8080 from a pod of another namespace, but it is failing
At that point, I am lost because I don't know exactly what is the purpose of each part of Rio pods and Rancher system.
Can someone guide me please ?

By adding the annotation linkerd.io/inject: enabled to the namespace my-project-cicd, I have got a different result:
+ my-project-cicd my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d › linkerd-proxy
+ my-project-cicd my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d › step-build-and-push
+ my-project-cicd my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d › step-git-source-source-9hvjn
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy time="2020-04-18T08:14:23Z" level=info msg="running version stable-2.6.1"
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002185s] linkerd2_proxy Admin interface on <IP_ADDRESS>:4191
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002206s] linkerd2_proxy Inbound interface on <IP_ADDRESS>:4143
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002211s] linkerd2_proxy Outbound interface on <IP_ADDRESS>:4140
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002214s] linkerd2_proxy Tap interface on <IP_ADDRESS>:4190
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002217s] linkerd2_proxy Local identity is my-app-cicd-v0mhrdm-62004-1ab0c.my-project-cicd.serviceaccount.identity.linkerd.cluster.local
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002221s] linkerd2_proxy Identity verified via linkerd-identity.linkerd.svc.cluster.local:8080 (linkerd-identity.linkerd.serviceaccount.identity.linkerd.cluster.local)
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy INFO [     0.002225s] linkerd2_proxy Destinations resolved via linkerd-dst.linkerd.svc.cluster.local:8086 (linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local)
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy ERR! [     3.003656s] linkerd2_proxy_identity::certify Failed to certify identity: grpc-status: Unknown, grpc-message: "the request could not be dispatched in a timely fashion"
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy ERR! [    16.005634s] linkerd2_proxy_identity::certify Failed to certify identity: grpc-status: Unknown, grpc-message: "the request could not be dispatched in a timely fashion"
my-app-cicd-v0mhrdm-62004-1ab0c-pod-83cc1d linkerd-proxy ERR! [    29.007782s] linkerd2_proxy_identity::certify Failed to certify identity: grpc-status: Unknown, grpc-message: "the request could not be dispatched in a timely fashion"

So I uninstalled, checked that no ressource was missed, reinstalled with the last Rio version (v0.7.1-rc1).
Everything worked find, no problem during install, all pods are on.
BUT the command rio run -p 80:8080 https://github.com/rancher/rio-demo returns
tender-raman             https://tender-raman-v0-default.5g85ga.on-rio.io:31737   80:8080   1         100%      6 minutes ago   tender-raman-v0xjrg2: not ready; ImageReady: "step-build-and-push" exited with code 1 (image: "docker-pullable://moby/buildkit@sha256:0cf100454dd25079ce79b7417add2ae7ba55c1d4dfa512fd26e7259eac696732"); for logs run: kubectl -n default logs tender-raman-v0xjrg2-ee709-4e40c-pod-61998b -c step-build-and-push(Failed); tender-raman-v0xjrg2 build failed: "step-build-and-push" exited with code 1 (image: "docker-pullable://moby/buildkit@sha256:0cf100454dd25079ce79b7417add2ae7ba55c1d4dfa512fd26e7259eac696732"); for logs run: kubectl -n default logs tender-raman-v0xjrg2-ee709-4e40c-pod-61998b -c step-build-and-push

So I am stucked on step-build-and-push with the error kubectl -n default logs tender-raman-v0xjrg2-ee709-4e40c-pod-61998b -c step-build-and-push:
error: failed to get status: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: error while dialing: dial tcp <IP_ADDRESS>:8080: i/o timeout"

kubectl get services --all-namespaces | grep <IP_ADDRESS> returns:
``rio-system          buildkitd                                  ClusterIP      <IP_ADDRESS>           8080/TCP,80/TCP                                18m
`telnet <IP_ADDRESS> 8080` returns

Trying <IP_ADDRESS>...
Connected to <IP_ADDRESS>.
Escape character is '^]'.
Please help me to understand what is going on

Finally, I find the solution to develop my own CICD scripts, waiting for a stable release.
Anyway, thanks for your help


Duplicate audio fixed, but Ads no longer skipping with 5.6.

5.6
Ads are not skipping, just playing as normal.
Chrome Version 125.0.6422.142 (Official Build) (64-bit)

5.6
Ads are not skipping, just playing as normal.
Chrome Version 125.0.6422.142 (Official Build) (64-bit)

I've experienced the same problem.
v5.6
Win7
Firefox v115.11.0esr (64-bit

try downgrade to 3.5 https://github.com/TheRealJoelmatic/RemoveAdblockThing/releases/tag/v3.3 it worked for me


feature: incremental restoration for disaster recovery

Goal
To ensure DR on another datacenter works well, we're planning to have a standby volume in the recovery region, receiving incremental backup from the backup store, and ready to be deployed.
It's easier than putting an async replication across the data center.
Also, it will require a mode for the engine to not enable frontend, but allow the command to restore the backups in an incremental way.
User experience

Select BackupVolume page
In the BackupVolume page, select Create Disaster Recovery volume, and specify how many replicas and frontend as usual.
The volume would be created and attached, but the frontend won't be enabled. The volume is now in standby mode.
Longhorn manager will poll backup store for certain backup volume every a few minutes. If the latest backup hasn't been restored into the volume, the manager will initiate the restoration process.
4.1. There would be only one restoration process per volume at any given time.
At any given time, the user can decide to "activate" (or "promote") the volume. Then the volume will finish any on-going restoration, then change its state to a normal volume. Then the user can use it for any workload in this cluster.
5.1. We can include an option to check for the latest backup for one last time before activation.
5.2. Users can also ask stand-by volume to check the latest backup manually

Backend merged.

UI part:

Add a dropdown in the BackupVolume page (not backup page), which enables the user to create a standby volume using the latest backup from this backup volume. User will need to input the volume name, replica size etc like restoring from a backup.
We need to show one more icon next to the volume state, indicates it's a standby volume instead of a normal volume. User needs to manually attach the volume to a node for it to start monitoring the backup store and automatically restore the latest backup for the volume. After the standby volume was attached, there will be no frontend and the user cannot access it.
One more action will be enabled for standby volume once it's attached. It's called activate. It transforms the standby volume into a normal volume and automatically detaches it. Then the user can use it like a normal volume.

@shuo-wu can you provide a few API examples for the above actions/status?

Standby volume creation is similar to normal volume creation but with some specific input fields requirements:

Boolean field standby should be true.
String field fromBackup should be set with a valid backup url.
String field frontend should be empty.

Standby volume starts to do restoration only after it is attached to one node.
If a volume is standby volume, the following actions are disallowed:

Create/Revert/Delete snapshot
Create backup
Create PVC/PV

Using volume activate action to change standby volume to a normal volume:

Input:
1. String field frontend should be set. "blockdev" or "iscsi"
Status
1. Make sure standby field is true.
2. Make sure volume["controllers"][0]["lastRestoredBackup"] == volume["lastBackup"]

After activating volume, volume should be detaching or detached state.


Added semaphore for bounding parallelism in bigtable example

It's just an example program. It's not meant to be production-ready.


Optimise the queries used by the endpoints to obtain reasonable performance

With focus on the integration layer for OONI Explorer.

Since:
https://github.com/ooni/api/pull/66
https://github.com/ooni/api/pull/70
https://github.com/ooni/api/pull/74
https://github.com/ooni/api/pull/63
We are capturing queries which timeout and recording them inside of sentry.
The work of optimising queries is not necessarily going to ever be fully completed (we don't know all the possible future queries), but at least we know have the exceptions logged and measured so we can do more passes at fixing them.
I have already done a little bit of optimisation of some queries and some tables for OONI Explorer and will do more of this once I have moved the API onto the production.


[Device Support Request] Earu EAYCBM-Z

Device: Earu EAYCBM-Z 32A
bought at: https://www.aliexpress.com/i/1005004894129906.html
Device didn't expose any attribute nor switch in ZHA integration. Tried some custom quirks for din rail power meters TS0601 but none is working. :(

Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0051",
      "in_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0xef00"
      ],
      "out_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE204_davzgqq0",
  "model": "TS0601",
  "class": "zigpy.device.Device"
}

Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2022.12.9",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.7",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Prague",
    "os_name": "Linux",
    "os_version": "5.15.80",
    "supervisor": "2022.12.1",
    "host_os": "Home Assistant OS 9.4",
    "docker_version": "20.10.19",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "nodered": {
      "version": "1.1.2",
      "requirements": []
    },
    "weatherbit": {
      "version": "1.0.17",
      "requirements": [
        "pyweatherbitdata==1.0.15"
      ]
    },
    "ble_monitor": {
      "version": "11.2.0",
      "requirements": [
        "pycryptodomex>=3.14.1",
        "janus>=1.0.0",
        "aioblescan>=0.2.13",
        "btsocket>=0.2.0",
        "pyric>=<IP_ADDRESS>"
      ]
    },
    "remote_homeassistant": {
      "version": "3.6",
      "requirements": []
    },
    "tuya": {
      "version": "1.6.0+git20211001",
      "requirements": [
        "tuya-iot-py-sdk==0.6.3"
      ]
    },
    "hacs": {
      "version": "1.29.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "pyscript": {
      "version": "1.3.3",
      "requirements": [
        "croniter==1.3.4",
        "watchdog==2.1.6"
      ]
    },
    "met_next_6_hours_forecast": {
      "version": "1.0.3",
      "requirements": []
    },
    "moonraker": {
      "version": "2021.10.0",
      "requirements": [
        "moonraker-api==2.0.4"
      ]
    },
    "localtuya": {
      "version": "4.1.1",
      "requirements": []
    },
    "gree": {
      "version": "2.3.1",
      "requirements": [
        "pycryptodome"
      ]
    },
    "arpscan_tracker": {
      "version": "1.0.6",
      "requirements": []
    },
    "zha_toolkit": {
      "version": "v0.8.28",
      "requirements": [
        "packaging>=20.8",
        "pytz"
      ]
    },
    "garbage_collection": {
      "version": "4.10.2",
      "requirements": [
        "python-dateutil>=2.8.2"
      ]
    },
    "xiaomi_miot": {
      "version": "0.7.4",
      "requirements": [
        "construct==2.10.56",
        "python-miio>=0.5.6",
        "micloud>=0.3"
      ]
    },
    "xiaomi_cloud_map_extractor": {
      "version": "v2.2.0",
      "requirements": [
        "pillow",
        "pybase64",
        "python-miio",
        "requests",
        "pycryptodome"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "requirements": [
      "bellows==0.34.5",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.89",
      "zigpy-deconz==0.19.2",
      "zigpy==0.52.3",
      "zigpy-xbee==0.16.2",
      "zigpy-zigate==0.10.3",
      "zigpy-znp==0.9.2"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      }
    ],
    "dependencies": [
      "file_upload"
    ],
    "after_dependencies": [
      "onboarding",
      "usb",
      "zeroconf"
    ],
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp"
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 6209,
    "manufacturer": "_TZE204_davzgqq0",
    "model": "TS0601",
    "name": "_TZE204_davzgqq0 TS0601",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "manufacturer_code": 4098,
    "power_source": "Mains",
    "lqi": 92,
    "rssi": -77,
    "last_seen": "2023-01-03T18:23:03",
    "available": true,
    "device_type": "Router",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": 260,
          "device_type": "0x0051",
          "in_clusters": [
            "0x0000",
            "0x0004",
            "0x0005",
            "0xef00"
          ],
          "out_clusters": [
            "0x000a",
            "0x0019"
          ]
        }
      }
    },
    "active_coordinator": false,
    "entities": [],
    "neighbors": [
      {
        "device_type": "Coordinator",
        "rx_on_when_idle": "On",
        "relationship": "Parent",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x0000",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "108"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x2214",
        "permit_joining": "Unknown",
        "depth": "15",
        "lqi": "226"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x2A97",
        "permit_joining": "Unknown",
        "depth": "15",
        "lqi": "255"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x76E5",
        "permit_joining": "Unknown",
        "depth": "15",
        "lqi": "73"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x8441",
        "permit_joining": "Unknown",
        "depth": "15",
        "lqi": "89"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xCA9B",
        "permit_joining": "Unknown",
        "depth": "15",
        "lqi": "255"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xEC35",
        "permit_joining": "Unknown",
        "depth": "15",
        "lqi": "202"
      },
      {
        "device_type": "EndDevice",
        "rx_on_when_idle": "Off",
        "relationship": "Child",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x9A11",
        "permit_joining": "NotAccepting",
        "depth": "2",
        "lqi": "152"
      }
    ],
    "routes": [
      {
        "dest_nwk": "0x0000",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": true,
        "route_record_required": true,
        "next_hop": "0x0000"
      },
      {
        "dest_nwk": "0x2214",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0x2214"
      },
      {
        "dest_nwk": "0x76E5",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xEC35"
      },
      {
        "dest_nwk": "0x8441",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xEC35"
      },
      {
        "dest_nwk": "0xCA9B",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xCA9B"
      },
      {
        "dest_nwk": "0x9808",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xEC35"
      },
      {
        "dest_nwk": "0x0443",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xEC35"
      },
      {
        "dest_nwk": "0x2E70",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xEC35"
      },
      {
        "dest_nwk": "0xEC35",
        "route_status": "Active",
        "memory_constrained": false,
        "many_to_one": false,
        "route_record_required": false,
        "next_hop": "0xEC35"
      }
    ],
    "endpoint_names": [
      {
        "name": "SMART_PLUG"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "fcd037d74543544455a295c549a2ac7f",
    "area_id": "chodba",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "SMART_PLUG",
          "id": 81
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0001": {
                "attribute_name": "app_version",
                "value": 70
              },
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "_TZE204_davzgqq0"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "TS0601"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0xef00": {
            "endpoint_attribute": null,
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Might not work, but I guess it's worth a try (put this in a file and try it as a custom quirk):

Possible quirk code

"""Quirk for _TZE204_davzgqq0 TS0601."""

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
    Basic,
    Groups,
    Ota,
    Scenes,
    Time,

)
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.tuya import TuyaSwitch
from zhaquirks.tuya.mcu import (
    MoesSwitchManufCluster,
    TuyaOnOff,
    TuyaOnOffManufCluster,
)

class Tze204Davzgqq0Ts0601(CustomDevice):
    """_Tze204_Davzgqq0 TS0601 custom device implementation."""

    signature = {
        MODELS_INFO: [("_TZE204_davzgqq0", "TS0601")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaOnOffManufCluster.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Time.cluster_id,
                    Ota.cluster_id,
                ]
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    MoesSwitchManufCluster,
                    TuyaOnOff,
                ],
                OUTPUT_CLUSTERS: [
                    Time.cluster_id,
                    Ota.cluster_id,
                ]
            }
        }
    }

It's unfortunately not working. Just exposes switch which is still in on state in HA regardless actual state of device and clicking it does nothing.

Hmm. Try replacing both occurrences of TuyaOnOff with TuyaOnOffNM and see if that makes a difference.
(One is in the imports and the other one is in replacement/ENDPOINTS/1/INPUT_CLUSTERS)

Still the same.

"""Quirk for _TZE204_davzgqq0 TS0601."""

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
    Basic,
    Groups,
    Ota,
    Scenes,
    Time,

)
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.tuya import TuyaSwitch
from zhaquirks.tuya.mcu import (
    MoesSwitchManufCluster,
    TuyaOnOffNM,
    TuyaOnOffManufCluster,
)

class Tze204Davzgqq0Ts0601(CustomDevice):
    """_Tze204_Davzgqq0 TS0601 custom device implementation."""

    signature = {
        MODELS_INFO: [("_TZE204_davzgqq0", "TS0601")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaOnOffManufCluster.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Time.cluster_id,
                    Ota.cluster_id,
                ]
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    MoesSwitchManufCluster,
                    TuyaOnOffNM,
                ],
                OUTPUT_CLUSTERS: [
                    Time.cluster_id,
                    Ota.cluster_id,
                ]
            }
        }
    }

Try using the EnchantedDevice device class:
https://github.com/zigpy/zha-device-handlers/blob/22968954cacaff4fc2b00e02ca1bd5622f637393/zhaquirks/tuya/mcu/__init__.py#L694

I hope I used that EnchantedDevice class well - code below. But it's still not working.

Quirk code
"""Quirk for _TZE204_davzgqq0 TS0601."""
import asyncio

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
    Basic,
    Groups,
    Ota,
    Scenes,
    Time,

)
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.tuya import TuyaSwitch
from zhaquirks.tuya.mcu import (
    MoesSwitchManufCluster,
    TuyaOnOffNM,
    TuyaOnOffManufCluster,
)

class EnchantedDevice(CustomDevice):
    """Class for enchanted Tuya devices which needs to be unlocked by casting a 'spell'."""

    def __init__(self, *args, **kwargs):
        """Initialize with task."""
        super().__init__(*args, **kwargs)
        self._init_device_task = asyncio.create_task(self.spell())

    async def spell(self) -> None:
        """Initialize device so that all endpoints become available."""
        attr_to_read = [4, 0, 1, 5, 7, 0xFFFE]
        basic_cluster = self.endpoints[1].in_clusters[0]
        await basic_cluster.read_attributes(attr_to_read)

class Tze204Davzgqq0Ts0601(EnchantedDevice):
    """_Tze204_Davzgqq0 TS0601 custom device implementation."""

    signature = {
        MODELS_INFO: [("_TZE204_davzgqq0", "TS0601")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaOnOffManufCluster.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Time.cluster_id,
                    Ota.cluster_id,
                ]
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    MoesSwitchManufCluster,
                    TuyaOnOffNM,
                ],
                OUTPUT_CLUSTERS: [
                    Time.cluster_id,
                    Ota.cluster_id,
                ]
            }
        }
    }

You can importing the  EnchantedDevice class and you dont need putting the code in your quirk.
Meny new devices need it for working OK and also changing device cluster and endpoints functions.
If you have good debug logging set you can see if the system is sending the attribute reads to the device (is only working then device is new joining).
I dont  have the knowledge of coding then im not one code warier ;-((

I have logging set up like this. Will be helpful for anyone of you when I upload home-assistant.log here?

configuration.yaml
logger:
  default: info
  logs:
    homeassistant.core: debug
    homeassistant.components.zha: debug
    bellows.zigbee.application: debug
    bellows.ezsp: debug
    zigpy: debug
    zigpy_deconz.zigbee.application: debug
    zigpy_deconz.api: debug
    zigpy_xbee.zigbee.application: debug
    zigpy_xbee.api: debug
    zigpy_zigate: debug
    zigpy_znp: debug
    zhaquirks: debug

Zigbee2MQTT has similar request: https://github.com/Koenkk/zigbee2mqtt/issues/16118
They found out datapoints but I don't know how to translate them into ZHA quirk code. Can anyone help me with that?
tuyaDatapoints: [
          [1, 'energy', tuya.valueConverter.divideBy100],
          [6, null, tuya.valueConverter.phaseVariant2],
          [16, 'state', tuya.valueConverter.onOff],
          // {"type":"Buffer","data":[4,1,0,30]} - leakage enabled
          // {"type":"Buffer","data":[4,0,0,30]} - leakage disabled
          [17, 'leakage_threshold', valueConverter.thresholdVariant1({4: 4}, {'ON': 1, 'OFF': 0})],
          //[17, 'leakage_threshold', valueConverter.threshold2],
          // {"type":"Buffer","data":[1,1,0,30,3,0,0,250,4,0,0,150]} - overcurr enabled 30A | overvolt enabled 250V | undervolt enabled 150V
          // {"type":"Buffer","data":[1,0,0,21,3,0,0,250,4,0,0,150]} - overcurr disabled 21A | overvolt disabled 250V | undervolt disabled 150V
          [18, 'thresholds', valueConverter.thresholdVariant2(['overcurrent', 'overvoltage', 'undervoltage'], {1: 1, 3: 3, 4: 4}, {'ON': 1, 'OFF': 0})],
          //[18, 'overcurrent_threshold', valueConverter.thresholdVariant2([], {1: 1}, {'ON': 1, 'OFF': 0})],
          //[18, 'overvoltage_threshold', valueConverter.thresholdVariant2([], {3: 3}, {'ON': 1, 'OFF': 0})],
          //[18, 'undervoltage_threshold', valueConverter.thresholdVariant2([], {4: 4}, {'ON': 1, 'OFF': 0})],
          [19, 'breaker_id', tuya.valueConverter.raw],
      ],

Add support pleaze.

Are there those who do not use the device in ZHA, but can integrate it into ZHA ?

Hi, I made a working custom quick using attributes from Hiking Power Meter
data about voltage, current and power is transmitted in the attribute 0x0006.
---v---------mA---------W---
[08 98] 00 [1A A2] 00 [05 DC]
v/10=RMS voltage
mA = RMS current
W = Active power
The status of the switch in the attribute 0x0110
Total Energy Delivered kWh in attr 0x0201
ts0601_din_power.py.txt

Is there any way to set last state after power outage?

@XpycTee Thank you very much! Your quirk is working great.
@lukyrys I'm thinking about it right now. Maybe some HA automation?

@pkejval I don't think it would be good because if these devices are connected to the start of power line and there is a power outage, what will turn it on. I think the version with wifi and that application can turn it on in the device settings. i dont know if this is available if is zigbee controlled by tuya maybe yes

Zigbee standard is having attribute that can being set for it but in "normal tuya zigbee devices" is not  zigbee standard but we is adding it  to then on the cluster.
tuya MCU devices is completely different then its not using Zigbee standard at all only piping commands thru Ziogbee so all must being implanted with  DPs for it  shall working OK.

Hi All,
Has anyone managed to enable the OnOff function to be able to set the status upon reboot?

@agnus777 I managed to make ON/OFF working with this quirk in /config/zha_quirks/ts0601_din_power.py
Then turn it ON in Automations if is OFF.
"""Tuya Din Power Meter."""
from zigpy.profiles import zha
import zigpy.types as t
from zigpy.zcl.clusters.general import Basic, Groups, Ota, Scenes, Time
from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement
from zigpy.zcl.clusters.smartenergy import Metering

from zhaquirks import Bus, LocalDataCluster
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.tuya import TuyaManufClusterAttributes, TuyaOnOff, TuyaSwitch

TUYA_TOTAL_ENERGY_ATTR = 0x0211
TUYA_CURRENT_ATTR = 0x0212
TUYA_POWER_ATTR = 0x0213
TUYA_VOLTAGE_ATTR = 0x0214
TUYA_DIN_SWITCH_ATTR = 0x0101

SWITCH_EVENT = "switch_event"

"""Hiking Power Meter Attributes"""
HIKING_DIN_SWITCH_ATTR = 0x0110
HIKING_TOTAL_ENERGY_DELIVERED_ATTR = 0x0201
HIKING_TOTAL_ENERGY_RECEIVED_ATTR = 0x0266
HIKING_VOLTAGE_CURRENT_ATTR = 0x0006
HIKING_POWER_ATTR = 0x0267
HIKING_FREQUENCY_ATTR = 0x0269
HIKING_POWER_FACTOR_ATTR = 0x026F
HIKING_TOTAL_REACTIVE_ATTR = 0x026D
HIKING_REACTIVE_POWER_ATTR = 0x026E

"""Earu Power Meter Attributes"""
EARU_TOTAL_ENERGY_DELIVERED_ATTR = 0x0201
EARU_VOLTAGE_CURRENT_POWER_ATTR = 0x0006
EARU_DIN_SWITCH_ATTR = 0x0110

class TuyaManufClusterDinPower(TuyaManufClusterAttributes):
    """Manufacturer Specific Cluster of the Tuya Power Meter device."""

    attributes = {
        TUYA_TOTAL_ENERGY_ATTR: ("energy", t.uint32_t, True),
        TUYA_CURRENT_ATTR: ("current", t.int16s, True),
        TUYA_POWER_ATTR: ("power", t.uint16_t, True),
        TUYA_VOLTAGE_ATTR: ("voltage", t.uint16_t, True),
        TUYA_DIN_SWITCH_ATTR: ("switch", t.uint8_t, True),
    }

    def _update_attribute(self, attrid, value):
        super()._update_attribute(attrid, value)
        if attrid == TUYA_TOTAL_ENERGY_ATTR:
            self.endpoint.smartenergy_metering.energy_deliver_reported(value / 100)
        elif attrid == TUYA_CURRENT_ATTR:
            self.endpoint.electrical_measurement.current_reported(value)
        elif attrid == TUYA_POWER_ATTR:
            self.endpoint.electrical_measurement.power_reported(value / 10)
        elif attrid == TUYA_VOLTAGE_ATTR:
            self.endpoint.electrical_measurement.voltage_reported(value / 10)
        elif attrid == TUYA_DIN_SWITCH_ATTR:
            self.endpoint.device.switch_bus.listener_event(
                SWITCH_EVENT, self.endpoint.endpoint_id, value
            )

class EaruManufClusterDinPower(TuyaManufClusterAttributes):
    """Manufacturer Specific Cluster of the Tuya Power Meter device."""

    attributes = {
        EARU_TOTAL_ENERGY_DELIVERED_ATTR: ("energy_delivered", t.uint16_t, True),
        EARU_VOLTAGE_CURRENT_POWER_ATTR: ("voltage_power", t.uint64_t, True),
        EARU_DIN_SWITCH_ATTR: ("switch", t.uint8_t, True),

    }

    def _update_attribute(self, attrid, value):
        super()._update_attribute(attrid, value)
        if attrid == EARU_DIN_SWITCH_ATTR:
            self.endpoint.device.switch_bus.listener_event(SWITCH_EVENT, 16, value)
        elif attrid == EARU_TOTAL_ENERGY_DELIVERED_ATTR:
            self.endpoint.smartenergy_metering.energy_deliver_reported(value / 100)
        elif attrid == EARU_VOLTAGE_CURRENT_POWER_ATTR:
            self.endpoint.electrical_measurement.voltage_reported((value>>48 & 0xffff)/10)
            self.endpoint.electrical_measurement.current_reported((value>>24 & 0xffff))
            self.endpoint.electrical_measurement.power_reported((value & 0xffff))

class TuyaPowerMeasurement(LocalDataCluster, ElectricalMeasurement):
    """Custom class for power, voltage and current measurement."""

    cluster_id = ElectricalMeasurement.cluster_id

    POWER_ID = 0x050B
    VOLTAGE_ID = 0x0505
    CURRENT_ID = 0x0508
    REACTIVE_POWER_ID = 0x050E
    AC_FREQUENCY_ID = 0x0300
    TOTAL_REACTIVE_POWER_ID = 0x0305
    POWER_FACTOR_ID = 0x0510

    AC_CURRENT_MULTIPLIER = 0x0602
    AC_CURRENT_DIVISOR = 0x0603
    AC_FREQUENCY_MULTIPLIER = 0x0400
    AC_FREQUENCY_DIVISOR = 0x0401

    _CONSTANT_ATTRIBUTES = {
        AC_CURRENT_MULTIPLIER: 1,
        AC_CURRENT_DIVISOR: 1000,
        AC_FREQUENCY_MULTIPLIER: 1,
        AC_FREQUENCY_DIVISOR: 100,
    }

    def voltage_reported(self, value):
        """Voltage reported."""
        self._update_attribute(self.VOLTAGE_ID, value)

    def power_reported(self, value):
        """Power reported."""
        self._update_attribute(self.POWER_ID, value)

    def power_factor_reported(self, value):
        """Power Factor reported."""
        self._update_attribute(self.POWER_FACTOR_ID, value)

    def reactive_power_reported(self, value):
        """Reactive Power reported."""
        self._update_attribute(self.REACTIVE_POWER_ID, value)

    def current_reported(self, value):
        """Ampers reported."""
        self._update_attribute(self.CURRENT_ID, value)

    def frequency_reported(self, value):
        """AC Frequency reported."""
        self._update_attribute(self.AC_FREQUENCY_ID, value)

    def reactive_energy_reported(self, value):
        """Summation Reactive Energy reported."""
        self._update_attribute(self.TOTAL_REACTIVE_POWER_ID, value)

class TuyaElectricalMeasurement(LocalDataCluster, Metering):
    """Custom class for total energy measurement."""

    cluster_id = Metering.cluster_id
    CURRENT_DELIVERED_ID = 0x0000
    CURRENT_RECEIVED_ID = 0x0001
    POWER_WATT = 0x0000

    """Setting unit of measurement."""
    _CONSTANT_ATTRIBUTES = {0x0300: POWER_WATT}

    def energy_deliver_reported(self, value):
        """Summation Energy Deliver reported."""
        self._update_attribute(self.CURRENT_DELIVERED_ID, value)

    def energy_receive_reported(self, value):
        """Summation Energy Receive reported."""
        self._update_attribute(self.CURRENT_RECEIVED_ID, value)

class HikingManufClusterDinPower(TuyaManufClusterAttributes):
    """Manufacturer Specific Cluster of the Hiking Power Meter device."""

    attributes = {
        HIKING_DIN_SWITCH_ATTR: ("switch", t.uint8_t, True),
        HIKING_TOTAL_ENERGY_DELIVERED_ATTR: ("energy_delivered", t.uint16_t, True),
        HIKING_TOTAL_ENERGY_RECEIVED_ATTR: ("energy_received", t.uint16_t, True),
        HIKING_VOLTAGE_CURRENT_ATTR: ("voltage_current", t.uint32_t, True),
        HIKING_POWER_ATTR: ("power", t.uint16_t, True),
        HIKING_FREQUENCY_ATTR: ("frequency", t.uint16_t, True),
        HIKING_TOTAL_REACTIVE_ATTR: ("total_reactive_energy", t.int32s, True),
        HIKING_REACTIVE_POWER_ATTR: ("reactive_power", t.int16s, True),
        HIKING_POWER_FACTOR_ATTR: ("power_factor", t.uint16_t, True),
    }

    def _update_attribute(self, attrid, value):
        super()._update_attribute(attrid, value)
        if attrid == HIKING_DIN_SWITCH_ATTR:
            self.endpoint.device.switch_bus.listener_event(SWITCH_EVENT, 16, value)
        elif attrid == HIKING_TOTAL_ENERGY_DELIVERED_ATTR:
            self.endpoint.smartenergy_metering.energy_deliver_reported(value / 100)
        elif attrid == HIKING_TOTAL_ENERGY_RECEIVED_ATTR:
            self.endpoint.smartenergy_metering.energy_receive_reported(value / 100)
        elif attrid == HIKING_VOLTAGE_CURRENT_ATTR:
            self.endpoint.electrical_measurement.current_reported(value >> 16)
            self.endpoint.electrical_measurement.voltage_reported(
                (value & 0x0000FFFF) / 10
            )
        elif attrid == HIKING_POWER_ATTR:
            self.endpoint.electrical_measurement.power_reported(value)
        elif attrid == HIKING_FREQUENCY_ATTR:
            self.endpoint.electrical_measurement.frequency_reported(value)
        elif attrid == HIKING_TOTAL_REACTIVE_ATTR:
            self.endpoint.electrical_measurement.reactive_energy_reported(value)
        elif attrid == HIKING_REACTIVE_POWER_ATTR:
            self.endpoint.electrical_measurement.reactive_power_reported(value)
        elif attrid == HIKING_POWER_FACTOR_ATTR:
            self.endpoint.electrical_measurement.power_factor_reported(value / 10)

class TuyaPowerMeter(TuyaSwitch):
    """Tuya power meter device."""

    def __init__(self, *args, **kwargs):
        """Init device."""
        self.switch_bus = Bus()
        super().__init__(*args, **kwargs)

    signature = {
        # "node_descriptor": "<NodeDescriptor byte1=1 byte2=64 mac_capability_flags=142 manufacturer_code=4098
        #                       maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=11264
        #                       maximum_outgoing_transfer_size=82 descriptor_capability_field=0>",
        # device_version=1
        # input_clusters=[0x0000, 0x0004, 0x0005, 0xef00]
        # output_clusters=[0x000a, 0x0019]
        MODELS_INFO: [
            ("_TZE200_byzdayie", "TS0601"),
            ("_TZE200_ewxhg6o9", "TS0601"),
        ],
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=51
            # device_version=1
            # input_clusters=[0, 4, 5, 61184]
            # output_clusters=[10, 25]>
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaManufClusterAttributes.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaManufClusterDinPower,
                    TuyaPowerMeasurement,
                    TuyaElectricalMeasurement,
                    TuyaOnOff,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            }
        }
    }

class HikingPowerMeter(TuyaSwitch):
    """Hiking Power Meter Device - DDS238-2."""

    signature = {
        # "node_descriptor": "<NodeDescriptor byte1=1 byte2=64 mac_capability_flags=142 manufacturer_code=4098
        #                       maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=11264
        #                       maximum_outgoing_transfer_size=82 descriptor_capability_field=0>",
        # device_version=1
        # input_clusters=[0x0000, 0x0004, 0x0005, 0xef00]
        # output_clusters=[0x000a, 0x0019]
        MODELS_INFO: [
            ("_TZE200_bkkmqmyo", "TS0601")
        ],
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=51
            # device_version=1
            # input_clusters=[0, 4, 5, 61184]
            # output_clusters=[10, 25]>
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaManufClusterAttributes.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    HikingManufClusterDinPower,
                    TuyaElectricalMeasurement,
                    TuyaPowerMeasurement,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            },
            16: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    TuyaOnOff,
                ],
                OUTPUT_CLUSTERS: [],
            },
        }
    }

class EaruPowerMeter(TuyaSwitch):
    """Earu Power Meter Device"""

    signature = {
        MODELS_INFO: [
            ("_TZE204_davzgqq0", "TS0601"),
        ],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaManufClusterAttributes.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    EaruManufClusterDinPower,
                    TuyaElectricalMeasurement,
                    TuyaPowerMeasurement,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            },
            16: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
                INPUT_CLUSTERS: [
                    TuyaOnOff,
                ],
                OUTPUT_CLUSTERS: [],
            },
        }
    }

@pkejval does it solve auto power on after power failure ? i mean same config which is on my water valve

No it doesn't because the device can't do it as you noticed in the official
tuya app. Only way out is Tuya or Home Assistant automation. I have
automation running every minute to check state:

id: "1692860675855"
alias: Automatizace - keep breakers on
description: ""
trigger:

platform: template
value_template:
'{{ (not is_state("switch.jistic_1", "on")) or (not is_state(
"switch.jistic_2",
"on")) or (not is_state("switch.jistic_3", "on")) }}'
alias: Not all are ON
platform: time_pattern
minutes: /1
condition:
condition: template
value_template:
'{{ (not is_state("switch.jistic_1", "on")) or (not is_state(
"switch.jistic_2",
"on")) or (not is_state("switch.jistic_3", "on")) }}'
action:
service: switch.turn_on
data: {}
target:
entity_id:
- switch.jistic_1
- switch.jistic_2
- switch.jistic_3
mode: single

st 10. 1. 2024 v 3:12 odesílatel LuRy @.***> napsal:

@pkejval https://github.com/pkejval does it solve auto power on after
power failure ? i mean same config which is on my water valve
obrazek.png (view on web)
https://github.com/zigpy/zha-device-handlers/assets/2318346/2cd4dc6c-afdb-45b7-8018-dd349df938d3
—
Reply to this email directly, view it on GitHub
https://github.com/zigpy/zha-device-handlers/issues/2061#issuecomment-1884079832,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALOKP45DAMR2OHP3O7CMVY3YNX2JVAVCNFSM6AAAAAATP5NNNGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBUGA3TSOBTGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

@pkejval I will try this automation! thanks a lot for the nice work done!.
perhaps this function is not integrated due to some regulations on the operation of RCD breakers... I don't know.
in any case I wrote to the seller on aliexpress, which is the official Earu store, if there is a way to set this or not
I will post update if any

No it doesn't because the device can't do it as you noticed in the official tuya app. Only way out is Tuya or Home Assistant automation. I have automation running every minute to check state: - id: "1692860675855" alias: Automatizace - keep breakers on description: "" trigger: - platform: template value_template: '{{ (not is_state("switch.jistic_1", "on")) or (not is_state( "switch.jistic_2", "on")) or (not is_state("switch.jistic_3", "on")) }}' alias: Not all are ON - platform: time_pattern minutes: /1 condition: - condition: template value_template: '{{ (not is_state("switch.jistic_1", "on")) or (not is_state( "switch.jistic_2", "on")) or (not is_state("switch.jistic_3", "on")) }}' action: - service: switch.turn_on data: {} target: entity_id: - switch.jistic_1 - switch.jistic_2 - switch.jistic_3 mode: single st 10. 1. 2024 v 3:12 odesílatel LuRy @.> napsal:
…
@pkejval https://github.com/pkejval does it solve auto power on after power failure ? i mean same config which is on my water valve obrazek.png (view on web) https://github.com/zigpy/zha-device-handlers/assets/2318346/2cd4dc6c-afdb-45b7-8018-dd349df938d3 — Reply to this email directly, view it on GitHub <#2061 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALOKP45DAMR2OHP3O7CMVY3YNX2JVAVCNFSM6AAAAAATP5NNNGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBUGA3TSOBTGI . You are receiving this because you were mentioned.Message ID: @.>


Map pixels to match keys on rotation.

Fixes #2.

Pixels now map to the key map on rotation - e.g. pixel 0 is always the upper left, etc.
Remove pixel brightness setting from init - now defaults to 1.

Tested on the MIDI Tester code, including the pixel brightness and rotation, it's all working great.


docker-multinode: unreliable check for the use of systemd

This one is mostly for the record, as I found the solution and I don't consider it a real bug in kube-deploy.
Environment: Debian 8 (jessie) with sysvinit (instead of the default systemd).
When trying to deploy kubernetes multinode with ./master.sh, I got several errors when the script tries to run containers in the docker daemon:

+++ [0125 14:56:24] Restarting main docker daemon...
Failed to get D-Bus connection: Unknown error -1
cp: missing destination file operand after '.backup'
Try 'cp --help' for more information.
sed: -e expression #1, char 0: no previous regular expression
sed: no input files
Failed to get D-Bus connection: Unknown error -1
Failed to get D-Bus connection: Unknown error -1
Failed to get D-Bus connection: Unknown error -1
+++ [0125 14:56:25] Restarted docker with the new flannel settings
+++ [0125 14:56:25] Launching Kubernetes master components...
00698c3ff2131b60bdc4b5b4d332910f7a906f74fc1d3116c6ad1a90b677487b
docker: Error response from daemon: linux mounts: Path /var/lib/kubelet is mounted on / but it is not a shared mount..

After reading some code in common.sh, I found out that it checks for the existence of the systemctl command to assess if systemd is in use. In that case, it bypasses some steps necessary for other init systems.
When systemd was replaced by sysvinit in my environment, the systemd package was not removed and thus the command existed, but it obviously didn't work as intended. The solution was to remove the now unused systemd package.
Would it be possible to implement a more reliable check for the use of systemd?

I noticed this as well when getting docker-multinode to work on Alpine

docker-multinode was removed in https://github.com/kubernetes/kube-deploy/pull/283 so I'm closing this issue as obsolete.


change method name

Description
Related Issue
Issue: https://github.com/dragonflyoss/Dragonfly2/issues/532
Motivation and Context
Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)
[x] Documentation Update (if none of the other choices apply)

Checklist:

[x] Code compiles correctly.
[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Codecov Report

Merging #533 (46bc464) into main (c1c3d65) will decrease coverage by 0.10%.
The diff coverage is 0.00%.

:exclamation: Current head 46bc464 differs from pull request most recent head 5018fae. Consider uploading reports for the commit 5018fae to get more accurate results

@@            Coverage Diff             @@
##             main     #533      +/-   ##
==========================================
- Coverage   39.47%   39.36%   -0.11%
==========================================
  Files          86       86
  Lines        6529     6529
==========================================
- Hits         2577     2570       -7
- Misses       3581     3589       +8
+ Partials      371      370       -1

Flag
Coverage Δ

e2etests
?

unittests
39.36% <0.00%> (-0.11%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

cdnsystem/storedriver/driver.go
16.66% <0.00%> (ø)

cdnsystem/storedriver/local/local_driver.go
51.89% <ø> (ø)

cdnsystem/storedriver/mock_driver.go
0.00% <0.00%> (ø)

client/daemon/peer/peertask_stream.go
55.05% <0.00%> (-2.44%)
:arrow_down:


feat(network): get peer info

Closes #564
Adds a new PeerInfo type and a new command GetPeerInfo to NetworkHandleMessage

Perhaps there should also be a command to get info about a certain peer by ID?

Perhaps there should also be a command to get info about a certain peer by ID?

good idea! let's add that

Perhaps there should also be a command to get info about a certain peer by ID?

Is it okay if I add them in the same pr?

Perhaps there should also be a command to get info about a certain peer by ID?

Is it okay if I add them in the same pr?

sure!

Hey, I had a couple of questions -

Can we add the field ClientId to the Established event? The doc mentioned in the comment does specify it as one of the parameters. This would allow us to add the field to ActiveSessionHandle
I am not sure if there is a way to test the command manually, if so how?

an we add the field ClientId to the Established event.

yes let's do that

I am not sure if there is a way to test the command manually, if so how?

See this test for reference which connects peers manually. for the test we want the same (2 peers are enough) and then retrieve the info once they're connected.
https://github.com/paradigmxyz/reth/blob/main/crates/net/network/tests/it/connect.rs#L92

Hi @ayushm2003 let us know on your plans for this PR or if we should take it over^^

Hey, Sorry for the delay. I have a commit ready to fix the compilation errors and will add the test later today. I don't really understand the async requirement, so would appreciate some help in the form of a little more explanation or a commit.
Would this be ok?

sending does not require async for tokio::oneshot::Sender, we don't want any async/await inside the control loop of the Network, we do however want async/await on the NetworkHandle which awaits the response on the tokio::oneshot::Receiver


[WIP] Add FiniteServer to limit number of accepted connections

FiniteServer is a Server Decorator that allow final user create a Server that will able to serve a maximum of n requests. After that, will be closed.
So useful when working with supervisord.
Using that, you can control so much the memory leak that a server can cause in the long term :)
PR not finished yet.
Waiting for #137 in order to add some green tests

@clue I will add tests tomorrow and I will ping you as soon as it is tested ;)

Thank you for filing this PR! I've just marked this as WIP until this is completed and I'm looking forward to see how this can be used once it's ready :+1:

@clue Tests added.

@clue pushed with force. There was a for-testing-purposes change that I pushed wrongly.


Fix nil-dereference bug

Fix bug introduced by #1247 where viewing a repository while not signed in a user causes a 500 (due to a nil pointer deference).

LGTM

LGTM

Rebased; the CI build wasn't running for some reason

Let L_G_T_M work


Please add support for volume buttons to take a photo using AVCaptureEventInteraction

Apple added support for camera use of the volume buttons to trigger taking a photo using AVCaptureEventInteraction.
See https://developer.apple.com/documentation/avkit/avcaptureeventinteraction
Thanks!

Is this in ios 18?

From: Steve Splonskowski @.>
Sent: Sunday, September 22, 2024 4:17 PM
To: Mijick/CameraView @.>
Cc: Subscribed @.***>
Subject: [Mijick/CameraView] Please add support for volume buttons to take a photo using AVCaptureEventInteraction (Issue #47)
Apple added support for camera use of the volume buttons to trigger taking a photo using AVCaptureEventInteraction.
See https://developer.apple.com/documentation/avkit/avcaptureeventinteraction
Thanks!
—
Reply to this email directly, view it on GitHubhttps://github.com/Mijick/CameraView/issues/47, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BFWGZYK43S6YAGEJOF533NLZX4QWJAVCNFSM6AAAAABOU3IFOKVHI2DSMVQWIX3LMV43ASLTON2WKOZSGU2DCMRUGE2TKOI.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Hey @splons,
I hope to address this next week, as I am still working on patch 3.0.0 for PopupView.
Have a nice day,
Tomasz

Thank you. This new API became available in iOS 17.2


Attempt to fix the deferred children problem

Is it pretty? No
Do i like it? No
Do i plan to refactor this? Also no
Does it work? Mostly
It would fix https://github.com/statelyai/xstate/discussions/3161
It would fix https://github.com/statelyai/xstate/issues/2951
It would fix https://github.com/statelyai/xstate/issues/2851
It would fix https://github.com/statelyai/xstate/issues/2152
It would fix https://github.com/statelyai/xstate/issues/1251
It would fix https://github.com/statelyai/xstate/issues/1567

@davidkpiano I put some comments about possible behavior changes, there is not a lot of them in fact and they are quite subtle, but also... because they are so subtle I'm a little bit worried about shipping this PR. Maybe we need to rip off that bandaid though? Let me know what you think.


ImportError: cannot import name 'load_model' from 'onnxruntime.quantization.quant_utils'

I went and installed the Olive directml. I was following the steps in readme. When I got the command to run python stable_diffusion.py --optimize located in C:\Windows\System32\olive\examples\directml\stable_diffusion>
I got the error in the subject. Below is the entire output from the command.
(olive) C:\Windows\System32\olive\examples\directml\stable_diffusion>python stable_diffusion.py --provider cuda --optimize
Traceback (most recent call last):
File "C:\Windows\System32\olive\examples\directml\stable_diffusion\stable_diffusion.py", line 18, in
from olive.workflows import run as olive_run
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\workflows_init_.py", line 5, in
from olive.workflows.run.run import run
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\workflows\run\run.py", line 16, in
from olive.passes import Pass
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes_init_.py", line 6, in
from olive.passes.onnx import *  # noqa: F403
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx_init_.py", line 17, in
from olive.passes.onnx.vitis_ai_quantization import VitisAIQuantization
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx\vitis_ai_quantization.py", line 18, in
from olive.passes.onnx.vitis_ai import quantize_static
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx\vitis_ai_init_.py", line 10, in
from olive.passes.onnx.vitis_ai.quantize import quantize_static
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx\vitis_ai\quantize.py", line 15, in
from onnxruntime.quantization.quant_utils import QuantFormat, QuantizationMode, QuantType, load_model
ImportError: cannot import name 'load_model' from 'onnxruntime.quantization.quant_utils' (C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\onnxruntime\quantization\quant_utils.py)
(olive) C:\Windows\System32\olive\examples\directml\stable_diffusion>
I tried running this command without (--Provider cuda) and I got the below result.
Traceback (most recent call last):
File "C:\Windows\System32\olive\examples\directml\stable_diffusion\stable_diffusion.py", line 18, in
from olive.workflows import run as olive_run
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\workflows_init_.py", line 5, in
from olive.workflows.run.run import run
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\workflows\run\run.py", line 16, in
from olive.passes import Pass
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes_init_.py", line 6, in
from olive.passes.onnx import *  # noqa: F403
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx_init_.py", line 17, in
from olive.passes.onnx.vitis_ai_quantization import VitisAIQuantization
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx\vitis_ai_quantization.py", line 18, in
from olive.passes.onnx.vitis_ai import quantize_static
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx\vitis_ai_init_.py", line 10, in
from olive.passes.onnx.vitis_ai.quantize import quantize_static
File "C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\passes\onnx\vitis_ai\quantize.py", line 15, in
from onnxruntime.quantization.quant_utils import QuantFormat, QuantizationMode, QuantType, load_model
ImportError: cannot import name 'load_model' from 'onnxruntime.quantization.quant_utils' (C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\onnxruntime\quantization\quant_utils.py)
System is Windows 11 Pro
x64
Processor	AMD Ryzen 9 3950X 16-Core Processor, 3975 Mhz, 16 Core(s), 32 Logical Processor(s)
GPU	AMD Radeon RX 7900 XTX VRAM 24560 MB GDDR6 2500 MHz
16.0 GB RAM

It seems you are using Olive 0.2.1? please upgrade to latest version or using main branch directly.

after ensuring that I am on the latest version. I went through the steps again and got the following ouput:
(olive) C:\Windows\System32\Olive\examples\directml\stable_diffusion>python stable_diffusion.py --provider cuda --optimize
Traceback (most recent call last):
File "C:\Windows\System32\Olive\examples\directml\stable_diffusion\stable_diffusion.py", line 22, in
from olive.model import ONNXModelHandler
ImportError: cannot import name 'ONNXModelHandler' from 'olive.model' (C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\model_init_.py)
when attempting without the provider cuda argumnet
(olive) C:\Windows\System32\Olive\examples\directml\stable_diffusion>python stable_diffusion.py --optimize
Traceback (most recent call last):
File "C:\Windows\System32\Olive\examples\directml\stable_diffusion\stable_diffusion.py", line 22, in
from olive.model import ONNXModelHandler
ImportError: cannot import name 'ONNXModelHandler' from 'olive.model' (C:\Users\tommy\miniconda3\envs\olive\lib\site-packages\olive\model_init_.py)

it seems your olive installation folder is pretty strange. Should not it under site-packages/lib?
Would you please provide more information on your env?

So I tried a few different things. Turns out I missed the command after the git pull to install olive. I ran that command and I also realized that I was uninstalling onnxruntime directml and installing onnxruntime gpu. So I made sure it was installing direcml and I was able to get to the optimization without error. I also changed the optimize command from using cuda to dml this appears to solved the issue

Hi Lonestarfire, I encounter the same error as you, below is the steps I used. could you please help share which command you missed that potetnially fix this error? BTW, I also use AMD Radeon GPU for this deployment.  thanks if you can share the experience.
BTW, i check the onnixruntime directml already install when pip install -r requirements.txt. should I install onnxruntime gpu?
conda create -n olive-env python=3.10.13
conda activate olive-env
git clone https://github.com/microsoft/Olive.git (use web download and rename folder name to Olive)
cd Olive
(olive-env) C:\Users\sa\Olive>python -m pip install olive-ai[directml]==0.4.0 (install olive success.pic )
(olive-env) C:\Users\sa\Olive\olive>cd examples/directml/stable_diffusion
(olive-env) C:\Users\sa\Olive\olive>pip install -r requirements.txt  (pic)
(olive-env) C:\Users\sa\Olive\examples\directml\stable_diffusion>git clone https://github.com/microsoft/olive --branch v0.4.0
(olive-env) C:\Users\sa\Olive\examples\directml\stable_diffusion>pip install -r requirements.txt

paste the error:
(olive-env) C:\Users\sa\Olive\examples\directml\stable_diffusion>python stable_diffusion.py --optimize
Traceback (most recent call last):
File "C:\Users\sa\Olive\examples\directml\stable_diffusion\stable_diffusion.py", line 22, in
from olive.model import ONNXModelHandler
ImportError: cannot import name 'ONNXModelHandler' from 'olive.model' (C:\Users\sa\anaconda3\envs\olive-env\lib\site-packages\olive\model_init_.py)

ONNXModelHandler

Please use the main branch Olive

i have the same error: from onnxruntime.quantization.quant_utils import QuantFormat, QuantizationMode, QuantType, load_model
ImportError: cannot import name 'load_model' from 'onnxruntime.quantization.quant_utils' (C:\Users\vuurdraak\miniconda3\envs\olive\lib\site-packages\onnxruntime\quantization\quant_utils.py)
i checked if the map and file exist and they do but it does not work

well i checked but i have onnxruntime-1.17.1

well i checked but i have onnxruntime-1.17.1 i wish i just had a NVidia card but when i bought my new gpu the amd ones where cheaper and also kinda better
i got past it but now i get this. File "C:\Users\user\olive\examples\directml\stable_diffusion\stable_diffusion.py", line 288, in optimize(args.model_id, unoptimized_model_dir, optimized_model_dir) File "C:\Users\user\olive\examples\directml\stable_diffusion\stable_diffusion.py", line 164, in optimize pipeline = StableDiffusionPipeline.from_pretrained(base_model_id, torch_dtype=torch.float32) File "C:\Users\user\miniconda3\envs\olive\lib\site-packages\huggingface_hub\utils_validators.py", line 118, in _inner_fn return fn(*args, **kwargs) File "C:\Users\user\miniconda3\envs\olive\lib\site-packages\diffusers\pipelines\pipeline_utils.py", line 1105, in from_pretrained if not os.path.isdir(pretrained_model_name_or_path): File "C:\Users\user\miniconda3\envs\olive\lib\genericpath.py", line 42, in isdir st = os.stat(s) TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType

What's your olive-ai version, is it 0.2.1?

how do i check


Chore: bump uplot to 1.6.31

What this PR does / why we need it:
Bump @grafana/data package to include this change https://github.com/grafana/grafana/pull/93952

@leventebalogh I am not sure if that is alright


Do not pollute global scope in cli

According antv/g documentation it should be possible to avoid polluting global scope:
https://github.com/hikerpig/pintora/blob/8ec67087ae2ae2cf73c10caf522350fd5ff3ee8a/packages/pintora-cli/src/render.ts#L35-L37
PS. there are faster JSDOM alternatives, I wonder if it would have any impact on the performance:

https://github.com/WebReflection/linkedom
https://github.com/capricorn86/happy-dom

You do have the point, I will try to solve this pollution issue.
I assume the performance bottleneck is not in dom manipulation because we do not animate the dom or so. Text calculation / layout are more likely be the case.

Sadly, those global assignment are required for all the things to work for antv g now, because it mainly targets to browser environment.
I will have to wrap all the thing and run them in a vm context to prevent polluting global scope.

I had a hard time debugging why I got a JSDom error without using directly using JSDom, apparently it is because of the pollution caused by importing @pintora/cli into my project, and another package infers if they are in a browser or not by detecting if window is defined... which makes this package fail when @pintora/cli has been already executed...
Why do you need a global scope? The link @stereobooster referenced explains how to avoid using globals with '@antv/g', are you in an edge case where it does not work?

@tex0l Accually the method  @antv/g's documentation decribes is not enough for it to run inside Node.js enviroment.
Currently I need to pollute at least as this snippet shows.
I think you problem might have something to do with the window pollution ?
  // setup the env for renderer
  global.window = dom.window as any
  global.document = document
  ;(dom.window as any).devicePixelRatio = devicePixelRatio
  ;(global as any).CanvasPattern = CanvasPattern

I was thinking about creating a vm inside pintora/cli or adjusting the documentation about how to import @pintora/cli inside a vm. I didn't have time back then for a proper solution.

@tex0l Sorry about wasting your time on this.  I will need some time to think about the proper isolation solution to fix it all.
Right now I can only think of a quick fix to restore globals as it was before pintora render method is called. Most of the time it   should be OK.

Don't worry, I'm sorry if my message was rude, that wasn't the intention, I just posted it so that people with a similar issue could maybe debug their issue using this insight.
I couldn't manage to use a VM (because I cannot import modules in a VM without polluting the global scope as well) nor a worker (because node canvas is not compatible with workers). Therefore I resorted to using a child_process.fork and passing the result through IPC on encoded in base64 when it is a Buffer: https://github.com/tex0l/astro-pintora/pull/5

Right now I can only think of a quick fix to restore globals as it was before pintora render method is called. Most of the time it should be OK.

@tex0l Try updating to<EMAIL_ADDRESS>and see if it gets better.

Hi @hikerpig ,
Thanks for the attempt, unfortunately it is flaky when multiple render runs are started in parallel.. I've added logs in the patcher methods so that you can understand why it still fails:
patching global window
patching global document
patching global CanvasPattern
patching global window
patching global document
patching global CanvasPattern
restoring globals
restoring globals

I'll implement a waterfall on my end to ensure no parallel runs can happen.. But that's a bit disappointing in terms of performance.

With both fixes combined (yours to revert the globals and mine to waterfall calls), I managed to make my bug disappear.
I wouldn't consider this issue closed, as it technically still pollutes the global object briefly, and the function being async there is no guarantee that nothing is executing while the globals are still épatched.

ERRATUM: my bad, I ran into the issue where an execution of render happens at the same time as my other function which needs to have an unpolluted env... I am therefore forced to expose my waterfall function to make sure this function is never ran in parallel with the render function..
This is very hacky, but it technically works.

@tex0l Yes it's not an elegant solution, let's keep this issue open and tracked.
I will do some experiments on vm and child_process approach.

I've come to a solution of running actual rendering in a forked subprocess #276.
@tex0l You may try this version<EMAIL_ADDRESS>

Merged into @pintora/cli v0.7.4


[kenlm] Update port

Update the KenLM port. Bump to a commit that contains several nice new features:

A new exported CMake config. This makes usage with downstream projects much easier
Fixes to MSVC patch
Fixes to a missing system header patch
Using IMPORTED targets with Boost is required as a patch for Windows builds

cc @kpu

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

Note: I will be converting your PR to draft status. When you respond, please revert to "ready for review". That way, I can be aware that you've responded since you can't modify the tags.


Azure Indexer Feature

This PR contains the initial working commit of the Azure Indexer Feature to the Full Node.
Stratis.Bitcoin.Features.AzureIndexer
The code in this commit is mainly the code from NBitcoin.Indexer. The following new files have been added:

AzureIndexerFeature.cs
AzureIndexerLoop.cs
AzureIndexerSettings.cs

Includes Stratis.IndexerD for running a full node including the indexer feature.
Stratis.Bitcoin.Features.AzureIndexer.Tests will be provided in a separate PR.

Interesting PR, what to do with it :-)?
I'm not sure we need IndexerD project, but maybe I just don't have some information ...
As for the code ... well it will happen every time when we import something from NBitcoin, that the code will be incompatible with our policies and if an amount of code is as here, it would be unrealistic to demand fixing the code to comply with the policies. So we are probably just going to introduce more debt in our project and hopefully someone will incrementally improve on that later :-/
Having said that, you've mentioned, you've added 3 files and it is not unrealistic to demand those new files to comply with the policies.
So I would ask you to invest a little time (it is just a little for those 3 files really) to make the code style match (this is just some minor un-var work) and have all methods and fields and properties commented (most of them are already, but some gaps are there).
And finally, I would ask about the reasons of having this:
           indexer.TaskScheduler = new CustomThreadPoolTaskScheduler(30, 100);

What is the reason of not having the default scheduler here. Why custom and why 30/100?

@quantumagi wow, that's a big PR.
No doubt, a lot of work has gone into it.
However, it's very hard for us to review such a big file drop. It would take us days to review it entirely, understand how things work together etc...
Can you please split it into multiple, smaller, more digestible  commits?
Are the files imported from NBitcoin just a copy paste? I think they should all go in one commit, makes it easier for us to see how it's then plugged into our code.


RefreshControl does not work correctly on state change

React Native version:
0.59.8
Steps To Reproduce

Pull down on list, refresh control appears (as it should)
Press button on top of list to load data, refresh control does not appear even though refreshing is true. You can also this is true by pressing the button first, the pulling down, then finally pressing the button again.

Describe what you expected to happen: The refresh control should appear whenever refreshing is true
Snack, code example, or link to a repository: https://snack.expo.io/ByZXxOuhV

This is still an issue

Problem stills on 0.60.4

Can confirm, it is really annoying because there are no actual workarounds if you need to:

Keep pull to refresh functionality
Show the loading indicator when the refresh is triggered programmatically (e.g. the user searched something)

+1
Android works properly, while iOS does not. Somehow refreshing state doesn't keep on the screen while app is reloading and resets immediately.

+1
I have this issue too. RN version 0.59.8.

+1
0.60.4, it happens only in iOS with the controlled prop

+1 I also experience in RN 0.59.8

+1  ios
when I use react-navigation to customize the header, the problem appear, if I remove the header it's  ok.

same issue ,why so much bugs in basic component🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃

+1
RN 0.60.4, Same issue.
Doesn't work on iOS but works perfectly on Android.

https://github.com/facebook/react-native/issues/24530

+1
RN 0.61.2 failing as well. It doesn't work on iOS but works perfectly on Android.

+1
RN 0.61.2, Same issue.
thanks @gbalduzzi

+1
Still seeing this issue!

See my comment here for a possible workaround

Opened Pr ^

If anyone is still having problems with this:
I found a workaround that is just enabling the bounce.
I had bounces={false} and after removing it, it's working on iOS now(Android was already working)
But in my case, the loading didn't appear not even once.

still an issue with v0.61.4

still an issue on v0.62.2 when <RefreshControl /> is enabled (with local state) from a useEffect function.

Hey, guys, I am facing the same issue with android, please have a look at this code, don't know why it is not working
class Home extends Component {   constructor(props) {     super(props);     this.state = {       loading: false,       lastLoadDate: null,       onPullRefresh: false,       postArray: [],       allLoadDone: false,       limit: 5,       refreshing: false,     };     this.onEndReachedCalledDuringMomentum = false;   }
componentDidMount() {     console.log(       'Component did mount Home.js retrieve data called',       this.state.postArray,     );     this.retrieveData();   }
`
<FlatList
//data
        style={{width: '100%'}}
        data={this.state.postArray}
        extraData={this.state}
        //renderItems
        renderItem={({item}) => (
          <Post
            userName={item.userName}
            userPhoto={item.userPhotoURL}
            imageData={item.postImageURL}
            likes={item.likes}
            // id={item.}
            title={item.title}
            hashtags={item.hashtags}
            resizeMode={item.style}
            timeStamp={item.createdAt}
            navigation={this.props.navigation}
          />
        )}
        //Item Key
        keyExtractor={(item, index) => String(index)}
        //Footer loader
        ListFooterComponent={this.renderFooter}
        //on end reached

        onEndReached={() => {
          if (!this.onEndReachedCalledDuringMomentum) {
            // if (allLoadDone) {
            //   noRetrieve();
            // } else {
            this.retrieveMore();
            // }
          }
        }}
        onMomentumScrollBegin={() => {
          this.onEndReachedCalledDuringMomentum = false;
        }}
        refreshControl={
          <RefreshControl
            refreshing={this.state.onPullRefresh}
            colors={[PrimaryColor, SecondaryColor, 'white']}
            progressBackgroundColor="pink"
            onRefresh={this.retrieveData}
            enabled={true}

          />
        }
        // How Close To The End Of List Until Next Data Request Is Made
        onEndReachedThreshold={0.1}
        showsVerticalScrollIndicator={false} //hides the vertical scroll
        refreshing={this.state.refreshing}
      />`

same problem here, refreshControl does not show first time in useEffect even i set showState to true
refreshControl={
          <RefreshControl
            tintColor={theme.mainOrangeColor}
            refreshing={isRefreshing}
            onRefresh={() => {
              console.log('onrefresh')
              skip = 0
              _getRoomList()
            }}
          />
        }

The issue is still there in iOS.
RN ver: 0.71.8

I am trying to implement release to refresh, not pull to refresh but not working

The issue still persists for me on Android with RN 0.72.6. When I set data={[]} in my flatlist, the refresh control works as it should, but when attempting to show data fetched via tanstack query, the refresh control will not show anymore after the list is populated.

It's still happening on iOS

Happening to me as well

i have fixed it using below workaround but i dont even know why its working.
Please also explain me if you got it.
Add ListEmptyComponent and pass loading prop to it
<FlatList         style={{flex: 1}}         data={artistList}         renderItem={({item}) => <ArtistCard item={item} />}         refreshing={loading}         refreshControl={           <RefreshControl             colors={['black']}             tintColor="white"             refreshing={loading}             onRefresh={getArtistsList}           />         }         ListEmptyComponent={<ListEmptyCompnent loader={loading} />}         keyExtractor={item =>${item._id}}         contentContainerStyle={{           paddingTop: 20,         }}       />
  in ListEmptyCompnent if loading is true show a string with spaces inside <Text>
  `const ListEmptyCompnent = ({loader}: {loader: boolean}) => {

const {colors, fontFamily, fontSize} = useTheme() as any;
return (
<View style={{justifyContent: 'center', alignItems: 'center'}}>
{loader ? (
// to fix loader not showing on first render
<Text
style={{
color: colors.bodyText,
fontSize: fontSize.bodyTextFont,
fontFamily: fontFamily.mainheading,
}}>
{'           '}

) : (
<Text
style={{
color: colors.bodyText,
fontSize: fontSize.bodyTextFont,
fontFamily: fontFamily.mainheading,
}}>
No Item to Display

)}

);
};`


1.10 clients using Forge crash if an iron_nugget is dropped / on the ground

What is the output url of /viaversion dump?

https://gist.github.com/e8ae100e151a829c1f2101cc29489d7b

How/when does this error happen? login?:

As described, Forge crashes if an iron_nugget is dropped. Crafting works fine and in inventory works fine, but any 1.10 Forge clients connected to a 1.12 server where someone crafts and drops an iron nugget will immediately be disconnected.

Is there an error in the console? Use pastebin.com. Is there a kick message?:

https://pastebin.com/3RXAqEDQ

Thanks!

Note that error is clientside. There is no error serverside. Most likely there needs to be a simple translation of item type sent to clients.

Will look into it when I have more free time. Thanks for reporting (:

<3 Thank you!

I'm unable to reproduce this. Does this happen on a Spigot 1.10 server without ViaVersion & ViaBackwards?

No. Spigot 1.12, with latest ViaVersion and ViaBackwards as of time of report.
Client connects with Forge 1.10.2, iron nugget held in inventory is fine -- as soon as it is dropped, crash occurs.

Could you give me your crashlog? (:

It was included in the OP.
Note, Spigot does not crash. The clients crash. It is being used offensively during PvP to "crash" the other players, then kill their combat loggers.

Found the bug. Should be fixed in the latest devbuild.
Please ask for a reopen if it still happens (:


Fixed rotation lock is broken in inventory

I don't see any issue? What's the issue?

Got fixed in NEA.


About the nrrd image

I would like to watch the brain1_image directly instead of scan its data, such as watching what is the truly shape of this tumor. Could you please tell me what should I do?   thx !

Fiji can visualize a nrrd image.
https://fiji.sc/

@Frank51 can you try to explain a bit more what you are trying to do?
If you ask about visualization of the shape of the tumor, we recommend 3D Slicer http://download.slicer.org.
As an example, to visualize brain1_image and brain1_label from the sample dataset distributed with pyradiomics, install Slicer, open "Add data" dialog (menu "File > Add data"), select image and label, click OK.

In the slice viewers select image and label as shown below

You should see label overlay

To see 3d rendering of the segmentation surface, select "Segmentations" module of 3D Slicer

In the section import/export segments select "Operation: Import".
Then in Representations create "Closed surface" representation:

As a result, you should be able to see the 3d rendering of the tumor as shown below

Hi Fedorov:
Thank you for your warming reply. It is really helpful for me. And your
answer is a excellent solution to my problem.
Furthermore, I am wondering is there another nrrd type image of lung ?
Because the lung image in the 'data' folder is not quite clear, I would
like to test some pyradiomics outcome data of a lung. If it is available,
could you please send me a new nrrd image of lung?（contained label ）And if
it's not available, that's be OK.
Thank you again for your patience. Have a nice day.
Best,
Frank Chen
2017-04-20 21:53 GMT+08:00 Andrey Fedorov<EMAIL_ADDRESS>
@Frank51 https://github.com/Frank51 can you try to explain a bit more
what you are trying to do?
If you ask about visualization of the shape of the tumor, we recommend 3D
Slicer http://download.slicer.org.
As an example, to visualize brain1_image and brain1_label from the sample
dataset distributed with pyradiomics, install Slicer, open "Add data"
dialog (menu "File > Add data"), select image and label, click OK.
[image: image]
https://cloud.githubusercontent.com/assets/313942/25233924/7d946120-25ae-11e7-8135-84f477e9b1c6.png
In the slice viewers select image and label as shown below
[image: image]
https://cloud.githubusercontent.com/assets/313942/25233950/90db7598-25ae-11e7-821f-9ddfd25b98d8.png
You should see label overlay
[image: image]
https://cloud.githubusercontent.com/assets/313942/25233959/9a047e94-25ae-11e7-8708-7c2d1a3cfa63.png
To see 3d rendering of the segmentation surface, select "Segmentations"
module of 3D Slicer
[image: image]
https://cloud.githubusercontent.com/assets/313942/25234045/e97aa6e2-25ae-11e7-9873-6bd2167aeedc.png
In the section import/export segments select "Operation: Import".
Then in Representations create "Closed surface" representation:
[image: image]
https://cloud.githubusercontent.com/assets/313942/25234108/182cd8a2-25af-11e7-8e97-4fd52c3507b3.png
As a result, you should be able to see the 3d rendering of the tumor as
shown below
[image: image]
https://cloud.githubusercontent.com/assets/313942/25234123/26daef10-25af-11e7-937b-f8caf629f830.png
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Radiomics/pyradiomics/issues/243#issuecomment-295745932,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AZJes2RVNW2hWtl07uoe1UduXoLKgo8Fks5rx2NHgaJpZM4NC9tS
.

--

There are several publicly available collections that have lung CT data on TCIA: http://www.cancerimagingarchive.net/ (see Location column).
You download them from TCIA using their tools, or you can use 3D Slicer TCIABrowser extension to load data from those collections into 3D Slicer: https://www.slicer.org/wiki/Documentation/Nightly/Extensions/TCIABrowser.

[image: 内嵌图片 3]
This is the 3D slicer's working page.
[image: 内嵌图片 1]
In the section import/export segments. I can not see"Operation: Import". I
am wondering where can I find it?
[image: 内嵌图片 2]
In Representations I have created "Closed surface", but I can not find
'fractional labelmap'.
So I still can not see the 3d rendering of the tumor. I am wondering what
mistake I have done. Could please give me some advice? thx
2017-04-21 10:24 GMT+08:00 Andrey Fedorov<EMAIL_ADDRESS>
There are several publicly available collections that have lung CT data on
TCIA: http://www.cancerimagingarchive.net/ (see Location column).
You download them from TCIA using their tools, or you can use 3D Slicer
TCIABrowser extension to load data from those collections into 3D Slicer:
https://www.slicer.org/wiki/Documentation/Nightly/Extensions/TCIABrowser.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Radiomics/pyradiomics/issues/243#issuecomment-296020627,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AZJesyNs9ZmWLXWeaCYFTta2VFrkWyqTks5ryBNRgaJpZM4NC9tS
.

In the section import/export segments. I can not see"Operation: Import". I
am wondering where can I find it?

See screenshot below. Make sure you use a recent Nightly release of 3D Slicer. Do NOT use Stable release!

Thanks!  I have solved the problem!😁
2017-04-22 0:59 GMT+08:00 Andrey Fedorov<EMAIL_ADDRESS>
In the section import/export segments. I can not see"Operation: Import". I
am wondering where can I find it?
See screenshot below. Make sure you use a recent Nightly release of 3D
Slicer. Do NOT use Stable release!
[image: image]
https://cloud.githubusercontent.com/assets/313942/25288165/3cd3c90c-2692-11e7-97d6-5ce0799dabdb.png
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Radiomics/pyradiomics/issues/243#issuecomment-296246600,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AZJes8uelqlAzU41MklchDMX1zK9Cwxuks5ryOCAgaJpZM4NC9tS
.

--
陈运前
Yunqian Chen，
School of Physics，Sun Yat-sen University，
Guangzhou， China

Great, thanks for letting us know!
Was it solved by upgrading Slicer to a more recent version?

Yes, after using the recent Nightly release of 3D Slicer, the 3d rendering of the tumor was showed.

Thanks a lot for confirming!


⚠ Bofrost.be has degraded performance

In fb792d3, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1650 ms

Resolved: Bofrost.be performance has improved in 23e2232 after 1 hour, 1 minute.


nginx stats page occasionally not reachable - causes instant switch to offline scene

Hi,
i have observed that the nginx stats page is occasionally not reachable/does not show the values and is just "blank". Don't know why , but had the same when i tried to check it in the browser, it sometimes shows a white page or just the layout with no values. Bitrate is definitely fine, i managed to catch it when I had the liveU stats open and the stream in parallel in VLC, no drops. Switching to a "force-live" scene also works, mobile feed goes on. Bitrate command shows no connection for some time until it goes back to normal.
Is there a way that NOALBS can ignore this behavior and not switch to the offline scene immediately?
logs when I caught it and forced a live-scene:
2022-10-30T21:18:32.103888Z  INFO NOALBS{user=SuperStreamer}:Switcher: noalbs::switcher: Scene switched to [Offline] offline
2022-10-30T21:18:44.935953Z  INFO noalbs::chat::chat_handler: [SuperStreamer] SuperMod executed command: Switch
2022-10-30T21:18:48.136553Z  INFO NOALBS{user=SuperStreamer}:Switcher: noalbs::switcher: Not able to switch, waiting for scene switch to a switchable scene
2022-10-30T21:20:01.086961Z  INFO noalbs::chat::chat_handler: [SuperStreamer] SuperMod executed command: Bitrate
2022-10-30T21:41:36.716424Z  INFO noalbs::chat::chat_handler: [SuperStreamer] SuperMod  executed command: Bitrate
2022-10-30T21:41:40.117821Z  INFO noalbs::chat::chat_handler: [SuperStreamer] SuperMod  executed command: LiveScene
2022-10-30T21:41:40.148828Z  INFO NOALBS{user=SuperStreamer}:Switcher: noalbs::switcher: Switcher running
when I ignored it (broadcaster was doing sleep stream in a dark room, so i decided to let it run and check how long it takes to fix itself):
2022-10-31T00:19:00.106266Z  INFO NOALBS{user=SuperStreamer}:Switcher: noalbs::switcher: Scene switched to [Offline] offline
2022-10-31T00:20:18.270038Z  INFO NOALBS{user=SuperStreamer}:Switcher: noalbs::switcher: Scene switched to [Normal] mobile-ingest
Anyone having the same issue or knows a fix for this?
Best,
HD

You should start using the nginx.conf for NGINX provided by NOALBS, if something is not working correctly ;)
Your NGINX is not set up correctly, and has nothing to do with NOALBS. Change your very first line in config (worker_processes) back to 1 (or AUTO might work).
/DigibitDK

Unfortunately I dont know that much about NGINX. If you Google 'NGINX worker_processes', its a bit complicated. At least with RTMP. So, not sure how it works :)


Assign null to route callback parameters if they are not available

In case the function callback in the route lists parameters that are not available, just assign null to them. This is useful for optional authentication for example.

this is implemented using default values, not assigning null...