Diskussionsthread: optischer Sensor (Wiki) (Neu: mit Programmcode)

Begonnen von Rince, 03 August 2015, 14:09:05

Vorheriges Thema - Nächstes Thema

Rince

Hi,

hier geht es um einen "optischen Sensor"
http://www.fhemwiki.de/wiki/Optischer_Sensor,_Software

Einfach gesagt, damit kann man die Zustände von LEDs oder irgendwelchen Lichtern an fhem melden. Programmcode ist fast fertig. Jedenfalls fallen mir keine Fehler auf.


Alternativ kann man auch Karten benutzen (Niederschlagsmessung vom DWD z.B.), und dort für ein oder mehrere Regionen den Wert an fhem senden.


Freue mich auf Fragen oder Rückmeldungen.


0.2
erste öffentliche Version

! Obacht, ohne Python 2.7, OpenCV und NumPy läuft das nicht !
(Anleitung kommt noch, im Wiki ist ein gutes Tutorial verlinkt)
Im Wiki ist ein Link zu einer guten "wie jage ich es erfolgreich durch den Compiler-Anleitung"

Wem das zu aufwendig ist: für Debian 8 gibt es auch fertige Builds (Debian 7 weiß ich nicht; ob es mit den fertigen Paketen irgendwelche Probleme gibt, habe ich auch noch nicht ausprobiert)
apt-get install libopencv-dev python-opencv


Wohin installieren?
Gute Frage.
Die Kommunikation zu fhem erfolgt per TCP/IP. Damit kann das Programm auf dem gleichen Rechner wie fhem laufen, muss aber nicht. Man kann es ohne weiteres auf einem eigenen RasPi betreiben. Netzwerkverbindung braucht er halt. Das ist sinnvoll, wenn man einen RasPi mit USB Cam zum Bildermachen benutzt, ohne darauf fhem zu installieren.

Allerdings ist es auch kein Problem, das Programm auf dem fhem Server selbst zu betreiben. Das ist praktisch, wenn man z.B. Karten vom DWD (Waldbrandindex, Bodenfeuchte...) für seine Region damit auswerten will.

Wer es sich nur mal interesse halber ansehen will, kann das Skript auch unter Windows ausführen (darunter habe ich es geschrieben, das klappt definitiv ;) )

Das Programm erwartet eine Bilddatei (farbig!), deren Name immer gleich ist. Ob man die vom DWD lädt, per USB Cam erzeugt oder aber mit einer WLAN Überwachungscam, spielt keine Rolle.

Die Auflösung ist ebenfalls nicht so wichtig. Prinzipiell reichen 640x480 Pixel für eine Webcam durchaus aus. Hat man feste Farbwerte (Grafiken vom DWD), reicht 1 Pixel als Maske aus. Bei LEDs auf einem Foto sollten es mehr Pixel sein, da eine unterschiedliche Beleuchtung durchaus einen Einfluss haben kann.


Im ZIP Archiv befinden sich:
sensor.py => das Script
2 Beispiel-Config-Files
1 TXT Datei die den Aufruf nochmal verdeutlicht
ein Unterordner
darin das Quellbild
für jede Beispielconfig 8 Masken
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

frank

schöne idee.  8)

dann mach das mal gleich so, dass ich mir zb beim dwd aus diesem png, die passende bodenfeuchte auslesen kann. und alles fritzbox kompatibel.  ;)

(http://forum.fhem.de/index.php?action=dlattach;topic=39678.0;attach=35570;image)

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Rince

Das würde jetzt schon gehen  ;D

Definiere 8x die gleiche ROI (also die gleiche Maske 8x identisch), für den Bereich wo du wohnst.
Dann einmalig die Farbwerte definieren (die aus der Skala eignen sich dafür gut)

Fertig.
(In dem Fall wäre es evtl einfacher, sich die HSV Umwandlung zu sparen und gleich die RGB Werte (für OpenCV BGR) zu nehmen.)


Die Rückmeldung würde dann die Anzahl der Pixel in den unterschiedlichen Farben liefern. Wenn deine ROI auf einem "Grenzgebiet" liegt.

Also für Brandenburg z.B.
ROI_1 0
ROI_2 0
ROI_3 200
ROI_4 0
ROI_5 0
ROI_6 0
ROI_7 0
ROI_8 0

Damit wäre klar, dass dein gewählter Bereich grade gelb wäre...

FritzBox wird nicht gehen, sorry :)


Wenn du willst, baue ich RGB auch ein. Muss dazu nur die HSV Konvertierung weglassen  8)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#3
Ich habe es noch nicht jetzt ausprobiert, aber so müsste muss es aussehen:


Bodenfeuchte:

bodenfeuchte.json

{
"fhem_host_port": "http://192.168.5.31:8083",
"fhem_request": "/fhem?cmd=",
"different_ROI": "8",
"path_to_picture": "./Picture",
"picture": "bodenfeuchte",
"type": "png",
"mask": "5seenland",
"hsv": false,
"lower_col_1": [45,100,200],
"upper_col_1": [45,100,200],
"lower_col_2": [60,200,250],
"upper_col_2": [60,200,250],
"lower_col_3": [75,250,250],
"upper_col_3": [75,250,250],
"lower_col_4": [75,250,200],
"upper_col_4": [75,250,200],
"lower_col_5": [75,220,150],
"upper_col_5": [75,220,150],
"lower_col_6": [75,150,75],
"upper_col_6": [75,150,75],
"lower_col_7": [250,200,50],
"upper_col_7": [250,200,50],
"lower_col_8": [250,0,0],
"upper_col_8": [250,0,0],
"fhem_command_1": "setreading%20Bodenfeuchte%200-10",
"fhem_command_2": "setreading%20Bodenfeuchte%2010-30",
"fhem_command_3": "setreading%20Bodenfeuchte%2030-50",
"fhem_command_4": "setreading%20Bodenfeuchte%2050-80",
"fhem_command_5": "setreading%20Bodenfeuchte%2080-95",
"fhem_command_6": "setreading%20Bodenfeuchte%2095-100",
"fhem_command_7": "setreading%20Bodenfeuchte%20100-105",
"fhem_command_8": "setreading%20Bodenfeuchte%20105-"
}


So in etwa müsste die passende Config aussehen. IP Adresse halt anpassen und die Dateinamen. Dafür ist es ja ein Config-File  8)


An fhem würden werden dann die Anzahl der in der jeweiligen Farbe positiv getesteten Pixel landen. Dieser Wert hängt (in deinem Fall) vermutlich schlicht von der größe der Maske ab (also des weißen Flecks)...


Letztlich brauchen wir 8 ROIs, da es 8 verschiedene Farben geben kann (eben die in der Skala unten aufgeführten).

Die Farbwerte sind in BGR Reihenfolge (also quasi RGB umgedreht). Habe in GIMP einfach die Farbwerte unten aus der Legende genommen (also nachgesehen welche Werte die Farben haben; hat 3 Minuten gedauert)

Da es immer exakt die gleiche Farbe ist, können lower_col und upper_col identisch sein
Im Regelfall wird man da verschiedene Werte eintragen, da Farben in einem Bild (also einem Foto) natürlich stark von der Beleuchtung abhängig sind (daher auch HSV Farbraum).


Dazu eine Maske (im Anhang mal für mich, 8x die gleiche Datei)



Hast du eine statische URL, wo man die Grafik runterladen kann?


Memo to self:
Ich denke, ich muss den Namen der Config Datei noch in den Maskennamen einfügen. erledigt
Dann kann man mit dem gleichen Quellbild nämlich verschiedene Config Datei mit verschiedenen Masken nutzen...
(Also in deinem Fall, die Bodenfeuchte von mehreren Regionen auswerten lassen)

Update:
Die Farbbereiche müssen in [...] geschrieben werden :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

frank

irgendwie bin ich zu doof das programm, von dem du ständig redest, zu finden.  :)
wahrscheinlich doch erst trockenübungen.  8)

das hier ist der link der grafik:
http://www.dwd.de/bvbw/generator/DWDWWW/Content/Landwirtschaft/Bilder/Bodenfeuchte/bf__dl,property=default.png

ZitatIch denke, ich muss den Namen der Config Datei noch in den Maskennamen einfügen.
Dann kann man mit dem gleichen Quellbild nämlich verschiedene Config Datei mit verschiedenen Masken nutzen...
(Also in deinem Fall, die Bodenfeuchte von mehreren Regionen auswerten lassen)
umgekehrt wäre auch nicht schlecht. beim dwd gibt es noch weitere karten im selben format, denke ich. zb. aktuelles risiko von kartoffelfäule.  ;)

bei den masken hatte ich eigentlich gedacht, dass wahrscheinlich ein einzelner pixel ausreichen könnte. mit mehreren natürlich auch nicht schlecht.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Rince

Zitatirgendwie bin ich zu doof das programm, von dem du ständig redest, zu finden.  :)
wahrscheinlich doch erst trockenübungen.  8)

Jein. Es sind auf meinem Rechner grade 2 verschiedene Versionen existent. Eine, die die Farbwerte meldet (für 5 ROIs) und eine, die die ROIs in einer Schleife abarbeitet (aber noch nicht zählt).

Sobald ich Zeit habe, kopiere ich das zusammen und stelle es online  ::)

Daher freue ich mich sehr über deine Anregungen  :)


Zitatumgekehrt wäre auch nicht schlecht. beim dwd gibt es noch weitere karten im selben format, denke ich. zb. aktuelles risiko von kartoffelfäule.  ;)
Du kannst das Verzeichnis frei wählen. Bei verschiedenen Bildern (gleicher Name, anderer Inhalt) wäre das nicht unschlau. Mein Szenario war 1 Bild und 3 verschiedene Geräte :)

Zitatbei den masken hatte ich eigentlich gedacht, dass wahrscheinlich ein einzelner pixel ausreichen könnte. mit mehreren natürlich auch nicht schlecht.
Sollte auch gehen. Warum nicht? Dann halt nur 1 weißen Pixel setzen :)

Dann kommen halt 7x0 und 1x1 an fhem zurück.



Das einzige, was bei den Masken wichtig ist, dass die Auflösung identisch mit dem Originalbild ist!
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#6
Sodala, weiteren Code in das neue Programm übernommen :)


Bezogen auf dein Wetterbild von oben, meiner oben geposteten Maske nebst Config File (Achtung, habe ich grade aktualisiert), bekomme ich folgende Resultate:
Zitat
D:\OpenCV_Eigene_Experimente\Geschirr>test.py --conf "BodenfeuchteDWD.json"
Soll-Durchlaeufe 8
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 156
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 0
Fertig

Was noch fehlt, die in die Setreadings von fhem zu senden...


Jetzt in fhem:
Zitat
Internals:
   CFGFN
   NAME       Bodenfeuchte
   NR         32100
   STATE      ???
   TYPE       dummy
   Readings:
     2015-08-04 06:54:54   0-10            0
     2015-08-04 06:54:55   10-30           0
     2015-08-04 06:55:00   100-105         0
     2015-08-04 06:55:01   105-            0
     2015-08-04 06:54:56   30-50           0
     2015-08-04 06:54:57   50-80           156
     2015-08-04 06:54:58   80-95           0
     2015-08-04 06:54:59   95-100          0
Attributes:
   room       Garten

Man sieht:
Das Reading 50-80 enthält 156 Pixel, der Rest enthält keine.

Jetzt muss man noch in Abhängigkeit der Readings vom Dummy dessen State anpassen.

0-10 > wie in der Sahara
...
105- > ist die Arche schon fertig?

(Ich weiß nicht, wie das geht  :-[ )
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

frank

die variante mit beliebig vielen pixeln hat nun ein problemchen bei der auswertung. das müsste am besten gemittelt werden. da gibt es viele möglichkeiten und interpretationsspielraum. bei einem pixel/reading wäre das ergebnis klar. zum anfang mal ein userreading für die einfachen fälle.

Internals:
   CFGFN
   NAME       dwd_bf
   NR         646
   STATE      aktueller Bodenfeuchtebereich 50 - 80 %
   TYPE       dummy
   .userreadings:
     State:
       TIME       2015-08-04 13:20:22
       modifier   none
       perlCode   {   my ($min,$max);   foreach my $reading (sort grep /^bf.*/, keys %{$defs{$name}{READINGS}}) {     if(ReadingsVal($name,$reading,0)) {       (undef,$min,$max) = split('_',$reading);   return "aktueller Bodenfeuchtebereich ".$min." - ".$max." %";     }   } }
       t          1438687222.85953
       trigger    bf7_105
       value      aktueller Bodenfeuchtebereich 50 - 80 %
   Readings:
     2015-08-04 13:16:38   bf0_0_10        0
     2015-08-04 13:16:59   bf1_10_30       0
     2015-08-04 13:17:18   bf2_30_50       0
     2015-08-04 13:17:47   bf3_50_80       156
     2015-08-04 13:19:21   bf4_80_95       0
     2015-08-04 13:19:45   bf5_95_100      0
     2015-08-04 13:20:02   bf6_100_105     0
     2015-08-04 13:20:22   bf7_105         0
     2015-08-04 13:20:22   state           aktueller Bodenfeuchtebereich 50 - 80 %
   Helper:
     Bm:
       Dummy_define:
         cnt        1
         dmx        0
         mAr
         max        0
         tot        0
       Dummy_set:
         cnt        54
         dmx        0
         max        1
         tot        1
         mAr:
           HASH(0x1c41fa0)
           dwd_bf
           ?
Attributes:
   room       01_Test
   userReadings state:bf7_105 {   my ($min,$max);   foreach my $reading (sort grep /^bf.*/, keys %{$defs{$name}{READINGS}}) {     if(ReadingsVal($name,$reading,0)) {       (undef,$min,$max) = split('_',$reading);   return "aktueller Bodenfeuchtebereich ".$min." - ".$max." %";     }   } }
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Rince

Mercy.
Es spricht nichts gegen eine 1 Pixel Maske. Einfach nur 1 weißes Pixel malen :) (den Rest natürlich schwarz machen).


Kommst du mit der Anleitung zur OpenCV Installation klar?

Bzw, worauf läuft es bei dir? Evtl. kann man das durch einen Cross-Compiler jagen?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

frank

ZitatKommst du mit der Anleitung zur OpenCV Installation klar?

Bzw, worauf läuft es bei dir? Evtl. kann man das durch einen Cross-Compiler jagen?
8) 8) 8)

ich mache bisher nur trockenübungen wegen fritzbox.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Rince

Oh, ich dachte du hättest bezüglich der FritzBox oben einen Witz gemacht. Sorry.
Ich glaube nicht, dass man Python und OpenCV darauf zum laufen bekommt.

Wenn du willst, schreibe ich dir aber eine Anleitung wie es unter Windows geht :)
Ist nicht schwer, dauert keine 15 Minuten.


Erst mal das ganze Graffel für Windows runterladen...



OpenCV
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.11/opencv-2.4.11.exe/download

Python
http://python.org/ftp/python/2.7.5/python-2.7.5.msi

Numpy
https://downloads.sourceforge.net/project/numpy/NumPy/1.8.0/numpy-1.8.0-win32-superpack-python2.7.exe

Matplotlib
https://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.3.0/matplotlib-1.3.0.win32-py2.7.exe
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Zitatumgekehrt wäre auch nicht schlecht. beim dwd gibt es noch weitere karten im selben format, denke ich. zb. aktuelles risiko von kartoffelfäule.

Ah,
jetzt habe ich dich verstanden. Unterschiedliche Bilder, aber gleiche Masken.

Kein Streß. Dann lass in der Kartoffel-Config den Pfad und den Maskennamen gleich :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

frank

ZitatErst mal das ganze Graffel für Windows runterladen...
danke für die links. zum kennenlernen bestimmt schon mal nicht schlecht, aber für eine automatisierung bei mir ungeeignet.

bei dir läuft das alles auf dem fhem-pi und verzögert/stört/beeinflusst den normalen fhem ablauf nicht? bei deinen 8 dummy-readings zur dwd-bodenfeuchte haben die timestamps ca 1s differenz. also vom 1. bis 8. ca 8s. das ist dann die rechenzeit für diesen ablauf? käme also noch der download des bildes dazu.

bei der bildanalyse zum dwd könnte das einlesen der 8 referenzfarben sicherlich auch automatisiert werden.  ;)

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Rince

Zitatbei deinen 8 dummy-readings zur dwd-bodenfeuchte haben die timestamps ca 1s differenz. also vom 1. bis 8. ca 8s. das ist dann die rechenzeit für diesen ablauf? käme also noch der download des bildes dazu.

Ich habe mich schon gefragt, wann wer auf die langen Zeiten in den Readings Bezug nimmt :)
Das liegt daran, dass ich zu der Zeit zu Debug Zwecken immer auf einen Tastendruck gewartet habe :)


Habe es mal schnell gebenchmarkt (ohne Tastendrücke, sondern so, wie es auch in echt abläuft):
Zitat
D:\OpenCV_Eigene_Experimente\Sensor>benchmark

D:\OpenCV_Eigene_Experimente\Sensor>echo 11:19:59,48
11:19:59,48

D:\OpenCV_Eigene_Experimente\Sensor>sensor.py --conf "BodenfeuchteDWD5seenland.json"
Soll-Durchlaeufe 8
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 156
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 0
The number of positive pixels is: 0
Fertig

D:\OpenCV_Eigene_Experimente\Sensor>echo 11:20:00,23
11:20:00,23

0,35 Sekunden braucht es...

Finde das durchaus flott :)



Zitatzum kennenlernen bestimmt schon mal nicht schlecht, aber für eine automatisierung bei mir ungeeignet.
Ist klar. Soll ja auch nur sein, um in "vertrauter" Umgebung mal zu sehen, was so passiert :)


Zitat
bei dir läuft das alles auf dem fhem-pi und verzögert/stört/beeinflusst den normalen fhem ablauf nicht?
Nein. Hatte die DWD Karten nie im Auge :)
Aber ich finde es interessant, die auch zu "erschlagen".

Mein Anwendungsfall war, das Programm auf einen eigenen RasPi auf dem Kühlschrank laufen zu lassen, wo es alle 60 Sekunden ein Statusupdate an fhem senden soll.
Aber ich glaube, ich werfe es mir mal auf den Cubietruck.

Ob es fhem verzögert oder nicht, wenn auf dem gleichen Rechner:
- wenn du das Programm von fhem aus aufrufst, wird es fhem blockieren (wie jedes externe aufgerufene Programm, z.B. mplayer)
- wenn du " &" an den Aufruf hängst, wird es fhem nicht blockieren
- wenn du es in einen Cronjob steckst, der regelmäßig ausgeführt wird (z.B. alle 5 Minuten), bekommt fhem davon gar nix mit (außer eben den aktualisierten Werten)...


Zitat
bei der bildanalyse zum dwd könnte das einlesen der 8 referenzfarben sicherlich auch automatisiert werden.  ;)

Ja. Könnte man.
Dagegen spricht: es kostet Rechenzeit, und zwar jedes mal.

Und dann ist die Frage: was tun wenn es 5 Referenzfarben sind?

So muss man pro Karte 1x händisch den Farbwert für jede Farbe ermitteln und in die Config schreiben...

(Nebenbei: die 8 Referenzfarben für diese Karte habe ich schon erstellt, kann man Copy&Pasten ;) )


Bin für jeden Hinweis / Idee / Beitrag offen :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

frank

hi,

ich habe das ganze geraffel jetzt mal installiert. fast, denn mir ist noch nicht klar, was ich mit dem ganzen opencv zeug mache, fast 4gb.  ???

nach start von sensor.py erhalte ich

H:\frank\optischerSensor\Sensor>sensor.py --conf "BodenfeuchteDWD5seenland1.json"
Traceback (most recent call last):
  File "H:\frank\optischerSensor\Sensor\sensor.py", line 6, in <module>
    import cv2
ImportError: No module named cv2


ich vermute ein path problem.

edit: habe nun ein buildpath gesetzt, wie in einer anleitung gefunden, mit
setx -m OPENCV_DIR H:\frank\programme\openCV\opencv\build\python\2.7\x86
das reicht wohl noch nicht.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html