openHAB: שינוי צבע מנורה בהתאם לטמפרטורה
-
jagheadg
-
- חבר ותיק

- תגובות: 1184
- הצטרף: דצמבר 2010
- מיקום: כפר הדרדסים
- נתן תודות: 63 פעמים
- קיבל תודות: 99 פעמים
יש למישהו דוגמה לקוד ב OH שמשנה צבע של מנורת RGB (לא משנה איזו) בהתאם למדידת טמפרטורה?
מה שאני מנסה לעשות הוא לשנות צבע של סטריפ לדים בהתאמה לטמפרטורת המים בדוד. אפקט ויזואלי נגיש.
כל אלמנט בנפרד עובד ונשלט, הבעיה שלי היא שאני מחפש קוד לדוגמה להתאים אותו לסטאפ שלי.
תודה.
מה שאני מנסה לעשות הוא לשנות צבע של סטריפ לדים בהתאמה לטמפרטורת המים בדוד. אפקט ויזואלי נגיש.
כל אלמנט בנפרד עובד ונשלט, הבעיה שלי היא שאני מחפש קוד לדוגמה להתאים אותו לסטאפ שלי.
תודה.
@jagheadg
·צריך לעשות rule שהטריגר שלו זה הטמפרטורה בדוד, ולפי זה אתה מחליט
אם הטמפ׳ מעל x תשנה צבע ל...
משהו בסגנון
·צריך לעשות rule שהטריגר שלו זה הטמפרטורה בדוד, ולפי זה אתה מחליט
אם הטמפ׳ מעל x תשנה צבע ל...
משהו בסגנון
קוד: בחירת הכל
rule "Colord Boiler"
when
Item boilerCurrTemp changed
then
var Number temp = boilerCurrTemp.state as DecimalType
if (temp <= 50) {
change color...
}
end
- Catskinner
- חבר במועדון HT

- תגובות: 16019
- הצטרף: נובמבר 2006
- מיקום: הוד השרון
- נתן תודות: 123 פעמים
- קיבל תודות: 940 פעמים
אתה יכול לעשות את זה ישירות דרך הגדרות ה Sitemap, קח למשל את הקוד הזה:
מה שאני עושה כאן זה לשנות את הצבע של ערכי הטמפרטורה בהתאם לערך שלהם ובהמשך אני משתמש ב visibility כדי להגדיר מתי בכלל להציג את השורה (יש לי שורה אחרת המוצגת בחורף ובסתיו)
עוד אפשרות זה באמצעות Dynamic Icons. כאן לדעתי אתה צריך תחילה להגדיר item, נניח בשם dud ואז לבנות rule שתציב ערך של טקסט כמו cold, hot, warm לטווחי טמפרטורות לאותו item בשם dud. אחר כך ליצור Icons בפורמט png או svg שהחלק האחרון של השם שלהם הוא אותו ערך בפורמט הזה: dudmaim-hot.png , dudmaim-cold.png, dudmaim-warm.png ובסוף להגדיר בקובץ ה items שאותו item שהגדרת בשם dud ישתמש ב Icon הנקרא dudmaim (נקי, ללא התוספות והקו). ממשק ה openHAB יעשה את יתר העבודה ויחליף אוטומתית את ה icon בשבילך.
הסבר טוב יותר לשימוש ב Dynamic Icons תמצא כאן: https://www.openhab.org/docs/configuration/items.html#icons
קוד: בחירת הכל
Text item=Netatmo_Indoor_Temperature valuecolor=[<20="aqua", <22.5="blue", <27="green", <29="yellow", >29="orange"] label="Temperature Inside [%.2f °C]" visibility=[Season_Name=="SPRING", Season_Name=="SUMMER"]
עוד אפשרות זה באמצעות Dynamic Icons. כאן לדעתי אתה צריך תחילה להגדיר item, נניח בשם dud ואז לבנות rule שתציב ערך של טקסט כמו cold, hot, warm לטווחי טמפרטורות לאותו item בשם dud. אחר כך ליצור Icons בפורמט png או svg שהחלק האחרון של השם שלהם הוא אותו ערך בפורמט הזה: dudmaim-hot.png , dudmaim-cold.png, dudmaim-warm.png ובסוף להגדיר בקובץ ה items שאותו item שהגדרת בשם dud ישתמש ב Icon הנקרא dudmaim (נקי, ללא התוספות והקו). ממשק ה openHAB יעשה את יתר העבודה ויחליף אוטומתית את ה icon בשבילך.
הסבר טוב יותר לשימוש ב Dynamic Icons תמצא כאן: https://www.openhab.org/docs/configuration/items.html#icons
מעצבן אותי כשאומרים "אני ילך, אני יקנה". מעצבן אותי עוד יותר כשכותבים את זה.
- Catskinner
- חבר במועדון HT

- תגובות: 16019
- הצטרף: נובמבר 2006
- מיקום: הוד השרון
- נתן תודות: 123 פעמים
- קיבל תודות: 940 פעמים
·טעות שלי, אבל העיקרון דומה לשימוש ב Dynamic Icons רק שבמקום (או בנוסף) לשינוי בממשק אפשר באמת להוסיף rule שבהתאם לסטאטוס של item ה dud ישלח פקודה לשינוי הצבע של מנורת ה RGB.ahiel כתב:@Catskinner
·לבתי הוא מתכוון לשנות צבע של מנורה אמיתית ולא את הצבע שהם מוצגים בממשק השליטה...
מעצבן אותי כשאומרים "אני ילך, אני יקנה". מעצבן אותי עוד יותר כשכותבים את זה.
-
jagheadg
-
- חבר ותיק

- תגובות: 1184
- הצטרף: דצמבר 2010
- מיקום: כפר הדרדסים
- נתן תודות: 63 פעמים
- קיבל תודות: 99 פעמים
@ahiel
·תודה.
אלך לעשות קצת שיעורי-בית.
ראיתי גם שאפשר להשתמש ב MAP עם SCALE
https://www.openhab.org/addons/transformations/scale/
·תודה.
אלך לעשות קצת שיעורי-בית.
ראיתי גם שאפשר להשתמש ב MAP עם SCALE
https://www.openhab.org/addons/transformations/scale/
-
jagheadg
-
- חבר ותיק

- תגובות: 1184
- הצטרף: דצמבר 2010
- מיקום: כפר הדרדסים
- נתן תודות: 63 פעמים
- קיבל תודות: 99 פעמים
@ahiel
·
מה דעתך על הקוד הזה? :
·
מה דעתך על הקוד הזה? :
קוד: בחירת הכל
rule "Temperature Color"
when
Item BoilerTemperatureSensor changed
then
var Number temp = BoilerTemperatureSensor.state as DecimalType
if(OutTravelling.state == OFF) {
if (temp > 46) {
YeelightLEDrgbColor.sendCommand("300,100,100") // ### PINK
}
if (temp >=41 && temp <=45) {
YeelightLEDrgbColor.sendCommand("0,100,100") // ### RED
}
if (temp >=37 && temp <=40) {
YeelightLEDrgbColor.sendCommand("30,100,100") // ### ORANGE
}
if (temp >=34 && temp <=36) {
YeelightLEDrgbColor.sendCommand("100,100,100") // ### GREEN
}
if ( temp <=33) {
YeelightLEDrgbColor.sendCommand("240,100,100") // ### BLUE
}
}
end
rule "Yeelight off"
when
Item OutTravelling received command ON
then
YeelightLEDpower.sendCommand(OFF)
end
rule "Yeelight dim low"
when
Channel 'astro:sun:local:civilDusk#event' triggered START
then
YeelightLEDbrightness.sendCommand(30)
end
rule "Yeelight dim high"
when
Channel 'astro:sun:local:nauticDawn#event' triggered START
then
YeelightLEDbrightness.sendCommand(80)
end
@jagheadg
·קודם כל ה-scale נראה נחמד, לא הכרתי.
מבחינת הקוד סבבה לגמרי, אם תשתמש ב-else אתה יכול לחסוך קוד מיותר לדוג׳
·קודם כל ה-scale נראה נחמד, לא הכרתי.
מבחינת הקוד סבבה לגמרי, אם תשתמש ב-else אתה יכול לחסוך קוד מיותר לדוג׳
קוד: בחירת הכל
if (temp > 46) {
YeelightLEDrgbColor.sendCommand("300,100,100") // ### PINK
} else if (temp > 40) {
YeelightLEDrgbColor.sendCommand("0,100,100") // ### RED
} else if (temp >36) {
YeelightLEDrgbColor.sendCommand("30,100,100") // ### ORANGE
} else if (temp >33) {
YeelightLEDrgbColor.sendCommand("100,100,100") // ### GREEN
} else {
YeelightLEDrgbColor.sendCommand("240,100,100") // ### BLUE
}