NEWS
[Skript] Absolute Feuchte berechnen
-
Geht denn ein kleines Skript?
log("Hallo"); log("dies ist ein Test"); log("----------");
Kannst Du das kopieren und speichern?
Oder ander Skripte?
Mal über den Umweg eines Texteditors in der Einstellung "nur Text" versucht?
-
Ja, funktioniert. Ohne Probleme. Auch andere Skripte.
Funktioniert bei Dir das hier?
log("Hallo");
log("dies ist ein Test");
log("–--------");
console.log("test");
// test
// ==============================================================================
-
@jsc:Ja, funktioniert. Ohne Probleme. Auch andere Skripte.
Funktioniert bei Dir das hier?
log("Hallo");
log("dies ist ein Test");
log("–--------");
console.log("test");
// test
// ============================================================================== `
Ja, funktioniert. Auch ohne Code-Tags
-
Ich habe Erics 0.6.3 Version gerade mal in ein Testskript kopiert. Funktioniert ohne Probleme.
Wie viele Zeilen werden bei Dir eingefügt?
In der Version sind es: 1108
-
also erstmal zu meinem Fehler mit meinem Codestück von eben. Das hier kommt als Fehler: (ioBroker macht garnichts in keinem log und er speichert auch nichts)
1789_error.png -
Nimm doch mal Zeile für Zeile weg, bis es funktioniert.
Dann kannst Du das schon einmal auf eine Zeile beschränken.
-
Ok. Danke an alle. Das Problem liegt im Adapter, nicht in diesem Skript. Entsprechend habe ich im Forum beim javascript-Adapter mal nachgefragt. Der ist an dieser Stelle im Code (tab.js) m.E. buggy. Weiss jemand von euch, wer den geschrieben hat?
Für hier reicht es aus, allen Zeilen die mit einem "//" beginnen ein Leerzeichen voranzustellen. Dann parst der Adapter das anders. Wenn jemand Interesse an einer Lösungsfindung hier hat, antwortet er gerne an der andern Forumsstelle (http://forum.iobroker.net/viewtopic.php?f=21&t=4719)
Nun läuft das Skript also. Super! Ich finde mich mal ein und melde mich bei weiteren Fragen nochmals.
Gruß jsc
-
Aber warum passiert das nur bei dir?
Kein andere konnte das bisher reproduzieren.
Irgendetwas muss dann an deiner Umgebung anders sein.
Gruß
Rainer
-
Hallo zusammen.
Ich habe jetzt einen TH-O in der Sauna montiert. Dort kommt es natürlich zu erheblichem Wassergehalt.
Was mich wundert ist nur die doch deutliche Abweichung zu dem Skript das ich auf der CCU (ebenfalls nach @paul53) erstellt habe und dem was hier herauskommt.
Wenn ich es noch richtig im Kopf habe kommt bei der CCU etwa 27g/kg heraus, während mit diesem Skript dann 37g/kg angegeben wird.
Die Daten für rel. Feuchte und Temperatur sind jeweils identisch (20%; 65-70°C)
Was ist jetzt richtig?
Gruß
Rainer
-
Hallo Rainer,
Wenn ich es noch richtig im Kopf habe kommt bei der CCU etwa 27g/kg heraus, während mit diesem Skript dann 37g/kg angegeben wird.
Die Daten für rel. Feuchte und Temperatur sind jeweils identisch (20%; 65-70°C) `
hast Du tatsächlich nur eine rel. Luftfeuchte von 20%? Ich hätte, gerade bei einer Sauna, mit mehr gerechnet.Sind die Einheiten gleich? Es gibt Berechnungen mit g/m3 und g/kg.
Wenn ich mir in Internet mal einige Online-Rechner dazu ansehe und Deine Werte eingebe, komme ich auf Ergebnisse so um die 35 g/kg.
Gruß,
Eric
-
hast Du tatsächlich nur eine rel. Luftfeuchte von 20%? `
YEPP, selbst mit automatischer Befeuchtung.Aber wie du anscheinend richtig gerechnet hast ist der Wassergehalt dann etwa 35g/kg, und IIRC lag der Taupunkt bei ca. 36°C. Das ist schon gewaltig Wasser.
Sind die Einheiten gleich? Es gibt Berechnungen mit g/m3 und g/kg. `
das habt ihr aber erst später eingefügt. Ich hatte damals alles auf g/kg und die JSON-Tabelle zeigt auch im Header g/kg an.
Im Moment ist da kaum ein Unterschied.Gruß
Rainer
-
Was mich wundert ist nur die doch deutliche Abweichung zu dem Skript das ich auf der CCU (ebenfalls nach @paul53) erstellt habe und dem was hier herauskommt.
Wenn ich es noch richtig im Kopf habe kommt bei der CCU etwa 27g/kg heraus, während mit diesem Skript dann 37g/kg angegeben wird.
Die Daten für rel. Feuchte und Temperatur sind jeweils identisch (20%; 65-70°C)Verwendest Du auf der CCU das https://homematic-forum.de/forum/viewtopic.php?f=43&t=9835&p=71400&hilit=Feuchte#p71326, das nur bis 34 °C richtige Werte liefert ?
-
Hallo Paul,
@paul53:Verwendest Du auf der CCU das Skript mit der Näherungsformel, das nur bis 34 °C richtige Werte liefert ? `
Das würde eine Abweichung erklären.Ehrlich ich weiß es nicht, ist zu lange her und ich bin doch Skript-Legastheniker:
! ````
! Lokale Variablen
real t; ! Temperatur in °C
integer rf; ! relative Feuchte in %
real af; ! absolute feuchte in g/kg
! ! Werte einlesen
t = dom.GetObject("BidCos-RF.JEQ0064523:1.TEMPERATURE").Value();
rf = dom.GetObject("BidCos-RF.JEQ0064523:1.HUMIDITY").Value();
!rf = (0.95 * rf);
! ! Berechnung
if (t < 0.0) {t = 0.0;}
if (t < 10.0)
{ af = (3.78 + (0.285 * t) + (0.0052 * t * t) + (0.0005 * t * t * t));
}
else
{ af = (7.62 + (0.524 * (t-10.0)) + (0.0131 * (t-10.0) * (t-10.0)) + (0.00048 * (t-10.0) * (t-10.0) * (t-10.0)));
}af = (af * rf) / (100.0 + af * (100.0 - rf) / 622);
! !In Systemvariable schreiben
dom.GetObject("Abs_Feuchte_Bad").State(af);Aber: ~~@paul53:~~ > in guter Näherung. Oberhalb von 34°C beträgt die Abweichung mehr als 0,1 g/kg. ` 10 sind auch mehr als 0,1 :mrgreen: Danke für den Hinweis. ich nehme an, dass das an den limitierten Fähigkeiten der CCU-Skripte liegt, dass sie komplexere Rechenformeln nicht umsetzen können. Dann muss ich doch mal alles umbauen :( ich habe eh noch so viele Pläne (und so wenig Zeit) Gruß Rainer
-
Hallo zusammen.
Ich habe jetzt einen TH-O in der Sauna montiert. Dort kommt es natürlich zu erheblichem Wassergehalt.
Was mich wundert ist nur die doch deutliche Abweichung zu dem Skript das ich auf der CCU (ebenfalls nach @paul53) erstellt habe und dem was hier herauskommt.
Wenn ich es noch richtig im Kopf habe kommt bei der CCU etwa 27g/kg heraus, während mit diesem Skript dann 37g/kg angegeben wird.
Die Daten für rel. Feuchte und Temperatur sind jeweils identisch (20%; 65-70°C)
Was ist jetzt richtig?
Gruß
Rainer `
Die 37g/kg kommen der Realität ziemlich nahe. Siehe dazu folgendes h1+x-Diagramm (leider nur bis 35g/kg): -
ich nehme an, dass das an den limitierten Fähigkeiten der CCU-Skripte liegt, dass sie komplexere Rechenformeln nicht umsetzen können.
Ja, daran liegt es.
Dann muss ich doch mal alles umbauen
Das Skript hatte ich schon vor längerer Zeit durch die Berechnung des CUxD Thermostat Device ersetzt. Man kann ja die Umstellung auf die Sauna beschränken, da das wohl der einzige Raum mit Temperaturen über 34 °C ist; evtl. noch die Außenfeuchte.
EDIT: Oder Du deaktivierst die Skripte in der CCU und beschreibst die Systemvariablen durch ioBroker.
-
Danke für alle Tipps!
@paul53:Oder Du deaktivierst die Skripte in der CCU und beschreibst die Systemvariablen durch ioBroker. `
Das war der Plan!und entsprechend alle OIDs in vis ändern.
Gruß
Rainer
-
Hier nur mal kurz zur Vollständigkeit der aktuelle Screenshot:
Damit man weiß wovon ich rede.
Noch nichts angepasst.
Gruß
Rainer
-
Hallo,
ich habe eben das Skript aus dem ersten Beitrag genommen und meine Datenpunkte angepasst.
Leider erhalte ich ständig Meldungen der Art:````
14:10:20.306 [error] javascript.1 script.js.Luftfeuchte.Lueften: Cannot use sync getState, use callback instead getState("hm-rpc.0.LEQ0594610.1.TEMPERATURE", function (err, state){});
14:10:22.809 [error] javascript.1 script.js.Luftfeuchte.Lueften: Cannot use sync getState, use callback instead getState("Raumklima.Raum.Aussen.Feuchtegehalt_Absolut", function (err, state){});Ich habe zu wenig Ahnung, um zu verstehen was ich dagegen tun kann.
-
Guten morgen zusammen,
danke an alle Beteiligten für das tolle Skript. Ich bewundere immer wieder, was so einige hier können. Es gibt viel viel zu lernen :idea:
Da ich (zufällig) gesehen habe, dass die v.0.6.4 hier im Thread verfügbar ist möchte ich anregen, diese auch vorne im ersten Posting anzupinnen, denn dort steht noch die 0.5.2 als aktueller Stand.
Ich habe bei mir (sicherlich etwas grobschlächtig in der Umsetzung) noch eingebaut, dass die Lüftungsempfehlung nicht nur in Abhängigkeit der absoluten Feuchtigkeit stattfindet sondern in Abhängigkeit der relativen Feuchtigkeit (innen je nach Raum), sofern denn überhaupt gelüftet werden sollte bzw kann, eine Empfehlung zum Lüften in unterschiedlichen Dringlichkeiten dargestellt wird;
d.h.
<40% = grau, es kann gelüftet werden aber ggf Luft unangenehm trocken
40-60% = grün, es kann gelüftet werden
60 <70 = orange, es sollte gelüftet werden
70 = rot, es muss gelüftet werden (Schimmelgefahr).
Zwei Fragen habe ich:
- ich nutze Homematic IP Thermostaten / Feuchtigkeitsmesser. Diese zeigen mir quer durch alle Räume immer ca 5% MEHR rH an, als meine alten TFA Dostmann Dinger.
Im Skript steht ja auch, man solle die Offsets kalibrieren - aber wie? Wie finde ich denn raus, was "echt" ist, um die Kalibrierung vorzunehmen? Habt ihr alle irgendwelche Profigeräte zu Hause, mit denen ihr messt?
- Zum Code des Skript wäre ich dankbar, wenn mich jemand zu diesem Abschnitt erleuchten könnte:
// Klimadaten in allen Räumen berechnen ##### VERSTANDEN function calcAll() { for (var raum in raeume) { calcDelayed(raum,delayRooms); // Räume verzögert nacheinander abarbeiten } } // finde anhand der Sensor ID einen zugeordneten Raum ##### BITTE ERKLÄREN. WIE KANN ICH DIES z.B: IN ANDEREN SKRIPTEN NUTZEN? function findRoom(sensor) { for (var raum in raeume) { if (raeume[raum].Sensor_TEMP == sensor) return raum; ###### IST "sensor" beliebig ersetzbar? if (raeume[raum].Sensor_HUM == sensor) return raum; } return null; } // Änderung eines Sensors (Temperatur oder Luftfeuchtigkeit) ####### GREIFT AUF FINDROOM ZU, VERSTANDEN function valChange(obj) { var raumname = findRoom(obj.id); if (raumname) { if (debug) log('**Änderung:' + raumname + ": " + obj.id + ": " + obj.state.val + '**'); calcDelayed(raumname,delayRooms); }
-
Wie finde ich denn raus, was "echt" ist, um die Kalibrierung vorzunehmen? `
Am einfachsten siehst du es demokratisch und nimmst die Werte der Mehrheit, zumal du ja nur vergleichen willst.Am ehesten den wahren Wert erfährst du indem du dir ein Haarhygrometer besorgst und es entsprechend kalbrierst (Feuchte Kammer)
Gruß
Rainer