fhempy: Tuya Cloud

Begonnen von dominik, 30 Juli 2021, 21:36:48

Vorheriges Thema - Nächstes Thema

GodVatter

Zitat von: satprofi am 01 April 2023, 19:10:07seit neuesten werden readings nicht mehr aktualisiert. öfters auch tuya_lokal nicht, erst nach update von tuya und neu scan und anlegen. die cloud liest überhaupr nichts mehr ein. gibts bekannte probleme?

hast du das Problem gelöst bekommen? ich stehe wie beschrieben vor genau dem gleichen...

dominik

tuya_cloud verursacht bei den Devices Updates manchmal Probleme. Das liegt an der tuya_cloud und wird auch bei HomeAssistant, die die gleiche Library verwenden, immer wieder bemängelt. Ich empfehle daher tuya (local) zu verwenden.

Zitat von: GodVatter am 18 April 2023, 08:42:132023-04-17 20:35:29,803 - ERROR    - fhempy.lib.fhem: FHEM took 7216ms for setDevAttrList('tuya_cloud_XXX', ' IODev disable:0,1 '.$readingFnAttributes)
2023-04-17 20:35:29,811 - ERROR    - fhempy.lib.fhem: FHEM took 7221ms for setDevAttrList('tuya_cloud_connector', ' IODev disable:0,1 '.$readingFnAttributes)
2023-04-17 20:35:29,820 - ERROR    - fhempy.lib.fhem: FHEM took 7177ms for setDevAttrList('tuya_system', ' IODev disable:0,1 '.$readingFnAttributes)
2023-04-17 20:35:29,828 - ERROR    - fhempy.lib.fhem: FHEM took 7177ms for setDevAttrList('tuya_local_XXX', ' IODev disable:0,1 '.$readingFnAttributes)
2023-04-17 20:35:32,450 - INFO     - websocket: Websocket connected
2023-04-17 20:35:46,611 - ERROR    - fhempy.lib.fhem: FHEM took 5932ms for readingsBulkUpdate($defs{'tuya_cloud_XXX'},'create_time','1611686843');;
2023-04-17 20:35:46,614 - ERROR    - fhempy.lib.fhem: FHEM took 5932ms for AttrVal('tuya_local_XXX', 'tuya_spec_status', '[]')

im fhempy_log sind oben dargestellte Einträge zu sehen

kann mir jemand helfen, was hier das Problem ist?

product_id ist folgende
eeih95rmks0mjflz
Ist nicht weiter schlimm...deine FHEM Instanz war zu der Zeit sehr überlastet und hat bis zu 7s benötigt um eine Antwort zu liefern. Solange das nicht andauernd auftritt, sondern nur beim Start, kannst du das vernachlässigen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

satprofi

Zitat von: GodVatter am 21 April 2023, 15:42:18
Zitat von: satprofi am 01 April 2023, 19:10:07seit neuesten werden readings nicht mehr aktualisiert. öfters auch tuya_lokal nicht, erst nach update von tuya und neu scan und anlegen. die cloud liest überhaupr nichts mehr ein. gibts bekannte probleme?

hast du das Problem gelöst bekommen? ich stehe wie beschrieben vor genau dem gleichen...
ja, mit update von tuya_pibinding
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

uwirt

#978
Wie ist das gemeint mit dem Update von tuya_binding?

Ich habe auch das Problem, dass die Readings nur nach einem ,,shutdown restart" von FHEM erfolgen.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

satprofi

Zitat von: uwirt am 01 Mai 2023, 14:05:34Wie ist das gemeint mit dem Update von tuya_binding?

Ich habe auch das Problem, dass die Readings nur nach einem ,,shutdown restart" von FHEM erfolgen.

Hallo.
Wenn du auf Device "    
local_pybinding" gehst siehst du update .



ich habe mir ein at angelegt dafür:
define  tuya_pybinding_reset at *00:59:00 set local_pybinding update
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

uwirt

Ich habe jetzt auf tuya local gewechselt und es funktioniert.
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

stefanru

Hallo zusammen,

ich habe ein neuen Usecase und frage mich ob das jemand schon elegant gelöst hat.

Es betrifft Tuya Cloud und auch local.

Ich habe eine Pumpe für den Warmwasserboiler die über einen Temperatursensor geschaltet wird.
Nun ist es so dass die ganze Steckdose geschaltet wird.

Die Tuya Steckdose soll also nur den Stromverbrauch messen.
Das tut sie auch, nur gibt es nie cur_power Werte mit 0.
Da die Steckdose ja einfach ausgeschaltet wird.

In der Tuya App sehe ich "Offline" wenn der Strom weg ist.

Mein Fhem Graph zeigt immer den Verbrauch an der als letztes gemessen wurde, auch für die Zeit in der die Steckdose aus war und so keine Daten lieferte.
Auch die Anzeige im FHEM zeigt nur den letzten Zustand.
Also wenn die Steckdose Offline ist, wird angezeigt dass sie an ist und das Gerät 30 Watt braucht.

Ich müsste also mindestens einen 0 Wert in die DB schreiben wenn die Steckdose keine Daten mehr liefert.
Dachte nun es mit Readingsage > 60 sekunden zu realisieren.

Meine Frage ist ob hier jemand so etwas schonmal gemacht hat und vielleicht auch auf eine bessere Lösung gekommen ist?

Danke und Gruß,
Stefan







stefanru

Hi,

zusätzlich zur Frage oben habe ich heute auch noch ein Problem im Logfile gefunden.
Es tritt auf seit dem Update auf 0.1.648.
Mein Temperatursensor hat ein Reading battery_state mit high, middle, low.

Im log kommen folgende Meldungen:
2023.05.14 10:48:59 1: BindingsIo (local_pybinding): Argument "middle" isn't numeric in numeric gt (>) at (eval 17242163) line 1.
 => COMMAND: readingsEndUpdate($defs{'tuya_cloud_bffa550a829a269630vhcn'},1);;
2023.05.14 10:48:59 1: BindingsIo (local_pybinding):    command = readingsEndUpdate($defs{'tuya_cloud_bffa550a829a269630vhcn'},1);;
2023.05.14 10:48:59 1: BindingsIo (local_pybinding):    NAME = tuya_cloud_bffa550a829a269630vhcn
2023.05.14 10:48:59 1: BindingsIo (local_pybinding):    msgtype = command
2023.05.14 10:48:59 1: BindingsIo (local_pybinding):    awaitId = 12710777

Ein List des Temperatur devices sieht so aus:
Internals:
   DEF        tuya_cloud tuya_cloud_connector bffa550a829a269630vhcn
   DEVICEID   bffa550a829a269630vhcn
   FHEMPYTYPE tuya_cloud
   FUUID      63d3d9cd-f33f-0c45-4616-9afe69334bfac8ce
   IODev      local_pybinding
   NAME       tuya_cloud_bffa550a829a269630vhcn
   NR         2302
   PYTHONTYPE tuya_cloud
   STATE      </br>Temp: 22.4 C° RF: 59.0 %
</br>Batterie: middle
   TYPE       fhempy
   eventCount 260
   Helper:
     DBLOG:
       va_humidity:
         logdb:
           TIME       1684060952.22546
           VALUE      59.0
       va_temperature:
         logdb:
           TIME       1684060951.98714
           VALUE      22.4
   READINGS:
     2023-05-12 01:43:38   active_time     1674825254
     2023-05-14 12:42:32   battery_state   middle
     2023-05-12 01:43:38   biz_type        0
     2023-05-12 01:43:38   category        wsdcg
     2023-05-12 01:43:38   create_time     1674825254
     2023-05-12 01:43:38   icon            https://images.tuyaeu.com/smart/icon/ay1525749833414yotNt/b3a94a9431b68373894805b4a19092e4.png
     2023-05-12 01:43:38   id              bffa550a829a269630vhcn
     2023-05-12 01:43:38   ip              84.188.243.243
     2023-05-12 01:43:38   lat             49.6104
     2023-05-12 01:43:38   local_key       55db39dd00af9487
     2023-05-12 01:43:38   lon             8.7263
     2023-05-12 01:43:38   model           TH08CBU
     2023-05-12 01:43:38   name            T & H Sensor
     2023-05-12 01:43:38   online          on
     2023-05-12 01:43:38   owner_id        39691875
     2023-05-12 01:43:38   product_id      xlk3mtpjo1zkmdvh
     2023-05-12 01:43:38   product_name    T & H Sensor
     2023-05-12 01:43:26   state           ready
     2023-05-12 01:43:38   sub             off
     2023-05-12 03:54:13   temp_unit_convert c
     2023-05-12 01:43:38   time_zone       +01:00
     2023-05-12 01:43:38   uid             eu1634560510538qIss1
     2023-05-12 01:43:38   update_time     1674825257
     2023-05-14 12:42:32   update_time_hr  27.01.2023, 14:14:17
     2023-05-12 01:43:38   uuid            21d66a0f7e3333d0
     2023-05-14 12:42:32   va_humidity     59.0
     2023-05-14 12:42:31   va_temperature  22.4
   args:
     tuya_cloud_bffa550a829a269630vhcn
     fhempy
     tuya_cloud
     tuya_cloud_connector
     bffa550a829a269630vhcn
   argsh:
Attributes:
   DbLogInclude va_temperature,va_humidity
   alias      T & H Sensor
   group      Steckdosen_Tuya
   room       fhempy
   stateFormat </br>Temp: va_temperature C° RF: va_humidity %
</br>Batterie: battery_state
   userReadings update_time_hr { timestamp2date(ReadingsVal("tuya_cloud_bffa550a829a269630vhcn","update_time",0)) }

Danke und Gruß,
Stefan

Rainer S.

Hallo, ich will meine Tuya-WiFi-Steckdosen nicht nur schalten sondern auch einige Werte anzeigen. (siehe Bild 1) Allerdings stört mich die letzte Anzeige des Verbrauches in Wh. Da hätte ich am liebsten kWh. Nun probiere ich schon einige Zeit mit dem stateformat herum und komme auf keinen "grünen Zweig".

Wie muss ich das stateformat ändern, damit mir die letzte Anzeige in kWh angezeigt wird.

Konfiguration:
- Raspberry Pi (3) mit EnOcean Pi
- komplette Hausinstallation von Eltako (EnOcean)
- 1-Wire Temperatursensoren
- mehrere Shelly 1

stefanru

Hi Rainer,

bei der Solaranlage habe ich in StateFormat so etwas:
{
"Netz: ".sprintf("%.0f",ReadingsVal("$name","PowerFlow_Site_P_Grid", undef))." W <br/>
"Total Erzeugt: ".sprintf("%.3f",(ReadingsVal("$name","PowerFlow_Site_E_Total", undef)/1000))." kWh <br/>".
}

Sag mal das ist aber doch kein cloud sondern local oder?
Bei local habe ich energy, bei cloud nicht oder auf 0.

Gruß,
Stefan


Rainer S.

#985
Hallo Stefan, danke für die Antwort. Leider klappt das mit

{sprintf("%.3f",(ReadingsVal("tuya_local_251411404855195f16be","Waschmaschine","energy")/1000))." kWh"
}

auch nicht. In diesem Fall schreibt er immer nur 0.000 kWh. Der Wert von energy (aus dem reading 1.363) wird nicht übernommen. Ich habe es auch schon mit allen möglichen Formatierungen versucht. Leider ohne Erfolg.

Und natürlich ist das Local. Habe ich es dann im falschen Thread gepostet?
Konfiguration:
- Raspberry Pi (3) mit EnOcean Pi
- komplette Hausinstallation von Eltako (EnOcean)
- 1-Wire Temperatursensoren
- mehrere Shelly 1

satprofi

Zitat von: stefanru am 14 Mai 2023, 11:52:34Hallo zusammen,

ich habe ein neuen Usecase und frage mich ob das jemand schon elegant gelöst hat.

Es betrifft Tuya Cloud und auch local.

Ich habe eine Pumpe für den Warmwasserboiler die über einen Temperatursensor geschaltet wird.
Nun ist es so dass die ganze Steckdose geschaltet wird.

Die Tuya Steckdose soll also nur den Stromverbrauch messen.
Das tut sie auch, nur gibt es nie cur_power Werte mit 0.
Da die Steckdose ja einfach ausgeschaltet wird.

In der Tuya App sehe ich "Offline" wenn der Strom weg ist.



Danke und Gruß,
Stefan








warum schaltest du die pumpe nicht mit der tuya steckdose? dann ist sie immer online
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

stefanru

Hi Rainer,

versuch es mal bitte genau so in stateFormat, nichts austauschen:
   
{sprintf("%.3f",(ReadingsVal("$name","energy",undef)/1000))." kWh"}

$name ist eine variable für das Device. Musst du nicht austauschen, funktioniert so.
Kannst du dann genau so in jedes Device kopieren in dem du das Reading brauchst.
"enregy" ist dein Reading
undef steht für undefined, falls kein Wert kommt. Kannst du auch z.B. 0 hinschreiben.
Aber undef geht gut.

Habe es gerade selbst probiert bei einem local Device.
Funktioniert genau so.

@satprofi:
Das ist ein uralter Temperatursensor, den müsste ich  gegen etwas moderneres ersetzen um dann die Tuya Steckdose zu steuern.
Vielleicht mache ich das mal, aber so funktioniert es auch gut nur die Warning im Log ist halt blöd.

Gruß,
Stefan

Rainer S.

Hi Stefan,

habe es jetzt genau so in das stateformat kopiert. Ergebnis siehe Bilder. Obwohl im Reading energy 1.363 steht wird jetzt 0.001 kWh angezeigt.

Es sind doch ganz normale Gosund WiFi-Steckdosen (https://www.amazon.de/gp/product/B09J8P9YFL/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) . Die habe doch nicht nur ich, oder?

Trotzdem danke Stefan

Gruß

Rainer
Konfiguration:
- Raspberry Pi (3) mit EnOcean Pi
- komplette Hausinstallation von Eltako (EnOcean)
- 1-Wire Temperatursensoren
- mehrere Shelly 1

stefanru

Hi Rainer,

mist da habe ich nicht aufgepasst.
Ich dachte du brauchst ein geteilt durch 1000 um von Wh auf kWh zu kommen.

Aber das energy reading ist ja in kWh.
Durch das teilen durch tausend bekommst du jetzt 0.001 megaWh :-)

Also war dein state Format ja ok.
Ich denke ich verstehe dein Problem nicht ganz ;-)

Schreib doch einfach dein altes stateFormat vom ersten Post wieder hin, da power ja schon in kWh ist und die power Zeile dann mit der richtigen Einheit:
Also das alte state Format wieder nehmen und nur die Zeile für energy mit der richtigen Einheit hinschreiben:
energy kWh

Meinst du das?

Gruß,
Stefan