Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
shNG setze ich schon lange ein (ausschließlich MASTER), kenne also den Aufbau und die Struktur; der große Programmierer bin ich leider nicht 😔; beschränke mich auf Logiken für meine privaten Sachen.
Interesse habe ich definitiv. Im Rahmen meiner Möglichkeiten kann ich unterstützen....
vielen Dank dafür!
Leider hab ich momentan verdammt wenig Zeit das auszuprobieren.
Aktuell sende ich garnicht. Ich hatte es bisher nur manuell per mqtt ausprobiert - dann ist mir die Zeit ausgegangen.
das Tasmota Plugin wurde im diverse Features erweitert. Dafür habe ich einen PR gegen develeop gestellt.
Zudem möchte ich noch die Zigbee-Funktionalität von Tasmota mit einbauen.Hier gibt es das Problem, dass meine IKEA Tradfri E1766 Fernbedienung eine MQTT Message mit unzulässigen Zeichen abschickt, und dadurch das Plugin bzw. auch schon das MQTT Modul Probleme bekommt.
Bei "Manufacturer" seht ihr das unzulässige Zeichen. Es sollte "IKEA" heißen.
So kommt es in der Konsole an, wenn man dort alle empfangenen Nachrichten von Mosquitto anzeigen lässt.
cast_from_mqtt: datatype 'dict', error 'Invalid control character at: line 1 column 138 (char 137)', data = ‘{"ZbStatus3":[{"Device":"0xD1B8","Name":"E1766_01","IEEEAddr":"0x588E81FFFE28DEC5","ModelId":"TRADFRI open/close remote","Manufacturer":"KE","Endpoints":[1],"Config":[],"Reachable":true,"LastSeen":24938,"LastSeenEpoch":1619442844,"LinkQuality":37}]}‘
ich habe gerade das tasmota-plugin aktiviert.
Ich habe noch keine Items definiert, lediglich die plugin.yaml:
Code:
my_tasmota_plugin:
plugin_name: tasmota
Das MQTT Modul habe ich bereits In Benutzung. Das funktioniert auch soweit.
Allerdings wird das Plugin im Webinterface als inaktiv angezeigt. Im log sehe ich:
Code:
Traceback (most recent call last):
File "/usr/local/smarthome/lib/plugin.py", line 675, in run
self.plugin.run()
File "/usr/local/smarthome/plugins/tasmota/__init__.py", line 114, in run
for topic in self.tasmota_devices:
RuntimeError: dictionary changed size during iteration
und
Code:
2021-07-06 23:10:40 ERROR cherrypy.error.140056979657448 [06/Jul/2021:23:10:40] HTTP
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cprequest.py", line 638, in respond
self._do_respond(path_info)
File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cprequest.py", line 697, in _do_respond
response.body = self.handler()
File "/usr/local/lib/python3.7/dist-packages/cherrypy/lib/encoding.py", line 219, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cpdispatch.py", line 54, in __call__
return self.callable(*self.args, **self.kwargs)
File "/usr/local/smarthome/plugins/tasmota/webif/__init__.py", line 81, in index
return tmpl.render(p=self.plugin, items=sorted(self.items.return_items(), key=lambda k: str.lower(k['_path'])))
File "/usr/local/lib/python3.7/dist-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.7/dist-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/usr/local/lib/python3.7/dist-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "/usr/local/smarthome/plugins/tasmota/webif/templates/index.html", line 237, in top-level template code
{% set tab4title = "<strong>" ~ " Broker Information</strong>" %}
File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 183, in top-level template code
{% if scroll_heading is not defined %}
File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 1, in top-level template code
{% block doc -%}
File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 4, in block "doc"
{%- block html %}
File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 76, in block "html"
{% block body -%}
File "/usr/local/smarthome/modules/http/webif/gtemplates/base.html", line 79, in block "body"
{% block content -%}
File "/usr/local/smarthome/modules/http/webif/gtemplates/base_plugin.html", line 160, in block "content"
{% block bodytab3 %}
File "/usr/local/smarthome/plugins/tasmota/webif/templates/index.html", line 214, in block "bodytab3"
<td class="py-1">{{ p.tasmota_devices[device].energy_sensors.voltage }}V</td>
File "/usr/local/lib/python3.7/dist-packages/jinja2/environment.py", line 471, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'dict object' has no attribute 'energy_sensors'
RuntimeError: dictionary changed size during iteration
Das ist ein Fehler, der auftritt, wenn verschiedene Threads das dict zeitgleich verändern. So ein Fehler tritt generell nur ab und zu auf und muss vermutlich durch Locks abgefangen werden. Da muss ich mal rein schauen.
vielen Dank dafür!
Leider hab ich momentan verdammt wenig Zeit das auszuprobieren.
Aktuell sende ich garnicht. Ich hatte es bisher nur manuell per mqtt ausprobiert - dann ist mir die Zeit ausgegangen.
Gruß,
Hendrik
Schau mal hier, dass war unsere Kommunikation im März dazu.
Welches Version des Plugin hast Du im Einsatz? Die aus dem Master Branch oder die von mir, die oben im Beitrag #32 anhängt ist.
ui, das hatte ich überhaupt nicht mehr in Erinnerung... Blackout.
Ich hab diese Version genutzt https://raw.githubusercontent.com/sm...ta/__init__.py
Der Ordner tasmota_dev ist vorhanden, aber unbenutzt - sorry, dazu war ich noch nicht gekommen. Erstmal mit dem "basic" Tasmota-Plugin befassen, bevor ich deine Änderung teste.
Ich fürchte also, der Fehler existiert schon im Release.
@Msinn: Es eilt nicht.
Das ist ein Fehler, der auftritt, wenn verschiedene Threads das dict zeitgleich verändern. So ein Fehler tritt generell nur ab und zu auf und muss vermutlich durch Locks abgefangen werden
Ich habe den Eindruck, dass das Problem hier immer auftritt. Jedenfalls habe ich mehrfach sh.py neugestartet und immer war das Plugin inaktiv (vermutlich aufgrund des Fehlers oben).
Das ist ein Fehler, der auftritt, wenn verschiedene Threads das dict zeitgleich verändern. So ein Fehler tritt generell nur ab und zu auf und muss vermutlich durch Locks abgefangen werden
@Msinn: Hast du dich mit dem Problem schon wieder befasst?
Ich hätte gerade wieder einen Anwedungsfall.
Also muss die Version des Core höher sein als 1.8.2 (das besagte der Buchstabe am Ende der Versionsnummer)
Das Plugin aus dem develop Branch funktioniert also NICHT mit dem aktuellen master.
Falls Du es in den master installierst, würde SmartHomeNG es einfach nicht laden und einen Log Eintrag schreiben, dass das Plugin zu neu für den laufenden Core ist.
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar