Ich möchte nun aus einem gegebenen Reading ein neues Reading basteln. Sagen wir: Die ersten 30 Zeichen.
Für ein Reading ist das kein Hit:
attr Nina userReadings Warn_00_Wort {substr(ReadingsVal("Nina","Warn_00_Instruction",""),0,29)}
Nun sind die Ereignisse sind nummeriert, Ereignis 00, 01, 02 und so fort. Also Warn_00_Wort, Warn_01_Wort, Warn_02_Wort, ... Es wäre sehr schön, wenn man die userReadings für alle aktuellen Ereignisse in einem Rutsch erstellen (bzw. Löschen, sofern nicht mehr vorhanden) könnte.
Erster Versuch, ganz naiv:
attr Nina userReadings Warn_.*_Wort {substr(ReadingsVal("Nina","Warn_.*_Instruction",""),0,29)}
Also ".*" geht schon mal nicht. Aber wie geht es? Kann mir da bitte jemand helfen?
P.S: Typo Subject korrigiert
Sowas habe ich noch nie gesehen. Ich glaube nicht, dass man es kann.
Du kannst aber ein fremdes notify oder DOIF definieren, das auf Warn_.*_Instruction reagiert, und mit setreading das richtige Warn_xxx_Wort setzt ($EVTPART0 enthält das triggerne Reading. Mit substr oder ein Regex kannst Du die Nummer dann extrahieren).
Zitat von: amenomade am 07 August 2019, 00:31:56
Sowas habe ich noch nie gesehen. Ich glaube nicht, dass man es kann.
Ich habe noch die kleine Hoffnung, dass @rudolfkoenig um die Ecke kommt und (wie ich mehrmals nachlesen durfte) entspannt ein "dochdoch, das geht so" mitteilt.
Zitat von: amenomade am 07 August 2019, 00:31:56Du kannst aber ein fremdes notify oder DOIF definieren, das auf Warn_.*_Instruction reagiert, und mit setreading das richtige Warn_xxx_Wort setzt ($EVTPART0 enthält das triggerne Reading. Mit substr oder ein Regex kannst Du die Nummer dann extrahieren).
Leider kann ich das nicht. Ehrlicherweise habe ich noch nicht einmal verstanden, was Du geschrieben hast. Wenn es nicht zu komplex und aufwendig ist, würde ich mich über ein Beispiel freuen; ich lerne am besten an Beispielen.
P.S: Bei Bedarf erkläre ich gern genauer, was und aus welchen Grund ich eigentlich vorhabe. (Ich möchte die primäre Fragestellung aber jetzt nicht verwässern.)
Zitat von: curt am 07 August 2019, 00:54:04
Ich habe noch die kleine Hoffnung, dass @rudolfkoenig um die Ecke kommt und (wie ich mehrmals nachlesen durfte) entspannt ein "dochdoch, das geht so" mitteilt.
Die Hoffnung stirbt zuletzt ;)
Zitat von: curt am 07 August 2019, 00:54:04
Leider kann ich das nicht. Ehrlicherweise habe ich noch nicht einmal verstanden, was Du geschrieben hast. Wenn es nicht zu komplex und aufwendig ist, würde ich mich über ein Beispiel freuen; ich lerne am besten an Beispielen.
Etwas wie:
define ntNina notify Nina:Warn_.*_Instruction.* {my $reading = $EVTPART0;; my ($num) = $EVTPART0 =~ /(\d+)/;; my $val = substr(ReadingsVal("Nina",$reading,""),0,29);; fhem("setreading Nina Warn_$num_Wort $val");;}
(nicht getestet)
Unabhängig vom Sinn ?,
ist die Lösung von amenomade vielleicht noch um das gewünschte Löschen der "alten" Readings zu ergänzen um anschließend das jeweils Aktuelle zu setzen:
...;;fhem("deletereading Nina Warn_.*_Wort ");;fhem("setreading Nina Warn_$num_Wort $val");;}
ungetestet!
achtung, es wird noch schwieriger: triggern kann man nur über state oder ein "begleitendes" reading Warn_xx_EventID, da die zu untersuchenden readings keine events generieren.
ausserdem denke ich, dass die konstruktion eigentlich "verboten" ist. also ein device triggert ein notify, welches in dem triggernden device readings manipuliert (rückkopplung). somit bleibt doch im prinzip nur userreadings, oder?
bei userreadings ist als trigger dann aber "state:" nicht möglich, sondern nur der inhalt von state. am besten ist wohl Warn_xx_EventID.
theoretisch könnten maximal 30 readings Warn_xx_... existieren. die anzahl ist variabel und die "plätze" eventuell unterschiedlich. über userreadings müsste man also 30 userreadings anlegen. dann beim triggern prüfen, ob das zu analysierende reading existiert und ggf das userreading entsprechend erzeugen.
ich hätte eigentlich auch lust auf readings manipulation bei diesem modul. zur zeit würde ich wahrscheinlich das modul verändern, da mir nichts einfaches einfällt. vielleicht ergibt sich hier ja noch etwas.
gruss frank
Zitat von: frank am 07 August 2019, 08:40:30
ausserdem denke ich, dass die konstruktion eigentlich "verboten" ist. also ein device triggert ein notify, welches in dem triggernden device readings manipuliert (rückkopplung). somit bleibt doch im prinzip nur userreadings, oder?
Jein. So weit ich weiss unterbindet fhem die Rückkoplung, so das z.B. das Setzen von einem Wert in Reaktion auf etwas, selbst nicht die selbe Reaktion triggern kann.
GerätA:EventAufReadingX => setze GerätA:ReadingX: dies wird keine weitere Triggerung generieren, um eine endlos Schleife zu vermeiden:
Reading X hat sich geändert => ändere Reading X => Reading X hat sich geändert => ändere Reading X => Reading X hat sich geändert usw
Aber GerätA:EventAufReadingX => setze GerätA:ReadingY sollte kein Problem sein.
Zitatachtung, es wird noch schwieriger: triggern kann man nur über state oder ein "begleitendes" reading Warn_xx_EventID, da die zu untersuchenden readings keine events generieren.
Dann einfach das notify entspr. ändern: statt Nina:Warn_.*_Instruction.* im Trigger, Nina:Warn_.*_EventID.* und in dem substr das richtige Reading umsetzen.
Ich habe es hoffentlich richtig gemacht ($num_Wort musste auch noch deklariert werden):
define ntNina notify Nina:Warn_.*_EventID.* {my $reading = $EVTPART0;; my ($num) = $EVTPART0 =~ /(\d+)/;; my $val = substr(ReadingsVal("Nina",$reading,""),0,29);; my $num_Wort;; fhem("setreading Nina Warn_$num_Wort $val");;fhem("deletereading Nina Warn_.*_Wort ");;fhem("setreading Nina Warn_$num_Wort $val");;}
Momentan kann ich leider nicht sagen, ob das funktioniert: Es sind derzeit keine Ereignisse mit "*Instruction" vorhanden.
@frank
Eine Schleife vermag ich nicht zu erkennen: Für jedes vorhandene *Instruction-Reading wird ja ein neues Reading erzeugt, quasi kopiert.
Ich lese hier seit gestern mit und verstehe aber aber nicht warum so ein brutaler Ansatz mit notify Nina:Warn_.*_EventID.* gewählt wird.
Wenn in Nina mindestens WarnCount auf event-on-change-reading gesetzt wird sollte das doch ein guter Trigger sein.
Danach würde ich alle eigenen _Wort Readings in einem Rutsch löschen - > fhem("deletereading Nina Warn_.*_Wort ");
und im nächsten Schritt in einer Schleife (WarnCount > 0) die _Wort Readings neu setzen.
warncount liefert eh nur bei change events.
dadurch bleiben aber änderungen bei gleichem warncount unberücksichtigt.
zb bei positionsverschiebungen oder bei änderung einer warnung.
Zitat von: curt am 07 August 2019, 21:12:11
define ntNina notify Nina:Warn_.*_EventID.* {my $reading = $EVTPART0;; my ($num) = $EVTPART0 =~ /(\d+)/;; my $val = substr(ReadingsVal("Nina",$reading,""),0,29);; my $num_Wort;; fhem("setreading Nina Warn_$num_Wort $val");;fhem("deletereading Nina Warn_.*_Wort ");;fhem("setreading Nina Warn_$num_Wort $val");;}
Momentan kann ich leider nicht sagen, ob das funktioniert: Es sind derzeit keine Ereignisse mit "*Instruction" vorhanden.
Das Konstrukt funktioniert leider nicht. Und ich weiß nicht wo ich nun suchen muss: Im Nina-Log stehen Sachen wie "Warn_00_EventID", also gibt es offenbar solche Events. Dem Notify hatte ich verbose-5 mitgegeben, aber das interessiert den nicht.
@Wzut
Kannst Du bitte zeigen, wie die Schleife aussehen müsste?
Zum Hintergrund:
Ich möchte die Nina-Warnmeldungen (Katastrophenschutz, das Modul ist alpha oder beta) in FTUI tabellarisch darstellen. Sowohl WarnText als auch WarnHinweis können textlich extrem lang werden, daher nutze ich dafür popup. So weit noch ganz einfach. Der WarnHinweis (...Instruction) ist aber nicht bei jeder Meldung dabei. Ich brauche aber irgendwas, was ich mit "autohide" verschwinden lassen kann.
Warte,
mir fällt während des Schreibens im bisherigen Konstrukt etwas auf:
Also die ersten 30 Anschläge von "Warn_??_Instruction" sollen für alle vorkommenden ?? kopiert werden in "Warn_??_Wort", zusätzlich sind (vorher wohl) alle alten "Warn_??_Wort" zu löschen, das ist das Ziel der Operation. Da "das" triggern" muss, steht in dem von mir nicht vollständig verstandenen Konstrukt (oben in diesem Posting) nun "Nina:Warn_.*_EventID.*". Damit fehlt aber im Konstrukt die Quelle, also "Warn_??_Instruction" ... es kann also nicht funktionieren.
Könnt ihr euch das jetzige Konstrukt bitte freundlicherweise nochmal ansehen?
Um die Regex fürs notify zu bestätigen, einfach den Eventmonitor öffnen, eine Zeile mit Warn_xx_EventID markieren, und auf "Create/Modify device" klicken, notify auswählen. Dann evtl. mit einigen .* anpassen.
Wenn Du sagst, es interessiert den mit verbose 5 nicht, was bedeutet es genau? Wird es getriggert aber es aktualisiert die Readings nicht wie gewünscht? Oder wird es gar nicht getriggert (siehe dann oben)
Das Konstrukt ist auf jeden Fall noch falsch: wenn EventID triggern, dann kriegst Du in $reading Warn_nn_EventID. $num wird dann die richtige nn Zahl enthalten, aber $val muss nicht $reading (Warn_nn_EventID) lesen sondern Warn_$num_Instruction.
Die Lösung mit Schleife wäre interessant, aber dann muss man den richtigen Trigger finden: es macht keinen Sinn bei jeder Änderung eines Readings, wieder ALLES zu kalkulieren. Die Lösung mit notify würde nur das Reading mit richtigem $num neu kalkulieren. Ich weiss aber nicht genau wie Das Modul funktioniert.
in der substr funktion müsste doch das instruction reading adressiert werden, oder?
zum testen würde ich erst mal zb auf shorttext testen, da es immer kommt.
dann zb log ausgaben einbauen.
mit dem fhem befehl trigger in der eingabezeile kannst du den auslösenden event vom reading ...eventID simulieren.
wenn mit verbose=5 nichts kam, gab es vielleicht kein auslösendes event? "falsche" event attribute? zeig mal ein aktuelles list von Nina.
eventuell auch erstmal mit einem einfachen notify beginnen und nach und nach erweitern.
nutze trigger und beobachte den eventmonitor.
zb "trigger Nina Warn_00_EventID: 1234567890"
amenomade war schneller, egal.
Zitat von: frank am 09 August 2019, 11:17:44
in der substr funktion müsste doch das instruction reading adressiert werden, oder?
Ja, eigentlich ...
Zitat von: frank am 09 August 2019, 11:17:44
wenn mit verbose=5 nichts kam, gab es vielleicht kein auslösendes event? "falsche" event attribute? zeig mal ein aktuelles list von Nina.
...
nutze trigger und beobachte den eventmonitor.
zb "trigger Nina Warn_00_EventID: 1234567890"
Das landet im EventMonitor.
Ich hatte dem notify ein verbose 5 spendiert, aber in keinem möglichen Log taucht was auf.
list Nina
Internals:
CountryCode DE
DEF DE 600
FUUID 5d2bdaef-f33f-769b-129f-8cd900e076170f47
INTERVAL 600
INTERVALWARN 0
NAME Nina
NR 1053
STATE Warnungen: 8 Lokal: 0
TYPE Nina
URL https://warnung.bund.de/bbk.mowas/gefahrendurchsagen.json
VERSION 0.2.0
.attraggr:
.attrminint:
READINGS:
2019-08-09 20:19:59 NewWarnings 0
2019-08-09 20:09:59 WarnCount 8
2019-08-01 14:32:31 WarnCountInArea 0
2019-08-09 21:57:12 WarnLevelMax 3
2019-08-09 01:29:51 Warn_00_Area Brandenburg
2019-08-09 01:29:51 Warn_00_Category Met
2019-08-09 01:29:51 Warn_00_Contact Landesamt für Umwelt Brandenburg Referat Hydrologischer Landesdienst
2019-08-09 21:57:12 Warn_00_Creation 2019-08-09T21:50:00+02:00
2019-08-09 21:57:12 Warn_00_Distance 7.57528784923368
2019-08-09 21:57:12 Warn_00_End 2019-08-10T22:50:00+02:00
2019-08-09 01:29:51 Warn_00_Event Hochwasserinformation
2019-08-09 01:29:51 Warn_00_EventID HOCHWASSERZENTRALEN.DE.BB
2019-08-09 01:29:51 Warn_00_Geocode Barnim
2019-08-09 01:29:51 Warn_00_LongText Es liegt eine Hochwasserwarnung oder -information für das Flussgebiet Stepenitz vor!
2019-08-09 01:29:51 Warn_00_MsgType Alert
2019-08-09 01:29:51 Warn_00_Sender CAP@hochwasserzentralen.de
2019-08-09 01:29:51 Warn_00_Severity Severe
2019-08-09 01:29:51 Warn_00_ShortText Hochwasserinformation Brandenburg
2019-08-09 01:29:51 Warn_01_Area Mittelsachsen
2019-08-09 01:29:51 Warn_01_Category Other
2019-08-09 01:29:51 Warn_01_Creation 2019-07-04T07:45:37+02:00
2019-08-09 21:57:12 Warn_01_Distance 103.533288040297
2019-08-09 01:29:51 Warn_01_End 2019-09-05T08:00:00+02:00
2019-08-09 01:29:51 Warn_01_Event 4
2019-08-09 01:29:51 Warn_01_EventID BIWAPP-36634
2019-08-09 01:29:51 Warn_01_Geocode Mittelsachsen
2019-08-09 01:29:51 Warn_01_LongText Der Sperrkreis umfasst:<br>die Stadt Mittweida und die Ortsteile Frankenau, Lauenhain und Rößgen<br>die Gemeinde Altmittweida<br>den Ortsteil Erlau der Gemeinde Erlau<br> <br>Damit ist das Verbringen von Bienen aus oder in den Sperrbezirk ist verboten.<br>Jeder Halter von Bienen hat seinen Bestand unter Angabe der Anzahl der Bienenvölker und ihres Standortes dem Lebensmittelüberwachungs- und Veterinäramt (LÜVA) Mittelsachsen anzuzeigen. Die Anzeige kann entfallen, wenn der Halter von Bienen seinen Bestand dem LÜVA Mittelsachsen bereits mitgeteilt hat. <br><br>Die Amerikanische Faulbrut ist für den Menschen nicht gefährlich. Honig kann selbst von erkrankten Völkern unbedenklich verzehrt werden.<br><br>Die komplette Bekanntmachung ist im elektronischen Amtsblatt veröffentlicht:<br>https://www.landkreis-mittelsachsen.de/amtsblatt/702019e-amerikanische-faulbrut-bei-bienen-in-mittweida-amtlich-festgestellt.html
2019-08-09 01:29:51 Warn_01_MsgType Alert
2019-08-09 01:29:51 Warn_01_Sender CAP@biwapp.de
2019-08-09 01:29:51 Warn_01_Sendername Landratsamt Mittelsachsen
2019-08-09 01:29:51 Warn_01_Severity Minor
2019-08-09 01:29:51 Warn_01_ShortText Bienenkrankheit: Amerikanische Faulbrut in Mittweida festgestellt
2019-08-09 20:09:59 Warn_02_Area Peine
2019-08-09 18:19:59 Warn_02_Category Safety
2019-08-09 20:09:59 Warn_02_Creation 2019-08-07T11:08:05+02:00
2019-08-09 21:57:12 Warn_02_Distance 155.994076285864
2019-08-09 20:09:59 Warn_02_End 2019-08-20T11:02:00+02:00
2019-08-09 18:19:59 Warn_02_Event 8
2019-08-09 20:09:59 Warn_02_EventID BIWAPP-37952
2019-08-09 20:09:59 Warn_02_Geocode Peine
2019-08-09 20:09:59 Warn_02_LongText Vergiftung kann lebensbedrohlich sein – Trockenfisch nicht essen<br><br>Das niedersächsische Landwirtschaftsministerium warnt vor dem Verzehr von Trockenfisch, der durch einen niedersächsischen Großhändler vermarktet wurde.<br>Es besteht die Gefahr, dass durch diesen Fisch beim Menschen die lebensbedrohliche Vergiftung Botulismus ausgelöst wird. Verbraucherinnen und Verbraucher, die Trockenfisch gekauft haben, sollten die betroffene Ware vernichten oder in ihrer Verkaufsstelle nachfragen, ob die gekaufte Ware betroffen ist.<br>Anlass der Warnung ist der Fall eines Patienten, der in der letzten Woche an Botulismus erkrankt ist. Im von dem Patienten verzehrten Trockenfisch, wurde das Toxigen nachgewiesen. Der Trockenfisch wurde durch einen im Landkreis Osnabrück ansässigen Großhändler an Einzelhändler vermarktet. Der Großhändler hat alle Märkte, die die in Rede stehende Ware erhalten haben, informiert. Die zuständigen Behörden überwachen den Vorgang.<br><br>Es handelt sich um folgende Produkte:<br>- Plötze (rutilus rutilus) unausgenommen; getrocknet und gesalzen, Mindesthaltbarkeitsdatum 12.11.2019 LOT180219<br>- Plötze (rutilus rutilus) ausgenommen; getrocknet und gesalzen, Mindesthaltbarkeitsdatum 05.03.2020 LOT180319<br>- Karausche (Carssius Gibelio) getrocknet und gesalzen, Mindesthaltbarkeitsdatum 27.05.2020 LOT170519<br>- Flussbarsch (Perca Fluvictilis) getrocknet und gesalzen, Mindesthaltbarkeitsdatum 27.05.2020 LOT170519<br>- Forelle (Oncorhynchus Mykiss) getrocknet und gesalzen, Mindesthaltbarkeitsdatum 09.03.2020 LOT140619 <br>- Hecht (Esox lucius) getrocknet und gesalzen, Mindesthaltbarkeitsdatum 05.03.2020 LOT18.03.19<br><br>Botulismus ist eine lebensbedrohliche Vergiftung, die durch den Verzehr von verdorbenem Fleisch oder Fisch verursacht werden kann. Auslöser ist der Giftstoff Botulinumtoxin, der vom Bakterium Clostridium botulinum produziert wird. Bei Auftreten von Symptomen wie Kopfschmerzen, Übelkeit, Erbrechen, Lähmungserscheinungen der Augenlider, verschwommenes Sehen und Doppelbilder, Sprechstörungen, trockener Mund, Schlucklähmung, Durchfall, Verstopfung und Atemnot nach Verzehr von Trockenfisch sollte sofort ein Arzt aufgesucht werden. Weitere Informationen können im Internet auf der Seite <a href="https://backend.biwapp.de/meldung/www.lebensmittelwarnung.de" target="_blank" rel="noopener noreferrer">www.lebensmittelwarnung.de</a> abgerufen werden.
2019-08-09 01:29:51 Warn_02_MsgType Alert
2019-08-09 01:29:51 Warn_02_Sender CAP@biwapp.de
2019-08-09 20:09:59 Warn_02_Sendername Landkreis Peine, Pressestelle, pressebuero@landkreis-peine.de
2019-08-09 01:29:51 Warn_02_Severity Minor
2019-08-09 20:09:59 Warn_02_ShortText Gefahr von Botulismus: Agrarministerium warnt vor Verzehr von Trockenfisch
2019-08-09 20:09:59 Warn_03_Area Schaumburg
2019-08-09 01:29:51 Warn_03_Category Safety
2019-08-09 20:09:59 Warn_03_Creation 2019-08-08T16:19:15+02:00
2019-08-09 21:57:12 Warn_03_Distance 223.478163983284
2019-08-09 20:09:59 Warn_03_End 2019-08-23T16:11:00+02:00
2019-08-09 01:29:51 Warn_03_Event 8
2019-08-09 20:09:59 Warn_03_EventID BIWAPP-37994
2019-08-09 20:09:59 Warn_03_Geocode Schaumburg
2019-08-09 20:09:59 Warn_03_LongText Das Amt für Verbraucherschutz- und Veterinärwesen des Landkreises Schaumburg gibt nachfolgende öffentliche Warnung bekannt:<br> <br>Gefahr von Botulismus.<br>Es wird vor dem Verzehr von Trockenfisch gewarnt.<br>Vergiftung kann lebensbedrohlich sein.<br> <br>Die Firma Ozean Fischgroßhandel GmbH in Ostercappeln warnt eindringlich vor dem Verzehr von Trockenfisch der Arten ,,Plötze unausgenommen, ausgenommen, Karauschen, Flussbarsch, Forelle, Hecht, alle getrocknet und gesalzen", die insbesondere in russischen Einkaufsmärkten angeboten werden.<br> <br>Nachfolgende Chargen können betroffen sein:<br>Plötze (rutilus rutilus) unausgenommen; getrocknet und gesalzen<br>MHD12.11.2019 LOT180219<br>Plötze (rutilus rutilus) ausgenommen; getrocknet und gesalzen<br>MHD05.03.2020 LOT180319<br>Karauschen (Carssius Gibelio) getrocknet und gesalzen<br>MHD27.05.2020 LOT170519<br>Flussbarsch (Perca Fluvictilis) getrocknet und gesalzen<br>MHD27.05.2020 LOT170519<br>Forelle (Oncorhynchus Mykiss) getrocknet und gesalzen<br>MHD09.03.2020 LOT140619<br>Hecht (Esox lucius) getrocknet und gesalzen<br>MHD 05.03.2020 LOT18.03.19<br> <br>Im Bereich des Landkreises Schaumburg wurde der Einzelhandelsbetrieb "Armenia", Mindener Str. 3, 31737 Rinteln, mit 12 Kilogramm unausgenommenen Plötzen beliefert, von denen 7 Kilogramm an einzelne Kunden verkauft wurden. Es ist nicht auszuschließen, dass durch das Essen des Trockenfisches beim Menschen die lebensbedrohliche Vergiftung Botulismus ausgelöst wird.<br> <br>Wer Symptome wie ungewöhnliche Kopfschmerzen und Übelkeit, Erbrechen, Bauchkrämpfe, Durchfall oder Lähmungserscheinungen verspürt, sollte sofort einen Arzt aufsuchen. Lähmungen betreffen in den meisten Fällen zunächst die Augen und das Sehvermögen, die Augenlider können dann oft nicht mehr bewegt werden. Weitere Symptome können Sprechstörungen, ein trockener Mund, Schlucklähmungen oder Atemnot sein.<br> <br>Anlass der Warnung ist die Erkrankung eines Patienten im Landkreis Lippe, bei dem das Gift im Blut nachgewiesen worden war. Es konnte nicht näher bestimmt werden, welche Art von Fisch der Erkrankte gegessen hat. Deshalb warnt die Firma Ozean vorsorglich vor dem Verzehr von allen Trockenfischen, die an den Markt geliefert wurden, in dem der Patient eingekauft hat.<br> <br>
2019-08-09 01:29:51 Warn_03_MsgType Alert
2019-08-09 01:29:51 Warn_03_Sender CAP@biwapp.de
2019-08-09 20:09:59 Warn_03_Sendername Pressestelle
2019-08-09 01:29:51 Warn_03_Severity Minor
2019-08-09 20:09:59 Warn_03_ShortText Landkreis Schaumburg warnt vor Gefahr von Botulismus durch Trockenfisch
2019-08-09 20:09:59 Warn_04_Area Nienburg (Weser)
2019-08-09 01:29:51 Warn_04_Category Safety
2019-08-09 20:09:59 Warn_04_Creation 2019-08-07T11:23:07+02:00
2019-08-09 21:57:12 Warn_04_Distance 227.56035350395
2019-08-09 20:09:59 Warn_04_End 2019-08-29T11:17:00+02:00
2019-08-09 01:29:51 Warn_04_Event 8
2019-08-09 20:09:59 Warn_04_EventID BIWAPP-37954
2019-08-09 20:09:59 Warn_04_Geocode Nienburg (Weser)
2019-08-09 20:09:59 Warn_04_LongText Gefahr von Botulismus: Agrarministerium warnt vor Verzehr von Trockenfisch<br>Vergiftung kann lebensbedrohlich sein – Trockenfisch nicht essen<br><br>Das niedersächsische Landwirtschaftsministerium warnt vor dem Verzehr von Trockenfisch, der durch einen niedersächsischen Großhändler vermarktet wurde.<br>Es besteht die Gefahr, dass durch diesen Fisch beim Menschen die lebensbedrohliche Vergiftung Botulismus ausgelöst wird. Verbraucherinnen und Verbraucher, die Trockenfisch gekauft haben, sollten die betroffene Ware vernichten oder in ihrer Verkaufsstelle nachfragen, ob die gekaufte Ware betroffen ist.<br>Anlass der Warnung ist der Fall eines Patienten, der in der letzten Woche an Botulismus erkrankt ist. Im von dem Patienten verzehrten Trockenfisch wurde das Toxigen nachgewiesen. Der Trockenfisch wurde durch einen im Landkreis Osnabrück ansässigen Großhändler an Einzelhändler vermarktet. Der Großhändler hat alle Märkte, die die in Rede stehende Ware erhalten haben, informiert. Die zuständigen Behörden überwachen den Vorgang.<br><br>Es handelt sich um folgende Produkte:<br>• Plötze (rutilus rutilus) unausgenommen; getrocknet und gesalzen,<br>Mindesthaltbarkeitsdatum 12.11.2019 LOT180219<br>• Plötze (rutilus rutilus) ausgenommen; getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 05.03.2020 LOT180319<br>• Karausche (Carssius Gibelio) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 27.05.2020 LOT170519<br>• Flussbarsch (Perca Fluvictilis) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 27.05.2020 LOT170519<br>• Forelle (Oncorhynchus Mykiss) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 09.03.2020 LOT140619<br>• Hecht (Esox lucius) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 05.03.2020 LOT18.03.19<br><br>Botulismus ist eine lebensbedrohliche Vergiftung, die durch den Verzehr von verdorbenem Fleisch oder Fisch verursacht werden kann. Auslöser ist der Giftstoff Botulinumtoxin, der vom Bakterium Clostridium botulinum produziert wird. Bei Auftreten von Symptomen wie Kopfschmerzen, Übelkeit, Erbrechen, Lähmungserscheinungen der Augenlider, verschwommenes Sehen und Doppelbilder, Sprechstörungen, trockener Mund, Schlucklähmung, Durchfall, Verstopfung und Atemnot nach Verzehr von Trockenfisch sollte sofort ein Arzt aufgesucht werden. Weitere Informationen können im Internet auf der Seite www.lebensmittelwarnung.de abgerufen werden.<br><br>
2019-08-09 01:29:51 Warn_04_MsgType Alert
2019-08-09 01:29:51 Warn_04_Sender CAP@biwapp.de
2019-08-09 20:09:59 Warn_04_Sendername Landkreis Nienburg/Weser - Pressestelle
2019-08-09 01:29:51 Warn_04_Severity Minor
2019-08-09 20:09:59 Warn_04_ShortText Gefahr von Botulismus: Agrarministerium warnt vor Verzehr von Trockenfisch
2019-08-09 20:09:59 Warn_05_Area Harburg
2019-08-09 01:29:51 Warn_05_Category Safety
2019-08-09 20:09:59 Warn_05_Creation 2019-07-04T09:34:32+02:00
2019-08-09 21:57:12 Warn_05_Distance 238.317656581865
2019-08-09 20:09:59 Warn_05_End 2019-09-04T09:24:00+02:00
2019-08-09 01:29:51 Warn_05_Event 8
2019-08-09 20:09:59 Warn_05_EventID BIWAPP-36637
2019-08-09 20:09:59 Warn_05_Geocode Harburg
2019-08-09 20:09:59 Warn_05_LongText Während der Badesaison überprüft das Kreisgesundheitsamt regelmäßig die Qualität des Badeteichs Ramelsloh, des Meckelfelder Pulvermühlenteichs, des Sees im Großen Moor Hörsten, des Sees im Maschener Moor und des Badeteichs Holm-Seppensen.<br>Badende haben nun nach dem Besuch des Badeteichs Ramelsloh mehrere Fälle von Zerkariendermatitis gemeldet. Mitarbeiter der Gemeinde Seevetal haben auf Hinweis der Kreisverwaltung an den Teichzugängen entsprechende Hinweisschilder aufgestellt. Das Gesundheitsamt rät, die darauf angegebenen Verhaltensweisen zu beachten.<br>Zerkarien sind Wurmlarven. Zunächst gelangen Wurmeier durch den Kot von Wasservögeln in Gewässer und wachsen in Wasserschnecken zu Larven (Zerkarien) heran. Diese Larven können bei Hautkontakt zu Menschen starken Juckreiz verursachen, der in der Regel bald wieder nachlässt. Bei mehrfachem Kontakt reagiert die Haut mit stärkerem Juckreiz und einer rötlichen Quaddel- oder Papelbildung, die jedoch nach zehn bis 20 Tagen wieder abheilen. Eine Zerkariendermatitis ist also unangenehm und lästig, in der Regel jedoch harmlos. Um Beeinträchtigungen zu vermeiden, rät das Gesundheitsamt, Enten nicht zu füttern, wasserfeste Sonnenschutzmittel zu verwenden, sich nach dem Baden kräftig abzutrocknen, um Larven von der Haut zu entfernen, feuchte Badekleidung zügig auszuziehen sowie Kratzen und damit Wundinfektionen zu vermeiden. Aktuell gibt es gibt es keine wirksame, ökologische vertretbare Bekämpfungsmethode.<br>Bei Fragen stehen die Mitarbeiterinnen und Mitarbeiter des Gesundheitsamts telefonisch (04171- 693-626) oder per E-Mail (<a href="https://cms.kreis-wl.de/cont/meldungen_edit.php?id=MS45NjQzMzc1MTkyNzE2&typ=1&such_medium=-1&such_typ=1&such_p=2&such_f=ca.createtime&such_r=desc&such_own=0&such_published=0&such_res=0&such_portal=&such_filter_portalzuordnung=0#" target="_blank" rel="noopener noreferrer">gesundheitsamt@lkharburg.de</a>) gerne zur Verfügung.
2019-08-09 01:29:51 Warn_05_MsgType Alert
2019-08-09 01:29:51 Warn_05_Sender CAP@biwapp.de
2019-08-09 20:09:59 Warn_05_Sendername Landkreis Harburg - Presse- und Öffentlichkeitsarbeit
2019-08-09 01:29:51 Warn_05_Severity Minor
2019-08-09 20:09:59 Warn_05_ShortText Zerkarienwarnung für den Badeteich Ramelsloh
2019-08-09 20:09:59 Warn_06_Area Diepholz
2019-08-09 01:29:51 Warn_06_Category Safety
2019-08-09 20:09:59 Warn_06_Creation 2019-08-07T13:46:46+02:00
2019-08-09 21:57:12 Warn_06_Distance 261.701943188995
2019-08-09 20:09:59 Warn_06_End 2019-08-31T13:45:00+02:00
2019-08-09 01:29:51 Warn_06_Event 8
2019-08-09 20:09:59 Warn_06_EventID BIWAPP-37961
2019-08-09 20:09:59 Warn_06_Geocode Diepholz
2019-08-09 20:09:59 Warn_06_LongText Gefahr von Botulismus: Agrarministerium warnt vor Verzehr von Trockenfisch<br>Vergiftung kann lebensbedrohlich sein – Trockenfisch nicht essen<br><br>Das niedersächsische Landwirtschaftsministerium warnt vor dem Verzehr von Trockenfisch, der durch einen niedersächsischen Großhändler vermarktet wurde.<br>Es besteht die Gefahr, dass durch diesen Fisch beim Menschen die lebensbedrohliche Vergiftung Botulismus ausgelöst wird. Verbraucherinnen und Verbraucher, die Trockenfisch gekauft haben, sollten die betroffene Ware vernichten oder in ihrer Verkaufsstelle nachfragen, ob die gekaufte Ware betroffen ist.<br>Anlass der Warnung ist der Fall eines Patienten, der in der letzten Woche an Botulismus erkrankt ist. Im von dem Patienten verzehrten Trockenfisch wurde das Toxigen nachgewiesen. Der Trockenfisch wurde durch einen im Landkreis Osnabrück ansässigen Großhändler an Einzelhändler vermarktet. Der Großhändler hat alle Märkte, die die in Rede stehende Ware erhalten haben, informiert. Die zuständigen Behörden überwachen den Vorgang.<br><br>Es handelt sich um folgende Produkte:<br>• Plötze (rutilus rutilus) unausgenommen; getrocknet und gesalzen,<br>Mindesthaltbarkeitsdatum 12.11.2019 LOT180219<br>• Plötze (rutilus rutilus) ausgenommen; getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 05.03.2020 LOT180319<br>• Karausche (Carssius Gibelio) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 27.05.2020 LOT170519<br>• Flussbarsch (Perca Fluvictilis) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 27.05.2020 LOT170519<br>• Forelle (Oncorhynchus Mykiss) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 09.03.2020 LOT140619<br>• Hecht (Esox lucius) getrocknet und gesalzen<br>Mindesthaltbarkeitsdatum 05.03.2020 LOT18.03.19<br><br>Botulismus ist eine lebensbedrohliche Vergiftung, die durch den Verzehr von verdorbenem Fleisch oder Fisch verursacht werden kann. Auslöser ist der Giftstoff Botulinumtoxin, der vom Bakterium Clostridium botulinum produziert wird. Bei Auftreten von Symptomen wie Kopfschmerzen, Übelkeit, Erbrechen, Lähmungserscheinungen der Augenlider, verschwommenes Sehen und Doppelbilder, Sprechstörungen, trockener Mund, Schlucklähmung, Durchfall, Verstopfung und Atemnot nach Verzehr von Trockenfisch sollte sofort ein Arzt aufgesucht werden. Weitere Informationen können im Internet auf der Seite www.lebensmittelwarnung.de abgerufen werden.
2019-08-09 01:29:51 Warn_06_MsgType Alert
2019-08-09 01:29:51 Warn_06_Sender CAP@biwapp.de
2019-08-09 20:09:59 Warn_06_Sendername Landkreis Diepholz, Fachdienst Veterinärwesen und Verbraucherschutz
2019-08-09 01:29:51 Warn_06_Severity Minor
2019-08-09 20:09:59 Warn_06_ShortText Gefahr von Botulismus: Agrarministerium warnt vor Verzehr von Trockenfisch
2019-08-09 20:09:59 Warn_07_Area Baden-Württemberg
2019-08-09 20:09:59 Warn_07_Category Met
2019-08-09 20:09:59 Warn_07_Contact Landesanstalt für Umwelt Baden-Württemberg Hochwasser-Vorhersage-Zentrale
2019-08-09 21:57:12 Warn_07_Creation 2019-08-09T21:47:00+02:00
2019-08-09 21:57:12 Warn_07_Distance 316.447834095783
2019-08-09 21:57:12 Warn_07_End 2019-08-10T22:47:00+02:00
2019-08-09 20:09:59 Warn_07_Event Hochwasserinformation
2019-08-09 20:09:59 Warn_07_EventID HOCHWASSERZENTRALEN.DE.BW
2019-08-09 20:09:59 Warn_07_Geocode Alb-Donau-Kreis
2019-08-09 20:09:59 Warn_07_LongText Ab Freitag Abend sind aufgrund von lokal teils extrem heftigen Starkregen starke Wasserstandsanstiege in den davon betroffenen Bächen und kleinen Flüssen möglich. Auch abseits von Gewässerläufen können sich im Einzelfall schnelle lokale Überflutungen entwickeln, z.B. von Unterführungen, Tiefgaragen oder Straßen. Bitte beachten Sie auch die aktuellen Wetterwarnungen.
2019-08-09 01:29:51 Warn_07_MsgType Alert
2019-08-09 20:09:59 Warn_07_Sender CAP@hochwasserzentralen.de
2019-08-09 18:19:59 Warn_07_Sendername Landkreis Diepholz, Fachdienst Veterinärwesen und Verbraucherschutz
2019-08-09 20:09:59 Warn_07_Severity Severe
2019-08-09 20:09:59 Warn_07_ShortText Hochwasserinformation Baden-Württemberg
2019-08-09 21:57:11 currentIntervalMode normal
2019-08-09 21:57:12 durationFetchReadings 1.68
2019-08-09 21:57:12 lastConnection 115 values captured in 1.68 s
2019-08-09 21:57:12 state Warnungen: 8 Lokal: 0
fhem:
LOCAL 0
helper:
RUNNING_PID:
abortFn Nina_Aborted
arg Nina
bc_pid 3
finishFn Nina_Done
fn Nina_Run
pid DEAD:554
telnet telnetForBlockingFn_1565380622_127.0.0.1_50348
terminated 1
timeout 120
abortArg:
Attributes:
disableDWD 1
distance 350
latitude 51.92504
longitude 12.67523
readingsSupervision 900,,lastConnection
room 05 Die Lage
verbose 2
Was kommt, wenn Du im Eventmonitor eine Zeile mit Warn_xx_EventID markierst, und auf "Create/Modify device" klickst, und notify auswählst. Wie sieht die vorgeschlagene DEF aus?
Markierte Zeile
2019-08-09 23:43:20 Nina Nina Warn_01_EventID: BIWAPP-36634
with exactly this event
define Nina_notify_1 notify Nina:Warn_01_EventID:.BIWAPP-36634 {}
with any number matching
define Nina_notify_1 notify Nina:Warn_01_EventID:.BIWAPP.* {}
HINT: An Stelle von BIWAPP kann auch anderes stehen, Beispiel:
2019-08-09 23:43:20 Nina Nina Warn_07_EventID: HOCHWASSERZENTRALEN.DE.BW
Dann sollte define ntNina notify Nina:Warn_.*_EventID.*
doch triggern.
Poste mal bitte ein "list" vom notify
Bitte bedenken: Eigentlich sollen die ersten 30 Zeichen von Warn_??_Instruction in je ein neues Reading kopiert werden, Warn_??_Instruction kommt aber in dem derzeitigen Konstrukt gar nicht vor.
list ntNina
Internals:
.COMMAND {my $reading = $EVTPART0; my ($num) = $EVTPART0 =~ /(\d+)/; my $val = substr(ReadingsVal("Nina",$reading,""),0,29); my $num_Wort; fhem("setreading Nina Warn_$num_Wort $val");fhem("deletereading Nina Warn_.*_Wort ");fhem("setreading Nina Warn_$num_Wort $val");}
DEF Nina:Warn_.*_EventID.* {my $reading = $EVTPART0; my ($num) = $EVTPART0 =~ /(\d+)/; my $val = substr(ReadingsVal("Nina",$reading,""),0,29); my $num_Wort; fhem("setreading Nina Warn_$num_Wort $val");fhem("deletereading Nina Warn_.*_Wort ");fhem("setreading Nina Warn_$num_Wort $val");}
FUUID 5d4b14cd-f33f-769b-4fa6-d3d958168fd0b0ef
NAME ntNina
NOTIFYDEV Nina
NR 1057
NTFY_ORDER 50-ntNina
REGEXP Nina:Warn_.*_EventID.*
STATE 2019-08-09 23:43:20
TRIGGERTIME 1565387000.2926
TYPE notify
.attraggr:
.attrminint:
READINGS:
2019-08-09 21:56:59 state active
Attributes:
room 99 System
verbose 5
Also, der triggert schon:
ZitatSTATE 2019-08-09 23:43:20
TRIGGERTIME 1565387000.2926
Zitat von: curt am 10 August 2019, 00:37:21
Bitte bedenken: Eigentlich sollen die ersten 30 Zeichen von Warn_??_Instruction in je ein neues Reading kopiert werden, Warn_??_Instruction kommt aber in dem derzeitigen Konstrukt gar nicht vor.
Das habe ich schon lange gesagt: https://forum.fhem.de/index.php/topic,102852.msg965014.html#msg965014
Zitatund in dem substr das richtige Reading umsetzen.
und wieder https://forum.fhem.de/index.php/topic,102852.msg965548.html#msg965548
ZitatDas Konstrukt ist auf jeden Fall noch falsch: wenn EventID triggern, dann kriegst Du in $reading Warn_nn_EventID. $num wird dann die richtige nn Zahl enthalten, aber $val muss nicht $reading (Warn_nn_EventID) lesen sondern Warn_$num_Instruction.
EDIT: und wenn er wegen $num_Wort meckert, reicht es nicht, einfach in der mitte "my $num_Wort;;" zu setzen. Hast Du überhaupt verstanden, was der Beispielcode machen soll?
Nein.
Wenn ich das selbst könnte, gäbe es diesen Thread nicht.
Wenn Du dich aber mit Perl nicht ein bisschen beschäftigst, wirst Du mit Fhem Schwierigkeiten haben. Du hast schon alle Teile der Lösung.
Wenn z.B. Warn_48_EventID getriggert hat:
my ($num) = $EVTPART0 =~ /(\d+)/;; #definiert eine Variable $num mit Inhalt = die Nummer, die im triggernden Reading ($EVTPART0 = Warn_48_EventID) steht (z.B. 48)
my $quellReading = "Warn_".$num."_Instruction";; #Kalkuliert den Name des zu lesenden Readings abhängig von $num (z.B. Warn_48_Instruction)
my $zielReading = "Warn_".$num."_Wort";; #Kalukiert den Name des zu setzenden Readings abhängig von $num (z.B. Warn_48_Wort)
my $val = substr(ReadingsVal("Nina",$quellReading,""),0,29);; #Extrahiert in $val die erste 30 Zeichen vom $quellReading
fhem("setreading Nina $zielReading $val");;} #setze $zielReading vom Device Nina zu Wert $val
Das ganze kann man wahrscheinlich so kürzen, ohne unnötige Zwischenvariable:
{my ($num) = $EVTPART0 =~ /(\d+)/;; fhem("setreading Nina Warn_".$num."_Wort ".substr(ReadingsVal("Nina","Warn_".$num."_Instruction")));;}
Zitat von: frank am 09 August 2019, 11:17:44
eventuell auch erstmal mit einem einfachen notify beginnen und [...]
Danke für den Stupser - so testweise umgesetzt mit *LongText - *Instruction kommt ja selten mit und soll (das ist ja eines der Ziele der Operation) bei Nichtexistenz in FTUI/label via autohide ausgeblendet werden.
Zitat von: amenomade am 10 August 2019, 01:29:09
Wenn Du dich aber mit Perl nicht ein bisschen beschäftigst, wirst Du mit Fhem Schwierigkeiten haben.
Es ist kein Vorwurf: Du kannst nicht wissen, was ich mit Perl machte und mache. Ein WebServer "in the wild" besteht ausschließlich aus einem CGI-Interface, welches von Perl bedient wird - ich bin mir sicher, dass Du den WebServer schon kontaktiert hast. Nein, das ist kein kleines Script.
In aller demütiger Bescheidenheit scheint mir das Problem (oder auch nur mein Problem) mit FHEM und Perl zu sein, dass das nicht konsistent ist. An jeder Ecke eine Sonderlocke. Und wenn es keine Sonderlocke ist, dann liest Du bei der Recherche Beiträge des Tonfalls 'Du musst mal lernen, dass das FHEM-Perl nicht wirklich Perl ist, das ist anders'.
Ähmmm. Aha.
Zitat von: amenomade am 10 August 2019, 01:29:09
Du hast schon alle Teile der Lösung.
Ich teste mit *LongText, da *Instruction im Friedensfall eher selten mitgegeben wird (aber eine Katastrophen-Warn-Device schon auf den auf den ganz seltenen "Kriegsfall", also Katastrophenfall zugeschnitten ist), sonst könnten wir uns den Zinnober ja sparen.
Dieser Code (hier: *LongText) funktioniert:
define ntNina notify Nina:Warn_.*_EventID.* {my ($num) = $EVTPART0 =~ /(\d+)/;;;; my $quellReading = "Warn_".$num."_LongText";;;; \
my $zielReading = "Warn_".$num."_Wort";;;; my $val = substr(ReadingsVal("Nina",$quellReading,""),0,29);;;; fhem("setreading Nina $zielReading $val");;;;}
Was ich (die Zeit fehlte) noch nicht sagen kann: Wie FTUI/Label/autohide real umgeht, also ob ein Ereignis "33" noch existiert, wenn es aktuell aber nur 22 Ereignisse gibt. Der Thread ist also noch nicht erledigt.
@amenomade
Ich weiß, dass Du im Anfängerthread selbstlos hilfst: Dir gebührt mein besonderer Dank. Und ich danke allen, die uns in der Diskussion schrittweise näher zur Lösung brachten.
Ich wünsche allen ein wunderschönes Wochenende
(und drohe für die nächsten Tage einen weiteren Beitrag zur Sache an ...)
Zitat von: curt am 10 August 2019, 05:31:43
Was ich (die Zeit fehlte) noch nicht sagen kann: Wie FTUI/Label/autohide real umgeht, also ob ein Ereignis "33" noch existiert, wenn es aktuell aber nur 22 Ereignisse gibt. Der Thread ist also noch nicht erledigt.
Das ist was ich hieroben mit "Ich weiss aber nicht genau wie Das Modul funktioniert." meinte. Wenn das so ist, dass die "Ereignisse" (sagen wir eher die Readings) irgendwie ablaufen, muss man dann ja mit einer Schleife arbeiten. Da muss man den richtigen Kompromiss finden, zwischen "ich kalkuliere alle Readings bei jedem Ereignis" und "ich kalkulieren nur diejenige, die geändert wurden".
EDIT:
ZitatDu kannst nicht wissen, was ich mit Perl machte und mache. Ein WebServer "in the wild" besteht ausschließlich aus einem CGI-Interface, welches von Perl bedient wird - ich bin mir sicher, dass Du den WebServer schon kontaktiert hast. Nein, das ist kein kleines Script.
... Bin mal neugierig... :) ???
Zwischenstand:
Bei einer testweisen Nutzung eines anderen Readings funktioniert sowohl das notify als auch die daran anknüpfende Darstellung in FTUI.
Bei dem eigentlich gewollten Quellreading (Warn_??_Instruction) ist die Sache schwieriger: Das taucht selten auf (daher will ich den Link bei Nichtexistenz ja ausblenden). Leider habe ich das Reading zu meinen Hobbyzeiten noch nicht wieder gesehen, kann also noch nicht final berichten.
Ich habe das weiter im Auge und werde bei Erfolg den von mir genutzten Code (notify sowie FTUI) hier veröffentlichen, anschließend den Thread als "gelöst" markieren.
die wettermeldungen haben, glaube ich, immer instruction.
also zum testen ideal.
Zitat von: frank am 15 August 2019, 09:50:17
die wettermeldungen haben, glaube ich, immer instruction.
also zum testen ideal.
Ahh, gut, geht. Damit also:
Das von mir genutzte notify:
define ntNina notify Nina:Warn_.*_EventID.* {my ($num) = $EVTPART0 =~ /(\d+)/;;;; my $quellReading = "Warn_".$num."_Instruction";;;; \
my $zielReading = "Warn_".$num."_Wort";;;; my $val = substr(ReadingsVal("Nina",$quellReading,""),0,29);;;; fhem("setreading Nina $zielReading $val");;;;}
Und beispielhaft in FTUI so genutzt:
<div data-type="popup"
data-height="350px"
data-width="600px"
onclick="$('.dialog-close').trigger('click');"
class="inline">
<div data-type="label" data-device="Nina"
data-get="Warn_00_Wort"
data-unit=""
data-pre-text=" "
class="inline yellow nocache autohide" align="left">
</div>
<div class="dialog">
<div data-type="label" data-device="Nina"
data-get="Warn_00_Instruction"
data-unit=""
class="nocache autohide" align="left">
</div>
</div>
</div>
Ich danke allen, die sich an der Diskussion beteiligten und mithalfen.
Weitere Verbesserungen, Hinweise gern gesehen.