Texte aus Stringvariable filtern

Hallo,
ich möchte gerne aus den Texten einer Stringvariable bestimmte Wörter herausfiltern, bzw darauf reagieren. Anlass ist, dass ich gerne bei bestimmten Wetterereignissen reagieren möchte.
Ein eigenes Skript zu erstellen ist mir nicht möglich, aber vielleicht gibt es so etwas schon und ich finde für die Suche nicht die passenden Schlagwörter.
Gruß
Marc

Es gibt die Instanz „Textparser“


Eventuell hilft dir das.
Edit: Nein, das ist für Webseiten. Sorry.

Ja, die Idee hatte ich auch zunächst.

Warum ist es nicht möglich, ein Skript zu erstellen?

1 „Gefällt mir“

Weil es an meinem Unvermögen scheitert. Wenn es schon ähnliche Skripte gibt, könnte ich mir das herleiten.

Und sowas in PHP kommt nicht in Betracht?
Muß naturlemang in ein PHP Script, zeig doch mal den String als Beispiel.

Oder auch dies, ein Test of substring in string vorkommt:

Dann hier aus der Doku noch mal bei den Ereignissen nachgucken, wie man so ein Skript auslöst und schon hast du alles, was du brauchst.

Fang an, hier wird dir geholfen. Aber dazu müssen wir natürlich wissen, was du schon erledigt hast, wo du nicht weiterkommst und welche Fehlermeldung es ggf. gibt.

Alternativ Systemintegrator beauftragen, der das für dich erledigt.

Aber wie ich das Forum kenne, kommt sicherlich gleich wieder jemand um die Ecke, der ein fertiges Skript in mundgerechten Stücken serviert - was nicht gerade zum Lerneffekt beitragen würde. (Da kommt der Ausbilder in mir durch :slight_smile: )

Ich hoffe, denn nur so kommt IP-Symcon weiter. Das wird, meiner Meinung nach etwas vernachlässigt, die Hilfe !!

@Helmut , @volkerm , @DerStandart

Erst mal Danke, dass ihr mir geantwortet habt. Ich bin jetzt 60 Jahre alt und habe Skriptprogrammierung nie gelernt und werde es wohl auch so leicht nicht mehr hinbekommen. Ich habe zwar viele SPS’en programmiert, aber in der Automatisierung war das mit Funktionsplan und Anweisungslisten etwas ganz anderes. Ich kenne den Syntax von PHP nicht und weiß auch nicht, wo ich da Anfangen könnte.

Ich habe eine Stringvariable mit einem Wert. Dort möchte ich auf bestimmte Schlagworte reagieren, wie z.B. „Sturm, Orkan oder Windböen“. Diese Schlagworte liegen mitten im Text.

Es muss bitte jetzt kein fertiges Skript werden. Ich würde es gerne versuchen, wenn ich wüsste, mit welchen Befehlen ich diese Schlagworte extrahieren kann. Dann könnte ich in gewohnter SPS-Manier mit „Ereignis → Ausgelöst → Auslösende Variable → Bei bestimmten Wert = Sturm“ eine Aktion auslösen.

Mag mir jemand unter die Arme greifen?

Gruß
Marc

Okay, dann erstelle ein leeres Skript und füge ein Ereignis hinzu, welches das Skript auslöst.

Wahrscheinlich soll es bei Aktualisierung oder Änderung einer Variablen auslösen?

Wie man Wörter extrahiert, wurde weiter oben bereits erwähnt. Was ist denn z.B. an dem Link von Volker unklar? Wenn du uns das sagst, werden wir dir weiterhelfen.

Es bringt aber niemandem was, wenn hier fertige Skripte serviert werden. Von Copy and Paste lernt man nicht so viel.

Ich schaue mir das nachher mal genauer an. Mich schreckt es halt ab, wenn ich kein „Pack an“ habe.
Eine Idee habe ich, allerdings ruft gerade das Abendessen. Ich schreibe nachher was auf.

So war das auch nicht gemeint und gewollt.

Erstell mal ein neues leeres Script und versuche es hiermit:

$eingabe_text = GetValue(12345);  // ID des auszuwertenden String

if (str_contains($eingabe_text, 'Sturm'))
  IPS_RunScript(54321); // ID des auszurufenden Scripts für Sturm

Voraussetzungen: der zu durchsuchende String steht in der Variablen mit ID 12345 und wenn dort das Wort „Sturm“ auftaucht soll ein Script mit der ID 54321 aufgerufen werden. Das kannst du dann entsprechend erweitern. Viel Erfolg!

Zu beachten: Groß/Kleinschreibung wird beim Textvergleich unterschieden.

Heute funktioniert meine Glaskugel erstaunlich gut.

@volkerm

Ich sehe gerade, dass ein Vorschlag von dir kam. Danke.
Ich hatte inzwischen auch meine Idee umgesetzt und es funktioniert. Sehr rudimentär, aber für mich auch in ein paar Jahren noch nachvollziehbar.

<?php
$string = GetValueString (26583);

if (str_contains($string, 'Windböen')) {
   SetValueString (19607, 'Windböen');
}

if (str_contains($string, 'Sturm')) {
   SetValueString (19607, 'Sturm');
}

?>

usw. für alle Texte, die ich noch bräuchte.

So bin ich zufrieden.

Ja, da ich mit der IPS-Unterstützung kein Geld verdienen möchte helfe ich gerne, wenn ich kann. Mir wird bei anderen Themen auch geholfen, hier und anderswo.

Dein pädagogischer Ansatz in allen Ehren, aber es gibt viele Themen, wo man kein Experte ist und auch nicht das Ziel und/oder die Zeit hat, einer zu werden. Da ist man dankbar für eine möglichst konkrete Hilfestellung.

2 „Gefällt mir“

Ich helfe auch gerne, wo ich kann. Aber eben nicht in der Form und Weise, dass ich Lösungen vorgebe, sondern in der Art, dass ich versuche, diejenigen selbst auf den richtigen Pfad zu bringen.

Scheint hier ja auch ein Stück weit funktioniert zu haben, denn in Bezug auf der Ereignis scheint es gereicht zu haben, auf die Doku zu verweisen.

Davon, dass man Experte werden soll oder will, hat übrigens keiner geredet :wink:

@froema Man könnte es noch erweitern mit z.B.

if (!str_contains($string, 'Sturm') && !str_contains($string, 'Windböen')) {
   SetValueString (19607, 'ruhiges Wetter');
}
2 „Gefällt mir“

Das ist ein guter Hinweis, denn ansonsten wird der Alarmtext immer so lange stehen bleiben bis es einen neuen Alarm gibt.

@DerStandart
Danke für den Tipp. Dennoch hättest du etwas smarter auf mein Hilfegesuch reagieren können. Ich war auf der Suche nach einem Pack an. Mit den verlinkten Seiten konnte ich zunächst nichts anfangen um daraus etwas herzuleiten.
@Helmut
Danke für die Anschubhilfe, welche mich auf das richtige Gleis gesetzt hat.

Ich muss es ja auch so programmieren, dass ich es in 3 Jahren noch nachvollziehen kann.
Deshalb extrahiere ich mit dem Skript nur die Schlagworte und schreibe diese in eine neue String-Variable.
Nun kann ich ohne irgendwelche Skripte auf das jeweilige Schlagwort mit einer einfachen Ereignis-Auslösung die jeweiligen Aktionen auslösen.
Das mag zwar holprig aussehen, aber es funktioniert und darauf kommt es an.

Gruß
Marc