NEWS
Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)
-
Zum Testen auf Github (Alpha-Stadium!):
Date and Time Picker
Es ist ziemlich kompliziert, das alles universell und kompatibel zu halten. Ich hatte auch keinen Plan davon, wie komplex Datum und Zeit eigentlich sind: Wie ist das ganze im Datenpunkt formatiert und wie möchte man das ganze anzeigen? Was, wenn im Datenpunkt weniger oder mehr Informationen stecken, als man als Nutzer angezeigt bekommt? Konversionsregeln etc..
Ich bin mir sicher, das ganze wird noch viele Probleme in sich haben, aber wer es schon mal testen mag, ist herzlich eingeladen
VG
-
@s-bormann na ein link würde auch nicht weh tun...
-
@da_woody sagte in Test Adapter iQontrol 1.6.x Vis:
@s-bormann na ein link würde auch nicht weh tun...
Wie immer, einfach über das Katzen-Symbol im Tab Adapter iqontrol auswählen, da braucht es keinen Link. Zur Sicherheit anschließend noch einen manuellen Upload starten. Bei Problemen ioBroker neu starten und Browser-Cache leeren. Mehr findest Du in der Readme unter Troubleshooting.
Viel Erfolg
-
@dslraser sagte in Test Adapter iQontrol 1.6.x Vis:
@newcompuhelp
Ich habe da ne ganz andere Adresse drinnWas müsste den da stehen ?
-
@newcompuhelp
Na bei mir steht iobroker.pro und bei Dir steht/stand iobroker.net -
@dslraser sagte in Test Adapter iQontrol 1.6.x Vis:
@newcompuhelp
Na bei mir steht iobroker.pro und bei Dir steht/stand iobroker.nethabe ich auch schon versucht, da bekomme ich keine Verbindung nur die besagte Fehlermeldung, wenn ich net verwende bekomme ich ein Verbindung zur Cloud nur wird mir da nicht iqontral angeboten nur Material-ui, vis und admin!
-
@newcompuhelp sagte in Test Adapter iQontrol 1.6.x Vis:
@dslraser sagte in Test Adapter iQontrol 1.6.x Vis:
@newcompuhelp
Na bei mir steht iobroker.pro und bei Dir steht/stand iobroker.nethabe ich auch schon versucht, da bekomme ich keine Verbindung nur die besagte Fehlermeldung, wenn ich net verwende bekomme ich ein Verbindung zur Cloud nur wird mir da nicht iqontral angeboten nur Material-ui, vis und admin!
Ich habe jetzt da Problem gefunden. Ich verfüge zwar über ein Pro Abo, aber nur für den Assistenten. Somit kann ich über den Cloud Adapter nicht auf die Vis zugreifen. In der kostenlosen Net Version kann ich nur auf die Vis aber nicht auf iqontrol zugreifen, was ja meine Ausgangsfrage war. Somit hat sich das Thema für micht vorerst erledigt! Danke für die hilfestellung!
-
@newcompuhelp sagte in Test Adapter iQontrol 1.6.x Vis:
In der kostenlosen Net Version kann ich nur auf die Vis aber nicht auf iqontrol zugreifen, was ja meine Ausgangsfrage war.
Na ja, das war Deine Ausgangsfrage, da hast Du nichts von der kostenlosen Version gefragt...
Kann man den Cloud Adapter für die Vis auch mit iqontrol verwenden?
Und Fernwartung läuft eben auch über den Cloud Adapter.
-
@s-bormann hrnz, war wieder mal geistig umnachtet und im falschen film...
-
@s-bormann hab da grad ein anders problem entdeckt beim rumfummeln in der config.
hab mal versucht die werte für die farbtemperatur anzupassen. mir gedacht, dem farbverlauf anpassen von 6500 -> 3000. geht nicht, wegen min/max. heisst, der farbverlauf ist IMHO falsch rum.
müsste eigentlich von gelb richtung blau gehn... 3000 -> 6500 -
@da_woody sagte in Test Adapter iQontrol 1.6.x Vis:
@s-bormann hab da grad ein anders problem entdeckt beim rumfummeln in der config.
hab mal versucht die werte für die farbtemperatur anzupassen. mir gedacht, dem farbverlauf anpassen von 6500 -> 3000. geht nicht, wegen min/max. heisst, der farbverlauf ist IMHO falsch rum.
müsste eigentlich von gelb richtung blau gehn... 3000 -> 6500Schau mal in den Optionen, da kann man das invertieren (nutze Mired statt CT oder so ähnlich).
Lg -
@s-bormann jo mei, so einfach... schon oft offen gehabt, nie gebraucht...
Kelvin statt Mired warads.... auf den glow wirkt sichs aber nicht aus.
fall noch wer braucht:
sieht jetzt so aus:
-
@s-bormann sorry, aber egal wie ich "katze", ich komm nicht auf 1.7.0. nur 1.6.6.
-
@da_woody sagte in Test Adapter iQontrol 1.6.x Vis:
@s-bormann sorry, aber egal wie ich "katze", ich komm nicht auf 1.7.0. nur 1.6.6.
bleibt bei mir auch 1.6.6 , ist aber trotzdem da....
-
@dslraser jup, da is es, aber mir ist nicht wirklich klar was da eingetragen werden muss...
mal wieder zu kalt im hirn. hat heut nur 2° und sturm...
-
@da_woody sagte in Test Adapter iQontrol 1.6.x Vis:
@s-bormann sorry, aber egal wie ich "katze", ich komm nicht auf 1.7.0. nur 1.6.6.
Hi,
Das ist leider bei den Github-Versionen so, dass sich die Versionsnummer nicht ändert. Man muss einfach drauf vertrauen, dass die neueste Version installiert wird.
VG -
@da_woody sagte in Test Adapter iQontrol 1.6.x Vis:
@dslraser jup, da is es, aber mir ist nicht wirklich klar was da eingetragen werden muss...
mal wieder zu kalt im hirn. hat heut nur 2° und sturm...
Ja, das kann ich verstehen. Das ganze ist wirklich ziemlich kompliziert. Ich musste mich jetzt mehrere Tage in das Thema einarbeiten und habe viele Stunden mit Gehirnverdrehungen gekämpft, bis ich einigermaßen kapiert hatte, was man alles braucht und wie das geht.
Aber wenn man es einmal verstanden hat, ist es gar nicht mehr so kompliziert:
Du brauchst einen Datenpunkt, in dem die Zeit gespeichert wird. Das kann ich vielen verschiedenen Formaten passieren, z.B.
06.04.2021, 18:21
oder2021-04-06T06:21p
oder wie auch immer. Sehr häufig wird in der Informatik eine sogenannte Unix Timestamp verwendet. Das ist einfach eine große Zahl, die die vergangenen Sekunden (oder Millisekunden) seit dem 1.1.1970 angibt.Jetzt muss man iQontrol mitteilen, wie die Zeit kodiert wird, damit es die Zeit auch "lesen" kann. Das geht hier:
Dabei steht
x
für eine Unix-Timestamp. Hier könnte man aber jedes beliebige Zeitformat angeben, z.B. auchMM.DD.YYYY, HH:mm
. Welche Kürzel erlaubt sind, steht hier (im aufklappbaren Teil): https://github.com/sbormann/ioBroker.iqontrol#-date-and-timeAllerdings möchte man als Nutzer, das ganze ja nicht als Unix-Timestamp, sondern als vom Menschen lesbares Format angezeigt bekommen. Und wie es angezeigt wird, kann man dann hier einstellen:
In diesem Beispiel wird also im ioBroker eine Unix-Timestamp (
x
) gespeichert (z.B.1617726604871
), für den Nutzer zeigt es iQontrol jedoch in der Formdddd, DD.MM.YYYY, HH:mm:ss
, also z.B.Dienstag, 06.04.2021, 18:21:15
an.Ist es so verständlicher?
VG
-
@s-bormann oookay, das hab ich mal verstanden. hatte die readme schon min 3x offen, jedes mal überlesen.
die frage halt, wie komm ich zu dem DP. theoretisch muss das ja im clockwidget, und der flipclock widget drinnen sein...
nur wie komm ich da zu einem DP? -
Hallo zusammen,
ich würde gerne meine Shelly Geräte auf MQTT umstellen um. Leider gibt es dort das Problem, dass ich nur noch einen Datenpunkt für die Steuerung der Rolladen habe:Mir fehlt in iQontrol also die Möglichkeit "STOP_SET_VALUE" zu setzen:
Ich behelfe mich jetzt mit einem user-Datenpunkt. Gibt es denn eine iQontrol-Möglichkeit?
Grüße
Weiterhin erwarten einfache Schalter (Shelly1 etc.) im MQTT Modus ein on oder off. iQontrol verschickt hier ein true oder false. Kann man das irgendwie ändern?
Grüße
-
@s-bormann sagte in Test Adapter iQontrol 1.6.x Vis:
@dslraser sagte in Test Adapter iQontrol 1.6.x Vis:
Ich habe mal eine Frage zum Thema Rollo/Jalousie
Es gibt ja in der Konfiguration Icon für den Status beim rauf und runter fahren
Es geht speziell um HMIP-Broll über den RPC Adapter. Dort ist der Kanal zum steuern Kanal 4
gesteuert wird über level
Das funktioniert auch alles.
Nur ich hätte auch gern das richtige Icon beim rauf und runter fahren. Der aktuelle Zustand dieser Aktion ist aber nicht in level, sondern in ACTIVITY_STATE zu sehen. Wie kann ich das mit den passenden Icon verknüpfen ?{ "type": "state", "common": { "name": "Rollo Wohnzimmer Panoramafenster:4.ACTIVITY_STATE", "def": 0, "type": "number", "read": true, "write": false, "min": 0, "max": 3, "states": { "0": "UNKNOWN", "1": "UP", "2": "DOWN", "3": "STABLE" } }, "native": { "MIN": "UNKNOWN", "OPERATIONS": 5, "MAX": "STABLE", "FLAGS": 1, "ID": "ACTIVITY_STATE", "TYPE": "ENUM", "DEFAULT": "UNKNOWN", "VALUE_LIST": [ "UNKNOWN", "UP", "DOWN", "STABLE" ], "CONTROL": "SHUTTER_VIRTUAL_RECEIVER.ACTIVITY_STATE" }, "from": "system.adapter.hm-rega.0", "user": "system.user.admin", "ts": 1617010242748, "_id": "hm-rpc.0.00111BE99FD0D1.4.ACTIVITY_STATE", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
EDIT: damit tut sich nichts an den Icon (zeigt auf ACTIVITY_STATE)
Muss ich schauen, Du hast es richtig konfiguriert. Mangels elektrischer Rolläden (ja, ich kurbele noch von Hand ) muss ich mir erst einen "Test-Rollo" bauen, damit ich es testen kann.
EDIT: Habe es gerade mal nachgebaut. Bei mir scheint es zu funktionieren:
Mit einem Alias funktioniert alles wie gewünscht ! (read/write getrennt)
Beispiel bei mir mit einem HMIP-Broll
// Original-Datenpunkt const idOrigin = 'hm-rpc.0.00111BE992A033.4.LEVEL'/*Rollo Küche links:4 LEVEL*/; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = 'hm-rpc.0.00111BE992A033.3.LEVEL'/*Rollo Küche links:4 LEVEL*/; // Alias-Datenpunkt const idAlias = 'Rollos.Rollo_Kueche_links'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'Rollo Küche links'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? String(1) : String(0)"; // role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '%'; // nur für Zahlen // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) custom = {}; // verhindert doppelte Ausführung von history, ... // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten ! // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten ! // Ab hier nichts ändern !! function createAlias(idDst, idSrc, idRd) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(obj.common.type == 'number') { if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; } else { if(obj.common.min !== undefined) delete obj.common.min; if(obj.common.max !== undefined) delete obj.common.max; if(obj.common.unit) delete obj.common.unit; } if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj, function() { if(idRd) setState(idRd, getState(idRd).val, true); else setState(idSrc, getState(idSrc).val, true); }); if(raum && existsObject('enum.rooms.' + raum)) { let obj = getObject('enum.rooms.' + raum) obj.common.members.push(idDst); setObject('enum.rooms.' + raum, obj); } if(gewerk && existsObject('enum.functions.' + gewerk)) { let obj = getObject('enum.functions.' + gewerk) obj.common.members.push(idDst); setObject('enum.functions.' + gewerk, obj); } } } createAlias('alias.0.' + idAlias, idOrigin, idRead);
Der fertige alias Datenpunkt
{ "type": "state", "common": { "name": "Rollo Küche links", "def": 0, "type": "number", "read": true, "write": true, "min": 0, "max": 100, "unit": "%", "role": "level", "smartName": { "de": "Rollo Küche links" }, "alias": { "id": { "read": "hm-rpc.0.00111BE992A033.3.LEVEL", "write": "hm-rpc.0.00111BE992A033.4.LEVEL" } }, "desc": "per Script erstellt" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1617806058979, "_id": "alias.0.Rollos.Rollo_Kueche_links", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }