Forum

Das Forum für dich... Smarthome-Fans unter sich!
FIBARO Motion Sensor Sale
Du musst dich anmelden um Beiträge und Themen zu erstellen.

Aufrufe sowie Ausgabe

Ich hatte vor eine QuickApp zu bauen in der ich mit anderen Geräten kommuniziere.
So weit so Gut.

Szene
...........................
print("Start")
fibaro.call(674,"Variabeln_Test","HALLO")
print (" Zurückgekommen = ",fibaro.getValue(674,"value"))
...........................

Ich möchte also bei der QA 674 die Function "Variabeln_Test" starten und der den Text "HALLO" übergeben.
Das funktioniert.
Zurück bekommen möchte ich gerne auch etwas.
In dem Beispiel soll es ausgegeben werden.
"value"
Da liegt der Hase in Pfeffer !

Jetzt zur QA !
Die ist angelegt als Generich-Device.
------------------------------- Test -------------------------------
--------------------------------------------------------------------
function QuickApp:Variabeln_Test(s_wert)
print("Gestartet mit =",s_wert)
sende_ergebnis = 77
print("Sende_ergebnis = ",sende_ergebnis)
self:updateProperty('value', 66)
end -- function
--------------------------------------------------------------------

Bei der Zeile self:updateProperty('value', 66) kann ich nur
Konstanten im Integerbereich weiter geben.
Das ist sehr unschön (Für mich)!

So nun zu den Fragen !
Ist das alles so richtig oder bin ich auf dem Wood-Way !
Kann ich eigendlich selber ein "device_property" erzeugen und da nun String, Tabellen oder Variablenketten
zurückgeben.

Wo finde ich da mal wieder eine Englisch/Deutsche und auch für mich verständliche Doku ?
Diese hier https://manuals.fibaro.com/home-center-3-quick-apps/ ist nicht grade das was ich unter Doku verstehe.

Gruß Frank

 

So eins habe ich rausgefunden !

Die Frage :Kann ich eigendlich selber ein "device_property" erzeugen und da nun String, Tabellen oder Variablenketten
zurückgeben.

Kann ich so beantworten ja so !

...................................................................................

function QuickApp:onInit()
    self:debug("onInit")
    local d,b = __fibaro_get_device(self.id),false
    for _,i in ipairs(d.interfaces or {}) do
        print("i = ",i)
        if i=="power" then
            b=true;
            break
        end
    end
 if not b then self:addInterfaces({"power"}) end
end
...................................................................................

Muss bei der QA im init gemacht werden und es muss eine Abbruchbedingung eingebaut werden sonst läuft die unendlich.

Daraus ergibt sich aber eine Neue Frage :

Welche  Interface gibt es und welche Typen können damit übergeben werden.

Bis hier hin war der Weg steinig da ich keine Infos gefunden habe das muss man sich alles erarbeiten SEHR Mühsam !

Gruß Frank

Zitat von Berges01 am 2. Juli 2020, 18:06 Uhr

So eins habe ich rausgefunden !

Die Frage :Kann ich eigendlich selber ein "device_property" erzeugen und da nun String, Tabellen oder Variablenketten
zurückgeben.

Kann ich so beantworten ja so !

...................................................................................

function QuickApp:onInit()
    self:debug("onInit")
    local d,b = __fibaro_get_device(self.id),false
    for _,i in ipairs(d.interfaces or {}) do
        print("i = ",i)
        if i=="power" then
            b=true;
            break
        end
    end
 if not b then self:addInterfaces({"power"}) end
end
...................................................................................

Muss bei der QA im init gemacht werden und es muss eine Abbruchbedingung eingebaut werden sonst läuft die unendlich.

Daraus ergibt sich aber eine Neue Frage :

Welche  Interface gibt es und welche Typen können damit übergeben werden.

Bis hier hin war der Weg steinig da ich keine Infos gefunden habe das muss man sich alles erarbeiten SEHR Mühsam !

Gruß Frank

Hallo und guten Morgen,

meines Wissens nach gibt es nur Integer und Boolean. Dies könnte den Hintergrund haben, dass ansonsten die Werte zum Beispiel nicht in Blockszenen nutzbar wären, da strings sehr schlecht ausgewertet werden könnten. Ansonsten kannst du aber natürlich den Umweg über globale Variablen nehmen.

Auf unserer Webseite quickapps.info werden wir auch zeitnah noch die Doku auf Deutsch veröffentlichen. Sofern du Interesse daran hast, ein QuickApp dort zu veröffentlichen, würden wir uns natürlich freuen. Ich denke da an das Pushover-Skript aus dem siio-Forum 😉

Gruß

Tja jetzt bastel ich schon 2 Tage an dem Problem.

Genau für das Pushover-QA benötige ich das um ein Sendeergebnis oder einen Fehler von QA zu Szene übergeben zu können.

Bis Dato läuft das nur reines Senden das ist mir aber zu wenig.

Ich habe die Leute im Fibaro Forum genervt und auch da das mit dem Ergebniss , das geht nicht aber ich auch haben wollen ! 🙂

Hier nachzulesen leider nur in Englisch !

https://forum.fibaro.com/topic/49113-hc3-quickapps-coding-tips-and-tricks/page/26/

Viele Ideen und Möglichkeiten die ich auch schon rausgefunden hatte aber nicht so wie ich mir das dachte.

Ich werde das jetzt mit einer Int. machen.

0 = nicht gesendet

1 = gesendet und OK

alles über 1 bedeutet Fehler.

Dann den Fehler im Klartext in einer QA-Variabeln im Klartext ausgeben.

Reicht eigentlich auch ist aber nicht so Elegant.

Den QA kannst du gerne veröffentlichen für mich war das Zeitvertreib und lernen, damit einem Rentner wenn es regnet nicht langweilig wird. :-))

Wenn er fertig ist könnte ich den Posten wenn ich den könnte ?! Das ist gesperrt hier im Forum (Verstehe ich Gut).

Ich denke nur an die Anderen hier denen Einfache Beispiele fehlen um selber was auf die Beine stellen zu können.

Wobei der PuskOver nix für Anfänger ist.

Mir fehlt nur um mehr machen zu können Lesestoff . (in Deutsch da Englisch mühsam ist)

Beispiele, Erklährungen Doku usw. sind wie immer bei solchen Sachen Mangelwahre die Programmierer können damit umgehen und gut ist´s.

Ich komme aus so einer Branche und kenne das.

Gruß Frank

 

@boomx

Ich mache das mal so !

https://forum.siio.de/t/mobiltelefon-fuer-pushover-zu-hc3-hinzufuegen/6909/39

hole es die da ab kopiere alles was du gebrauchen kannst was ich getippelt habe und baue es bei Euch ein.

Währe Nett wenn du meine Rechtschreibfehler behalten würdest ich bin da nähmlich ein Profi drin ! 🙂

Schönes Wochenende !

Frank

device.property kann natürlich auch strin sein, aus der HC3 API:

value {
anyOf ->
string
integer
boolean

welches typ für ein bestimmtes device schon vordefiniert (und nicht veränderbar) ist, steht jeweils in den fibaro types, z.b. ein multilevel sensor (der ist auch als QA da)

<device type="com.fibaro.multilevelSensor" baseType="com.fibaro.sensor">
<interfaces/>
<properties>
<property name="value" type="real"/>
<property name="unit" type="string"/>
<property name="deviceIcon" type="int">
<default>47</default>
</property>
</properties>
<actions/>
<events/>
</device>

D.h. ich kann nicht einfach die property value als string nutzen bei einem multilevelsensor, da es as real definiert ist.

Am ende sind aber alle devices von com.fibaro.device abgeleitet, und da sieht man auch die properties die für alle da sind, unter anderem

<property name="userDescription" type="string"/>

Das war schon meine liebling property um eigene daten zu speichern, austauschen.

Natürlich kann man auf die nicht triggern, aber auswerten schon in lua.