NEWS
Frage grundsätzlich zu Skipten - hoffe auf Hilfe AN / AUS
-
Ich habe eine Gruppenadresse knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus aus dem KNX Bereich.
Bei Aktivierung wird hier eine 1 oder entsprechend eine 0 gesendet.
Jetzt habe ich einen Code, der wenn die Gruppenadresse eine 1 sendet, das 'samsung2016.0.tvOn', true aktivieren soll
Wenn aber eine 0 kommt, dann soll das samsung2016.0.tvOn', false aktiviert werden.
Wie bestimme ich jetzt bzw. weise ich das entsprechend zu dass bei 1 = samsung2016.0.tvOn', true und bei 0 = samsung2016.0.tvOn', false ausgeführt wird ?
Danke euch für die Hilfe das mit den Scipten zu verstehen.
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus'}, function (obj) {
console.log("Switch off Samsung TV");
setState ('samsung2016.0.tvOn', false);
});
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus'}, function (obj) {
console.log("Switch on Samsung TV");
setState ('samsung2016.0.tvOn', true);
});
-
Ich habe eine Gruppenadresse knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus aus dem KNX Bereich.
Bei Aktivierung wird hier eine 1 oder entsprechend eine 0 gesendet.
Jetzt habe ich einen Code, der wenn die Gruppenadresse eine 1 sendet, das 'samsung2016.0.tvOn', true aktivieren soll
Wenn aber eine 0 kommt, dann soll das samsung2016.0.tvOn', false aktiviert werden.
Wie bestimme ich jetzt bzw. weise ich das entsprechend zu dass bei 1 = samsung2016.0.tvOn', true und bei 0 = samsung2016.0.tvOn', false ausgeführt wird ?
Danke euch für die Hilfe das mit den Scipten zu verstehen.
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus'}, function (obj) {
console.log("Switch off Samsung TV");
setState ('samsung2016.0.tvOn', false);
});
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus'}, function (obj) {
console.log("Switch on Samsung TV");
setState ('samsung2016.0.tvOn', true);
}); `
Ok deine beiden ons triggern immer wen was passiert das ergibt mir keinen sin. So wie es jetzt steht wird bei jedem trigger true und false geschaltet
es gibt 2 moeglichkeiten:
- du baust die abfrage von 0/1 in deinten subscripe ein, beispiel:
on({id: "Object ID", val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('test'); });
wie du siehst pruefe ich hier noch ob der val true ist, ich bin mir jetzt nicht sicher ob das auch mit 0/1 geht (glaube nein) dan sollte es halt die IF abfrage sein.
- einen subscripe auf dem kanal und mit if/else if/else action bestimmen
on({id: "Object ID", change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("select ID").val == '1') { console.log('schaltung bei 1'); } else if (getState("select ID").val == '0') { console.log('schaltung bei 0'); } });
~Dutch
-
Vielen Dank schon mal.
Das ist genau das was ich meine. Egal ob ich nun eine 0 oder eine 1 sende, der TV schaltet.
Mit deiner vorababfrage wäre genau das realisiert was ich will. Nämlich nur schalten "true" wenn eine 1 kommt und nur schalten "false" wenn eine 0 kommt.
Wie müsste jetzt das zusammen gesetzte Script mit meinen Werten komplett aussehen ?
Der ideale Fall wäre nun noch zusatzlich, wenn ich eine Chance hätte, zu erkennen ob das Gerät bereits eingeschaltet wurde und an ist. Zum Beispiel wenn es über eine Fernbedienung eingeschaltet wurde. Da bekomme ich nämlich keine Rückmeldung. Gibt es etwas an Scripten oder ähnliches das man ggf. per Ping abfragen kann ob dieser TV eingeschaltet ist oder aus ist und könnte das ebenfalls in das Script integrieren um auch eine Rückmeldung zu setzen auf eine weitere Gruppenadresse wie zum Beispiel: "id": "knx.0.Multimedia.WHZ_Samsung.Ein/_Aus_Status",
-
Vielen Dank schon mal.
Das ist genau das was ich meine. Egal ob ich nun eine 0 oder eine 1 sende, der TV schaltet.
Mit deiner vorababfrage wäre genau das realisiert was ich will. Nämlich nur schalten "true" wenn eine 1 kommt und nur schalten "false" wenn eine 0 kommt.
Wie müsste jetzt das zusammen gesetzte Script mit meinen Werten komplett aussehen ?
Der ideale Fall wäre nun noch zusatzlich, wenn ich eine Chance hätte, zu erkennen ob das Gerät bereits eingeschaltet wurde und an ist. Zum Beispiel wenn es über eine Fernbedienung eingeschaltet wurde. Da bekomme ich nämlich keine Rückmeldung. Gibt es etwas an Scripten oder ähnliches das man ggf. per Ping abfragen kann ob dieser TV eingeschaltet ist oder aus ist und könnte das ebenfalls in das Script integrieren um auch eine Rückmeldung zu setzen auf eine weitere Gruppenadresse wie zum Beispiel: "id": "knx.0.Multimedia.WHZ_Samsung.Ein/_Aus_Status", `
ehm ok warte jetzt mal schritt fuer schritt sons verlieren wir die story
also 1)
Du moechtest wissen wir das fertige script aussehen sollte mit abfrage richting (ich mach die gleich mal das beispiel muss aber erst hund laufen sorry :))
due moechtest noch eine abfrage op de TV an ist, diese variable bekommst du aber nirgendwo von hab ich das richtig verstanden ?
Ich benutze z.b. fuer solche sachen harmony damit habe ich das problem nicht, ich wurde gerne erst begreifen ob wir den wert irgendwo abfragen koennen. Mein idee:
A) wir bekommen den wert irgendwo her und bauen noch eine 2te abfrage rein
B) wir bauen eine function die per ping oder etwas in der art den status ermittelt.
So gassie gehen, sag bitte bescheit ob ich es richtig verstanden habe dan geb ich dir noch nen stoss in die (hoffentlich :ugeek:) richtige richtung
~Dutch
-
Vielleicht so?
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: 0}, function (obj) { console.log("Switch off Samsung TV"); setState ('samsung2016.0.tvOn', false); }); on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: 1}, function (obj) { console.log("Switch on Samsung TV"); setState ('samsung2016.0.tvOn', true); });
Gruß
Pix
EDIT: DIe Abfrage, ob TV schon an, kann dann später eingebaut werden. Muss auch erstmal Gassi gehen.
-
Gassi musss ich heute nicht mehr, aber die Katze kam gerade nach Hause. Die wollte auch noch was
Also scheinbar hab ich ganz gut erklärt, denn du scheinst genau verstanden zu haben was ich meine
Fall 1. ist halt nur erstmal je nach Wert auch dem TV den richtigen wert geben.
Fall 2. könnte komplizierter werden, da ich die Rückmeldung brauche und dazu keinen Wert vom TV bekomme.
Also genau wie du es erfasst hast.
-
@pix:Vielleicht so?
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: 0}, function (obj) { console.log("Switch off Samsung TV"); setState ('samsung2016.0.tvOn', false); }); on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: 1}, function (obj) { console.log("Switch on Samsung TV"); setState ('samsung2016.0.tvOn', true); }); ```` `
Ja, dass könnte passen.
Das erschliesst sich mir auch da hier erst über das entschieden wird was an Werten kommt Val 0 oder Val 1, welcher der folgenden Werte gesendet werden soll.
Das muss ich ausprobieren.
-
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: false}, function (obj) { console.log("Switch off Samsung TV"); setState ('samsung2016.0.tvOn', false); }); on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: true}, function (obj) { console.log("Switch on Samsung TV"); setState ('samsung2016.0.tvOn', true); });
So klappt es hervorragend.
Angenommen ich will nun noch etwas weiteres hinzufügen wie zum Beispiel, dass ich noch eine weitere Gruppenadresse mit einer Medlun belegen will. Kann ich dann einfach ein weiteres setState hinzufügen ?
Also so ungefähr:
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: true}, function (obj) {
console.log("Switch on Samsung TV");
setState ('samsung2016.0.tvOn', true);
setState ('knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus_Status', true);
Das wäre dann für eine kleine Rückmeldung gedacht. Schöner wäre natürlich wenn ich auch eine Rückmldung habe wenn ich es nur mit der TV Fernbedienung mache und der Status des TVs auch auf dem Taster wär also knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus_Status
-
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: false}, function (obj) { console.log("Switch off Samsung TV"); setState ('samsung2016.0.tvOn', false); }); on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: true}, function (obj) { console.log("Switch on Samsung TV"); setState ('samsung2016.0.tvOn', true); });
So klappt es hervorragend.
Angenommen ich will nun noch etwas weiteres hinzufügen wie zum Beispiel, dass ich noch eine weitere Gruppenadresse mit einer Medlun belegen will. Kann ich dann einfach ein weiteres setState hinzufügen ?
Also so ungefähr:
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: true}, function (obj) {
console.log("Switch on Samsung TV");
setState ('samsung2016.0.tvOn', true);
setState ('knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus_Status', true); `
Das wäre dann für eine kleine Rückmeldung gedacht. Schöner wäre natürlich wenn ich auch eine Rückmldung habe wenn ich es nur mit der TV Fernbedienung mache und der Status des TVs auch auf dem Taster wär also knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus_Status `
wie in deinem beispiel kannst du x beliebige set states hinzufuegen, zb:
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', val: true}, function (obj) { console.log("Switch on Samsung TV"); setState ('samsung2016.0.tvOn', true); setState ('device_1.0.tvOn', true); setState ('device_2.0.tvOn', true); setState ('device_3.0.tvOn', true); setState ('device_4.0.tvOn', true); });
pass aber auf, in deinem beispiel setzt du den wert der triggert auch auf set state:
@my-knx-shop:setState ('knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus_Status', true); `
dadurch ensteht eine nicht endende loop, da muss noch
change: "ne"
zwischen damit das script nur bei variablen aenderung startet:
on({id: 'knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus', change: "ne", val: true}, function (obj) {
aber warum die gleiche variable updaten mit dem selben wert als das die schaltung verursacht hat ?
Das wäre dann für eine kleine Rückmeldung gedacht. `
eventuell mittels log ?````
log("TV eingeschlaltet")~Dutch
-
Wieso die gleiche Variable ?
das eine ist doch der Status und das andere nur die Gruppenadresse.
knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus
knx.0.Multimedia.WHZ_Samsung.Ein_/_Aus_Status
Danke für die Info mit den setState. Dann mache ich das mal noch und habe schon mal eine kleine Rückmeldung.
Für die richtige müsste man vielleicht was anderes realisieren. Vielleicht über einen Stromerkennungsaktor in der Steckdose in der der TV steckt.
Oder hat jemand noch eine Idee ?
-
Ups Sorry _status übersehen.
Mir fällt dazu:
-
stroomerkennung
-
Ping/api wen Smart TV
-
Sensor setzen der Strom aus tv als actor sieht (zB auf scart, Usb, HDMI Anschluss… Tv aus stroomerkennung weck)
-
Infrarot Signal abfangen
-
TV auf immer an Modus und per Strom Zufuhr ein/aus schalten
~Dutch
Send from mobile device
-
-
Das mit dem Ping würde ich gerne mal testen. Weißt du wie das gehen könnte ?
-
mit nem Ping adapter
-
Und wie mache ich das dann in dem Script ?
-
ok … habe ein wenig rumgespielt und es mit dem Ping soweit hinbekommen.
Danke euch.
Gib es sowas wie den Ping Adapter auch für Mac Adressen ?
Also, wenn sich in der Fritzbox die MAC Adresse xy ins Wlan einbindet true und wenn diese nicht erreichbar ist false ?
Danke vielmals für eure Hilfe
-
Gibt es, mit dem tr064 Adapter.
https://github.com/soef/iobroker.tr-064
Du kannst da devices definieren, und in einem Datenpunkt wird dargestellt, ob die Fritzbox die als Aktiv oder Inaktiv sieht.
-
Beim Ping gibts noch zu beachten, dass sich ein Fernseher auch mal nachts selbstständig in Netz einloggt um auf Updates zu prüfen. Das passiert natürlich nicht, wenn er per Steckdose abgeschaltet ist. Beobachtet bei meinem Samsung UE46ES6300, der ist bei mir immer ab drei Uhr an (online).
Enrico
-
@dwm:Gibt es, mit dem tr064 Adapter.
https://github.com/soef/iobroker.tr-064
Du kannst da devices definieren, und in einem Datenpunkt wird dargestellt, ob die Fritzbox die als Aktiv oder Inaktiv sieht. `
Es geht nicht darum ob die Fritzbox aktiv ist. Es geht darum aus der Fritzbox auszulesen ob eine bestimmte Mac Adresse im WLAN angemeldet ist oder nicht. Geht das damit auch ? -
Ja.
Enrico
-
Ja.
Enrico `
Danke …. probiere ich heute Abend mal aus. [emoji106]