NEWS
[gelöst] Temparatur Umzug Fhem
-
@nolimitek sagte:
Was meinst mit boolean ?
Schau mal in die Eigenschaften des Objektes "state_switch" (Tab "Objekte", Bleistift rechts): Unter Allgemein: Steht bei Art "Logikwert" (boolean) oder "Zeichenkette" (string) ?
-
@paul53 steht switch . Ist aber derzeit alles vom Fhem Connector
lg
-
@nolimitek sagte:
steht switch
Das ist die Rolle, nicht der Typ (Art).
@nolimitek sagte in Temparatur Umzug Fhem:
Ist aber derzeit alles vom Fhem Connector
Davon habe ich keine Ahnung.
Du solltest Alias-Datenpunkte verwenden, damit später der Umstieg leichter ist (keine Änderung in Skripten / Vis erforderlich) -
@paul53 Ah Sorry da steht Logikwerk
lg
-
-
@paul53 sagte:
Alias-Datenpunkte verwenden
Mit folgendem Script kann man Alias-Datenpunkte erzeugen, indem die IDs, der Name, ... angepasst werden und das Script dann kurz gestartet wird:
// Original-Datenpunkt const idOrigin = 'fhem.0.'; // ID eingeben ! // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'Bad.Heizung.Infrarot'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'Infrarotheizung Badezimmer'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' // read = "val == 'ON' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? 'ON' : 'OFF'"; // 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);
-
Ich hab jetzt sicherheitshalber den sonoff adapter installiert und den sonoff direkt per mqtt verbunden
folgendes blockly
schaltet ein aber nicht mehr aus . Ich verstehe das nicht
Wenn ich das Blockly so mache
Dann schaltet er egal immer mit wahr und nie mit falsch ??
Hat jemand eine Idee
-
@nolimitek sagte:
Hat jemand eine Idee
Bau mal eine Log-Ausgabe ein:
Lässt sich der Aktor im Tab "Objekte" schalten ?
-
@paul53 ja kann ich schalten
Das kommt dabei rauß22.12.2020, 17:53:52.013 [info ]: javascript.0 (4229) Stop script script.js.debug 22.12.2020, 17:53:52.024 [info ]: javascript.0 (4229) Start javascript script.js.debug 22.12.2020, 17:53:52.031 [info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.temperature, timerId=undefined) => {"val":"21.1","ack":true,"ts":1608655982096,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655982096} 22.12.2020, 17:53:52.032 [info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.desiredTemperature, timerId=undefined) => {"val":"13.5","ack":true,"ts":1608655945660,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655944150} 22.12.2020, 17:53:52.032 [info ]: javascript.0 (4229) script.js.debug: Temparatur:21.1Grad13.5 22.12.2020, 17:53:52.032 [info ]: javascript.0 (4229) script.js.debug: registered 0 subscriptions and 0 schedules 22.12.2020, 17:54:45.610 [info ]: javascript.0 (4229) Stop script script.js.debug 22.12.2020, 17:54:45.622 [info ]: javascript.0 (4229) Start javascript script.js.debug 22.12.2020, 17:54:45.634 [info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.temperature, timerId=undefined) => {"val":"21.1","ack":true,"ts":1608655982096,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655982096} 22.12.2020, 17:54:45.634 [info ]: javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.desiredTemperature, timerId=undefined) => {"val":"5.0","ack":false,"ts":1608656079906,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1608656079906} 22.12.2020, 17:54:45.635 [info ]: javascript.0 (4229) script.js.debug: Temparatur:21.1Grad5.0 22.12.2020, 17:54:45.635 [info ]: javascript.0 (4229) script.js.debug: registered 0 subscriptions and 0 schedules
-
gerade nochmals mit dem blockly probiert
egal ob ich das Terhmostat rauf oder runter schalte es wird immer eingeschaltet
-
@nolimitek sagte:
Das kommt dabei rauß
Wenn der Sollwert so niedrig ist (13,5 / 5,0 °C) muss der Aktor auf wahr schalten, denn Deine Aktion ist falsch herum. Richtig:
Ist > Soll --> falschEDIT: Liefert FHEM Zahlen? Bitte mittels Modifikation der Log-Ausgabe prüfen:
-
@paul53 wenn ich
Richtig: Ist > Soll --> falsch mache un dich den wert von zb 5 Grad auf 24 Grad erhöhe als mehr als die Ist Temparatur schaltet er auf off. -
@paul53 said in Temparatur Umzug Fhem:
@nolimitek sagte:
Das kommt dabei rauß
Wenn der Sollwert so niedrig ist (13,5 / 5,0 °C) muss der Aktor auf wahr schalten, denn Deine Aktion ist falsch herum. Richtig:
Ist > Soll --> falschEDIT: Liefert FHEM Zahlen? Bitte mittels Modifikation der Log-Ausgabe prüfen:
18:19:38.861 info javascript.0 (4229) Start javascript script.js.debug 18:19:38.868 info javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.temperature, timerId=undefined) => {"val":"21.1","ack":true,"ts":1608655982096,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608655982096} 18:19:38.868 info javascript.0 (4229) script.js.debug: getState(id=fhem.0.MAX_167fd8.desiredTemperature, timerId=undefined) => {"val":"6.0","ack":true,"ts":1608657576366,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1608657576366} 18:19:38.868 info javascript.0 (4229) script.js.debug: Temparatur:stringGradstring 18:19:38.869 info javascript.0 (4229) script.js.debug: registered 0 subscriptions and 0 schedules
-
@nolimitek
Mit Strings kann es nicht funktionieren. Man muss in Zahlen wandeln: -
@paul53 Wennst mir jetzt noch kurz schreiben könntest wo ich den Block "setze .... auf" finde.
Seh langsam nichts mehr -
@nolimitek sagte:
wo ich den Block "setze .... auf" finde.
Unter "Variablen" müssen erst die 3 Variablen ist, soll, ein erstellt werden. Dann wird dort auch "setze auf" angeboten.
-
@paul53 Besten Dank für deine Hilfe. Ich hatte das mal schon testweise gemacht da braucht ich aber die umrechnung auf zahlen nicht. Daher brachte mich das gerade fast zu wahnsinn
Jetzt gehts auf alle Fälle
lg
Christian -
@nolimitek sagte:
Jetzt gehts
Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].