PanStamp: Device definition file wird nicht gefunden

Begonnen von TeeVau, 15 November 2013, 03:52:37

Vorheriges Thema - Nächstes Thema

TeeVau

Hallo,

ich scheiter aktuell daran, meinen eigenen Sketch in FHEM einzubinden. Scheint ein Problem mit dem XML File für die Device Definition zu sein.
Ich vermute auch, dass es ggf. an dem FHEM Modul liegt, oder an dem Ding zwischen meinen Ohren ;-)
Um meinen Sketch bekannt zu machen habe ich mich an den Vorhanden Einträgen in der "devices.xml" orientiert.
Dort habe ich zugefügt:

<developer id="43" name="TeeVau">
  <dev id="1" name="WindowController" label="Board to handle window blind and state of 2 windows"/>
</developer>


Zudem habe ich dann ein neues Verzeichnis angelegt mit dem Namen "TeeVau", im selben Verzeichnis wo die devices.xml liegt und z.B. die Verzeichnisse von "panStamp" und "justme" sind.
In dem Verzeichnis gibt es dann eine WindowController.xml mit dem Inhalt:

<?xml version="1.0"?>
<device>
  <developer>TeeVau</developer>
  <product>Window Controller</product>
  <pwrdownmode>false</pwrdownmode>
    <config>
    <reg name="Window States" id="11">
      <endpoint name="Windows 1" type="num" dir="inp">
        <position>0</position>
        <size>1</size>
      </endpoint>
      <endpoint name="Windows 2" type="num" dir="inp">
        <position>1</position>
        <size>1</size>
      </endpoint>
    </reg>
    <reg name="Windows 1 Blind" id="12">
      <endpoint name="Position" type="num" dir="out">
        <size>1</size>
      </endpoint>
    </reg>
    <reg name="Windows 2 Blind" id="13">
      <endpoint name="Position" type="num" dir="out">
        <size>1</size>
      </endpoint>
    </reg>
  </regular>
</device>



In meinen Augen ist also alles richtig, nach einem restart von FHEM wird mein Sketch allerings nicht erkannt:

2013.11.15 03:41:59 2: no device xml found for productcode 0000004300000001
2013.11.15 03:41:59 2: no device xml found for productcode 0000004300000001

BTW: Ist das richtig, dass die Meldung 2 mal kommt?!

Ein Log mit Verbose 5 hat leider auch nicht mehr Infos gebracht.
get SWAP_02 deviceXML bringt:
$VAR1 = {};

get SWAP_02 products bringt:

$VAR1 = {
          '000000010000000D' => {
                                  'name' => 'respira',
                                  'label' => 'Respira sensor for CO and NO2'
                                },
          '000000010000000A' => {
                                  'name' => 'pulsecounter',
                                  'label' => 'Pulse counter'
                                },
          '0000000100000002' => {
                                  'name' => 'chronos',
                                  'label' => 'SWAP-enabled Chronos watch'
                                },
          '0000000100000001' => {
                                  'name' => 'temphum',
                                  'label' => 'Dual Temperature/Humidity sensor'
                                },
          '000000010000000C' => {
                                  'name' => 'binouts2',
                                  'label' => 'Advanced Binary/PWM output module + repeater'
                                },
          '000000010000000E' => {
                                  'name' => 'soilmoisture',
                                  'label' => 'Soil moisture sensor'
                                },
          '000000010000000B' => {
                                  'name' => 'meter',
                                  'label' => 'Energy meter'
                                },
          '0000000100000003' => {
                                  'name' => 'rgbdriver',
                                  'label' => 'RGB driver board'
                                },
          '0000000100000009' => {
                                  'name' => 'pulsegen',
                                  'label' => 'Programmable pulse generator'
                                },
          '0000000100000005' => {
                                  'name' => 'temppress',
                                  'label' => 'Dual Temperature-Barometric pressure sensor'
                                },
          '0000000100000008' => {
                                  'name' => 'lcddriver',
                                  'label' => 'Alphanumeric 2x16 LCD driver'
                                },
          '0000000100000006' => {
                                  'name' => 'bininps',
                                  'label' => 'Binary/Counter input module'
                                },
          '0000002B00000001' => {
                                  'name' => 'WindowController',
                                  'label' => 'Board to handle window blind and state of 2 windows'
                                },
          '0000000100000007' => {
                                  'name' => 'binouts',
                                  'label' => 'Binary/PWM output module'
                                },
          '0000000100000004' => {
                                  'name' => 'temp',
                                  'label' => 'Temperature sensor'
                                },
          '00' => {},
          '0000004300000001' => {}
        };

Scheint also wirklich ein Problem mit dem einlesen der XML zu sein.


Entferne ich aus der devices.xml alle Einträge, außer meinen Eigenen, bekomme ich nach einem restart folgendes lustiges:

2013.11.15 03:46:44 0: Server shutdown
2013.11.15 03:46:48 1: Including fhem.cfg
2013.11.15 03:46:49 3: telnetPort: port 7072 opened
2013.11.15 03:46:50 3: WEB: port 8083 opened
2013.11.15 03:46:50 3: WEBphone: port 8084 opened
2013.11.15 03:46:50 3: WEBtablet: port 8085 opened
2013.11.15 03:46:50 3: Opening CUL_0 device /dev/ttyACM0
2013.11.15 03:46:51 3: Setting CUL_0 baudrate to 9600
2013.11.15 03:46:51 3: CUL_0 device opened
2013.11.15 03:46:51 3: CUL_0: Possible commands: BCFiAZEGMRTVWXefmltux
2013.11.15 03:46:53 2: VIERA: defined with host: 192.168.178.31 and interval: 30
2013.11.15 03:46:53 2: eventTypes: loaded 1172 events from log/eventTypes.txt
2013.11.15 03:46:54 3: Opening FBF device 192.168.178.1:1012
2013.11.15 03:46:54 3: FBF device opened
2013.11.15 03:46:54 2: FB_CALLMONITOR: FBF found FritzBox phonebook /var/flash/phonebook
2013.11.15 03:46:55 2: FB_CALLMONITOR: FBF read 193 contacts from FritzBox phonebook
2013.11.15 03:46:55 3: Opening panStick device /dev/ttyUSB0
2013.11.15 03:46:55 3: Setting panStick baudrate to 38400
2013.11.15 03:46:55 3: panStick device opened
2013.11.15 03:47:02 0: Not an ARRAY reference at ./FHEM/34_SWAP.pm line 110, <$fh> line 765.

2013.11.15 03:47:02 3: Please define SWAP_F0 first
2013.11.15 03:47:02 3: Please define SWAP_F0 first
2013.11.15 03:47:03 0: Not an ARRAY reference at ./FHEM/34_SWAP.pm line 110, <$fh> line 771.

2013.11.15 03:47:03 3: Please define SWAP_0C first
2013.11.15 03:47:03 3: Please define SWAP_0C first
2013.11.15 03:47:03 0: Not an ARRAY reference at ./FHEM/34_SWAP.pm line 110, <$fh> line 777.

2013.11.15 03:47:03 3: Please define SWAP_C0 first
2013.11.15 03:47:03 0: Not an ARRAY reference at ./FHEM/34_SWAP.pm line 110, <$fh> line 782.

2013.11.15 03:47:03 3: Please define SWAP_02 first
2013.11.15 03:47:03 3: Please define SWAP_02 first
2013.11.15 03:47:03 1: configfile: Cannot load module SWAP
Please define SWAP_F0 first
Please define SWAP_F0 first
Cannot load module SWAP
Please define SWAP_0C first
Please define SWAP_0C first
Cannot load module SWAP
Please define SWAP_C0 first
Cannot load module SWAP
Please define SWAP_02 first
Please define SWAP_02 first
2013.11.15 03:47:03 1: Including ./log/fhem.save
2013.11.15 03:47:04 0: Server started with 123 defined entities (version $Id: fhem.pl 4208 2013-11-12 17:43:33Z rudolfkoenig $, os linux, user boxusr99, pid 2385)
2013.11.15 03:47:05 0: Not an ARRAY reference at ./FHEM/34_SWAP.pm line 110.

2013.11.15 03:47:05 0: ERROR: Cannot autoload SWAP
2013.11.15 03:47:05 3: panStick: Unknown code 000200030002000000004300000001, help me!
2013.11.15 03:47:28 0: Server shutdown

Im Anhang ist einmal mein Sketch für den PanStamp sowie meine devices.xml inkl. die Definition für meinen Sketch. Ich habe im Verdacht, dass es ggf. ein spezielles Problem mit der FBF ist.
Wäre super wenn das ggf. mal einer gegenchecken kann.

Gute Nacht, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

justme1968

der grund ist das die developer id (und alle anderen auch) im devices.xml in dezimal angegeben ist die sketches und das swap modul aber alle internen werte in hex angeben, verwenden und anzeigen.

wenn du genau hin schaust siehst du auch das in der 'get SWAP_02 products' list dein board unter 0000002B00000001 auftaucht.

wenn du die developer id im xml file mit 67 angibst sollte es passen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TeeVau

Hi André,

danke für den Hinweis. Das habe ich gar nicht bemerkt, war vielleicht doch schon zu spät ;-)
Hatte erst auch mit der Änderungkeinen Erfolg. Habe mal zum testen deine rgbdriver.xml verwendet und so getan, als würde das mein Sketch unterstützen, damit funktioniert es in FHEM.
Aber mit meiner XML habe ich keinen Erfolg. Das habe ich getestet:
Funktioniert:

  <developer id="67" name="TeeVau">
    <dev id="1" name="rgbdriver" label="XML von justme"/>
  </developer>



FHEM stürzt ab:

  <developer id="67" name="TeeVau">
    <dev id="1" name="windowcontroller" label="XML von teevau"/>
  </developer>

Ok...also habe ich deine rgbdriver umbenannt in windowscontroller.xml, damit stürzt FHEM nicht ab. Scheint also ein Problem in meiner XML zu sein.
Habe da in der Nacht mist zusammen geschrieben. Habe alles in den <config> Zweig gepackt, ohne dass es ein </config> gibt. Dafür habe ich dann auch noch ein </regular> ganz unten, ohne dass es ein <regular> gibt.

Fehler in der XML Stuktur wird also mit einem FHEM crash quittiert (zumidnest auf der FBF). Gut zu wissen. Habe alles geändert und sieht da: Kaum macht man es richtig, funktioniert alles :-)


PS. Mir ist aufgefallen, dass beim starten von FHEM auf der FBF immer folgende Fehlermeldung kommt (auch wenn diese augenscheinlich keine Auswirkung haben wollte ich es dich wissen lassen)

could not find ParserDetails.ini in /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/XML/SAX
substr outside of string at ./FHEM/34_SWAP.pm line 696, <$fh> line 771.
Use of uninitialized value in hex at ./FHEM/34_SWAP.pm line 696, <$fh> line 771.
substr outside of string at ./FHEM/34_SWAP.pm line 696, <$fh> line 771.
Use of uninitialized value in hex at ./FHEM/34_SWAP.pm line 696, <$fh> line 771.
substr outside of string at ./FHEM/34_SWAP.pm line 696, <$fh> line 772.
Use of uninitialized value in hex at ./FHEM/34_SWAP.pm line 696, <$fh> line 772.



PPS:
ein "set SWAP_02 readDeviceXML" wird beantwortet mit:

can't read deviceXML for unknown ProductCode

Bug oder wieder ein Problem zwischen meinen Ohren? :-/

ein "get SWAP_02 deviceXML" liefert korrekt:

$VAR1 = {
          'pwrdownmode' => 0,
          'name' => 'WindowController',
          'label' => 'XML rgbdriver von justme nur umbenannt',
          'registers' => {
                           '11' => {
                                     'name' => 'Window States',
                                     'type' => 'regular',
                                     'hwmask' => undef,
                                     'endpoints' => [
                                                      {
                                                        'direction' => 1,
                                                        'position' => '0',
                                                        'name' => 'Windows_1',
                                                        'type' => 2,
                                                        'size' => 1
                                                      },
                                                      {
                                                        'direction' => 1,
                                                        'position' => '1',
                                                        'name' => 'Windows_2',
                                                        'type' => 2,
                                                        'size' => 1
                                                      }
                                                    ],
                                     'swversion' => undef
                                   },
                           '13' => {
                                     'name' => 'Windows 2 Blind',
                                     'type' => 'regular',
                                     'hwmask' => undef,
                                     'endpoints' => [
                                                      {
                                                        'direction' => 2,
                                                        'name' => 'Position',
                                                        'type' => 2,
                                                        'size' => 1
                                                      }
                                                    ],
                                     'swversion' => undef
                                   },
                           '12' => {
                                     'name' => 'Windows 1 Blind',
                                     'type' => 'regular',
                                     'hwmask' => undef,
                                     'endpoints' => [
                                                      {
                                                        'direction' => 2,
                                                        'name' => 'Position',
                                                        'type' => 2,
                                                        'size' => 1
                                                      }
                                                    ],
                                     'swversion' => undef
                                   }
                         }
        };
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

justme1968

ich schau mal ob ich das xml parsen in ein eval stecken kann damit es im fehler fall nicht alles zum abstürzen bring.

mach mal bitte ein list auf dein SWAP_02  device. gibt es in den infernal values einen product code?

hat du (vielleicht von irgendwelchen tests) noch andere swap device in deiner config? vielleicht welche die unvollständig definiert sind oder bei denen das attribut productcode falsch gesetzt ist?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TeeVau

Zitat von: justme1968 am 15 November 2013, 19:19:58
mach mal bitte ein list auf dein SWAP_02  device. gibt es in den infernal values einen product code?
Gerne:

Internals:
   DEF        02
   Developer  TeeVau
   IODev      panStick
   LASTInputDev panStick
   MSGCNT     85
   NAME       SWAP_02
   NR         170
   Product    Board to handle window blind and state of 2 windows
   STATE      set-regSet
   SWAP_00-ProductCode 0000004300000001
   SWAP_00.1-ManufacturerID 00000043
   SWAP_00.2-ProductID 00000001
   SWAP_01-HardwareVersion 00000001
   SWAP_02-FirmwareVersion 00000001
   SWAP_03-SystemState 01
   SWAP_04-FrequencyChannel 00
   SWAP_05-SecurityOption 00
   SWAP_06-SecurityPassword 00
   SWAP_07-SecurityNonce 27
   SWAP_08-NetworkID B547
   SWAP_09-DeviceAddress 02
   SWAP_0A-PeriodicTxInterval 000A
   SWAP_Sent_unconfirmed 0 Sent_unconfirmed
   SWAP_lastRcv 2013-11-15 20:25:15
   SWAP_lastSend 2013-11-15 20:18:45
   SWAP_nonce 01
   TYPE       SWAP
   addr       02
   devices   
   nonce      1
   panStick_LQI 48
   panStick_MSGCNT 85
   panStick_RAWMSG (1930)000200010002000000004300000001
   panStick_RSSI -61.5
   panStick_TIME 2013-11-15 21:31:52
   Readings:
     2013-11-15 19:36:37   0B.0-Windows_1  56
     2013-11-15 19:36:37   0B.1-Windows_2  56
     2013-11-15 20:18:46   0C-Position     AB
     2013-11-15 19:36:38   0D-Position     00
     2013-11-15 20:18:45   state           set-regSet
   Product:
     label      Board to handle window blind and state of 2 windows
     name       WindowController
     pwrdownmode 0
     Registers:
       11:
         hwmask     
         name       Window States
         swversion 
         type       regular
         endpoints:
           HASH(0x1178328)
           HASH(0x1179b28)
       12:
         hwmask     
         name       Windows 1 Blind
         swversion 
         type       regular
         endpoints:
           HASH(0x1177dc8)
       13:
         hwmask     
         name       Windows 2 Blind
         swversion 
         type       regular
         endpoints:
           HASH(0x1179d48)
   sentList:
Attributes:
   room       SWAP



Zitat von: justme1968 am 15 November 2013, 19:19:58
hat du (vielleicht von irgendwelchen tests) noch andere swap device in deiner config? vielleicht welche die unvollständig definiert sind oder bei denen das attribut productcode falsch gesetzt ist?
Vom autocreate gab es noch SWAP_F0. Habe es gelöscht, aber die Fehlermeldung kommt dennoch. Das Problem hat jetzt für mich keine hohe Priorität, mir ist es lediglich aufgefallen :-)
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

justme1968

das attribut ProductCode ist nicht gesetzt. mir ist nicht ganz klar warum nicht. es wird eigentlich automatisch gesetzt.

wenn dir danach ist setz es mal von hand und schau ob die fehlermeldung dann weg ist.

gruss
andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TeeVau

Wenn ich es per Hand setzte geht es. Danke für den Hinweis! :-)

Wäre es nicht sinnvoller die ProductID aus den INTERNALS zu lesen? Oder hat das mit dem attr einen anderen Sinn?
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

justme1968

die internals habe ich erst wenn das device wirklich ausgelesen wird. das geht bei den batterie betriebenen aber nicht wenn sie schlafen.

das attribut wird persistent gespeichert und normalerweise automatisch gesetzt. ist also da auch wenn das device nicht antwortet.

es ist nicht wirklich elegant es zwei mal zu haben aber ich habe noch keine bessere Idee gehabt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968