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 -
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). -
@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" ?
-
@nolimitek sagte:
Wie kann ich denn die Hysterese in Blockly nachbilden ?

@nolimitek sagte:
InfrarotBadezimmer ist ein Sonoff Basic
Ist "state_switch" vom Typ "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) ?
-
@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) ?
-
@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) -
@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) -
-
@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 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); -
@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
-
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 ?
-
@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 -
@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 -
@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@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:

-
@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:

-
@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 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 -
@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:
-
@nolimitek
Mit Strings kann es nicht funktionieren. Man muss in Zahlen wandeln:
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
