צריך עזרה בלהוסיף פקודה curl לrule OH

SIRI, CORTANA, ALEXA, ECHO, GOOGLE HOME, HOME PAD, שלטים חכמים, KEY PADS, אפליקציות
razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #1 

יש לי את הפקודה הזאת:

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

curl -d '{"id":"test", "action":"activate"}' -H 'Content-Type: application/json' -X PUT http://192.168.0.111:8888/api/scenes
אין לי מושג איך להוסיף אותה לrule ואני אשמח לעזרה..

chenta
חבר פעיל מאוד
חבר פעיל מאוד
הודעות: 183
הצטרף: ינואר 2011
נתן תודות: 22 פעמים
קיבל תודות: 29 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #2 

הי,
יש בגדול שתי אופציות שיצא לי להשתמש בהן.
הצורה הכי ישירה, להשתמש בפעולה executeCommandLine.
מוזמן לקרוא בתיעוד של OH:
https://www.openhab.org/docs/configurat ... ec-actions

דוגמא להרצת הפקודה:
dig +short myip.opendns.com @resolver1.opendns.com (פקודה שאמורה להחזיר לך את ה- IP החיצוני שלך)

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

rule "Check Public IP"
when
    Item Sys_CheckPublicIP received command ON
then
    logInfo(filename, "Checking Public IP")
    var String currentIP = executeCommandLine(Duration.ofSeconds(15),"dig","+short","myip.opendns.com","@resolver1.opendns.com")
    logInfo(filename, "IP is: " + currentIP)
    currentIP = currentIP.substring(0,currentIP.length-1)
    Sys_PublicIP.postUpdate(currentIP)
end
הפרמטר הראשון זה הזמן ל- timeout לפקודה. כלומר כמה זמן לחכות לתשובה.
מעבר לזה שים לב שכל פרמטר צריך להיות מופרד בפסיק בפקודה. כלומר- איפה שיש רווח בפקודה שלך אתה צריך לשים פסיק, וכמובן שבין הפסיקים הכל זה מחרוזת ולכן צריך להיות עטוף במרכאות.

האופציה השניה שלך, במידה ומשום מה זה לא עובד או שיש פקודה מסובכת מדי, זה להכניס את הפקודה (או סט הפקודות) ל- shell script (ויש לזה מלא מדריכים מאוד פשוטים באינטרנט) ואז באמצעות הפעולה executeCommandLine להריץ את ה- script הרלוונטי.
באופציה הזאת רק צריך להיזהר כי המערכת תריץ את ה- script עם המשתמש openhab ולא עם openhabian (איתו אתה נכנס ל- SSH, בהנחה שאתה עובד התקנת openhabian) ואז רק צריך לוודא שלמשתמש openhab יש הרשאות הרצה ל- script הרלוונטי במיקום הרלוונטי.

דוגמא לחוק שמריץ script כזה:

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

rule "VPN Server Control"
when
    Item Sys_VPNControl received command
then
    logInfo(filename, "Controling the VPN server: " + receivedCommand)
    switch Sys_VPNControl.state {
        case "Activate":{
            executeCommandLine("sudo","/usr/bin/vpn/startService.sh")
            Sys_VPNCheck.sendCommand(ON)
        }
        case "Deactivate": {
            executeCommandLine("sudo","/usr/bin/vpn/stopService.sh")
            Sys_VPNCheck.sendCommand(ON)
        }
        case "Check": {
            Sys_VPNCheck.sendCommand(ON)
        }
    }
end
מקווה שעונה.
אם בחרת באופצית ה- script והסתבכת עם ההרשאות עדכן ואנסה לעזור. מרגיש שהצלחתי לפצח את זה כשמימשתי את החוק לדוגמא שנתתי כאן...
בהצלחה.

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #3 

@chenta
שוב תודה על הסבר מפורט ממך,
הרצת הפקודה ישר מתוך rule אני לא מצליח להבין
אז הלכתי על הפיתרון הקל יותר והכנסתי את הפקודה לscript התקנתי git על המחשב והצלחתי להפעיל את הסקריפט

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #4 

@chentaאני מחפש דרך לקבל התראות באנדרואיד TV, ניסית להגדיר התראות באנדרואיד TV מopenhab? בקודי זה עובד יפה.

chenta
חבר פעיל מאוד
חבר פעיל מאוד
הודעות: 183
הצטרף: ינואר 2011
נתן תודות: 22 פעמים
קיבל תודות: 29 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #5 

@razserv2010
בשמחה :)

כל דרך שעובדת היא לגיטימית. אם משהו שם לא מסדתר לך ותרצה בכל זאת סיוע בהרצת הפקודה ישירות דבר איתי.

לגבי Android TV- לא יצא לי לעבוד עם זה...
יש Binding ל OH?
איך אתה מדבר עם ה TV?

לא יודע אם עוזר או קשור אבל אני יודע שבטלפון אנדרואיד רגיל אפשר להתקין את Tasker שיש לו plugin ל OH ואז הוא יודע לראות את ה items ואולי גם יודע לקבל הודעות. לא יודע אם זה רלוונטי לטלוויזיה.

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #6 

@chenta
מצאתי את זה אבל אני לא יודע אם זה יעבוד עם windows 10
https://community.openhab.org/t/sending ... d-tv/39465

chenta
חבר פעיל מאוד
חבר פעיל מאוד
הודעות: 183
הצטרף: ינואר 2011
נתן תודות: 22 פעמים
קיבל תודות: 29 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #7 

@razserv2010
מעניין. לא הכרתי את השפה הזאת.
מהמעט שראיתי נראה שיש אפשרות להתקין Go על Win10 מהאתר שלהם, וכן הוזכר בשרשור ששלחת שמישהו הצליח לממש את זה על Windows.
אז זה כנראה אמור לעבוד...

נקודה חשובה שאולי הייתי צריך להדגיש בתשובה הראשונית שלי-
בסופו של דבר אתה תצטרך להריץ פקודה כלשהיא עם executeCommandLine
בגרסאות קודמות של OH בפקודה שכוללת פרמטרים (כלומר ערכים שמופרדים בניהם ברווח) היה צריך להחליף כל רווח ב @@.
החל מגרסא כלשהיא (לא זוכר בדיוק איזו) זה כבר לא עובד ככה וצריך להפריד כל פרמטר בפסיק כמו שכתבתי בתשובה הראשונית.
תראה שאתה לא נופל על זה... 8)

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #8 

התקנתי GO אבל נראה שצריך להתקין גם nfa מה שלא הצלחתי להבין מה זה..

chenta
חבר פעיל מאוד
חבר פעיל מאוד
הודעות: 183
הצטרף: ינואר 2011
נתן תודות: 22 פעמים
קיבל תודות: 29 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #9 

אם הבנתי נכון Go זאת שפת התכנות (או הסביבה או משהו כזה) וה nfa היא אפליקציה שכתובה ב Go שמאפשרת שליחת הודעות ל Android TV.

חכם_חנוכה
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 788
הצטרף: אפריל 2005
נתן תודות: 94 פעמים
קיבל תודות: 39 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #10 

אתה סתם מסתבך

בגרסא 3 אתה מוסיף binding ל http ולאחר מכן יוצר thing של ה api
https://www.openhab.org/addons/bindings/http/

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #11 

@חכם_חנוכה
הייתי עושה את זה אבל כרגע טוב לי עם OH2

@chenta
אני עדיין מנסה להבין איך להפעיל פקודה ישירה ולא דרך סקריפט, עשיתי שינויים בפקודה אבל עדיין לא עובד ואין שגיאות

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

executeCommandLine("curl@@-d@@-H@@Content-Type: application/json@@-X@@PUT@@{\"id\": \"clear\", \"action\": \"activate\"}@@http://192.168.0.111:8888/api/scenes")

chenta
חבר פעיל מאוד
חבר פעיל מאוד
הודעות: 183
הצטרף: ינואר 2011
נתן תודות: 22 פעמים
קיבל תודות: 29 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #12 

@razserv2010
הי אנסה לעזור, כמה שאלות:
1. איזו גרסת OH אתה מריץ? האם התקנת ע"י openhabian?
2. שתף שוב את הפקודה עצמה.
3. תוכל להסביר לי רגע מה היא אמורה לעשות?

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #13 

@chenta
openhab 2.5.10 על ווינדוס 10
זאת הפקודה (היא עובדת אם אני מריץ אותה מה terminal מרספברי פיי)

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

curl -d '{"id":"clear", "action":"activate"}' -H 'Content-Type: application/json' -X PUT http://192.168.0.111:8888/api/scenes
הפקודה אמורה להפעיל סצנות שנשמרו תחת ID למשל בפקודה יש:

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

"id":"clear"
זה שם הסצנה ששמורה בledfx
זה הקישור לdocs של ledfx
https://ledfx.readthedocs.io/en/master/ ... api-scenes

chenta
חבר פעיל מאוד
חבר פעיל מאוד
הודעות: 183
הצטרף: ינואר 2011
נתן תודות: 22 פעמים
קיבל תודות: 29 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #14 

05/05/2021 14:37  
razserv2010 כתב:
@chenta
openhab 2.5.10 על ווינדוס 10
זאת הפקודה (היא עובדת אם אני מריץ אותה מה terminal מרספברי פיי)

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

curl -d '{"id":"clear", "action":"activate"}' -H 'Content-Type: application/json' -X PUT http://192.168.0.111:8888/api/scenes
הפקודה אמורה להפעיל סצנות שנשמרו תחת ID למשל בפקודה יש:

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

"id":"clear"
זה שם הסצנה ששמורה בledfx
זה הקישור לdocs של ledfx
https://ledfx.readthedocs.io/en/master/ ... api-scenes
...
לא הבנתי משהו- אתה על ווינדוס 10 או על Raspberry Pi?
OH רצה על ה- Raspberry ואתה ניגש אליה ממחשב Win10?

אני אניח לרגע שזה המצב.
הפרמטר הראשון בפקודה צריך להיות timeout והערך צריך להיות מתאים לפקודה. יכול להיות שאם אתה לא מחכה לתשובה אז הערך יכול להיות מינימלי. נניח שניה אחת.
אחרי זה כל פרמטר בפקודה שלך צריך להיות עטוף ב- " " ולהיות מופרד בפסיק.
כמה נקודות שאני לא בטוח לגביהן וכדאי לעשות ניסוי כדי לראות אם יעבדו-
סימני המרכאות שנמצאים בפקודה עצמה שלך צריכים להיות מוחרגים (escaped) ולמיטב הבנתי צריכים להיות מוחלפים ב- "\
לגבי ביטויים שמוקפים בגרש בודד, יכול להיות שיכולים להישאר כמו שהם.
אופציה ראשונה-

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

executeCommandLine(Duration.ofSeconds(15),"curl","-d","'{\"id\":\"clear\", \"action\":\"activate\"}'","-H","'Content-Type: application/json'","-X","PUT","http://192.168.0.111:8888/api/scenes")
אופציה נוספת- הורדתי שני רווחים מהפקודה המקורית שאני לא בטוח שהכרחיים (למרות שאני לא ממש מכיר את מה שקורה שם אז אולי אני טועה:

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

executeCommandLine(Duration.ofSeconds(15),"curl","-d","'{\"id\":\"clear\",\"action\":\"activate\"}'","-H","'Content-Type:application/json'","-X","PUT","http://192.168.0.111:8888/api/scenes")
עדכן אם משהו מהם עבד...

razserv2010 (פותח השרשור)
חבר פעיל במיוחד
חבר פעיל במיוחד
הודעות: 806
הצטרף: אוקטובר 2013
נתן תודות: 114 פעמים
קיבל תודות: 66 פעמים

Re: צריך עזרה בלהוסיף פקודה curl לrule OH

נושא שלא נקרא #15 

@chentaopenhab מותקן על ווינדוס 10, ledfx ועוד דברים אחרים מותקנים על הPI
סליחה שבילבלתי אותך
דרך אגב הפקודות לא תקינות, VSC מראה שגיאות בפקודה

שלח תגובה

חזור אל “עוזרות קוליות, שליטה ובקרה”