NEWS
[gelöst] Temparatur Umzug Fhem
-
@nolimitek
Nicht mit Strings "true" / "false" schalten, sondern mit Logikwerten wahr / falsch.
Es fehlt die Hysterese von 0,4 K (FHEM). -
@paul53 Danke für die schnelle Antwort.
Auch mit wahr oder falsch geht es leider nicht .
Schaltet ein aber nicht ausWie kann ich denn die Hysterese in Blockly nachbilden ?
Da habe ich dafür noch nichts gefunden
Danke
-
@nolimitek sagte:
Wie kann ich denn die Hysterese in Blockly nachbilden ?
@nolimitek sagte:
InfrarotBadezimmer ist ein Sonoff Basic
Ist "state_switch" vom Typ "boolean" ?
-
@paul53 Was meinst mit boolean ?
-
@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.