Regel/Skript - Wert eines Items

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Regel/Skript - Wert eines Items

Beitrag von filmgucker2 »

Hallo,

mein Lehrer sagte immer: Es gibt keine blöden Fragen :D

Ich habe ein String Item, in das ein Wert eingelesen wird. Hier: Der Name
eines Senders aus dem Bouquet meiner Enigma Box.
Den Wert möchte ich beim "Anklicken" Schaltfläche mit diesem Item weitergeben
an das beschreibbare Channel Item aus dem Enigma Binding, also
auf den eingelesenen Sender umschalten.
Zuerst dachte ich, ist ja ganz einfach...Für ein Item durchaus: durch eine entsprechende Regel.
Aber wenn ich 10 oder 20 Sender habe, müsste ich 10 oder 20 Regeln machen, was sicher unelegant ist.
Nur eine Regel oder Funktion wäre wohl besser. So etwa: Wenn ich (das Item) geupdated werde,
spucke meinen eigenen Wert aus und gib ihn weiter. Geht das?
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Regel/Skript - Wert eines Items

Beitrag von PeterA »

Hi,

So etwas ähnliches hab ich für meinen "Coolstream" gelöst. Hier ist allerdings "Neutrino" die Gui.
Aber auch Neutrino hat ne APi :-)

Ich habe das ohne Rule direkt in der Sitemap mit einer Selection und Mapping gemacht:

Code: Alles auswählen

 Selection label="Senderliste"      icon="text"        item=Programme  mappings=[c3c000210085003f="DMAX",bf30044100012f3a="n-TV",c4c404530001445f="WELT",c370000500850030="N24 DOKU",ad74040f00012887="tagesschau24 HD",b45803fb0001283d="Das Erste HD",b24803f300012b66="ZDF HD",aaec042500012873="hr-fernsehen HD",c624045900013146="rhein main tv",c370000500850308="SIXX",bf30044100012ef4="RTL2",bf30044100012f1c="VOX",bf30044100012ee3="RTL Television",bf30044100012f30="RTLplus",bf30044100012f1d="NITRO",c4c404530001445c="SAT.1",c4c4045300014460="SAT.1 Gold",c4c404530001445d="ProSieben",c4c4045300014461="Pro7 MAXX",c4c404530001445e="kabel eins",c4c4045300014465="kabel eins Doku",c3c0002100850033="TELE 5",c69c045b0001332f="Welt der Wunder",b20c03f200012b8e="3sat HD",b45803fb0001283e="arte HD",b5b804010001285b="PHOENIX HD",ad74040f00012889="ARD-alpha HD",b24803f300012b7a="zdf_neo HD",b20c03f200012ba2="ZDFinfo HD",ad74040f00012888="ONE HD",b45803fb0001283f="SWR BW HD",c2d804b100016ea5="WDR HD Köln",aaec042500012870="MDR Sachsen HD",b5b8040100012857="NDR FS NDS HD",b5b8040100012855="BR Fernsehen Süd HD",ad74040f0001288a="SR Fernsehen HD",aaec04250001286f="rbb Berlin HD",ad74040f0001288b="Radio Bremen HD",c100000c0085006c="Sky Sport News HD",bfc80443000179e0="Eurosport 1 Deutschland",c370000500850701="Disney Channel",bbd4043600017004="Comedy Central",c370000500850304="TLC",bf30044100012efe="TOGGO plus",bbd4043600017008="NICK/MTV+",bf30044100012f08="SUPER RTL",b20c03f200012b98="KiKA HD",c69c045b00013339="L-TV",c3c000210085002f="REGIO TV",ac10040900012775="Zee One HD",c69c045b00013332="sixx Austria",b15c03ef00011332="ServusTV HD Deutschland",b07003eb000133a9="Schau TV HD",a914041d0001526f="QVC HD",a914041d0001526c="ANIXE HD",a914041d00015270="HSE24 HD",a98c041f0001157d="HSE24 EXTRA HD",be90000700850202="Immer etwas Neues TV",c53804550001151b="Juwelo HD",c53804550001151c="pearl.tv HD Shop",c3c0002100850381="e8 television"] visibility=[CoolstreamTime!=offline]
War zwar erst mal etwas Arbeit aber geht!

Gruß Peter
- OpenHab 2.4
#PWRUP

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Re: Regel/Skript - Wert eines Items

Beitrag von filmgucker2 »

@PeterA:
Herzlichen Dank! Aber meine Idee war, mir gerade diese Arbeit zu sparen. Ich stelle mir so eine Oberfläche vor
mit zahlreichen Schaltflächen im Habpanel oder eine Page mit widgets, in denen die Sendernamen erscheinen.
Sie stammen aus dem webinterface der Box, herausgelesen mit http, und dann in Zukunft vielleicht sogar mit
Senderlogo (aus dem Picon Ordner?). Ein Klick auf die Schaltfläche könnte dann nicht nur umschalten,
in weiteren String Items könnte dann auch der Titel der laufenden Sendung und ihre Textbeschreibung
erscheinen. Etwa: Klick auf "ZDF", in zwei Dummies werden die Infos angezeigt, Klick auf anderen Sender
spuckt eigenen Namen, und der führt dann zu neu befüllten "Dummy Widgets"...
Aber dafür müsste dann eben dieser Klick auf der jeweiligen Schaltfläche ihren Wert liefern,
mit dem man weiter arbeiten kann.
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Regel/Skript - Wert eines Items

Beitrag von PeterA »

So hatte ich das quasi auch vor.
Und darüber gibts auch irgendwo in diesem Forum einen Thread der aber mit dieser "Lösung" Mapping direkt in der Sitemap endete
da alles andere, stand Damals, mit openHAB nicht möglich war.

Gruß
Peter
- OpenHab 2.4
#PWRUP

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Re: Regel/Skript - Wert eines Items

Beitrag von filmgucker2 »

Da bin ich mal gespannt, ob sich jemand hier einklinkt. Ist vielleicht
dann ja auch für Dich interessant! ;)
Raspberry Pi 4, OH 4.0.3

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Regel/Skript - Wert eines Items

Beitrag von oh73 »

ich weiß nicht ob man das vergleichen kann,

habe mir ein Menü gebastelt welches verschiedene Dash Boards aufruft.

hab das im Widget mit ng-init="Model .... und ng-repeat gemacht.

schalte dann mit ng-click="sendCmd('Panel_config', me )" ;> das Dash Board um.

aber genau so müsste man auch die Sender umschalten können.
die müssten dann nur bei ng-init eingetragen werden.
arbeite da mit zwei Variablen, einmal was im Menü angezeigt wird und einmal der Befehl zum schalten

Code: Alles auswählen

<div ng-init="model={msh: 'msh', Garage: 'Energie', Keller: 'Keller', DG: 'Dachgesch.', Computer: 'Computer', Schalter: 'Schalter', Schalter_neu: 'Sch. neu', Schalter_Widget: 'S-Widget', S_Meter: 'S-Meter',  Temperatur: 'Temp.', Uhr: 'Uhr Kal.'}">

<div ng-repeat="(me , men) in model track by $index">
<button class="a button menu" style="top:{{$index*9.1}}%;left:0%;right:0;bottom:{{100-9.1-$index*9.1}}%; 
   background: linear-gradient(to bottom, white, {{
       me =='Energie' ? itemState('OC_S1') == 'CLOSED' ? 'skyblue' :'red' : 
       me =='Keller' ? itemState('OC_S2') == 'CLOSED' ? 'skyblue' :'red' :
       me =='DG' ? itemState('Fensterkontakt') == 'ON' ? 'skyblue' :'red' :'skyblue' }}) " 
	ng-click="sendCmd('Panel_config', me )" ;>{{men}} 
</button>
	
</div>
die Spielereien mit dem Hintergrund müssen ja nicht sein.

bei dem Beispiel hab ich glaube ich 11 Schalter untereinander, 1 Feld breit und 4 Felder untereinander.
hab das ganze aber auch für 12 Schalter nebeneinander.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Re: Regel/Skript - Wert eines Items

Beitrag von filmgucker2 »

Ja, aber das Eintragen müsste doch eigentlich überflüssig sein, wenn man den Wert schon hat,
nämlich den aus dem angeklickten item...
Raspberry Pi 4, OH 4.0.3

oh73
Beiträge: 285
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Regel/Skript - Wert eines Items

Beitrag von oh73 »

habe ich wahrscheinlich falsch verstanden,

aber meinst du vielleicht sowas

Code: Alles auswählen

ng-click="sendCmd('schalter_test2', itemValue('schalter_test'))">
da wird der Wert von Item schalter_test in das Item schalter_test2 geschrieben.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Regel/Skript - Wert eines Items

Beitrag von udo1toni »

Also, wenn, dann brauchst Du nur eine Rule :)
Es braucht eigentlich immer nur eine Rule, wenn man ganz viele gleiche Dinge auf die gleiche Weise erledigen will.
Allerdings verstehe ich noch nicht so ganz, wie das funktionieren soll. Wo kommt der enthaltene Wert her? Wie wird der Wert abgebildet?

Es gibt in den Pages die Möglichkeit, eine Liste als Auswahl über ein Item anzubieten - d.h. der Status des Items enthält alle Einträge, mit (glaube ich) Kommata getrennt - müsste ich Zuhause nachschauen, bei Squeezebox wird das verwendet, um einen Favoriteneintrag zu selektieren. Legt man zusätzliche Favoriten an, so wird der Status des Favoriten-Items einfach erweitert und damit die Liste um Einträge ergänzt.

Kannst Du mal an einem konkreten Beispiel zeigen, was Du Dir vorstellst?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Re: Regel/Skript - Wert eines Items

Beitrag von filmgucker2 »

Ja, eine Rule muss her!! :D
Also;
Aus dem webinterface wird der Name des Senders Nr.1 in item Nr.1 eingelesen.
Sender 2 in das item 2usw.
Die Werte erscheinen jeweils in den items.
item 1 = Sender 1
item 2 = Sender 2
...usw

Ich klicke auf einen der Sender. Der Name des Senders, also der Wert wird jetzt
zur weiteren Verwendung übergeben, etwa zum Umschalten auf gerade diesen Sender
oder zum Auslesen weiterer Daten, bezogen auf den Sender.
Wenn der Klick zu einem sendCommand führen soll, muss oh ja wissen, welchen Wert es
senden soll. Es soll dann eben der Wert des items sein, welches angeklickt wurde...
Und das soll durch eine Regel, die für jedes item gleich ist, gelten. Beim Nachdenken
darüber bildet sich bei mir ein Knoten im Gehirn...

Dank Deiner früheren Hilfe, lieber udo1toni, konnte ich mit XPath aus dem
webinterface der enigma box die Sender nacheinander auslesen:

/e2servicelistrecursive/e2bouquet/e2servicelist/e2service[1]/e2servicename/text()

bringt mir für das 1. item den Namen. Etwa ZDF
.../e2service[2]...bringt für das 2. item den Namen, etwa RTL
usw.
Werden dann schön auf den Schaltflächen angezeigt. Jetzt möchte ich auf die Schaltfläche
RTL klicken und mit diesem Wert auf RTL umschalten.
Raspberry Pi 4, OH 4.0.3

Antworten