NEWS
Adapter HS100, einfaches runden
-
gibt es eine einfache Art hier die Daten zu runden bzw ab dem Komme (Punkt) alles weg zuschneiden oder muss ich da über Blockly bzw Javascript oder Parsen gehen?
"2.871 W" ist zwar ein schöner Wert. Aber "2 W" würde mir auch reichen. -
Muss ich da den Adapter: "Discovery devices" installieren?
Habe ich gemacht. Links oben auf den 3-Eck Pfeil angeklickt, bekomme ich aber leider keine Geräte angezeigt. -
Muss ich da den Adapter: "Discovery devices" installieren?
Habe ich gemacht. Links oben auf den 3-Eck Pfeil angeklickt, bekomme ich aber leider keine Geräte angezeigt.@Ioniq-2018 sagte:
Muss ich da den Adapter: "Discovery devices" installieren?
Nein, der hat nichts mit Alias zu tun.
Kopiere das folgende Skript in den Editor für ein neues Skript und nach Anpassen von idOrigin und idAlias starte das Skript einmal kurz. Das Runden auf ganzzahlige Werte ist schon eingebaut.// Original-Datenpunkt const idOrigin = 'hs100.0.xyz'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'Pumpe.Leistung'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich // nameAlias = 'Pumpe Ein'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' read = "Math.round(val)"; // 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(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = 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); -
@Ioniq-2018 sagte:
Muss ich da den Adapter: "Discovery devices" installieren?
Nein, der hat nichts mit Alias zu tun.
Kopiere das folgende Skript in den Editor für ein neues Skript und nach Anpassen von idOrigin und idAlias starte das Skript einmal kurz. Das Runden auf ganzzahlige Werte ist schon eingebaut.// Original-Datenpunkt const idOrigin = 'hs100.0.xyz'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'Pumpe.Leistung'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich // nameAlias = 'Pumpe Ein'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' read = "Math.round(val)"; // 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(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = 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);Wäre das so richtig? Und dann starten! Und was passiert dann? Bzw. wo sehe ich was?
// Original-Datenpunkt const idOrigin = 'hs100.0.192_168_178_18'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'power.Strom'; -
Wäre das so richtig? Und dann starten! Und was passiert dann? Bzw. wo sehe ich was?
// Original-Datenpunkt const idOrigin = 'hs100.0.192_168_178_18'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'power.Strom';@Ioniq-2018 sagte:
Bzw. wo sehe ich was?
Im Tab "Objekte" gibt es nach Skriptstart einen neuen Datenpunkt mit der ID "alias.0.power.Strom" , der den Originalwert gerundet enthält. Evtl. die Instanz admin.0 neu starten (nicht stoppen !!), damit der Puffer aktualisiert wird.
-
@Ioniq-2018 sagte:
Bzw. wo sehe ich was?
Im Tab "Objekte" gibt es nach Skriptstart einen neuen Datenpunkt mit der ID "alias.0.power.Strom" , der den Originalwert gerundet enthält. Evtl. die Instanz admin.0 neu starten (nicht stoppen !!), damit der Puffer aktualisiert wird.
Genau so hatte ich es auch erwartet, passiert aber nichts.
Habe aber da noch ein Problem was vielleicht damit zu tun haben könnte:
Ich wollte den "Manage devices" laden und dann kommt jedes mal die Fehlermeldung:
" Invalid version of "admin". Installed "3.6.2", required ">=4.0.1" "
obwohl in der Adapterübersicht " Installierte Version: 4.1.10 " habe. -
Genau so hatte ich es auch erwartet, passiert aber nichts.
Habe aber da noch ein Problem was vielleicht damit zu tun haben könnte:
Ich wollte den "Manage devices" laden und dann kommt jedes mal die Fehlermeldung:
" Invalid version of "admin". Installed "3.6.2", required ">=4.0.1" "
obwohl in der Adapterübersicht " Installierte Version: 4.1.10 " habe.@Ioniq-2018 starte iobroker neu
-
@Ioniq-2018 starte iobroker neu
iobroker stop iobroker status iobroker startFehlermeldung kommt immernoch:
ERROR: host.MIWA(io3) Invalid version of "admin". Installed "3.6.2", required ">=4.0.1
Frage: ich habe unter einer 2. IP Adresse noch einen ioBroker gefunden.- Kann das die Ursache sein?
- Wenn ich da den ADMIN "klicken zum Stoppen" mache, ist der dann weg bzw stört er dann niemanden mehr? Oder hat er eventuell Einfluss auf meinen Ersten. Hier war der ADMIN nämlich auf 3.6.2.
- Und wie kann ich im "Kommandozeilen" auswählen ob ich den ersten oder zweiten stoppen möchte?
- Kann ich da auch die IP Adressen abfragen?
-
iobroker stop iobroker status iobroker startFehlermeldung kommt immernoch:
ERROR: host.MIWA(io3) Invalid version of "admin". Installed "3.6.2", required ">=4.0.1
Frage: ich habe unter einer 2. IP Adresse noch einen ioBroker gefunden.- Kann das die Ursache sein?
- Wenn ich da den ADMIN "klicken zum Stoppen" mache, ist der dann weg bzw stört er dann niemanden mehr? Oder hat er eventuell Einfluss auf meinen Ersten. Hier war der ADMIN nämlich auf 3.6.2.
- Und wie kann ich im "Kommandozeilen" auswählen ob ich den ersten oder zweiten stoppen möchte?
- Kann ich da auch die IP Adressen abfragen?
Problem gelöst.
Nachdem man hier im Forum mir einen Befehl gegeben hat:
iobroker upload admin
habe ich es doch geschaft habe, die Fehlermeldung zu eliminieren. Jetzt klappen auch die Geräte !
Jetzt muss ich nur schauen, dass das mit dem Runden noch klappt.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden