HA Tuya Local Sensor einbinden klapt nicht

Hallo zusammen,

ich bin dabei einen Tuya Lux und Temp Sensor in Homeassistant einzubinden. Local Tuya Installiert, Sensor gesucht und dann Key und Namen eingetragen ( ID stand schon korrekt drin ). Bekomme jedoch eine Fehlermeldung:

Logger: custom_components.localtuya.config_flow
Source: custom_components/localtuya/pytuya/init.py:1182
Integration: LocalTuya integration (documentation, issues)
First occurred: 11:45:02 (2 occurrences)
Last logged: 11:55:06

Unexpected exception: [Errno 113] Connect call failed (‘192.168.178.64’, 6668)Traceback (most recent call last):
File “/config/custom_components/localtuya/config_flow.py”, line 595, in async_step_configure_device
self.dps_strings = await validate_input(self.hass, user_input)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/localtuya/config_flow.py”, line 242, in validate_input
interface = await pytuya.connect(
^^^^^^^^^^^^^^^^^^^^^
File “/config/custom_components/localtuya/pytuya/init.py”, line 1182, in connect
_, protocol = await loop.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}')
OSError: [Errno 113] Connect call failed (‘192.168.178.64’, 6668)

Jemand eine Idee??

1 „Gefällt mir“

Zumindest bei meinem Tuya Türsensor ist es so, dass der nicht dauerhaft mit WLAN Verbunden ist, sondern nur kurz, wenn ich das Fenster auf/zu mache, sich also der Status ändert. LocalTuya kann deshalb nicht dauerhaft auf die Türsensoren zugreifen, sondern könnte es nur in dem Moment, wenn der Sensor Mal kurz verbunden ist. Ich wüsste auch nicht, wie ich das Problem umgehen sollte.
Schau Mal in deinem Router, ob die Sensoren eine dauerhafte Verbindung haben oder nicht.

In meiner FritzBox steht der Sensor unter “Aktive Verbindungen”, also gehe ich mal davon aus er ist Verbunden. Zumal ja die Einrichtung schon fehl schlägt, unter Local Tuya und " Add Device " steht der eine Sensor schon mit der IP aufgelistet. Die ID und den Key habe ich ausgelesen und eingegeben, aber es kommt dann zu den oben genanntem Fehler.

Das Problem hab ich auch

Ich für meine Teil habe das als Fehlkauf abgehakt.
WiFi und LocalTuya ist für batteriebetriebene Geräte wohl nicht wirklich zu gebrauchen.

Habe mir blöderweise auch solche Temperatur Sensoren geholt, vorgestern! Bekomme den gleich Fehler wie Du!
Ich habe leider auch noch keine Lösung! :unamused:

Gibt auch seit Monaten anscheinend keine. GitHub ist voll mit der Fehlermeldung und bis jetzt ist noch kein Fix in Sicht. :neutral_face:

Moin, ich habe mich jetzt mal ein wenig mal damit beschäftigt, ich arbeite ja erst ca. 1 Monat mit Home Assistant, aber ev. hilft es euch ja weiter! Ich habe mir ja die Temperatursensoren von „Comboss“ geholt, denke, die anderen sind ähnlich! Da diese nur vorhanden sind, wenn Daten gesendet werden oder wenn Temperaturschwankungen stattfinden, ein Wi-Fi Verbindung stattfindet, konnte ich den Sensor „Er hat hinten ein Taster“ nur hinzufügen, indem ich erstmal die Wifi Verbindung aufrechterhalten habe! Gleichzeitig war bei Tuya zu sehen, dass dort auch ein Port eingetragen war!
Ich habe in der Fritzbox die ich besitze, die Ip eingetragen und den Port! (Ist bei allen Sensoren gleich)

Das fiese, nach dem Update des Sensors, waren die Werte Sichtbar, verschwanden aber wieder mit „unavailable“. Das wollte ich ja nicht!

Ich dann für die Sensoren ein Template erstellt für, dort den „raw_state“ ausgelesen!

Bei Temperatur und Humidity sind es integer gewesen. Beim Batteriestatus wollte ich das Gleiche nutzen, dort steht „high“ drin, aber das funktioniert nicht. Dort handelt es sich um ein „Enum“!

So gut kann ich dann noch nicht mit Home Assistant! Ev. weiß ja dort einer von euch eine Lösung! Aber ich hoffe es hilft euch weiter!

Ich versuche das mal in Bildern abzulegen, damit es verständlicher wird!

Diese Sensoren habe ich benutzt

Ich habe diese erst mit “Smart Home” verbunden und dann in “Tuya IoT Plattform” meine Daten für den Sensor besorgt! ( Device ID und local Key) Dort sind auch die Werte des Sensors ersichtlich, hier waren es 1,2,3!

Dann ging es mit “local Tuya” weiter!

Ich habe, damit beim nächstem Schritt die WLAN-Verbindung da bleibt den Knopf hinten am Sensor gedrückt, war später ja nicht mehr nötig nur für das Anlegen des Sensors!

Dann konnte ich ja schon die IP sehen und wußte aus tuya den Port 6668. Ich weiß nicht ob es nötig ist, bei mir ging es nur mit Portfreigabe des Sensors, mit natürlich fester IP!

Danach habe ich angefangen den Sensor in “local Tuya” einzufügen! Was das zweite device ist, KA! Bin ja noch nicht so lange dabei! :slight_smile:
Dort habe ich auch die DP Points angegeben! 1,2,3

Dann als Sensor angelegt!

Ersten Sensor Angeben, Temperatur!

Nochmal Typ Sensor auswählen, Haken bei “Do not ad Bla Bla” aus weil man janoch weiter hinzufügen will!

Die weiteren Sensoren Humidity, Batterie () anlegen! Haken aus solange nicht vergessen! Und Fertigstellen!
Immer schön das Knöpfchen drücken, beim Sensor :slight_smile:


Nun habe ich die Sensor Templates angelegt, Da ja der Wert nach dem Update des W-lan immer wieder verschwindet!

#----- Wohnzimmer Temperatur -----#
- sensor:
    - name: "Wohnzimmer Temperatur Template"
      unique_id: "WohnzimmerTemperaturTemplate"
      unit_of_measurement: "°C"
      device_class: "temperature"
      state_class: "measurement"
      state: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.whz_temperatur', 'raw_state') %}
        {% if state != invalid_value %} 
            {{ state_attr('sensor.whz_temperatur', 'raw_state') }}
        {% else %}
            {{ states('sensor.whz_temperatur') }} 
        {% endif %}

- sensor:
    - name: "Wohnzimmer Humidity Template"
      unique_id: "WohnzimmerHumidityTemplate"
      unit_of_measurement: "%"
      device_class: "humidity"
      state_class: "measurement"
      state: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.whz_humidity', 'raw_state') %}
        {% if state != invalid_value %} 
            {{ state_attr('sensor.whz_humidity', 'raw_state') }}
        {% else %}
            {{ states('sensor.whz_humidity') }} 
        {% endif %}

Diese sind nach Neu laden des HA sichtbar! und bleiben nach Update vorhanden!

Nun können diese ins Dashboard, wie Ihr es wünscht! Ich habe hier noch “zuletzt aktualisiert an”


Local_Tuya_14

So, das war es! Verzeiht mir Fehler, ich Arbeite erst 4 Wochen mit dem HA!
Auch habe ich nicht rausbekommen wie ich den Batterie Level damit anzeige!
Dort steht nach Update des Sensors, “High”. Alle 3 sind ausgelesen über raw_state!
Der Unterschied lag darin, die ersten zwei sind “integer” und Batt Status ein “Enum”

Wer noch den Tipp mit dem Batterie Status, als letzten Wert anzeigen hat, möge sich Melden,
und Vielleicht kommen da noch paar Ideen, oder Verbesserungen herum!

Ich hoffe das hilft weiter!

Gruß Jens

1 „Gefällt mir“

Hi, klasse Beschreibung von dir, denke das hilft vielen anderen auch!

Aber sag mal läuft das bei dir jetzt stabil mit den Sensoren über Tuya Local?

Weil im offiziellen HA forum waren sie sich einig das Tuya Local mit Batterie Sensoren nicht vernünftig fkt

Bis Jetzt ja! Ich beobachte das mal!
Die Sensoren verbinden sich mit W-lan, wenn die Temperatur sich um 0,5 Grad ändert! Die Hilfs Entität, zeige ich dann im Dashboard an. Die speichert dann das letzte Ergebnis solange, bis wieder eine Änderung stattfindet! Verbindet der Sensor sich wieder, wird die Hilfs Entität (oder eben das Template) im Dashboard aktualisiert!
Bis jetzt läuft es einwandfrei!

Ich finde das OK so!

1 „Gefällt mir“

Hi, super Lösung mit dem Template. Spitzenklasse. Leider habe ich auch das gleiche ENUM Problem. Mache schon seit Tagen rum und finde keine Lösung. Vielleicht bist Du hier weiter. Wenn ja würde ich mich über einen Tip freuen.

Das klingt nach einem guten Workaround für Sensoren (wie z.B. Temperatur), die man eher als Bedingung nutzt.
Aber für Trigger-Sensoren (wie z.B. Fenster/Türkontaktsensoren) ist das vermutlich weniger brauchbar, da man da ja häufig schnell reagieren will und nicht erst einige Sekunden warten will bis das Licht angeht, nachdem man z.B. die Tür geöffnet hat. Aber die Verbindung zum WLAN dauert halt seine Zeit.
Aber ein große Danke für die ausführliche Beschreibung.

Hallo, wie kann ich die Template in Homeassistant nutzen?

Hallo, erstmal Danke für Deine Vorarbeiten. Ich habe Deine Konfiguration in leicht abgeänderter Form für meine Kühlschranküberwachung verwendet… Leider habe ich das Problem, dass trotz Sensor Templates die angezeigten Werte nach kurzer Zeit verschwinden… Was mach ich falsch?

ich bekomme es auch nicht hin, wäre nett wenn @jeracom sich mal melden könnte…

@jeracom Hallo vorab vielen Dank für die sehr detaillierte Anleitung das einbinden hat wunderbar geklappt allerdings hänge ich wie die anderen gerade bei dem Template. Ich habe es unter Entwicklerwerkzeuge unter Template eingefügt und auf meine Sensoren angepasst leider verliert der Sensor immernoch seine werte was mach ich falsch bzw was überseh ich evtl.

vielen dank schonmal

Zum Glück ändern sich Temperatur und die Luftfeuchtigkeit nicht so schnell.

Klasse Beschreibung. Mir hat sie sehr geholfen. Vielen Dank!!

Was mich wunderte ist jedoch: Mit dem Ladezustand der Batterie ist die gleiche Logik nicht umsetzbar:

  - sensor:
    - name: "T&H-Sensor Batterie gemessen"
      unique_id: "THSensorBatterieGemessen"
      unit_of_measurement: "%"
      device_class: "battery"
      state_class: "measurement"
      state: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.draussen_th_battery', 'raw_state') %}
        {% if state != invalid_value %} 
            {{ state_attr('sensor.draussen_th_battery', 'raw_state') }}
        {% else %}
            {{ states('sensor.draussen_th_battery') }} 
        {% endif %}

Der Wert des Ladezustands wird in der neuen Hilfsvariable “T&H-Sensor Batterie gemessen” nicht gehalten. Sobald der Sensorwert nicht mehr aktuell ist, verschwindet auch der Wert für “T&H-Sensor Batterie gemessen”. Kann jmd. sagen, woran das liegt?

Schöne Grüße.

Alle, die Probleme mit der Umsetzung haben:

  1. geht in “File editor”
  2. öffnet dort die Datei /homeassistant/configuration.yaml
  3. scrollt runter bis “template”; darunter (hinter/vor/zwischen Euren schon existierenden Sensordefinitionen) fügt Ihr die beschriebenen Konfiguration der neuen Sensoren hinzu, z.B. so:
template:
  - sensor: ...
   ...
   ...

  - sensor:
    - name: "neue Hilfsvariable Temperatur"
      unique_id: "neue Hilfsvariable Temperatur"
      unit_of_measurement: "°C"
      device_class: "temperature"
      state_class: "measurement"
      state: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.draussen_temperatur', 'raw_state') %}
        {% if state != invalid_value %} 
            {{ state_attr('sensor.draussen_temperatur', 'raw_state') }}
        {% else %}
            {{ states('sensor.draussen_temperatur')}} 
        {% endif %}

  - sensor:
    - name: "neue Hilfsvariable Luftfeuchtigkeit"
      unique_id: "neue Hilfsvariable Luftfeuchtigkeit"
      unit_of_measurement: "%"
      device_class: "humidity"
      state_class: "measurement"
      state: >-
        {% set invalid_value = 'unavailable' %}
        {% set state = states('sensor.draussen_humidity', 'raw_state') %}
        {% if state != invalid_value %} 
            {{ state_attr('sensor.draussen_humidity', 'raw_state') }}
        {% else %}
            {{ states('sensor.draussen_humidity') }} 
        {% endif %}

Klappt wunderbar.

Viel Erfolg und schöne Grüße!

Vielen lieben Dank für deine Vorarbeit, alleine wäre ich verzweifelt. Ich habe nur den Code des Sensortemplates ein wenig modifiziert, so erscheint er mir logischer:

#--- Temperatur THS1 ---#
- sensor:
  - name: "ths1_permanent_temp"
    unique_id: "ths1_permanent_temp"
    unit_of_measurement: "°C"
    device_class: "temperature"
    state_class: "measurement"
    state: >
      {% set sensorstatus = states('sensor.temp1', 'raw_state') %}
      {% if sensorstatus != 'unavailable'  %}
          {% set valuetokeep = sensorstatus %}
          {{ states('sensor.temp1', 'raw_state') | float }}
      {% else %}
          valuetokeep
      {% endif %}

#--- Feuchtigkeit THS1 ---'
- sensor:
  - name: "ths1_permanent_hum"
    unique_id: "ths1_permanent_hum"
    unit_of_measurement: "%"
    device_class : "humidity"
    state_class: "measurement"
    state: >
      {% set sensorstatus = states('sensor.hum1', 'raw_state') %}
      {% if sensorstatus != 'unavailable' %}
          {% set valuetokeep = sensorstatus %}
          {{ states('sensor.hum1', 'raw_state') | float }}
      {% else %}
          valuetokeep
      {% endif %}