Bluetooth smartlock per HM steuern

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Re: Bluetooth smartlock per HM steuern

Beitrag von tris08 » 25.12.2016, 22:47

Frohe Weihnachten erst mal an alle!
So ich hoffe mir kann jemand einen Tipp geben.
Ich frage den Status des Nuki via Alchy Script an.
Dieser wird in die Var. Nuki Status (Zeichenkette) geschrieben ( dies klappt alles).
Jetzt möchte ich aber auf diesen abgefragtes Status reagieren.
Sprich
Wenn "Nuki Status"-zugesperrt ( zugesperrt schreibe ich ja hier in das feld da es sich ja um Typ Zeichenkette handelt.
Dann Aktion xy ( bei mir zum testen als Pushover Script mit Benachrichtigung.

Habe ein Programm geschrieben
Wenn aufgesperrt
Dann Push.
Sonst wenn
Zugesperrt
Dann Push.
Habe diese Programme auch schon als zwei einzelne geschrieben.
Geht aber nur bei der ersten Status Änderung.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Bluetooth smartlock per HM steuern

Beitrag von alchy » 26.12.2016, 16:09

Ein Vergleich von Zeichenkettenvariablen darf nicht alleine stehen, soweit ich mich erinnere.
Hab ich auch schon irgendwo gepostet. Entweder du nimmst einen weiteren Trigger mit ins Programm, oder du nimmst den gleichen Zeichenkettenvergleich doppelt auf. Also:

Wenn
Systemvariable X = aufgesperrt
oder
Systemvariable X = aufgesperrt
Dann
...

Grundsätzlich macht das aber wenig Sinn, du kannst ja im ermittelnden Script gleich pushen.
Ein Link zum verwendeten Script?

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Re: Bluetooth smartlock per HM steuern

Beitrag von tris08 » 26.12.2016, 16:14

Hi Alchy!
Ich schaue mir das nachher nochmal an.
Bin unterwegs.
Danke

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Bluetooth smartlock per HM steuern

Beitrag von tris08 » 26.12.2016, 17:22

Achso Script ist deine Status Abfrage Version 0.4
Aus diesem Thread Beitrag #51

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Re: Bluetooth smartlock per HM steuern

Beitrag von tris08 » 26.12.2016, 19:54

alchy hat geschrieben:Ein Vergleich von Zeichenkettenvariablen darf nicht alleine stehen, soweit ich mich erinnere.
Hab ich auch schon irgendwo gepostet. Entweder du nimmst einen weiteren Trigger mit ins Programm, oder du nimmst den gleichen Zeichenkettenvergleich doppelt auf. Also:

Wenn
Systemvariable X = aufgesperrt
oder
Systemvariable X = aufgesperrt
Dann
...

Grundsätzlich macht das aber wenig Sinn, du kannst ja im ermittelnden Script gleich pushen.
Ein Link zum verwendeten Script?

Alchy
Also die Variante wie hier beschrieben funktioniert.
Wenn xy =aufgesperrt
Oder
Wenn xy=aufgesperrt

Das dies aber wenig Sinn macht kannst du gerne noch weiter erklären.
Wie das aus dem Script geht da bist du wohl der MEISTER drin.

Ich benutze zum pushen ein einfaches Pushover Script von dir!

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Bluetooth smartlock per HM steuern

Beitrag von alchy » 26.12.2016, 20:50

tris08 hat geschrieben: Also die Variante wie hier beschrieben funktioniert.
Wenn xy =aufgesperrt
Oder
Wenn xy=aufgesperrt
Problem gelöst :mrgreen:
tris08 hat geschrieben: Das dies aber wenig Sinn macht kannst du gerne noch weiter erklären.
Wie das aus dem Script geht da bist du wohl der MEISTER drin.
hab ich mich vielleicht falsch ausgedrückt. :cry:
Was Sinn oder nicht Sinn macht, entscheidet nur der User selbst.
Da im Script schon dieselbe Abfrage gemacht wird, muss man ja mit einem weiteren Programm nicht noch einmal abfragen.

Natürlich gibt es auch dabei wieder unterschiedliche Wege
Wenn du z.B. nur eine Nachricht bekommen willst, wenn die Nuki verschlossen meldet.
wäre ein möglicher Vorschlag die Zeile:

Code: Alles auswählen

if (tmp2 == 1) { string nachricht = "Nuki abgesperrt"; dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k -d token=++++++EIGENERTOKEN+++++ -d user=+++++EIGENERUSERKEY++++++ -d message='"#nachricht#"', -d priority=1 http://api.pushover.net/1/messages.json"); }


unter das speichern des Zustandes in die Systemvariable

Code: Alles auswählen

...
(dom.GetObject(ID_SYSTEM_VARIABLES)).Get(OUTPUTSTAT).State(state);
hinzuzufügen.

Das solltes es schon gewesen sein. Meister, nö - da bin ich weit von entfernt. Aber ich komme klar.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Re: Bluetooth smartlock per HM steuern

Beitrag von tris08 » 27.12.2016, 14:58

Also das sind immer noch sachen die ich einfach nicht kapier!
Was soll ich hiermit jetzt machen ?
ein neues Programm erstellen oder diese zeilen bei deinem abfrage script 0.4 einfügen? :roll:

Wobei die andere Variante prima funktioniert.
wenn du lust hast kannst du es ja nocmal kurz aufmalen. :D

im nächten leben werde ich programmierer! :mrgreen:
Zuletzt geändert von alchy am 27.12.2016, 16:09, insgesamt 1-mal geändert.
Grund: sinnloses und falsches Fullquote entfernt

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Bluetooth smartlock per HM steuern

Beitrag von alchy » 27.12.2016, 16:14

Eigentlich so wie ich es geschrieben habe

Code: Alles auswählen

! Nuki Hardware Bridge Status auslesen by Alchy v 0.4a
! und bei verschlossen eine Pushovernachricht absenden 
var OUTPUTSTAT = "Nuki_Status"; ! Name der Variablen, wo der Status gespeichert wird (Nuki_Status)
var OUTPUTBAT = "Nuki_Batterie"; ! Name der Variablen, wo der Batteriestatus gespeichert wird (Nuki_Batterie)
var url = "http://192.168.178.64:96/lockState?nukiID=99365833&token=123oli";
! +++++++++++++  AB HIER FINGER WEG +++++++++++++++++
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
srueck = srueck.Substr(1, srueck.Length()-2);
var tmp1 = srueck.StrValueByIndex(",",2).StrValueByIndex(":",1); ! battery
integer tmp2 = (srueck.StrValueByIndex(",",0).StrValueByIndex(":",1)).ToInteger(); ! state
var tmp3 = srueck.StrValueByIndex(",",3).StrValueByIndex(":",1); ! success
if (tmp3.Find("true")>-1) {
if (tmp1.Find("true")>-1) { (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(OUTPUTBAT).State("BATTERIEZUSTAND KRITISCH"); } else { (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(OUTPUTBAT).State("BATTERIEZUSTAND OK"); }
string state = "unbekannt"; 
if (tmp2 == 0) { state = "nicht kalibriert"; }
if (tmp2 == 1) { state = "verschlossen"; }
if (tmp2 == 2) { state = "geoeffnet"; }
if (tmp2 == 3) { state = "sperren und gehen"; }
if (tmp2 == 4) { state = "ausgeklinkt"; }
if (tmp2 == 5) { state = "verriegeln"; }
if (tmp2 == 6) { state = "entriegeln"; }
if (tmp2 == 7) { state = "entriegelt"; }
if (tmp2 == 254) { state = "Motor blockiert"; }
if (tmp2 == 255) { state = "undefiniert"; }
(dom.GetObject(ID_SYSTEM_VARIABLES)).Get(OUTPUTSTAT).State(state);
if (tmp2 == 1) { string nachricht = "Nuki abgesperrt"; dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k -d token=++++++EIGENERTOKEN+++++ -d user=+++++EIGENERUSERKEY++++++ -d message='"#nachricht#"', -d priority=1 http://api.pushover.net/1/messages.json"); }
} else {
(dom.GetObject(ID_SYSTEM_VARIABLES)).Get(OUTPUTSTAT).State("ABFRAGE NICHT ERFOLGREICH");
(dom.GetObject(ID_SYSTEM_VARIABLES)).Get(OUTPUTBAT).State("ABFRAGE NICHT ERFOLGREICH");
}
Nun musst du nur noch UNTEN IM SCRIPT deine Daten in das Script einsetzen für: ++++++EIGENERTOKEN+++++ und +++++EIGENERUSERKEY++++++

Dieses Script ERSETZT dann deine alte Version.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Re: Bluetooth smartlock per HM steuern

Beitrag von tris08 » 27.12.2016, 16:21

Okay teste ich gleich.
Habe ich doch richtig gedacht.

ueffchen
Beiträge: 176
Registriert: 29.03.2011, 10:35
Hat sich bedankt: 4 Mal
Danksagung erhalten: 13 Mal

Re: Bluetooth smartlock per HM steuern

Beitrag von ueffchen » 01.11.2017, 14:32

Hat schon jemand die Callback Funktion vom Nuki ausprobiert? Damit sollte es doch möglich sein bei Statusänderungen des Nuki direkt eine Nachricht an eine URL (CCU) zu schicken. Ich verstehe nur nicht so ganz, wie die Daten von der CCU in eine SV geschrieben werden können.

-ueffchen

Antworten

Zurück zu „HomeMatic allgemein“