NEWS
Alarmmeldung wenn Raumtemperatur unter einen bestimmten Wert fällt
-
Einginetyp" auf "Javascript/js" stellen …...diese Einstellung finde ich nicht. `
Den Javascript-Adapter hast Du installiert ?Kennst Du http://www.iobroker.net/?page_id=156&lang=de ?
-
Ok, danke.
Werde mich mal daran versuchen.
-
Wie verbindet man nun das Script für 5 Thermostate?
Ich weiß nicht, wenn ich mich mit java nicht auskenne ob die Anleitung wirklich hilft.
Falls jemand eine einfache Kurzfassung hat oder eine Script
und mir verrät wie das genau geht, wäre es eventuell verständlicher.
Java hatte ich installiert und auch blockly entdeckt aber wie ich jetzt das Script dort einfügen kann
ist mir nicht klar.
-
Also ich scheitere am Script. `
Also mit einem müsstest Du Dich schon mal per Anleitung beschäftigen. Die Anleitungen sind eigentlich sehr gut und helfen einem schnell auf die Sprünge. Wenn Du nicht programmieren willst, versuch es doch einfach mal mit Blockly.
Grüße, Jens
-
Telegram habe ich eingerichtet. Leuchtet grün. `
Komplett installiert? Mit Bot usw… ? Gibt gutes youtube video dazu, ansonsten: https://github.com/ioBroker/ioBroker.te ... /README.md -
hier mit node-red. Schickt jetzt ein email - kannst aber natürlich auch andere Sachen machen (telegram zB).
Vorteil: ohne javascript, sensoren leicht hinzuzufügen````
[{"id":"27ba5893.2c68a8","type":"tab","label":"Alarm Message"},{"id":"6c52f0ab.fa037","type":"template","z":"27ba5893.2c68a8","name":"prepare message","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Achtung! Sensor '{{topic}}' mißt {{payload}}°C!","x":1031,"y":299,"wires":[["cbd6609a.60fc1"]]},{"id":"8f3e6a0.1339b98","type":"ioBroker in","z":"27ba5893.2c68a8","name":"","topic":"admin.0.ws333.Temp3","payloadType":"value","onlyack":"","func":"all","gap":"","x":134,"y":94,"wires":[["e5b37419.c12288"]]},{"id":"117f222c.98f5ee","type":"change","z":"27ba5893.2c68a8","name":"prepare data","rules":[{"t":"change","p":"topic","pt":"msg","from":"/","fromt":"str","to":".","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"payload[1].payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":833,"y":255,"wires":[["6c52f0ab.fa037"]]},{"id":"e5b37419.c12288","type":"function","z":"27ba5893.2c68a8","name":"Queue","func":"//how many items in queue?\nvar countmsg = 2;\n\nvar inmsg = msg;\nvar outmsg = { topic: inmsg.topic , payload: ""};\nvar ctx = this.context;\nvar msgs = ctx.get("aggmsgs")||[];\nvar topics = msgs[inmsg.topic]||[];\n\n\nif (topics.length > 0) {\n if (topics[topics.length-1].payload == inmsg.payload)\n return null;\n} \nif (topics.length == countmsg){\n topics.shift()\n}\n\ntopics.push(inmsg);\noutmsg.payload = topics;\n\nmsgs[inmsg.topic] = topics;\nctx.set("aggmsgs",msgs);\n\nif (topics.length == countmsg)\n return outmsg;\nelse\n return null;","outputs":1,"noerr":0,"x":329,"y":134,"wires":[["39bc3b4b.cfa814"]]},{"id":"39bc3b4b.cfa814","type":"switch","z":"27ba5893.2c68a8","name":"check left limit","property":"payload[1].payload","propertyType":"msg","rules":[{"t":"lte","v":"-3","vt":"num"}],"checkall":"true","outputs":1,"x":506,"y":144,"wires":[["55ca16d1.7d2098"]]},{"id":"55ca16d1.7d2098","type":"switch","z":"27ba5893.2c68a8","name":"check right limit","property":"payload[0].payload","propertyType":"msg","rules":[{"t":"gt","v":"-3","vt":"num"}],"checkall":"true","outputs":1,"x":666,"y":197,"wires":[["117f222c.98f5ee"]]},{"id":"ceb09b12.933508","type":"ioBroker in","z":"27ba5893.2c68a8","name":"","topic":"admin.0.ws333.Temp2","payloadType":"value","onlyack":"","func":"all","gap":"","x":136,"y":191,"wires":[["e5b37419.c12288"]]},{"id":"cbd6609a.60fc1","type":"e-mail","z":"27ba5893.2c68a8","server":"smtp.gmail.com","port":"465","name":"","dname":"","x":1219,"y":349,"wires":[]}]Edit sagt: Alarm jetzt nur einmalig bei Über- Unterschreiten des Limits (20 Zeilen für queue :o )
-
Moebius: danke…...mit der langen Zeile kann ich nichts anfangen.
Ich wüsste nicht wo ich was ändern muss um es an meine Thermostate anzupassen.
-
lobomau: ja, komplett installiert denke ich, da.ich sonst den Schlüssel nicht erhalten hätte und telegram sonst auch nicht grün leuchten würde…...gehe ich jedenfalls davon aus.
-
Moebius: danke…...mit der langen Zeile kann ich nichts anfangen.
Ich wüsste nicht wo ich was ändern muss um es an meine Thermostate anzupassen. `
Das ist ein node-red Flow.Den Code komplett in die Zwischenablage kopieren, node-red Reiter öffnen, wenn der Adapter node-Red installiert ist und hier den Code einfügen!
Doku lesen –> http://www.iobroker.net/docu/?page_id=4 ... _von_Flows
SO sieht der Code expandiert aus:
! ````
[
{
"id": "27ba5893.2c68a8",
"type": "tab",
"label": "Flow 4"
},
{
"id": "cadb8796.b7e2d8",
"type": "switch",
"z": "27ba5893.2c68a8",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "lt",
"v": "-3",
"vt": "num"
}
],
"checkall": "true",
"outputs": 1,
"x": 558,
"y": 87,
"wires": [
[
"24087720.583658"
]
]
},
{
"id": "509b48b0.9d7ed8",
"type": "ioBroker get",
"z": "27ba5893.2c68a8",
"name": "",
"topic": "",
"attrname": "payload",
"payloadType": "value",
"x": 350,
"y": 89,
"wires": [
[
"cadb8796.b7e2d8"
]
]
},
{
"id": "5fe9f5aa.ad95ac",
"type": "e-mail",
"z": "27ba5893.2c68a8",
"server": "smtp.gmail.com",
"port": "465",
"name": "",
"dname": "",
"x": 1221,
"y": 89,
"wires": []
},
{
"id": "99d18002.47aff",
"type": "template",
"z": "27ba5893.2c68a8",
"name": "prepare message",
"field": "payload",
"fieldType": "msg",
"format": "handlebars",
"syntax": "mustache",
"template": "Achtung! Sensor '{{topic}}' mißt {{payload}}°C!",
"x": 1017,
"y": 89,
"wires": [
[
"5fe9f5aa.ad95ac"
]
]
},
{
"id": "605b30d.8b436d",
"type": "ioBroker in",
"z": "27ba5893.2c68a8",
"name": "",
"topic": "admin.0.ws333.Temp3",
"payloadType": "value",
"onlyack": "",
"func": "all",
"gap": "",
"x": 121,
"y": 54,
"wires": [
[
"509b48b0.9d7ed8"
]
]
},
{
"id": "bb5319dd.ef2e48",
"type": "ioBroker in",
"z": "27ba5893.2c68a8",
"name": "",
"topic": "admin.0.ws333.Temp2",
"payloadType": "value",
"onlyack": "",
"func": "all",
"gap": "",
"x": 119,
"y": 135,
"wires": [
[
"509b48b0.9d7ed8"
]
]
},
{
"id": "24087720.583658",
"type": "change",
"z": "27ba5893.2c68a8",
"name": "",
"rules": [
{
"t": "change",
"p": "topic",
"pt": "msg",
"from": "/",
"fromt": "str",
"to": "-",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 774,
"y": 88,
"wires": [
[
"99d18002.47aff"
]
]
}
]Wenn der Flow importiert ist, dann kann man die nodes (die "Steine" oder "Knoten") ändern. Gruß Pix
-
Ich habe das Script von MistyReblaus genommen
on({
id: /hm-rpc.*.TEMPERATURE/,
ack : true,
change: "lt",
valLt: 18,
oldValGe: 18
}, function(obj)
{
sendTo('telegram.0', {
text: "Temperatur ist zu niedrig.",
disable_notification: true
}
)
}
);
Ist es korrekt, dass ich für das Sternchen "*" die Id für die aktuelle ist Temperatur einfüge?
Muss ich für jedes Thermostat ein extra Script nehmen?
Oder einfach für das weitere Thermostat ergänzen?
Was.würde dann über telegram bei 18 Grad gemedet werden….also
außer " Temperatur ist zu niedrig " ?
Wird auch angezeigt welches Zimmer?
-
Also das Script läuft nicht.
In der 2, 3 und 4 Zeile scheint was falsch zu sein.
-
Ich habe nun das Script von
Paul53
probiert. Hier wird kein Fehler angezeigt aber wenn die Temperatur abgefallen ist
auf den.bzw. unter den vorgegebenen Grenzwert, erhalte ich keine Mail per "Telegram"
was mache ich falsch?
-
Hi Blackangel,
probiere doch mal das Ganze mit Blocky zu realisieren. Da musst du keine Javascript-Kenntnisse haben. Einfach Drag-and-Drop und schon hast du ein Script zusammengeklickt. Um Blocky zu nutzen, musst du einfach den Enginetyp auf Blocky lassen. (siehe Bild)
Grüße,
ldittmar
-
Hi,
bin auch Anfänger was Javascript und Blockly betrifft und habe das mal zusammen geklickt und exportiert.
Du nimmst das alles und kopierst es.
<block xmlns="http://www.w3.org/1999/xhtml" type="on_ext" id="~r*U+2!|t6x/`nu/{:r1" x="-462" y="-287"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="4N:=AI~{G+rNDI]w95{4"><field name="oid">hm-rpc.0.LEQ0003791.1.TEMPERATURE</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="NVE^VjGif,Ox5OqBuR?*"><value name="IF0"><block type="logic_compare" id="IT(q{Xg/IIRuMYKJbhCG"><field name="OP">LT</field> <value name="A"><block type="get_value" id="|scHE*ak9k(o*AgretdA"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.LEQ0003791.1.TEMPERATURE</field></block></value> <value name="B"><block type="math_number" id="p/S69eq]C{D2^9WkVI#`"><field name="NUM">18</field></block></value></block></value> <statement name="DO0"><block type="telegram" id="HlVUG3@nFAR5P%}Gu5_V"><field name="INSTANCE">.0</field> <field name="LOG">log</field> <value name="MESSAGE"><shadow type="text" id="6n=_OEeWW6DbD(Vrq/;A"><field name="TEXT">Temperatur Wohnzimmer unter 18 Grad</field></shadow></value></block></statement></block></statement></block>
Dann im Javascript Adapter ein neues Script öffnen siehe Bild und dann auf den markierten Button drücken und das hier kopierte einfügen.
Danach sollte das dann so aussehen:
Jetzt musst du eigentlich nur noch bei den beiden "Object ID" deinen Temperatur Sensor auswählen und die Meldung die gesendet werden soll anpassen.
So sieht das dann als Javascript aus wenn man sich den Code anzeigen lässt:
on({id: 'hm-rpc.0.LEQ0003791.1.TEMPERATURE', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rpc.0.LEQ0003791.1.TEMPERATURE").val < 18) { sendTo("telegram.0", "send", { text: 'Temperatur Wohnzimmer unter 18 Grad' }); console.log("telegram: " + 'Temperatur Wohnzimmer unter 18 Grad'); } });
Viel Erfolg
-
So sieht das dann als Javascript aus wenn man sich den Code anzeigen lässt: `
Die Bedingung sollte dann noch optimiert werden, wenn nicht bei jeder Temperaturänderung unterhalb 18°C immer wieder gesendet werden soll:if (value < 18 && oldValue >= 18) {
EDIT: Das geht natürlich auch mit Blockly:
-
Danke für den Hinweis.
Gesendet von iPhone mit Tapatalk Pro
-
Super, werde mich mal dran versuchen.
Vielen Dank für die Hilfe.
-
Ich habe den Code von
Wenedy 2702
eingefügt, hat funktioniert…...ausprobiert ob tatsächlich eine Mail über telegram
ausgelöst wird, habe ich noch nicht probiert.
Wie kann ich den Code von Paul53 jetzt dort hinzufügen ?
Lässt sich nicht zusätzlich importieren.
-
Habe es ausprobiert….leider kommt keine Mitteilung über telegram.
Als ID hatte ich die actual_temperature.....value temperature genommen.
Der token it bei telegram eingetragen und der Adapter leuchtet grün.
Scribt leuchtet auch grün aber eine mail ist nicht gekommen. Wlan ist natürlich an.
-
Ist die ID falsch?
Habe sie automatisch einfügen lassen
Muss ich was bei der ID weglassen?
Im Beispiel steht nur …..Temperature
Wenn ich die ID einfüge steht bei mir aber Actual_Temperature
Habe die ID genommen wo daneben die aktuelle "ist" Temperatur angezeigt wird.