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

בית חכם, עוזרות חכמות, חשמל חכם, מערכות שליטה ובקרה, Amazon Echo, Alexa, Google home, Control4, RTI, מנעולים חכמים ועוד.
שלח תגובה
jagheadg פותח השרשור
חבר ותיק
חבר ותיק
תגובות: 1184
הצטרף: דצמבר 2010
מיקום: כפר הדרדסים
נתן תודות: 63 פעמים
קיבל תודות: 99 פעמים

שליחה #1 

יש למישהו דוגמה לקוד ב OH שמשנה צבע של מנורת RGB (לא משנה איזו) בהתאם למדידת טמפרטורה?
מה שאני מנסה לעשות הוא לשנות צבע של סטריפ לדים בהתאמה לטמפרטורת המים בדוד. אפקט ויזואלי נגיש.
כל אלמנט בנפרד עובד ונשלט, הבעיה שלי היא שאני מחפש קוד לדוגמה להתאים אותו לסטאפ שלי.
תודה.

ahiel
חבר ותיק
חבר ותיק
תגובות: 1306
הצטרף: פברואר 2016
נתן תודות: 40 פעמים
קיבל תודות: 110 פעמים

שליחה #2 

@jagheadg
·צריך לעשות rule שהטריגר שלו זה הטמפרטורה בדוד, ולפי זה אתה מחליט
אם הטמפ׳ מעל x תשנה צבע ל...
משהו בסגנון

קוד: בחירת הכל

rule "Colord Boiler"
when
    Item boilerCurrTemp changed 
then
                var Number temp = boilerCurrTemp.state as DecimalType
                if &#40;temp <= 50&#41; &#123;
change color...
&#125;
end

Catskinner
סמל אישי של משתמש
חבר במועדון HT
חבר במועדון HT
תגובות: 16019
הצטרף: נובמבר 2006
מיקום: הוד השרון
נתן תודות: 123 פעמים
קיבל תודות: 940 פעמים

שליחה #3 

אתה יכול לעשות את זה ישירות דרך הגדרות ה Sitemap, קח למשל את הקוד הזה:

קוד: בחירת הכל

Text item=Netatmo_Indoor_Temperature valuecolor=&#91;<20="aqua", <22.5="blue", <27="green", <29="yellow", >29="orange"&#93; label="Temperature Inside &#91;%.2f °C&#93;" visibility=&#91;Season_Name=="SPRING", Season_Name=="SUMMER"&#93;
  
מה שאני עושה כאן זה לשנות את הצבע של ערכי הטמפרטורה בהתאם לערך שלהם ובהמשך אני משתמש ב 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
מעצבן אותי כשאומרים "אני ילך, אני יקנה". מעצבן אותי עוד יותר כשכותבים את זה.

ahiel
חבר ותיק
חבר ותיק
תגובות: 1306
הצטרף: פברואר 2016
נתן תודות: 40 פעמים
קיבל תודות: 110 פעמים

שליחה #4 

@Catskinner
·לבתי הוא מתכוון לשנות צבע של מנורה אמיתית ולא את הצבע שהם מוצגים בממשק השליטה

Catskinner
סמל אישי של משתמש
חבר במועדון HT
חבר במועדון HT
תגובות: 16019
הצטרף: נובמבר 2006
מיקום: הוד השרון
נתן תודות: 123 פעמים
קיבל תודות: 940 פעמים

שליחה #5 

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

jagheadg פותח השרשור
חבר ותיק
חבר ותיק
תגובות: 1184
הצטרף: דצמבר 2010
מיקום: כפר הדרדסים
נתן תודות: 63 פעמים
קיבל תודות: 99 פעמים

שליחה #6 

@ahiel
·תודה.
אלך לעשות קצת שיעורי-בית.
ראיתי גם שאפשר להשתמש ב MAP עם SCALE
https://www.openhab.org/addons/transformations/scale/

jagheadg פותח השרשור
חבר ותיק
חבר ותיק
תגובות: 1184
הצטרף: דצמבר 2010
מיקום: כפר הדרדסים
נתן תודות: 63 פעמים
קיבל תודות: 99 פעמים

שליחה #7 

מכירים את VSCODE ?
גיליתי אותו היום (כן אני יודע, קיים כבר הרבה זמן).
הוספתי גם את הפלאגאין של openHAB. מדהים. הוא קורא את הערכים של ה items ב live ומציג אותם בתוך הקוד.

jagheadg פותח השרשור
חבר ותיק
חבר ותיק
תגובות: 1184
הצטרף: דצמבר 2010
מיקום: כפר הדרדסים
נתן תודות: 63 פעמים
קיבל תודות: 99 פעמים

שליחה #8 

@ahiel
·
מה דעתך על הקוד הזה? :

קוד: בחירת הכל

rule "Temperature Color"
when
    Item BoilerTemperatureSensor changed
then
    var Number temp = BoilerTemperatureSensor.state as DecimalType
    if&#40;OutTravelling.state == OFF&#41; &#123;
    	if &#40;temp > 46&#41; &#123;
    		YeelightLEDrgbColor.sendCommand&#40;"300,100,100"&#41; // ### PINK
    	&#125;
        if &#40;temp >=41 && temp <=45&#41; &#123;
    		YeelightLEDrgbColor.sendCommand&#40;"0,100,100"&#41; // ### RED
    	&#125;
        if &#40;temp >=37 && temp <=40&#41; &#123;
    		YeelightLEDrgbColor.sendCommand&#40;"30,100,100"&#41; // ### ORANGE
    	&#125;
        if &#40;temp >=34 && temp <=36&#41; &#123;
    		YeelightLEDrgbColor.sendCommand&#40;"100,100,100"&#41; // ### GREEN
    	&#125;
        if &#40; temp <=33&#41; &#123;
    		YeelightLEDrgbColor.sendCommand&#40;"240,100,100"&#41; // ### BLUE
    	&#125;
	&#125;
end

rule "Yeelight off"
when
    Item OutTravelling received command ON
then
    YeelightLEDpower.sendCommand&#40;OFF&#41;
end

rule "Yeelight dim low"
when
    Channel 'astro&#58;sun&#58;local&#58;civilDusk#event' triggered START
then
    YeelightLEDbrightness.sendCommand&#40;30&#41;
end

rule "Yeelight dim high"
when
    Channel 'astro&#58;sun&#58;local&#58;nauticDawn#event' triggered START
then
    YeelightLEDbrightness.sendCommand&#40;80&#41;
end


ahiel
חבר ותיק
חבר ותיק
תגובות: 1306
הצטרף: פברואר 2016
נתן תודות: 40 פעמים
קיבל תודות: 110 פעמים

שליחה #9 

@jagheadg
·קודם כל ה-scale נראה נחמד, לא הכרתי.
מבחינת הקוד סבבה לגמרי, אם תשתמש ב-else אתה יכול לחסוך קוד מיותר לדוג׳

קוד: בחירת הכל

 		if &#40;temp > 46&#41; &#123;
          YeelightLEDrgbColor.sendCommand&#40;"300,100,100"&#41; // ### PINK
       &#125; else if &#40;temp > 40&#41; &#123;
          YeelightLEDrgbColor.sendCommand&#40;"0,100,100"&#41; // ### RED
       &#125; else if &#40;temp >36&#41; &#123;
          YeelightLEDrgbColor.sendCommand&#40;"30,100,100"&#41; // ### ORANGE
       &#125; else if &#40;temp >33&#41; &#123;
          YeelightLEDrgbColor.sendCommand&#40;"100,100,100"&#41; // ### GREEN
       &#125; else &#123;
          YeelightLEDrgbColor.sendCommand&#40;"240,100,100"&#41; // ### BLUE
       &#125;

שלח תגובה

חזור אל “בית חכם ובקרה”