NEWS
Wert aus Satz auslesen
-
Hallo!
Gibt es eine Möglichkeit einen Zahlenwert aus einem Satz auszulesen?
Hintergrund: Ich habe einen Datenpunkt von Alexa, welcher nach einem Update des Skills nicht mehr bedient wird und so nicht im IoBroker auftaucht.
Nun ist meine Idee, Alexa durch eine Routine oder ähnliches den Wert ausgeben zu lassen. Nun bekomme ich einen Satz "Die Temperatur von ... ist 4,6 Grad." Kann ich mir diesen Wert ausgeben lassen?Ich habe es jetzt über den Block "nimm Teil ab "--" bis "--" gelöst, allerdings wenn die Zahlen in den negativen oder zweistelligen positiven Bereich rutschen, haut das mit den Positionen nicht mehr richtig hin.
Ich hoffe da gibt es eine elegante Lösung.
Grüße!
-
@mbm1982-0 Auch in der Stringverarbeitung ist Puzzeln schlecht. Nimm JSONATA und einen regulären Ausdruck.
-
Danke!
Okay, da bin ich wissenstechnisch jetzt raus. Muss ich erstmal schnell autodidaktisch aktiv werden. -
-
@mbm1982-0 sagte: wenn die Zahlen in den negativen oder zweistelligen positiven Bereich rutschen, haut das mit den Positionen nicht mehr richtig hin.
Wandle nach Zahl von "nimm Teil ab "--" bis letztes.
-
@mickym sagte in Wert aus Satz auslesen:
Auch in der Stringverarbeitung ist Puzzeln schlecht
ehrlich?
selbst ohne JSONATA in paar Zeilen
-
@homoran Erstens ist das nur oberflächlich und ich habe meine Zahl auch noch in eine Zahl gewandelt. Also nicht Birnen mit halbfertigen Äpfeln vergleichen. Und wenn Du 2-stellige Minus Gradzahlen hast bist Du mit Deinen fixen Positionen ganz schnell aufgeschmissen.
Und paar Zeilen ist ja bei diesem Puzzle schon wieder untertrieben.
Und ein JSONATA Ausdruck mit ein paar Funktionen ist ja wohl übersichtlicher, also dieses Puzzle.- Alleine dass es bis heute noch kein SUCHEN - ERSETZEN Puzzle gibt, ist in meinen Augen eine Katastrophe für Puzzle-Freunde.
Nur Text rauslesen (wie mit dem halbfertigen Apfel und fixen Aufbau) und ohne fixe Positionen zu arbeiten, reduziert sich der JSONATA Ausdruck auf
($ ~> /-?\d+,\d/).match
kürzer geht es wohl nicht.
Ich bin sicher kein Puzzleprofi - aber hab mir das nun schon lange genug angesehen, um zu wissen, dass für solche Aufgaben diese Teilchen nur umständlich sind.
-
@mickym sagte in Wert aus Satz auslesen:
bist Du mit Deinen fixen Positionen ganz schnell aufgeschmissen.
fix ist nur das Ende, und das bleibt
Grad
@mickym sagte in Wert aus Satz auslesen:
Und ein JSONATA Ausdruck mit ein paar Funktionen ist ja wohl übersichtlicher, also dieses Puzzle.
der geht mit puzzle auch, wie du ja zeigst.
Aber nur weil er optisch kürzer ist, ist er noch lange nicht einfacher zu erstellen.ich will ja auch nicht streiten, aber durch ständiges wiederholen wird es immer noch nicht fix
und das es "soooo viele Zeilen" hat liegt daran, dass ich Alexa subsituieren muss und noch zwei debugs aus der "Entwicklung" drin habe sonst wären es 2 (zwei) Zeilen
-
@homoran Es geht mir auch nicht, um das Streiten - aber ich weise halt auf Schwachstellen hin - und wie gesagt - ich bin davon ausgegangen, dass er einen Zahlenwert und keinen Text extrahieren will.
Im Übrigen dachte ich eigentlich, dass es OK ist, wenn ich meine Meinung trotzdem über diese Puzzleteilchen kund tue und Alternativen wie NodeRed oder JSONATA mal gelegentlich einfließen lasse. - Ich dachte gestern war jemand da auch ganz froh drüber. (s. https://forum.iobroker.net/topic/71629/gelöst-blockly-json-mit-regex-aus-variable-auslesen)
Man muss es ja nicht nutzen. Nur wenn man verschiedene Lösungen einander gegenüberstellt, dann sollten sie auch das Gleiche leisten.
Und hier in dem Thread kann sich der Threadersteller ja entscheiden. Und wenn Du mich zitierst, dass die Stringverarbeitung ein Katastrophe ist,
JA: weil es nicht mal eine Suchen und Ersetzen Funktion gibt usw. (das haben meines Erachtens auch andere schon erkannt und ich dachte, dass soll in Kürze erweitert werden) und es auch keine Funktion für reguläre Ausdrücke gibt (zum Glück in JSONATA aber schon).
Auch das Verketten von Textteilen - mag ja für den Anfänger schön sein, aber alleine was das Platz auf dem Bildschirm braucht, ist schon atemberaubend.. Konstruiere mal einen JSON aus 2 Variablen - da wird Dir schwindelig.
Und reguläre Ausdrücke, man mag sie mögen oder nicht, aber wenn man es einigermaßen verstanden hat (und ich hab sie auch nicht bis ins Letzte verstanden) - dann sind die einfach für solche Aufgaben ideal.Und zuletzt: Wenn ihr nicht wollt, dass man die JSONATA Bibliothek beim Puzzeln nutzen soll, dann nehmt es halt wieder aus dem Javascript Adapter raus. - Ich dachte, dass sich die Entwickler schon was dabei gedacht haben. Man kann auch regulären Javascript Code in die Puzzleteilchen einbinden, wenn es zu komplex wird, nur das ist natürlich was anderes (ist ja keine Bibliothek).
-
Kommt von Alexa da wirklich ein kompletter Satz?
Ich dachte immer man erhält immer nur etwas was Alexa denkt erkannt zu haben in einem
Geräte/Dienste orientierten Schema. -
-
@paul53 Ja danke - hatte so was gelesen.
Als nächstes wie gesagt, wäre so ein Puzzleteil mit dem man Objekte/JSON erstellen kann, als Puzzler auf der Wunschliste.
-
Wie gesagt, ich bekomme keinen Datenpunkt im Alexa-Adapter im IoBroker. Ich kann das nur über den summary-datenpunkt machen. Bzw. über den answertext. Wenn ich Alexa frage, "wie warm ist ...?", kommt immer ein ganzer Satz als Antwort. Selbst wenn ich ihr sage, "Nenne mir den Wert von Temperatur ..."
-
@mickym sagte in Wert aus Satz auslesen:
Und zuletzt: Wenn ihr nicht wollt, dass man die JSONATA Bibliothek beim Puzzeln nutzen soll, dann nehmt es halt wieder aus dem Javascript Adapter raus. - Ich dachte, dass sich die Entwickler schon was dabei gedacht haben. Man kann auch regulären Javascript Code in die Puzzleteilchen einbinden, wenn es zu komplex wird, nur das ist natürlich was anderes (ist ja keine Bibliothek).
nein!
ich wollte nur darauf hinweisen dass JSONATA eine weitere "Programmiersprache" ist, die man dann begerrschen muss um es zu nutzen.
Das selbe Problem hatte ich als ich 2014/15 mit node-red begonnen hatte und daran gescheitert bin, dass es damals deutlich weniger nodes gab, als heute und man sehr viel über function nodes abwickeln musste, was wiederum plain js Kenntnisse erforderte, die ich nicht besitze.Blockly ist ja vornehmlich für Logik-Einsteiger gedacht, auch wenn es da inzwischen Expertenbausteine gibt.
Hier hatte ich mal angeregt diese zu kennzeichnen oder/und nur im Expertenmodus anzuzeigen.Der JSONATA Block gehört da dann vielleicht auch zu.
-
@homoran sagte in Wert aus Satz auslesen:
Blockly ist ja vornehmlich für Logik-Einsteiger gedacht, auch wenn es da inzwischen Expertenbausteine gibt.
Hier hatte ich mal angeregt diese zu kennzeichnen oder/und nur im Expertenmodus anzuzeigen.Warum das denn? - Das ist doch schon wieder ein Hürde. Anstelle die Leute zu ermutigen, diese Bibliothek auszuprobieren, sagt man ihnen, dass ist nichts für Dich, sondern nur was für Experten?
Es ist doch keiner gezwungen diese Teile als Einsteiger zu nutzen - man sollte aber sie auch nicht um Teufel komm raus vermeiden, nur weil jemand nichts Neues lernen will oder es kompliziert erscheint. Dachte ich am Anfang auch - heute finde ich diese Bibliothek genial. Ich finde eben eher, man sollte auf die Möglichkeiten damit eher hinweisen, als sie zu vermeiden.
Die meisten Anwender wissen eh nicht, dass es JSONATA beim Puzzeln gibt, dann muss man es nicht auch noch verstecken.
Der EINZIGE Grund Dinge im Expertenmodus zu verstecken ist in meinen Augen, wenn man damit Dinge anstellen kann, die das System insgesamt negativ beeinflussen können.
-
-
@mbm1982-0 sagte in Wert aus Satz auslesen:
bis Alexa ihre Ansage ändert
ich habe diese Dame nicht im Haus!
was kommt denn dann?
bitte mal echte Inhalte des DP in code-tags posten.wenn so etwas allgemeingültig funktionieren soll, muss man auch alle Eventualitäten kennen
-
@mbm1982-0 sagte in Wert aus Satz auslesen:
Viele Dank für eure Hilfe! Ich wollte hier keine Streit entfachen
Die Sache mit JSONATA werde ich mir mal in Ruhe anschauen. Das Gesuche im Text funktioniert ja solange, bis Alexa ihre Ansage ändertKeine Sorge - @Homoran kennt meine Meinung zu diesen Themen ausführlich und führen gerne einen gepflegten Disput, wenn sich der andere mit gegenteiliger Meinung zu sehr provoziert fühlt. Solche Sätze, dass puzzeln bei diesem oder jenem nicht unbedingt das Gelbe vom Ei sind, provozieren manchmal, auch wenn sie dann später indirekt mit solchen Aussagen, wie
ist ja nur Logik für Einsteiger
wieder etwas entschärft werden und man quasi eingestehen muss, dass manche vermeintlich einfachen Aufgaben, sich doch als schwieriger entpuppen.
-
Der Datenpunkt ist wie folgt aufgebaut:
{ "common": { "role": "text", "write": false, "type": "string", "read": true, "name": "answerText" }, "type": "state", "native": {}, "from": "system.adapter.alexa2.0", "user": "system.user.admin", "ts": 043717448, "_id": "alexa2.0.History.answerText", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Der Text im Datenpunkt ist bei der Anfrage nach der Pooltemperatur:
Die Temperatur von Pool ist 3,1 Grad.
Die Anmerkung, ob sich der Antworttext ändert zielt eher auf die Launen der Programmierer hin. Da gibt es ja eine Menge variablen. Egal wie ich sie nach der Temperatur frage, kommt momentan immer der obige Satz.
-
@mickym Einen hab ich noch
Wenn man mit Blockly die Extraktion von wasauchimmer aus woherauchimmer in "umständlichen" Einzelschritten erledigt, kernt man aber auchvdas strukturierte Denken um diesen Extraktionsvorgang.
Das wiederum hilft um JSONATA und RegEx leichter verstehen zu können.