ich hoffe ihr habt die Weihnachtstage gut überstanden.
läuft auf System "Raspberry Pi 4, 2GB RAM, openHAB 3.3.0"
Ich versuche gerade eine Regel für mein 3D Drucker Gehäuse mal mit Blockly zu erstellen.
Wenn meine Wlan Steckdose mit Energy Monitor ...
= "OFF", sollen Beleuchtung + Temp./Luftfeuchitigkeit Display ausgeschaltet werden (funktioniert).
= "ON", soll Temp./Luftfeuchitigkeit Display eingeschaltet werden (funktioniert).
Watt = <15, soll Beleuchtung Gehäuse auf Weiß einschalten (funktioniert)
Watt = >15, soll Beleuchtung Gehäuse von Weiß auf Grün wechseln (funktioniert).
Temperaturfühler im Gehäuse ....
Temp >40, soll Beleuchtung Gehäuse von Grün auf Rot wechseln und eine Benachrichtigung auf's Handy gesendet werden "Drucker Gehäuse Temperatur zu hoch" (funktioniert).
Wenn der Drucker im Standby ist, werden 9W gemessen, das heißt wenn der Druck fertig ist wechselt die Beleuchtung wieder auf Weiß (funktioniert.
Jetzt wollte ich gerne noch, dass wenn der Druck fertig ist und ich schon im Bett bin, das die Steckdose vom Drucker sich z.b nach 30min. abschaltet wenn ich keinen neuen Druck starte.
Also nicht sofort nach dem Druck, sonst könnte ich es ja über die gemessene Leistung machen. Setze ich ein "wait von 30min." in die Regel, bleibt der Durchlauf für 30min. stehen und beim Start eines neuen Druckes würde die Beleuchtung etc. nicht mehr wechseln.
Habt ihr eine Idee wie man es hinbekommen kann ?
Die Regel wird im Moment über Cronjob alle 30sec. gestartet.
Code: Alles auswählen
configuration: {}
triggers:
- id: "3"
configuration:
cronExpression: 0/30 * * * * ? *
type: timer.GenericCronTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
blockSource: '<xml xmlns="https://developers.google.com/blockly/xml"><block
type="controls_if" id="cA`XuJPdSa*S8k??)%gV" x="275" y="16"><mutation
elseif="1"></mutation><value name="IF0"><block type="logic_compare"
id="q(pB_JXX*:*0/R^|6Z^u"><field name="OP">EQ</field><value
name="A"><block type="oh_getitem_state" id=",{(]+Ft3!)3hP4_Rx@i#"><value
name="itemName"><shadow type="oh_item" id="wAl!^xI~h#%FxozzP4lP"><field
name="itemName">Drucker_Power_Steckdose</field></shadow></value></block></value><value
name="B"><block type="text" id="KMT.Yedz5NiCs`#]i9$~"><field
name="TEXT">OFF</field></block></value></block></value><statement
name="DO0"><block type="oh_event" id="K;=C_W,+0jwy_LygR%A+"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id=".tu0^gPR5EZv-WkP[mq,"><field
name="TEXT">OFF</field></shadow></value><value name="itemName"><shadow
type="oh_item" id="Z7XW=9+8WclHqhD4zLgl"><field
name="itemName">Drucker_Beleuchtung_Farben</field></shadow></value><next><block
type="oh_event" id="-:|e(rW0AP!iN!uS+-$K"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id="xS8bsp^yxjgJc|rO,J.R"><field
name="TEXT">OFF</field></shadow></value><value name="itemName"><shadow
type="oh_item" id=",z/i5mm|.Bmij=t^kk(O"><field
name="itemName">Drucker_Temp_Luft_Display_204</field></shadow></value></block></next></block></statement><value
name="IF1"><block type="logic_compare" id="oS8S#7GymvIM!FBl@_Pe"><field
name="OP">EQ</field><value name="A"><block type="oh_getitem_state"
id=".JRppc@?:yu0.Gq~vIui"><value name="itemName"><shadow type="oh_item"
id=":E5~-#n]G:6j)Hghy=XE"><field
name="itemName">Drucker_Power_Steckdose</field></shadow></value></block></value><value
name="B"><block type="text" id=".@;4$MQ@vM4N*;-*eO]="><field
name="TEXT">ON</field></block></value></block></value><statement
name="DO1"><block type="oh_event" id="b;nck+5?6Kb=E*~Yh+CN"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id="Pynq*.9z;W#6})F_NF,0"><field
name="TEXT">ON</field></shadow></value><value name="itemName"><shadow
type="oh_item" id="NUT7MKaG)SH$8pv0fOi2"><field
name="itemName">Drucker_Temp_Luft_Display_204</field></shadow></value></block></statement><next><block
type="controls_if" id=":0LZfU|~lzMPCVW9-]d^"><mutation
elseif="1"></mutation><value name="IF0"><block type="logic_compare"
id="bX3O7fEXH6^YbyAtPFjQ"><field name="OP">LT</field><value
name="A"><block type="oh_getitem_state" id="1)o=(W#8QmGgBAdS~z4:"><value
name="itemName"><shadow type="oh_item" id="xh4kG$G@YV,On^dfyz6i"><field
name="itemName">Drucker_Watt</field></shadow></value></block></value><value
name="B"><block type="text" id="#-=wAslXsA#S%v$}k%Ni"><field
name="TEXT">15</field></block></value></block></value><statement
name="DO0"><block type="oh_event" id="c;YHAt1W[WnwBo*^]fY?"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text"><field name="TEXT">COLOR #0,255,0</field></shadow><block
type="oh_color_to_hsb" id="|6Zd9-]IbTz@k2JG{Vr%"><value
name="hexColor"><shadow type="colour_picker"><field
name="COLOUR">#ff0000</field></shadow><block type="colour_picker"
id="%KmG^As)u-k|*D^??,E`"><field
name="COLOUR">#ffffff</field></block></value></block></value><value
name="itemName"><shadow type="oh_item" id="Y:xMbToO?l8#=.@k7XYf"><field
name="itemName">Drucker_Beleuchtung_Farben</field></shadow></value></block></statement><value
name="IF1"><block type="logic_compare" id="3fb8Lslz%}cW(]v3{5V/"><field
name="OP">GT</field><value name="A"><block type="oh_getitem_state"
id="EK8m==17o=:!1K(S91;G"><value name="itemName"><shadow type="oh_item"
id="86ghT7sEDZL1g7Q.aS]k"><field
name="itemName">Drucker_Watt</field></shadow></value></block></value><value
name="B"><block type="text" id="7e9Y[sAd-H3ChQ#b@1,}"><field
name="TEXT">15</field></block></value></block></value><statement
name="DO1"><block type="oh_event" id="e9gA4;(rO6gN|lMt7NX2"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id="Yzf%Vh=duq[@90N{B/R,"><field name="TEXT">COLOR
#0,255,0</field></shadow><block type="oh_color_to_hsb"
id="0!!+ex!zl|L!fh=k8Dpq"><value name="hexColor"><shadow
type="colour_picker"><field name="COLOUR">#ff0000</field></shadow><block
type="colour_picker" id="^z0N75p[5oF(TN?IWRx|"><field
name="COLOUR">#33ff33</field></block></value></block></value><value
name="itemName"><shadow type="oh_item" id="~E|:pXAdzh~ps5POAQuB"><field
name="itemName">Drucker_Beleuchtung_Farben</field></shadow></value></block></statement><next><block
type="controls_if" id="Vl#e[@Sf2PmL+YHb)BPM"><value name="IF0"><block
type="logic_compare" id="*Zw^}hFtPpk|IV}h0EOr"><field
name="OP">GTE</field><value name="A"><block type="oh_getitem_state"
id="l,]qs-`8;fJaHAH7u-|%"><value name="itemName"><shadow type="oh_item"
id="lUlRUl#A1=Z^xmAB{@m*"><field
name="itemName">Drucker_Gehaeuse_Temperatur</field></shadow></value></block></value><value
name="B"><block type="text" id="@Y|Y2QQon@H~%+X:cv6."><field
name="TEXT">40</field></block></value></block></value><statement
name="DO0"><block type="oh_event" id="twt]G!}17;PC#D9?C9y~"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id="oeHnnd,tE$uo2C`LkpT-"><field name="TEXT">COLOR
#0,255,0</field></shadow><block type="oh_color_to_hsb"
id="uj{Yd}V3z(a%7H5V2}`V"><value name="hexColor"><shadow
type="colour_picker"><field name="COLOUR">#ff0000</field></shadow><block
type="colour_picker" id="H5IhX/]Q|-,FD,f.*j.-"><field
name="COLOUR">#ff0000</field></block></value></block></value><value
name="itemName"><shadow type="oh_item" id="U~BnFkR@6dw[dZV?w5TT"><field
name="itemName">Drucker_Beleuchtung_Farben</field></shadow></value><next><block
type="oh_sendNotification" id="hRRR^U-Ah#D{z/KCGlsY"><value
name="message"><shadow type="text" id="yDWh?J)U5:yNQa(gI!Zu"><field
name="TEXT">Drucker Gehäuse Temperatur zu
hoch</field></shadow></value><value name="email"><shadow type="text"
id="ev`4%-N]t@IFe/A0MGyH"><field
name="TEXT">xxxxx@xxxxx</field></shadow></value></block></next></block></statement></block></next></block></next></block></xml>'
type: application/javascript
script: >
function colorHexToHSB (hexColor) {
var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColor);
if (!rgb) return '';
var r = parseInt(rgb[1], 16) / 255, g = parseInt(rgb[2], 16) / 255, b = parseInt(rgb[3], 16) / 255;
var v = Math.max(r, g, b), n = v - Math.min(r, g, b);
var h = n === 0 ? 0 : n && v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n;
return [60 * (h < 0 ? h + 6 : h), v && (n / v) * 100, v * 100].join(',');
}
var notifications = Java.type('org.openhab.io.openhabcloud.NotificationAction');
if (itemRegistry.getItem('Drucker_Power_Steckdose').getState() == 'OFF') {
events.sendCommand('Drucker_Beleuchtung_Farben', 'OFF');
events.sendCommand('Drucker_Temp_Luft_Display_204', 'OFF');
} else if (itemRegistry.getItem('Drucker_Power_Steckdose').getState() == 'ON') {
events.sendCommand('Drucker_Temp_Luft_Display_204', 'ON');
}
if (itemRegistry.getItem('Drucker_Watt').getState() < '15') {
events.sendCommand('Drucker_Beleuchtung_Farben', colorHexToHSB('#ffffff'));
} else if (itemRegistry.getItem('Drucker_Watt').getState() > '15') {
events.sendCommand('Drucker_Beleuchtung_Farben', colorHexToHSB('#33ff33'));
}
if (itemRegistry.getItem('Drucker_Gehaeuse_Temperatur').getState() >= '40') {
events.sendCommand('Drucker_Beleuchtung_Farben', colorHexToHSB('#ff0000'));
notifications.sendNotification('xxxxx@xxxxxx','Drucker Gehäuse Temperatur zu hoch');
}
type: script.ScriptAction