NEWS
[gelöst] Temparatur Umzug Fhem
-
Hallo alle zusammen
Ich möchte gerne von Fhem zu Iobroker wechselnIch habe hier ein Wandthermostat mit dem ich eine Infrarotpanel schalte
In Fhem sieht das ganze so aus([MAX_167fd8:temperature] < [MAX_167fd8:desiredTemperature]-0.4) (set MQTT2_DVES_B32AF6 on) DOELSEIF ([MAX_167fd8:temperature] > [MAX_167fd8:desiredTemperature]) (set MQTT2_DVES_B32AF6 off)
Im Blockly hätte ich das jetzt so nachgebaut . Aber er schaltet mir zwar ein aber nicht mehr aus
Infrarot Badezimmer ist das Thermostat (mit Abstand)
InfrarotBadezimmer ist ein Sonoff Basic (ohneAbstand)Wo hab ich denn hier den Denkfehler
Dankelg
Chris -
@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