NEWS
[Neuer Adapter] LinkedDevices
-
@bommel_030 sagte:
Grundgedanke eigene SQL Instanz, eigene LinkedDevices und eigene Sourceanalytix Instanz.
Eine eigene Sourceanalytix Instanz braucht es nicht, denn es genügt, den absoluten Zählerstand per MQTT zu übertragen. Zeitliche Lücken stören nicht oder nur wenig (wenn sie über Tagesgrenzen gehen).
@bommel_030 sagte in [Neuer Adapter] LinkedDevices:
Master - Master Verbindung höre bzw. lese ich gerade zum ersten Mal.
Das ist der Datenaustausch mittels MQTT oder Simple API (bei wenigen Daten).
-
@paul53
Also ist es am sinnvollsten den kleinen Schweizer selbstständig laufen zu lassen,und alle Daten die ich in Deutschland sehen will per MQTT auf den Master zu schieben.
Urlaub steht vor der Tür, kann ich mich mal ein wenig in MQTT einlesen... Hab den Thread dann glaube ich auch genug mit meinem Multihost missbrauchtAber zum eigentlichen Adapter nochmal.
Ich habe nen Verbrauchszähler der mir die Werte in Wh liefert und bei einem Reboot wieder von Null anfängt.
Also hab ich mir nen Skript gebastelt was die Werte in kWh ändert, die Nullung abfängt und das in einen Datenpunkt schreibt.
Nun hab ich heldenhafterweise den nullenden Datenpunkt in LinkedDevices eingefügt in nicht den eigenen der brav weiterzählt.
Kann ich den LinkeDevices Datenpunkt auf den richtigen umllinken ohne den anderen zu löschen? -
@bommel_030 sagte:
Nun hab ich heldenhafterweise den nullenden Datenpunkt in LinkedDevices eingefügt in nicht den eigenen der brav weiterzählt.
Das ist auch richtig, denn der nullende DP ändert sich bei einem Hardwaretausch. Mittels MQTT (iobroker.mqtt-client) sendest Du nur den eigenen Datenpunkt, der brav weiterzählt.
-
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
Hab jetzt angefangen die Dokumentation für den Adpater zu erstellen. Ich hoffe Sie ist verständlich - ist etwas schwierig die Funktionen zu beschreiben.
https://github.com/Scrounger/ioBroker.linkeddevices
Könnte noch Unterstützung bei der Übersetzung ins Englische benötigen. Falls jemand mit helfen einfach bei mir melden.
Du hast PN
-
@bommel_030 du könntest zb in deiner DB die alten Datenpunkte auf die libkeddevices so umbenennen, mit SQL ist das Recht einfach. Dann hast auch die alte History. Hab ich selbst schon mit meiner MySQL DB gemacht.
Evtl. Kannst du auch mit den alias des SQL Adapters verwenden, hab ich aber noch nicht ausprobiert.
-
@Scrounger
Klingt logisch, hätte man glatt selber drauf kommen können...
Und das wo ich mit SQL doch aufm Kriegsfuss stehe... Wie man aus dem Zeitstempel nen Datum mit Uhrzeit macht hab ich noch nicht verstanden... -
Version 0.3.0 ist jetzt im latest verfügbar.
Es gibt jetzt in der Adapterkonfiguration eine Übersicht über alle verlinkten Objekte. Ihr könnt von hier zu den Einstellungen der einzelnen Objekte abspringen.
Nicht mehr verlinkte Objekte komfortabel über den Objekt-Id-Selector einem Objekt zuweisen (z.B. bei einem Hardwarewechsel). Die Einstellungen werden dann automatisch für die neue Verlinkung übernommen.
Die Dokumentation gibt es jetzt auch auf Englisch, vielen Dank an @FredF für seine Unterstützung.
-
Version 3.2.0 ist jetzt im latest verfügbar.
Neue Funktionen:
- Bei 'string' könnt ihr jetzt prefix und suffix für das verlinkte Objekt definieren
- 'number' readonly können in Dauer umgewandelt werden
- 'number' readonly können in Datum / Zeit umgewandelt werden
Bitte testen
-
@Scrounger
Habe einen String-Datenpunkt-Verlinkung getestet: Der Linked-Datenpunkt behält als Wert den Default-Wert (common.def). Bei Änderung im Linked-DP wird der geänderte Wert an den Original-DP übertragen, der Linked-DP ändert sich aber sofort wieder zurück auf den Default-Wert.Was sicherlich eine sehr nützliche Konvertierung wäre: String ("false"/"true", "0"/"1", "off"/"on") --> boolean.
-
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger
Habe einen String-Datenpunkt-Verlinkung getestet: Der Linked-Datenpunkt behält als Wert den Default-Wert (common.def). Bei Änderung im Linked-DP wird der geänderte Wert an den Original-DP übertragen, der Linked-DP ändert sich aber sofort wieder zurück auf den Default-Wert.Kann das leider nicht nachstellen - du verwendest auch sicher die Version 0.3.2?
Bitte poste mal die Raw Daten vom parentObject und linkedObject, dass ich das direkt nachstellen kann. Was steht im log (debug / silly) für diesen Datenpunkt, wenn du den Adapter neustartest? -> bitte auch posten@paul53 sagte in [Neuer Adapter] LinkedDevices:
Was sicherlich eine sehr nützliche Konvertierung wäre: String ("false"/"true", "0"/"1", "off"/"on") --> boolean.
Ok nehm ich in die nächste Version mit auf.
-
@Scrounger sagte:
wenn du den Adapter neustartest?
Nach einem Neustart der Instanz funktioniert es wie erwartet.
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
verwendest auch sicher die Version 0.3.2?
Die Vorgängerversion bietet mir sicherlich keinen Präfix an ? Ich musste allerdings von Github installieren.
-
@Scrounger
Habe einen weiteren String-Datenpunkt erzeugt und verlinked mit dem Ergebnis wie oben beschrieben: Linked-DP behält Default-Wert.
Der zuerst erstellte Datenpunkt funktioniert. Es ist also nach Erstellen einer neuen Verknüpfung erst ein Neustart der Instanz erforderlich, was nicht sein sollte.linkeddevices.0 2019-07-27 15:28:36.753 debug [onStateChange] parentObject state 'meineDP.0.dev1.ch1.on_off2' changed to 'xx' (ack = false) --> set linkedObject state 'linkeddevices.0.Bad.Lampe4.Ein' to 'xx'
wurde nicht wirklich ausgeführt, denn der Zeitstempel von "Lampe4.Ein" ist 14 Minuten älter und der Wert ist "off" (default).
-
@paul53
Wie gesagt ich kann es nicht reproduzieren, bei mir funktioniert es wie es soll.Deshalb benötige ich wie oben beschrieben die Raw Daten beider Objekte und die logs (Mode: silly), direkt nach dem verlinken ohne den Adapter neuzustarten.
Dann einen neustart machen und nochmal die Raw Daten beider Objekte und die logs (Mode: silly) posten.
Ohne diese Infos kann ich nicht weiterhelfen bzw. den bug finden! -
@Scrounger
Log nach Erzeugen des Links:
Parent DP
Linked DP
Log nach Neustart:
Parent DP nach Neustart
Linked DP
-
@Scrounger
Habe 3 Verlinkungen (DP-Typ: boolean) nacheinander ohne Neustart erzeugt: Bei der 2. und 3. Verlinkung funktioniert es, bei der ersten Verlinkung funktioniert es nicht.DP1 ist die erste Verlinkung:
Ergänzung: Der Wert, auf dem der zu erst erstellte Linked-DP verharrt, ist nicht der Default-Wert, sondern der Wert, den er als erstes erhalten hat ("linkeddevices.0.Bad.Schalter.DP1" verharrt auf true).
-
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger
Log nach Erzeugen des Links:
....Also die logs sehen gut aus. Er erstellt korrekt die verlinkten Objekte. Infos in den logs nach dem Erstellen und nach dem Neustart des Adapters sind identisch, muss auch so sein, weil auf die gleichen Funktionen zugegriffen wird.
Hab es mit dem DP 'linkeddevices.0.Bad.Lampe5.Ein' bei mir getestet (Raw Daten direkt übernommen), funktioniert alles wie es soll, d.h. ich kann es nicht reproduzieren.@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger
Habe 3 Verlinkungen (DP-Typ: boolean) nacheinander ohne Neustart erzeugt: Bei der 2. und 3. Verlinkung funktioniert es, bei der ersten Verlinkung funktioniert es nicht.DP1 ist die erste Verlinkung:
Ergänzung: Der Wert, auf dem der zu erst erstellte Linked-DP verharrt, ist nicht der Default-Wert, sondern der Wert, den er als erstes erhalten hat ("linkeddevices.0.Bad.Schalter.DP1" verharrt auf true).
Da sagen die logs was anderes. Z.b. der 'linkeddevices.0.Bad.Schalter.DP1' wird korrekt erstellt und auch die Änderungen werden korrekt laut log übergeben:
linkeddevices.0 2019-07-27 17:05:15.305 debug [onStateChange] parentObject state 'meineDP.0.ch2.DP1' changed to 'false' (ack = false) --> set linkedObject state 'linkeddevices.0.Bad.Schalter.DP1' to 'false' linkeddevices.0 2019-07-27 17:07:05.329 debug [onStateChange] parentObject state 'meineDP.0.ch2.DP1' changed to 'true' (ack = false) --> set linkedObject state 'linkeddevices.0.Bad.Schalter.DP1' to 'true' linkeddevices.0 2019-07-27 17:08:45.844 debug [onStateChange] parentObject state 'meineDP.0.ch2.DP1' changed to 'false' (ack = false) --> set linkedObject state 'linkeddevices.0.Bad.Schalter.DP1' to 'false' linkeddevices.0 2019-07-27 17:12:26.045 debug [onStateChange] parentObject state 'meineDP.0.ch2.DP1' changed to 'false' (ack = false) --> set linkedObject state 'linkeddevices.0.Bad.Schalter.DP1' to 'false'
DP 'linkeddevices.0.Bad.Schalter.DP1' ist bei letzter Änderung auf false.
@paul53 sagte in [Neuer Adapter] LinkedDevices:
Die Vorgängerversion bietet mir sicherlich keinen Präfix an ? Ich musste allerdings von Github installieren.
Korrekt Präfix bei string gibt es erst ab 0.3.2. Dauert allerdings immer ein bissle bis das über das latest verfügbar ist.
Bitte deinstalliere den Adapter vollständig und installier ihn noch mal neu aus dem latest rep, nicht über github. Vielleicht ist da was schief gegangen.
-
@Scrounger
Neue Beobachtung: Das hängt offenbar mit der Ansicht im Reiter "Objekte" zusammen. Habe nach Neustart eine weitere Verlinkung erzeugt mit dem Effekt, dass der Wert des Linked-DP in der Objekt-Ansicht falsch reagierte. Nach Wechsel in die Status-Ansicht hat dort der Linked-DP richtig reagiert; anschließend auch in der Objekt-Ansicht.Also: Entwarnung !!
-
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger
Neue Beobachtung: Das hängt offenbar mit der Ansicht im Reiter "Objekte" zusammen. Habe nach Neustart eine weitere Verlinkung erzeugt mit dem Effekt, dass der Wert des Linked-DP in der Objekt-Ansicht falsch reagierte. Nach Wechsel in die Status-Ansicht hat dort der Linked-DP richtig reagiert; anschließend auch in der Objekt-Ansicht.Das Verhalten kann ich auch nicht bestätigen, funktioniert bei meiner Dev-Umgebung mit beiden Ansichten korrekt.
Grundsätzlich kann ich nur empfehlen nach Erstellen einer Verlinkung, eine Aktualisierung der Objekte anzustoßen!
-
Hab ein nettes neues Feature entwickelt, allerdings brauche ich für eine elgante Umsetzung Hilfe
-> siehe require auf eigene Skriptdatei und Zugriff auf var -
Version 0.4.0 ist im latest (ab morgen)
- string to boolean converter hinzugefügt
- native daten werden übernommen, sofern verfügbar
- Skript mit Variablen aller verlinkten Objekte erzeugen
- bug fixes
Bitte testen und bei Fehlern immer log mit posten!