Welche Werte sind bei einem Sensor möglich

Sonstige Integrationen ohne Kategorie


Antworten
Benutzeravatar
Friedi
Beiträge: 429
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Welche Werte sind bei einem Sensor möglich

Beitrag von Friedi »

Ich weiß, die Frage im Betreff klingt seltsam, aber ich habe oft das Problem, dass ich gar nicht weiß, welche Werte ein Sensor überhaupt annehmen kann.
Gibt es irgendeinen weg, herauszufinden, welche Werte z.B. von einer Integration bereitgestellten Entität annehmen kann?

Jim_OS

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Jim_OS »

Moin,

ich weiß nicht ob ich Deine Frage richtig verstanden habe, denn die Antwort wäre eigentlich ziemlich einfach. :) Welchen Wert ein Sensor hat bzw. nutzt ist ja abhängig von der für ihn definierten Device-Class. Diese ist bei Geräten die HA automatisch erkennt und für die es eine Integration gibt, bei dieser hinterlegt. Alternativ kann man die Device-Class auch über Customizing entities anpassen.

Beispiele.: Die Device-Class Power ist entweder W oder kW. Voltage ist entweder V oder mV. Usw.

Die möglichen Device-Class ist/sind ja bei Sensor beschrieben. https://www.home-assistant.io/integrations/sensor/
Oder siehe auch: https://developers.home-assistant.io/do ... ty/sensor/

Wie gesagt weiß ich nicht ob Deine Frage darauf abzielt.

VG Jim

Benutzeravatar
Friedi
Beiträge: 429
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Friedi »

Es geht mir speziell um den Status der Entität sensor.ups_alarme von der NUT-Integration.
Die sind String und haben keine Device Class.

Jim_OS

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Jim_OS »

OK mit NUT hatte ich noch gar nichts am Hut. :) Die dabei verwendeten Sensoren kann man ja im Souce-Code sehen: https://github.com/home-assistant/core/ ... /sensor.py

Ich nehme mal an das es sich dann um diesen Sensor handelt?

Code: Alles auswählen

    "ups.alarm": SensorEntityDescription(
        key="ups.alarm",
        translation_key="ups_alarm",
        icon="mdi:alarm",

Wie genau der dann unter HA dargestellt wird weiß ich auch nicht weil ich NUT nicht nutze, aber vermutlich einfach nur per Statusanzeige: If ups.status contains "ALARM", add "Alarm" to virtual sensor ups.status.display.
https://github.com/home-assistant/core/pull/28591

Bei NUT vorhandene Sensoren:

Code: Alles auswählen

"sensor": {
      "ambient_humidity": { "name": "Ambient humidity" },
      "ambient_temperature": { "name": "Ambient temperature" },
      "battery_alarm_threshold": { "name": "Battery alarm threshold" },
      "battery_capacity": { "name": "Battery capacity" },
      "battery_charge": { "name": "Battery charge" },
      "battery_charge_low": { "name": "Low battery setpoint" },
      "battery_charge_restart": { "name": "Minimum battery to start" },
      "battery_charge_warning": { "name": "Warning battery setpoint" },
      "battery_charger_status": { "name": "Charging status" },
      "battery_current": { "name": "Battery current" },
      "battery_current_total": { "name": "Total battery current" },
      "battery_date": { "name": "Battery date" },
      "battery_mfr_date": { "name": "Battery manuf. date" },
      "battery_packs": { "name": "Number of batteries" },
      "battery_packs_bad": { "name": "Number of bad batteries" },
      "battery_runtime": { "name": "Battery runtime" },
      "battery_runtime_low": { "name": "Low battery runtime" },
      "battery_runtime_restart": { "name": "Minimum battery runtime to start" },
      "battery_temperature": { "name": "Battery temperature" },
      "battery_type": { "name": "Battery chemistry" },
      "battery_voltage": { "name": "Battery voltage" },
      "battery_voltage_high": { "name": "High battery voltage" },
      "battery_voltage_low": { "name": "Low battery voltage" },
      "battery_voltage_nominal": { "name": "Nominal battery voltage" },
      "input_bypass_frequency": { "name": "Input bypass frequency" },
      "input_bypass_phases": { "name": "Input bypass phases" },
      "input_current": { "name": "Input current" },
      "input_frequency": { "name": "Input line frequency" },
      "input_frequency_nominal": { "name": "Nominal input line frequency" },
      "input_frequency_status": { "name": "Input frequency status" },
      "input_phases": { "name": "Input phases" },
      "input_realpower": { "name": "Current input real power" },
      "input_sensitivity": { "name": "Input power sensitivity" },
      "input_transfer_high": { "name": "High voltage transfer" },
      "input_transfer_low": { "name": "Low voltage transfer" },
      "input_transfer_reason": { "name": "Voltage transfer reason" },
      "input_voltage": { "name": "Input voltage" },
      "input_voltage_nominal": { "name": "Nominal input voltage" },
      "output_current": { "name": "Output current" },
      "output_current_nominal": { "name": "Nominal output current" },
      "output_frequency": { "name": "Output frequency" },
      "output_frequency_nominal": { "name": "Nominal output frequency" },
      "output_phases": { "name": "Output phases" },
      "output_power": { "name": "Output apparent power" },
      "output_power_nominal": { "name": "Nominal output power" },
      "output_realpower": { "name": "Current output real power" },
      "output_realpower_nominal": { "name": "Nominal output real power" },
      "output_voltage": { "name": "Output voltage" },
      "output_voltage_nominal": { "name": "Nominal output voltage" },
      "ups_alarm": { "name": "Alarms" },
      "ups_beeper_status": { "name": "Beeper status" },
      "ups_contacts": { "name": "External contacts" },
      "ups_delay_reboot": { "name": "UPS reboot delay" },
      "ups_delay_shutdown": { "name": "UPS shutdown delay" },
      "ups_delay_start": { "name": "Load restart delay" },
      "ups_display_language": { "name": "Language" },
      "ups_efficiency": { "name": "Efficiency" },
      "ups_id": { "name": "System identifier" },
      "ups_load": { "name": "Load" },
      "ups_load_high": { "name": "Overload setting" },
      "ups_power": { "name": "Current apparent power" },
      "ups_power_nominal": { "name": "Nominal power" },
      "ups_realpower": { "name": "Current real power" },
      "ups_realpower_nominal": { "name": "Nominal real power" },
      "ups_shutdown": { "name": "Shutdown ability" },
      "ups_start_auto": { "name": "Start on ac" },
      "ups_start_battery": { "name": "Start on battery" },
      "ups_start_reboot": { "name": "Reboot on battery" },
      "ups_status": { "name": "Status data" },
      "ups_status_display": { "name": "Status" },
      "ups_temperature": { "name": "UPS temperature" },
      "ups_test_date": { "name": "Self-test date" },
      "ups_test_interval": { "name": "Self-test interval" },
      "ups_test_result": { "name": "Self-test result" },
      "ups_timer_reboot": { "name": "Load reboot timer" },
      "ups_timer_shutdown": { "name": "Load shutdown timer" },
      "ups_timer_start": { "name": "Load start timer" },
      "ups_type": { "name": "UPS type" },
      "ups_watchdog_status": { "name": "Watchdog status" },
      "watts": { "name": "Watts" }

Edit: Eine Action ist für alarm nicht hinterlegt

Code: Alles auswählen

  "device_automation": {
    "action_type": {
      "beeper_disable": "Disable UPS beeper/buzzer",
      "beeper_enable": "Enable UPS beeper/buzzer",
      "beeper_mute": "Temporarily mute UPS beeper/buzzer",
      "beeper_toggle": "Toggle UPS beeper/buzzer",
      "bypass_start": "Put the UPS in bypass mode",
      "bypass_stop": "Take the UPS out of bypass mode",
      "calibrate_start": "Start runtime calibration",
      "calibrate_stop": "Stop runtime calibration",
      "load_off": "Turn off the load immediately",
      "load_on": "Turn on the load immediately",
      "reset_input_minmax": "Reset minimum and maximum input voltage status",
      "reset_watchdog": "Reset watchdog timer (forced reboot of load)",
      "shutdown_reboot": "Shut down the load briefly while rebooting the UPS",
      "shutdown_reboot_graceful": "After a delay, shut down the load briefly while rebooting the UPS",
      "shutdown_return": "Turn off the load possibly after a delay and return when power is back",
      "shutdown_stayoff": "Turn off the load possibly after a delay and remain off even if power returns",
      "shutdown_stop": "Stop a shutdown in progress",
      "test_battery_start": "Start a battery test",
      "test_battery_start_deep": "Start a deep battery test",
      "test_battery_start_quick": "Start a quick battery test",
      "test_battery_stop": "Stop the battery test",
      "test_failure_start": "Start a simulated power failure",
      "test_failure_stop": "Stop simulating a power failure",
      "test_panel_start": "Start testing the UPS panel",
      "test_panel_stop": "Stop a UPS panel test",
      "test_system_start": "Start a system test"

BTW: Was genau willst Du denn erreichen, oder was genau ist das Problem?

VG Jim

Benutzeravatar
Friedi
Beiträge: 429
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Friedi »

So weit hatte ich das alles auch schon.
Das Problem ist, dass ich nicht weiß, welche Werte der Sensor sensor.ups_alarme annehmen kann. Und ich möchte eben auf bestimmte Werte reagieren, also als Trigger verwenden.
Mich interessieren auch nicht irgendwelche anderen Sensoren oder Aktionen bei NUT. Die habe ich alle auch gefunden. Ich kann ja auch bei Git lesen ;) mich interessiert eben nur dieser eine Sensor und welche Werte er annehmen kann. Und genau das, finde ich nirgends beschrieben.
Einer der Werte ist z.B. „No battery installed!“ Die Frage ist, welche Werte gibt es noch alles?

Jim_OS

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Jim_OS »

Friedi hat geschrieben: Do 18. Mai 2023, 13:34

Ich kann ja auch bei Git lesen ;) mich interessiert eben nur dieser eine Sensor und welche Werte er annehmen kann.

Na dann weißt Du ja eigentlich schon alles :lol: und um auf Deine Ursprungsfrage zurück zu kommen

Friedi hat geschrieben: Do 18. Mai 2023, 09:06

Gibt es irgendeinen weg, herauszufinden, welche Werte z.B. von einer Integration bereitgestellten Entität annehmen kann?

Die die über den Source-Code der HA Integration definiert wurden, was aber bei dem ups.alarm offensichtlich nicht der Fall ist, da keine device_class, state_class und entity, entity_category usw. definiert wurde.

Friedi hat geschrieben: Do 18. Mai 2023, 13:34

mich interessiert eben nur dieser eine Sensor und welche Werte er annehmen kann. Und genau das, finde ich nirgends beschrieben.
Einer der Werte ist z.B. „No battery installed!“ Die Frage ist, welche Werte gibt es noch alles?

Dann musst Du nicht bei HA danach suchen, sondern bei dem NUT Quellcode selber und da dann schauen was es überhaupt an Variablen gibt und welche Werte dafür möglich sind:
https://networkupstools.org/docs/user-m ... index.html
https://networkupstools.org/docs/user-m ... pcs02.html

Wenn Du das dann weißt könntest Du versuchen bei HA einen entsprechenden Sensor manuell entsprechend zu erstellen und dabei dann device_class, state_class, entity, entity_category usw. definieren, bzw. die Werte die lt. NUT Quellcode möglich sein sollten/sollen auslesen.

Beispiel von meinem Wechselrichter um per Modbus und ESPHome die Firmware-Version und den Status auszulesen:

Code: Alles auswählen

text_sensor:
  - platform: modbus_controller
    name: "${devicename} Firmware Version"
    address: 9
    register_count: 3
    register_type: holding
    #internal: true
    entity_category: diagnostic

  - platform: template
    name: "${devicename} Status"
    icon: mdi:eye
    entity_category: diagnostic
    lambda: |-
      if (id(status).state == 1) {
        return {"Normal"};
      } else if (id(status).state == 0)  {
        return {"Waiting"};
      } else {
        return {"Fault!"};
      }

Das es für Status den Wert "Normal, Waiting und Fault" gibt weiß ich auch nicht über eine HA Integration für meinen Wechselrichter - denn die gibt es gar nicht - sondern aus der Modbus-Doku des Wechselrichters. Wenn es eine HA Integration für den Modbus meines Wechselrichters geben würde und die drei verschiedenen Statuswerte darin nicht definiert wären - so wie ja scheinbar bei dem ups.alarm bei Dir der Fall ist - brauche ich nicht bei HA danach suchen, sondern in der Modbus Doku des Wechselrichters.

Wenn also der ups.alarm lt. NUT Doku verschiedene Werte (z.B. u.a. No battery installed) haben kann, kannst Du diese dann per YAML-Code ja auslesen und welche Werte bei HA selber für einen Sensor oder Entität möglich sind und wie diese sich dann darstellen lassen, weißt Du ja wahrscheinlich auch selber.

VG JIm

Benutzeravatar
Friedi
Beiträge: 429
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Friedi »

Ist c und das kann ich leider nicht. Ich wüsste nicht mal in welcher Datei ich suchen müsste.
Hätte ich die Werte, bräuchte ich auch nichts mehr in Yaml machen, da der von mir genannte Sensor ja sowieso versorgt wird…

Jim_OS

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Jim_OS »

Irgendwie glaube ich das wir hier - zumindest in Teilen - aneinander vorbei reden, oder geredet haben. :)

Ich versuche mal ein Resümee zu ziehen:
Du suchst Werte die für ups.alarm Sensor möglich sind. Diese Werte sind in dem YAML-Code der NUT-Integration nicht definiert/hinterlegt. Somit bleibt Dir eigentlich nur manuell einen extra Sensor dafür zu erstellen - sofern Du die NUT-Integration nicht selber neu kompilieren willst.
Um einen eigenen Sensor erstellen zu können müsstest Du wissen welche Werte bei/für ups.alarm möglich sind. Ich habe mir die NUT-Doku jetzt nicht kompl. angeschaut, aber bei ups.alarm sehe ich nur das "Overhead" als Example value genannt und mehr nicht.

NUT_Doku_ups_alarm.png
Friedi hat geschrieben: Do 18. Mai 2023, 13:34

Einer der Werte ist z.B. „No battery installed!“ Die Frage ist, welche Werte gibt es noch alles?

Falls in der NUT-Doku nicht alle Variablen für ups.alarm zu finden sind und auch sonst nirgends anders, kannst Du natürlich nichts machen.

VG Jim

Jim_OS

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Jim_OS »

Ein wenig - sprich mögliche Werte für/bei ups_alarm - habe ich noch gefunden. Vielleicht kannst Du damit ja noch etwas anfangen. ;)

Code: Alles auswählen

 1585 /* Convert the local status information to NUT format and set NUT
 1586    alarms. */
 1587 static void ups_alarm_set(void)
 1588 {
 1589     if (ups_status & STATUS(REPLACEBATT)) {
 1590         alarm_set("Replace battery!");
 1591     }
 1592     if (ups_status & STATUS(SHUTDOWNIMM)) {
 1593         alarm_set("Shutdown imminent!");
 1594     }
 1595     if (ups_status & STATUS(FANFAIL)) {
 1596         alarm_set("Fan failure!");
 1597     }
 1598     if (ups_status & STATUS(NOBATTERY)) {
 1599         alarm_set("No battery installed!");
 1600     }
 1601     if (ups_status & STATUS(BATTVOLTLO)) {
 1602         alarm_set("Battery voltage too low!");
 1603     }
 1604     if (ups_status & STATUS(BATTVOLTHI)) {
 1605         alarm_set("Battery voltage too high!");
 1606     }
 1607     if (ups_status & STATUS(CHARGERFAIL)) {
 1608         alarm_set("Battery charger fail!");
 1609     }
 1610     if (ups_status & STATUS(OVERHEAT)) {
 1611         alarm_set("Temperature too high!"); /* overheat; Belkin, TrippLite */
 1612     }
 1613     if (ups_status & STATUS(COMMFAULT)) {
 1614         alarm_set("Internal UPS fault!");   /* UPS fault; Belkin, TrippLite */
 1615     }
 1616     if (ups_status & STATUS(AWAITINGPOWER)) {
 1617         alarm_set("Awaiting power!");       /* awaiting power; Belkin, TrippLite */
 1618     }
 1619     if (ups_status & STATUS(BYPASSAUTO)) {
 1620         alarm_set("Automatic bypass mode!");
 1621     }
 1622     if (ups_status & STATUS(BYPASSMAN)) {
 1623         alarm_set("Manual bypass mode!");
 1624     }
 1625 }

Codequelle: https://fossies.org/linux/nut/drivers/usbhid-ups.c

VG Jim

Benutzeravatar
Friedi
Beiträge: 429
Registriert: Do 22. Jul 2021, 16:57
2
Has thanked: 34 times
Been thanked: 21 times

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Friedi »

Danke dir. Da sind schon mal einige drin :)

Jim_OS

Re: Welche Werte sind bei einem Sensor möglich

Beitrag von Jim_OS »

Jim_OS hat geschrieben: Do 18. Mai 2023, 12:49

OK mit NUT hatte ich noch gar nichts am Hut. :)

Jetzt aber schon. :lol:

HA_UPS.png

Falls die Frage überhaupt bzw. immer noch akut sein sollte würde mich mal interessieren um welche USV es bei Dir geht und welche Werte die überhaupt über NUT liefert. Beispiel:

Terminal_upsc_ups.png

VG Jim

Antworten