Signalduino Entwicklung

Begonnen von thoffma3, 05 Juli 2015, 23:01:00

Vorheriges Thema - Nächstes Thema

RappaSan

Mir ist heute morgen aufgefallen, dass mein Oregon THGR228N seit gestern morgen keine Daten mehr senden soll.
Bin gerade auf der Arbeit und kann nicht kontrollieren, ob der Sensor ein Problem hat...
Da ich aber vor kurzer Zeit reconnect-Probleme mit dem Arduino hatte, die nach einem update und Flash behoben schienen, wollte ich gerade ein erneutes update/Flash anschieben.

Das Ergebnis:
UPD FHEM/14_SIGNALduino_RSL.pm
UPD FHEM/14_Hideki.pm
UPD FHEM/14_SIGNALduino_un.pm
UPD FHEM/firmware/SIGNALduino_nano328.hex
UPD FHEM/firmware/SIGNALduino_promini328.hex
UPD FHEM/firmware/SIGNALduino_uno.hex
UPD FHEM/14_SD_WS07.pm
UPD FHEM/14_SD_AS.pm
UPD FHEM/00_SIGNALduino.pm
Got 72442 bytes for FHEM/00_SIGNALduino.pm, not 67420 as expected,
aborting.

Ich hab das Gefühl, daß hier etwas ordentlich schiefläuft. ::)

Sidey

Ja pro mini sollte auch gehen, achte aber auf die Spannung für den esp.

Grüße Sven
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Ralf9

Zitat von: hjgode am 15 Oktober 2015, 06:23:09
Fehlt da noch ne Änderung? oder geht da kein autocreate?

Ja, ich hatte in der %ProtocolListSIGNALduino bei der ID 7 die preamble vergessen:
preamble => 'P7#', 

In der Version vom dev-rawIn müsstes es passen.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Zitat von: hjgode am 15 Oktober 2015, 05:59:41
Wenn man nur den WebClient in RF_Receiver 'importiert' und initialisiert kommt man auf:
Sketch uses 30,160 bytes (98%) of program storage space. Maximum is 30,720 bytes.
Global variables use 1,282 bytes (62%) of dynamic memory, leaving 766 bytes for local variables. Maximum is 2,048 bytes.

und dann habe ich noch kein Web-Afrage erstellt geschweige denn Socket per Udp eingebunden.
@Sidey kannst Du ungefähr abschätzen wieviel flash durch Deine geplante optimierungen frei wird?

Zitat von: hjgode am 15 Oktober 2015, 05:59:41
Man könnte nun auf einen Arduino Mega umsteigen, die Dinger sind aber original eigentlich zu teuer (mehr als ein Pi), plus das Ws5100 Shield.

Den Mega gibts als nicht Orginal recht günstig, ist dafür aber etwas überdimenioniert
http://www.ebay.de/itm/Mega2560-R3-ATmega2560-16AU-Board-mit-freiem-USB-Kabel-compatible-Arduino-/261903837590?hash=item3cfaaf6996

http://www.ebay.de/itm/Ethernet-Shield-Schild-W5100-Fur-Arduino-Board-2009-UNO-Mega-1280-Mega-2560-/251976321368?hash=item3aaaf58958

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

RappaSan

Zitat von: Ralf9 am 15 Oktober 2015, 12:41:01
In der Version vom dev-rawIn müsstes es passen.

Wär nur schön, wenn man's runterladen könnte...

Got 72442 bytes for FHEM/00_SIGNALduino.pm, not 67420 as expected,
aborting.

Sidey

 Hallo RappaSan,

Leider ist die aktuelle Revision inkonsistent.
Ich kann leider vom Handy nicht zurück rollen.

Du kannst mit dieser URL updaten:

Update all https://github.com/RFD-FHEM/RFFHEM/raw/2b710efac21177283f803458e072e21112b83da9/controls_signalduino.txt

Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

RappaSan

#396
Da sag' ich doch mal artig

"Dankeschön !"

Ich spiele es gleich ein.

->
Drin, restart.

Log:
2015.10.15 15:15:26 1: PERL WARNING: Prototype mismatch: sub main::bin2dec: none vs ($) at ./FHEM/14_SIGNALduino_un.pm line 264.
2015.10.15 15:15:26 1: PERL WARNING: Subroutine bin2dec redefined at ./FHEM/14_SIGNALduino_un.pm line 260.
2015.10.15 15:15:26 1: PERL WARNING: substr outside of string at ./FHEM/14_SIGNALduino_un.pm line 174.
2015.10.15 15:15:26 1: PERL WARNING: Use of uninitialized value $winddir in concatenation (.) or string at ./FHEM/14_SIGNALduino_un.pm line 176.
2015.10.15 15:15:27 3: sduino: Unknown code u90034B01981041A0045, help me!
2015.10.15 15:15:42 3: sduino: Unknown code r0, help me

Vielleicht hilft es ja...

Sidey

Hi Rappasan,

gerne doch.

Zitat von: RappaSan am 15 Oktober 2015, 15:09:57
2015.10.15 15:15:26 1: PERL WARNING: Prototype mismatch: sub main::bin2dec: none vs ($) at ./FHEM/14_SIGNALduino_un.pm line 264.
2015.10.15 15:15:26 1: PERL WARNING: Subroutine bin2dec redefined at ./FHEM/14_SIGNALduino_un.pm line 260.
2015.10.15 15:15:26 1: PERL WARNING: substr outside of string at ./FHEM/14_SIGNALduino_un.pm line 174.
2015.10.15 15:15:26 1: PERL WARNING: Use of uninitialized value $winddir in concatenation (.) or string at ./FHEM/14_SIGNALduino_un.pm line 176.

Naja, die Warnings sollte ich wohl mal beseitigen. Ist aber nicht tragisch.

Zitat von: RappaSan am 15 Oktober 2015, 15:09:57
2015.10.15 15:15:27 3: sduino: Unknown code u90034B01981041A0045, help me!

Was mich aber wundert ist die u9 Ausgabe... Da sollte u9#0034B... stehen.
Sehr seltsam.


Die normale Update URL geht jetzt auch wieder. Ich habe das Problem behoben.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

RappaSan

#398
Das Signal kommt öfter vor hier  :)

So sehen die letzten Log-Einträge aus:

2015.10.15 15:56:16 3: sduino: Unknown code u90000D2C066142028634, help me!
2015.10.15 15:56:17 3: sduino: Unknown code u90000D2C066142028635, help me!
2015.10.15 15:56:59 3: sduino: Unknown code u90001A580CC284050C6A, help me!
2015.10.15 15:57:43 3: sduino: Unknown code u90006960330A101431A8, help me!
2015.10.15 15:58:25 3: sduino: Unknown code u90000D2C066142028635, help me!
2015.10.15 15:59:08 3: sduino: Unknown code u90000D2C066142028635, help me!
2015.10.15 15:59:51 3: sduino: Unknown code u90001A580CC284050C6A, help me!
2015.10.15 16:00:34 3: sduino: Unknown code u90001A580CC284050C6A, help me!
2015.10.15 16:00:34 3: sduino: Unknown code u90001A580CC284050C6A0, help me!
2015.10.15 16:01:00 3: sduino: Unknown code r0, help me!
2015.10.15 16:01:17 3: sduino: Unknown code u90001A580CC284050C6A, help me!
2015.10.15 16:02:02 3: sduino: Unknown code u90000D2C0660110682224, help me!
2015.10.15 16:02:44 3: sduino: Unknown code u90000D2C0660110682224, help me!
2015.10.15 16:03:26 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:04:52 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:05:08 3: IT_000000FFFF ???->on
2015.10.15 16:05:09 3: IT_00000F0FFF ???->on
2015.10.15 16:05:09 3: Code 11 not supported by IT_00000FFFFF.
2015.10.15 16:05:09 3: Code 11 not supported by IT_00000FFFFF.
2015.10.15 16:05:09 3: sduino: Unknown code i00155F, help me!
2015.10.15 16:05:09 3: IT_000000FFFF on->on
2015.10.15 16:05:10 3: IT_00000F0FFF on->on
2015.10.15 16:05:12 3: IT_000000FFFF on->on
2015.10.15 16:05:35 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:06:02 3: sduino: Unknown code r0, help me!
2015.10.15 16:07:01 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:07:44 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:09:10 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:11:04 3: sduino: Unknown code r0, help me!
2015.10.15 16:12:45 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:13:29 3: sduino: Unknown code u90034B01980441A0889, help me!
2015.10.15 16:17:46 3: sduino: Unknown code u90000D2C0660110682224, help me!
2015.10.15 16:18:29 3: sduino: Unknown code u90001A580CC0220D04448, help me!
2015.10.15 16:19:12 3: sduino: Unknown code u90000D2C0661220D0C808, help me!
2015.10.15 16:20:54 3: sduino: Unknown code r000, help me!
2015.10.15 16:21:21 3: sduino: Unknown code u90000D2C0661220D0C808, help me!
2015.10.15 16:24:13 3: sduino: Unknown code u90000D2C0661220D0C808, help me!
2015.10.15 16:25:39 3: sduino: Unknown code u90001A580CC2441A1901, help me!
2015.10.15 16:29:57 3: sduino: Unknown code u90001A580CC1441A0496, help me!
2015.10.15 16:31:12 3: sduino: Unknown code r0, help me!
2015.10.15 16:31:23 3: sduino: Unknown code u90000D2C0660A20D024B, help me!
2015.10.15 16:32:06 3: sduino: Unknown code u90000D2C0660A20D024B, help me!
2015.10.15 16:33:43 3: sduino: Unknown code r0, help me!
2015.10.15 16:36:14 3: sduino: Unknown code r0, help me!
2015.10.15 16:37:09 3: sduino: Unknown code u90000D2C0660A20D024B, help me!
2015.10.15 16:38:33 3: sduino: Unknown code u90000D2C0660A20D024B, help me!
2015.10.15 16:39:59 3: sduino: Unknown code u900034B019828834092C, help me!

Wer weiß, was die Nachbarn alles im Mediamarkt eingekauft haben...

IT_000000FFFF  ist auf jeden Fall der Nachbar mit einer Elro-Funksteckdose. Dat weiß ich, weil ich den schon versehentlich "fernübernommen" habe...

Sidey

U9 , da bin ich an einer Wetterstation dran. Ctw600. Ist aber noch nicht ganz fertig.

Gehen denn deine Funk Steckdosen jetzt?

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Ralf9

Zitat von: Sidey am 15 Oktober 2015, 02:00:16
Na wozu dann einen Hash erstellen, wenn nur eine Liste notwendig ist.
Und das ganze im hash des IO Gerätes abspeichern, sonst gelten die Daten ja für alle definierten Geräte zugleich.
Hallo Sidey,

habe es nun auf Listen umgestellt:

sub SIGNALduino_IdList($$$)
{
        my ($hash, $name, $aVal) = @_;

        my @msIdList = ();
        my @muIdList = ();
        my @mcIdList = ();

        my %WhitelistIDs;
        my $wflag = 0;
        if (defined($aVal) && length($aVal)>0)
        {
                %WhitelistIDs = map { $_ => 1 } split(",", $aVal);
                $wflag = 1;
        }
        my $id;
        foreach $id (keys %ProtocolListSIGNALduino)
        {
                next if ($id eq 'id');
                if ($wflag == 1 && !defined($WhitelistIDs{$id}))
                {
                        Log3 $name, 5, "skip ID $id";
                        next;
                }

                if (defined($ProtocolListSIGNALduino{$id}{format}) && $ProtocolListSIGNALduino{$id}{format} eq "manchester")
                {
                        push (@mcIdList, $id);
                }
                elsif (exists $ProtocolListSIGNALduino{$id}{sync})
                {
                        push (@msIdList, $id);
                }
                else
                {
                        push (@muIdList, $id);
                }
        }

        @msIdList = sort @msIdList;
        @muIdList = sort @muIdList;
        @mcIdList = sort @mcIdList;

        Log3 $name, 3, "$name IDlist MS @msIdList";
        Log3 $name, 3, "$name IDlist MU @muIdList";
        Log3 $name, 3, "$name IDlist MC @mcIdList";

        $hash->{msIdList} = \@msIdList;
        $hash->{muIdList} = \@muIdList;
        $hash->{mcIdList} = \@mcIdList;
}


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Sidey

Hi Ralf,

das sieht doch gut aus.
Kannst Du deine Anpassung mal in einem eigenen Zweig einchecken? Dann sehe ich es mir mal in Aktion an.
Vermutlich kann ich die folgende Zeile ja auch von dem Hash befreien und direkt eine Liste erzeugen:
%WhitelistIDs = map { $_ => 1 } split(",", $aVal);

Ich würde den rawIn jetzt gerne so lassen und nur noch die commandref und ggf. auftretende Fehler bereinigen, damit wir mal eine stabile Version haben.

Bezüglich deiner Frage zur Optimierung:
Hauptsächlich möchte ich erst mal den RAM optimieren. Der fragmentiert leider mit der Zeit und dann stürzt der Arduino ab.
Ich habe Aktuell folgende Ideen, die sich unterschiedlich auswirken:
1. Die Muster effizienter speichern, aus historischen Gründen habe ich immer noch einen 2D Array dazu. Spart ein paar Byte RAM.
2. Die Nachricht besteht aus Werten von 0-5, jedoch wird immer ein ein byte belegt. Ich habe die Idee nur noch ein nibble zu belegen. Dadurch wird die Ausgabe dann aber nicht mehr lesbar für uns. Im Endeffekt wird dadurch weniger Speicher für die Nachricht belegt und bei der Ausgabe wird auch gespart. Hier kommen ca. 120 Byte RAM zusammen.
3. Einige Ausgaben von Dezimal auf Hex umstellen, was ein bisschen sparen dürfte.
4. Die Senderoutine für das IT und RSL Protokoll auf die generische Senderoutine umstellen, was aber nur flash sparen dürfte.
5. Die Librarys für den FIFO und die patternDetect Klassen komplett von altem code entrümpeln und vermutlich alles in eine Klasse überführen.


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

pejonp

Hallo Sidey, Hallo Ralf,

habe inzwischen auch schon ein Update auf die neueste Version durchgeführt. Sehr gute Arbeit. Danke.

Im Log kommen noch Warnungen.
2015.10.15 22:35:31 1: /dev/signald reappeared (sduino)
2015.10.15 22:35:31 1: /dev/signald
2015.10.15 22:35:34 1: PERL WARNING: substr outside of string at ./FHEM/14_SD_WS07.pm line 100.
2015.10.15 22:35:34 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/14_SD_WS07.pm line 100.
2015.10.15 22:35:34 1: PERL WARNING: substr outside of string at ./FHEM/14_SD_WS07.pm line 107.
2015.10.15 22:35:34 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/14_SD_WS07.pm line 107.
2015.10.15 22:35:34 1: PERL WARNING: substr outside of string at ./FHEM/14_SD_WS07.pm line 108.
2015.10.15 22:35:34 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/14_SD_WS07.pm line 108.

Ich empfange auch 2 WS07 Sensoren. Ich habe keine, wahrscheinlich aus der Nachbarschaft. Da kann aber etwas nicht stimmen.
2015-10-15_22:36:02 SD_WS07_T_8 T: -0.3
2015-10-15_22:36:02 SD_WS07_T_8 temperature: -0.3
2015-10-15_22:36:02 SD_WS07_T_8 battery: ok
2015-10-15_22:36:02 SD_WS07_T_8 channel: 8
2015-10-15_22:38:31 SD_WS07_T_8 T: 25.2
2015-10-15_22:38:31 SD_WS07_T_8 temperature: 25.2
2015-10-15_22:38:31 SD_WS07_T_8 battery: ok
2015-10-15_22:38:31 SD_WS07_T_8 channel: 8
2015-10-15_22:42:25 SD_WS07_T_8 T: -0.3
2015-10-15_22:42:25 SD_WS07_T_8 temperature: -0.3

2015-10-15_22:35:34 SD_WS07_T_1 T: 0
2015-10-15_22:35:34 SD_WS07_T_1 temperature: 0
2015-10-15_22:35:34 SD_WS07_T_1 battery: low
2015-10-15_22:35:34 SD_WS07_T_1 channel: 1
2015-10-15_22:36:00 SD_WS07_T_1 T: 0
2015-10-15_22:36:00 SD_WS07_T_1 temperature: 0
2015-10-15_22:36:00 SD_WS07_T_1 battery: low
2015-10-15_22:36:00 SD_WS07_T_1 channel: 1
2015-10-15_22:41:15 SD_WS07_T_1 T: 0
2015-10-15_22:41:15 SD_WS07_T_1 temperature: 0
2015-10-15_22:41:15 SD_WS07_T_1 battery: low
2015-10-15_22:41:15 SD_WS07_T_1 channel: 1

Ich hänge einmal eine Logdatei an. Vielen Dank.
Einen CTW 600 empfange ich auch ab und zu. Wenn ich einen RX868SH-DV anschließe kann ich Daten empfangen (2. Log). Die WE  ist eine WX-2008 bzw. der Sender davon.

Jörg
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Ralf9

Zitat von: Sidey am 15 Oktober 2015, 23:09:48
das sieht doch gut aus.
Kannst Du deine Anpassung mal in einem eigenen Zweig einchecken? Dann sehe ich es mir mal in Aktion an.
Mir ist noch nicht so richtig klar, was Du mit dem rawIn vor hast? Bleibt er und wird er der master/stable branch?
Oder hast Du vor den rawin in den master zu bringen? Das würde ich dann gerne abwarten und dann meine Änderungen in den neuen dev Branch einchecken.

Zitat von: Sidey am 15 Oktober 2015, 23:09:48
Vermutlich kann ich die folgende Zeile ja auch von dem Hash befreien und direkt eine Liste erzeugen:
%WhitelistIDs = map { $_ => 1 } split(",", $aVal);

Ist wahrscheinlich nicht so sinnvoll. In einem hash lässt sich besser nach einer ID suchen als in einer Liste.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Sidey

Hi Ralf,

Ich habe vor den master Branch mit dem,aktuellen Stand  zu aktualisieren.
Ein paar Anpassungen an der commandref sind noch notwendig.

Den dev-Rawin könnte man dann einstellen und einen neuen,dev-32 z.B. erstellen.

Das was im Master ist, würde ich dann auch über das Fhem Update vertreiben wollen.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker