fhempy: tuya (lokal)

Begonnen von dominik, 26 April 2022, 19:12:25

Vorheriges Thema - Nächstes Thema

thburkhart

Zitat von: dominik am 25 Februar 2023, 11:31:08
Ok, bedeutet alle Devices liefern jetzt lokal richtige Werte? Oder fehlt noch einer?

ja alle Devices liefern nun aktuelle Werte
habe zur Kontrolle verwendet:

stateFormat Verbrauch: [$name: energy] kWh, cPower [$name:cur_power] W, cVoltage [$name:cur_voltage] V, Time: [$name:cur_power:t]

ALLERDINGS:

bei manchen Geräte ist cur_power um Faktor 10 erhöht !!!!

aber das hast du ja schon gefixt?

ich müsste nun einzeln App versus FHEMPY prüfen ?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

thburkhart

parallel mache ich auf die Suched danach, warum die readings cur_power und energy nichr in die dbLog geschrieben werden

@stefanru
@Mitlesende

wie hast du das bei dir gelöst?

1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

stefanru

Hi Thomas,

ich arbeite bei mir mit DBLogInclude.
Ich gebe also bei jedem Device an was gelogged werden soll.
Zur Zeit speichere ich nur cur_power mit:
DbLogInclude cur_power:60:force

Das :60:force habe ich weil mir fhempy zu oft Daten liefert und ich nicht die DB überfüllen will

Letztens hat sich bei mir da auch etwas das Verhalten von fhempy geändert was events angeht.
Ich habe das hier: https://forum.fhem.de/index.php/topic,132154.0.html mit Heiko (DS_Starter) besprochen.

Wenn du mehrere Readings mit Zeit oder force haben willst musst du aber aufpassen und so etwas schreiben:
DbLogInclude
(Kessel|Ruecklauf|Vorlauf|Wasserumwaelz):600

Gruß,
Stefan


dominik

Bitte productids der Devices mit Faktor 10 liefern.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

thburkhart

#604
Zitat von: dominik am 25 Februar 2023, 13:36:31
Bitte productids der Devices mit Faktor 10 liefern.

37mnhia3pojleqfh  cur_power 10x cur_voltage 10x

wifvoilfrqeo6hvu cur_power 10x cur_voltage 10x

musste erst noch _clouds dazuholen, um die ProductId zu sehen.

könntest Du in _local zukünftig die ProductId auch als Attribut mitgeben ?

die Werte in _local und _cloud sind übrigens identisch und eben falsch
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

thburkhart

Zitat von: stefanru am 25 Februar 2023, 13:24:45
Hi Thomas,

ich arbeite bei mir mit DBLogInclude.
Ich gebe also bei jedem Device an was gelogged werden soll.
Zur Zeit speichere ich nur cur_power mit:
DbLogInclude cur_power:60:force

Das :60:force habe ich weil mir fhempy zu oft Daten liefert und ich nicht die DB überfüllen will

Letztens hat sich bei mir da auch etwas das Verhalten von fhempy geändert was events angeht.
Ich habe das hier: https://forum.fhem.de/index.php/topic,132154.0.html mit Heiko (DS_Starter) besprochen.

Wenn du mehrere Readings mit Zeit oder force haben willst musst du aber aufpassen und so etwas schreiben:
DbLogInclude
(Kessel|Ruecklauf|Vorlauf|Wasserumwaelz):600

Gruß,
Stefan
Hi Stefan,

dblogInclude verwende ich nun auch so

das von Heiko habe ich nicht verstanden:
ZitatUm regelmäßig einen Log-Eintrag zu erzeugen benutzt man "set <name> addLog ..." im DbLog.
Dieses Verfahren ist auch nicht neu.
wie würde der passende Befehl zu dbloginclude (energy|cur_power):600
aussehen?




1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

Superposchi

Habe das Komma ergänzt. Das mit dem Validator ist ein guter Tip.
Nach einem fhempy-Neustart wird jetzt ein Reading modus angezeigt. Allerdings ist der gesamte Bereich zur Auswahl der Set-Befehle verschwunden. Und bei der attributszuweisung von dp_02 auf modus kommt es zu folgender Fehlermeldung:
c69fa7b6bdacda9c7f21196.png
id
bf75378cf6e13718e0rvcj
ip
88.153.83.160
lat
51.0583
local_key
7ada5a7cbf4a78e8
lon
6.1030
modus
fresh
name
Schlafzimmerventilator
online
1
owner_id
23921647
product_id
6awobc9jfnlwvqtw
product_name
ARC Humidifier
state
on
sub
0
switch
off
switch_horizontal
off
time_zone
+02:00
uid
eu1610479166063muAw8
update_time
1654518998
uuid
fd0c8a9f78a36684
tuya_local_bf75378cf6e13718e0rvcj
dp_02

modus
Attributes
alias
Schlafzimmerventilator
dp_01
switch
group
tuya
room
fhempy
tuya_spec_functions
[{'code': 'switch', 'dp_id': 1, 'type': 'Boolean', 'values': {}, 'desc': 'switch'}, {'code': 'fan_speed_percent', 'dp_id': 3, 'type': 'Integer', 'values': {'min': '1', 'max': '9', 'scale': '0', 'step': '1'}, 'desc': 'fan speed percent'}, {'code': 'switch_horizontal', 'dp_id': 5, 'type': 'Boolean', 'values': {}, 'desc': 'switch horizontal'}, {'code': 'modus', 'dp_id': 2, 'type': 'Enum', 'values': '{"range":["sleep","fresh","strong", "auto", "close"]}', 'desc': 'modus'}]
tuya_spec_status
[{'code': 'switch', 'dp_id': 1, 'type': 'Boolean', 'values': {}}, {'code': 'fan_speed_percent', 'dp_id': 3, 'type': 'Integer', 'values': {'min': '1', 'max': '9', 'scale': '0', 'step': '1'}}, {'code': 'switch_horizontal', 'dp_id': 5, 'type': 'Boolean', 'values': {}}, {'code': 'modus', 'dp_id': 2, 'type': 'Enum', 'values': '{"range":["sleep","fresh","strong", "auto", "close"]}', 'desc': 'modus'}]
Help for fhempy device tuya Copy for forum.fhem.de
...



Failed to execute function Attr: Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
    ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
    ret = await asyncio.wait_for(
  File "/usr/lib/python3.9/asyncio/tasks.py", line 481, in wait_for
    return fut.result()
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/generic.py", line 199, in Attr
    return await utils.handle_attr(self._conf_attr, self, hash, args, argsh)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/utils.py", line 108, in handle_attr
    ret = await fct_call(hash)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/tuya/tuya.py", line 159, in set_attr_dp
    await self._generate_set()
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/tuya/tuya.py", line 212, in _generate_set
    step = spec["step"] / (10 ** spec["scale"])
TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'str'

Eine ähnliche Fehlermeldung kommt auch wenn man versucht dp_03 und dp_05 auf fan_speed_percent und switch_horizontal zuzuweisen. Weibliche letzteres zumindest noch als Reading angezeigt wird.

dominik

Zitat von: thburkhart am 25 Februar 2023, 14:37:47
37mnhia3pojleqfh  cur_power 10x cur_voltage 10x

wifvoilfrqeo6hvu cur_power 10x cur_voltage 10x

musste erst noch _clouds dazuholen, um die ProductId zu sehen.

könntest Du in _local zukünftig die ProductId auch als Attribut mitgeben ?

die Werte in _local und _cloud sind übrigens identisch und eben falsch

Beide productids sind jetzt bereits hinterlegt. Die productid siehst du im DEF, prüfe bitte ob du die korrekte hinterlegt hast.

Cloud ist sicher auch falsch? Das wundert mich sehr, das ist sehr unüblich.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Zitat von: Superposchi am 25 Februar 2023, 14:58:41
Habe das Komma ergänzt. Das mit dem Validator ist ein guter Tip.
Nach einem fhempy-Neustart wird jetzt ein Reading modus angezeigt. Allerdings ist der gesamte Bereich zur Auswahl der Set-Befehle verschwunden. Und bei der attributszuweisung von dp_02 auf modus kommt es zu folgender Fehlermeldung:
c69fa7b6bdacda9c7f21196.png
id
bf75378cf6e13718e0rvcj
ip
88.153.83.160
lat
51.0583
local_key
7ada5a7cbf4a78e8
lon
6.1030
modus
fresh
name
Schlafzimmerventilator
online
1
owner_id
23921647
product_id
6awobc9jfnlwvqtw
product_name
ARC Humidifier
state
on
sub
0
switch
off
switch_horizontal
off
time_zone
+02:00
uid
eu1610479166063muAw8
update_time
1654518998
uuid
fd0c8a9f78a36684
tuya_local_bf75378cf6e13718e0rvcj
dp_02

modus
Attributes
alias
Schlafzimmerventilator
dp_01
switch
group
tuya
room
fhempy
tuya_spec_functions
[{'code': 'switch', 'dp_id': 1, 'type': 'Boolean', 'values': {}, 'desc': 'switch'}, {'code': 'fan_speed_percent', 'dp_id': 3, 'type': 'Integer', 'values': {'min': '1', 'max': '9', 'scale': '0', 'step': '1'}, 'desc': 'fan speed percent'}, {'code': 'switch_horizontal', 'dp_id': 5, 'type': 'Boolean', 'values': {}, 'desc': 'switch horizontal'}, {'code': 'modus', 'dp_id': 2, 'type': 'Enum', 'values': '{"range":["sleep","fresh","strong", "auto", "close"]}', 'desc': 'modus'}]
tuya_spec_status
[{'code': 'switch', 'dp_id': 1, 'type': 'Boolean', 'values': {}}, {'code': 'fan_speed_percent', 'dp_id': 3, 'type': 'Integer', 'values': {'min': '1', 'max': '9', 'scale': '0', 'step': '1'}}, {'code': 'switch_horizontal', 'dp_id': 5, 'type': 'Boolean', 'values': {}}, {'code': 'modus', 'dp_id': 2, 'type': 'Enum', 'values': '{"range":["sleep","fresh","strong", "auto", "close"]}', 'desc': 'modus'}]
Help for fhempy device tuya Copy for forum.fhem.de
...



Failed to execute function Attr: Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 385, in handle_function
    ret = await self.execute_function(hash, fhem_reply_done, nmInstance)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 484, in execute_function
    ret = await asyncio.wait_for(
  File "/usr/lib/python3.9/asyncio/tasks.py", line 481, in wait_for
    return fut.result()
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/generic.py", line 199, in Attr
    return await utils.handle_attr(self._conf_attr, self, hash, args, argsh)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/utils.py", line 108, in handle_attr
    ret = await fct_call(hash)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/tuya/tuya.py", line 159, in set_attr_dp
    await self._generate_set()
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/tuya/tuya.py", line 212, in _generate_set
    step = spec["step"] / (10 ** spec["scale"])
TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'str'

Eine ähnliche Fehlermeldung kommt auch wenn man versucht dp_03 und dp_05 auf fan_speed_percent und switch_horizontal zuzuweisen. Weibliche letzteres zumindest noch als Reading angezeigt wird.

Du hast unabsichtlich dp_03 values geändert. Schau mal wie es zuvor war, das values passt nicht.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

strategy

Hallo zusammen,

ich habe ein seltsames Phänomen und hoffe Ihr habt eine Idee.
Nutze seit einigen Tagen tuya local für meine Aubess Steckdosen mit Strommessung.
Leider bekomme ich nach einigen Stunden keine Events mehr von den Devices und damit laufen meine DOIFs bzw. notifys nicht mehr.
Die Werte werden nach wie vor aktualisiert, aber es werden keine Events mehr erzeugt. Nach einem Neustart läuft dann wieder für einige Stunden alles normal und dann tritt dasselbe Phänomen wieder auf.

Bei allen übrigen Devices läuft der Event-Mechanismus normal weiter und bricht nicht nach der Zeit ab.

Irgendeine Idee??

Danke,
Matthias

dominik

Die Readings aktualisieren sich nur Events bekommst du keine? Hast du vielleicht event-* Attribute in Verwendung?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Superposchi

ZitatDu hast unabsichtlich dp_03 values geändert. Schau mal wie es zuvor war, das values passt nicht.
Ich habe nichts verändert, das wurde genau so vom TUYA_System-Device angelegt.

Habe also kein "Original". Kannst du da mal bitte genauer sagen wie es auszusehen hat?

dominik

Wahrscheinlich hat der JSON Online Validator das umgebaut. Ich glaub du hast dein Original hier schon gepostet gehabt, schau mal auf den letzten Seiten.

Folgendes musst du bei Integer beachten:
'values': '{"unit":"s","min":0,"max":86400,"scale":0,"step":1}'

Wie du siehst, ist vor der { ein ' und hinter dem } auch. Die min, max, scale, step Werte sind ohne Hochkomma. Eigentlich ist alles was in values drin steht ein string, der ein JSON beinhaltet. Etwas unschön gemacht von tuya.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Superposchi

Also ich habe gerade den anderen Ventilator im Wohnzimmer noch mal neu angelegt. Beim automatischen Erstellen wird der Teil im Atribut folgendermaßen angelegt:
{'code': 'fan_speed_percent', 'dp_id': 3, 'type': 'Integer', 'values': {'min': '1', 'max': '9', 'scale': '0', 'step': '1'}, 'desc': 'fan speed percent'},

Habe es jetzt nach deinem Beispiel abgeändert und den fhempy-server neugestartet. Nach längerer Wartezeit kam alles wie gewüsncht.

Superposchi

Nachdem es bei den Ventilatoren funktioniert hat würde ich es gerne beim Luftbefeuchter auch vollenden.
Allerdings sind dort die Auswahlen (enum) etwas anders aufgebaut. In Fhem wird mir im entsprechenden Attribut nur 1,2,3,4 etc. angezeigt, in der App hingegen Off, 1 Stunde, 3 Stunden, 6 Stunden.

Gibt es eine Form von Alias so dass Auswahl und Beschriftung unterschiedlich sein können?