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.
Weil diverse Anwender item.id() nicht gefunden haben bzw. dahinter nicht den Pfad vermuteten.
Die Pfadangabe ist zwar auch eine Form von ID, allerdings nicht das was man sich in der IT gemeinhin darunter vorstellt (einen unveränderlichen Primärschlüssel).
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Wenn Du ein Item an eine andere Stelle des Item-Trees verschiebst, würde sie immer noch das selbe Item beschreiben, während sich die Pfadangabe ändert.
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
auch wenn Du an ein Verschieben denkst - so ist es nicht. Du löscht das Item (samt seiner Id) an der alten Stelle und fügst es neu (mit neuer Id) an einer anderen Stelle ein. Es ist nicht das selbe Item, sondern ein neues mit gleicher Defninition (außer eben der Id).
Gegenbeispiel: Wenn ich ein Item mit identischer Definition an der neuen Stelle einfüge, ohne es an der alten zu löschen, würdest Du ja auch nicht von dem selben Item sprechen.
Aber bevor wir hier weiter das Spiel "Ich hab recht! Nein, Ich!" spielen, möchte ich auf was anderes hinweisen. Falls Du vor hast, eine neue Id einzuführen, also ein entsprechendes Item-Attribut, dann vergib es bitte nicht automatisch, sonder lass es manuell vergeben - zumindest sollte man es auf Wunsch manuell vergeben können. Sinnvoll wäre ja eine solche Id für die Datenbanken, damit man diese Daten nicht verliert, nur weil ein Item einen neuen Pfad bekommt. Eine automatische Id-Vergabe wurde von Marcus in callidomus versucht, inclusive UI-Funktionen wie "verschieben", dies hat aber auch zu Problemen geführt. Da das jetzt sehr OT ist, will ich nicht weiter ins Detail gehen, ich würde eine manuelle Id-Vergabe empfehlen (zumindest optional).
for item in sh.match_items('EG.Wohnzimmer.Fenster3'):
# item() gibt den Item Wert aus, item gibt den Namen/Pfad aus
logger.warning("Ausgabe von item(): ( {0})".format(item()))
logger.warning("Ausgabe von item.id(): ( {0})".format(item.id()))
logger.warning("Ausgabe von item: ( {0})".format(item))
# in das conf dictionary werden nur Konfigurationsattribute übernommen, die von der
# Item Klasse nicht intern verwendet werden.
# Eine Möglichkeit ohne Exception ist item.conf.get('name', ''), wobei der 2. Parameter ''
# der Wert ist, der Zurückgeliefert wird, falls es den Key nicht gibt.
logger.warning("Ausgabe von item.conf['name']: ( {0})".format(item.conf['name']))
# Verstehe ich nicht ganz: Wenn der Wert des Items < 2 ist, wird der Name des Items
# an eine Liste angehängt die den Namen 'Counter' trägt?
if item() < 2:
counter.append(item)
Hi,
der Ordnung halber.
Fenster3 ist nicht wirklich ein Fenster. Sondern ein Sammler für die verschiedenen Status(0=offen, 1=gekippt, 2=geschlossen) pro Fenster. Mit dem Skript sammle ich alle Fenster die nicht geschlossen sind um mir am Abend eine Nachricht zu schicken welche Fenster kontrolliert werden sollten.
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